From 70d557b20ddf8fc3187f933791a7b8d58033edf1 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 8 Sep 2025 17:07:03 +0400 Subject: [PATCH 01/69] added Aztec. --- js/package-lock.json | 16819 ++++++++++------ js/package.json | 8 +- .../Infrastructure/AddCoreServices.ts | 3 - .../Models/AztecSignTransactionRequest.ts | 7 + .../TreasuryClient/Models/index.ts | 4 +- .../TreasuryClient/treasuryClient.ts | 5 +- .../Activities/ABIs/train.json | 12975 ++++++++++++ .../Activities/AztecBlockchainActivities.ts | 211 + .../Activities/Helper/AztecEventTracker.ts | 142 + .../Helper/AztecTransactionBuilder.ts | 238 + .../Helper/AztecTransactionStatusMapper.ts | 21 + .../Blockchain.Aztec/Activities/Helper/FPC.ts | 30 + .../Activities/Helper/Train.ts | 220 + .../Activities/IAztecBlockchainActivities.ts | 22 + .../Models/AztecSignTransactionModel.ts | 7 + .../Models/AztecPublishTransactionRequest.ts | 5 + .../Blockchain.Aztec/Worker/AztecWorker.ts | 43 + .../Workflows/AztecTransactionProcessor.ts | 124 + .../Blockchain.Aztec/Workflows/index.ts | 1 + .../Activities/FuelBlockchainActivities.ts | 4 +- .../StarknetBlockchainActivities.ts | 21 +- js/tsconfig.json | 4 +- treasury/package-lock.json | 13789 +++++++++---- treasury/package.json | 9 +- .../src/app/interfaces/treasury.interface.ts | 5 +- treasury/src/app/treasury.types.ts | 8 +- treasury/src/kv/vault.service.ts | 53 +- treasury/src/treasury/aztec/ABIs/train.json | 12975 ++++++++++++ treasury/src/treasury/aztec/FPC.ts | 30 + treasury/src/treasury/aztec/Train.ts | 220 + treasury/src/treasury/aztec/aztec.dto.ts | 7 + treasury/src/treasury/aztec/aztec.service.ts | 213 + treasury/src/treasury/evm/evm.dto.ts | 2 +- treasury/src/treasury/fuel/fuel.dto.ts | 2 +- treasury/src/treasury/fuel/fuel.service.ts | 6 +- .../src/treasury/shared/networks.types.ts | 2 +- .../src/treasury/starknet/starknet.dto.ts | 2 +- .../src/treasury/starknet/starknet.service.ts | 2 +- treasury/src/treasury/treasury.module.ts | 12 +- treasury/tsconfig.json | 30 +- 40 files changed, 47958 insertions(+), 10323 deletions(-) create mode 100644 js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/AztecSignTransactionRequest.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/IAztecBlockchainActivities.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Models/AztecPublishTransactionRequest.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts create mode 100644 js/src/Blockchain/Blockchain.Aztec/Workflows/index.ts create mode 100644 treasury/src/treasury/aztec/ABIs/train.json create mode 100644 treasury/src/treasury/aztec/FPC.ts create mode 100644 treasury/src/treasury/aztec/Train.ts create mode 100644 treasury/src/treasury/aztec/aztec.dto.ts create mode 100644 treasury/src/treasury/aztec/aztec.service.ts diff --git a/js/package-lock.json b/js/package-lock.json index 4055d0b1..723e210d 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -9,10 +9,16 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@aztec/accounts": "1.1.3", + "@aztec/aztec.js": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-contracts": "^0.23.0", + "@aztec/noir-contracts.js": "1.1.3", + "@aztec/pxe": "1.1.3", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", - "ethers": "5.7.0", + "ethers": "^5.8.0", "fuels": "^0.101.2", "ioredis": "^5.6.0", "node-vault": "^0.10.2", @@ -32,3923 +38,6309 @@ "typescript": "^5.7.3" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "license": "MIT" + }, + "node_modules/@aztec/accounts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-1.1.3.tgz", + "integrity": "sha512-Q754MHkDojefx1m5KzsmDYUhir+NbqVzXdthFkI5GRpUOJmpRLD44sG58t33QOMbcs/Smtp35DzIS95coukYXA==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@aztec/aztec.js": "1.1.3", + "@aztec/entrypoints": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=20.10" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/aztec.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-1.1.3.tgz", + "integrity": "sha512-WjKKL/PUvk2xUj+ZgKP68xZYyHdeuN6xV+PHRaRVSBD0YIMSaWIEDirdhjTBd6kQK1soFYRS8+gy5CLx2oSSiQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@aztec/constants": "1.1.3", + "@aztec/entrypoints": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/l1-artifacts": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "axios": "^1.8.2", + "tslib": "^2.4.0", + "viem": "2.23.7" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/bb-prover": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-1.1.3.tgz", + "integrity": "sha512-YsyyIY5dK6QcXfg7dVvRg21Bx+IyTYXWxMTryxqkqqVD6O85dVGSChXUjdt7o2x4GzOErZy4/wlEBt4NriIh9A==", + "dependencies": { + "@aztec/bb.js": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/simulator": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "@aztec/world-state": "1.1.3", + "commander": "^12.1.0", + "pako": "^2.1.0", + "source-map-support": "^0.5.21", + "tslib": "^2.4.0" + }, + "bin": { + "bb-cli": "dest/bb/index.js" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/core": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", - "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.26.7", - "@babel/types": "^7.26.7", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@aztec/bb.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-1.1.3.tgz", + "integrity": "sha512-cAR++gmXYvSzC0CyGfo326YMumdmjs5vGTErx2NQKKc96MyYcJdm9aTiyf/G2uBdGSn4tWdMgxOxH2lr/qH1Sw==", + "license": "MIT", + "dependencies": { + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "pino": "^9.5.0", + "tslib": "^2.4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "bin": { + "bb.js": "dest/node/main.js" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@aztec/blob-lib": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-1.1.3.tgz", + "integrity": "sha512-+YAGXaW75hKEAmlNtcxd8k7XJaIxbphQ/ddy04MTlYMclQr/43ZfKX/xPErHH/7aV4MAwRmrpUFOxYNO4Bu/yA==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "c-kzg": "4.0.0-alpha.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/generator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", - "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/builder": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-1.1.3.tgz", + "integrity": "sha512-VHg2S344a5NXHKd8I0Rj1JqC1v9ufm6/xvOIauFDcf3XNf+rYSNt3iLOcVE4ueDBFMgaasfeBzsABvp4kJ1vMw==", "dependencies": { - "@babel/parser": "^7.26.5", - "@babel/types": "^7.26.5", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "commander": "^12.1.0" + }, + "bin": { + "aztec-builder": "dest/bin/cli.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", - "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/circuit-types": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/circuit-types/-/circuit-types-0.23.0.tgz", + "integrity": "sha512-5lyopDn8r9w7wvlji7L73vaC06oZY1RLnhWXgrvoaSkCfDZj+L0ArhmofqJ5xOcROfPAbJopORJteO/+q0uqsg==", "dependencies": { - "@babel/compat-data": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@aztec/circuits.js": "0.23.0", + "@aztec/ethereum": "0.23.0", + "@aztec/foundation": "0.23.0", + "@aztec/types": "0.23.0", + "browserify-cipher": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0", + "lodash.times": "^4.3.2", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", + "node_modules/@aztec/circuit-types/node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "license": "MIT" + }, + "node_modules/@aztec/circuit-types/node_modules/@aztec/bb.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", + "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", + "license": "MIT", + "dependencies": { + "comlink": "^4.4.1", + "commander": "^10.0.1", + "debug": "^4.3.4", + "tslib": "^2.4.0" + }, "bin": { - "semver": "bin/semver.js" + "bb.js": "dest/node/main.js" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/circuit-types/node_modules/@aztec/ethereum": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", + "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@aztec/foundation": "0.23.0", + "dotenv": "^16.0.3", + "tslib": "^2.4.0", + "viem": "^1.2.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/circuit-types/node_modules/@aztec/foundation": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", + "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@aztec/bb.js": "0.23.0", + "@koa/cors": "^4.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "debug": "^4.3.4", + "detect-node": "^2.1.0", + "elliptic": "^6.5.4", + "hash.js": "^1.1.7", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "levelup": "^5.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "memdown": "^6.1.1", + "pako": "^2.1.0", + "sha3": "^2.1.4", + "zod": "^3.22.4" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", - "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@koa/cors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", + "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", "license": "MIT", + "dependencies": { + "vary": "^1.1.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 14.0.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "license": "MIT", - "engines": { - "node": ">=6.9.0" + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.7" + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" }, - "bin": { - "parser": "bin/babel-parser.js" + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@aztec/circuit-types/node_modules/abitype": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "license": "MIT", + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@aztec/circuit-types/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=14" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/isows": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "ws": "*" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/viem": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "0.9.8", + "isows": "1.0.3", + "ws": "8.13.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, + "node_modules/@aztec/circuit-types/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/circuits.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/circuits.js/-/circuits.js-0.23.0.tgz", + "integrity": "sha512-cIQEcnScjErWIO9cEOkRVCwENwropMWPAYg3MGvrWC0h0UUBO/I5nOR7+tTqnXjsP8hfPOrhfPXQcsEB9Jzkjg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aztec/bb.js": "0.23.0", + "@aztec/foundation": "0.23.0", + "@aztec/types": "0.23.0", + "eslint": "^8.35.0", + "lodash.chunk": "^4.2.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", - "dev": true, + "node_modules/@aztec/circuits.js/node_modules/@aztec/bb.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", + "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" + "comlink": "^4.4.1", + "commander": "^10.0.1", + "debug": "^4.3.4", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "bb.js": "dest/node/main.js" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/circuits.js/node_modules/@aztec/foundation": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", + "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aztec/bb.js": "0.23.0", + "@koa/cors": "^4.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "debug": "^4.3.4", + "detect-node": "^2.1.0", + "elliptic": "^6.5.4", + "hash.js": "^1.1.7", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "levelup": "^5.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "memdown": "^6.1.1", + "pako": "^2.1.0", + "sha3": "^2.1.4", + "zod": "^3.22.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, + "node_modules/@aztec/circuits.js/node_modules/@koa/cors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", + "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "vary": "^1.1.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, + "node_modules/@aztec/circuits.js/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@aztec/constants": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-1.1.3.tgz", + "integrity": "sha512-gAkZJR0Sjll+ftzjrDQjGUzJwUcZyKuRJr414GMRk8UlqyqNs58zllX7k8QZ9AgW/YD3K3Ll2nXXcfctTgj5tw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/entrypoints": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-1.1.3.tgz", + "integrity": "sha512-Q4OqnF04ANVAMHYGSnGsUpRW0XOLc4LI3Qy75XGfv7OXUDNxDsPrAc1+FWcMdbkfayge08jXTdpTN063qZupWw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/ethereum": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-1.1.3.tgz", + "integrity": "sha512-0QdtWIm0OYg2tqnbr8mOcJrlH5MM/WIZIQlmlYUDjcsyc997dmnVDRQMmGVQV6CvYWrKtuhrK/xvEIvOZIllig==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aztec/blob-lib": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/l1-artifacts": "1.1.3", + "@viem/anvil": "^0.0.10", + "dotenv": "^16.0.3", + "lodash.pickby": "^4.5.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/foundation": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-1.1.3.tgz", + "integrity": "sha512-JbLCEJKfjefQiev2yhdWj0VcGA1Q3dgf3IabIorKjzUPQFI/aDtL7ys486vNDLj/wv2Gb42+UiE5GvD92fU3kQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/bb.js": "1.1.3", + "@koa/cors": "^5.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "colorette": "^2.0.20", + "detect-node": "^2.1.0", + "hash.js": "^1.1.7", + "koa": "^2.16.1", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "pako": "^2.1.0", + "pino": "^9.5.0", + "pino-pretty": "^13.0.0", + "sha3": "^2.1.4", + "undici": "^5.28.5", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/key-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-1.1.3.tgz", + "integrity": "sha512-8z2UioLpktexEXq3AWsLn/qMwJtHVlm2pAR0b8R9phsC7GAin64y4WD1VNRWijT3XnetkNOqrmIGoZRCy9rArA==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/kv-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-1.1.3.tgz", + "integrity": "sha512-uqIMe49dd1pDtdEcAN+80heQ7+U8i0XwE3tBrywaAsdXaI7r0uCQJ5dG3KYgjcxMvWwkHo++oLqTR9Ufu/GrhA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/native": "1.1.3", + "@aztec/stdlib": "1.1.3", + "idb": "^8.0.0", + "lmdb": "^3.2.0", + "msgpackr": "^1.11.2", + "ohash": "^2.0.11", + "ordered-binary": "^1.5.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/l1-artifacts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-1.1.3.tgz", + "integrity": "sha512-9XAotNCjB7FCKYECoiFDmVpAswwoYyZwrYgX+xidxemGxP6Sv2+EZqEgwreMgBRw/XII8cZGz0Rbsk2ZnUNIKQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/merkle-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-1.1.3.tgz", + "integrity": "sha512-hT9JNt3dkc0OUydybxU3xYLx9RTiOQ1Fx9MFvS3xoiU1m3Mg20h0RnaZKkRXEHXYllrwea8IZw/lKoAHWfHERQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/stdlib": "1.1.3", + "sha256": "^0.2.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/native": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-1.1.3.tgz", + "integrity": "sha512-VwfB39EV09WcWduS0vphH42HoSIletkXheqkIaMvU/A3FGWgvR2EQjnueWyHJ8iQw1/SLH3fi7tmZO4ypG1+Zg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aztec/foundation": "1.1.3", + "bindings": "^1.5.0", + "msgpackr": "^1.11.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", - "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-acvm_js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-1.1.3.tgz", + "integrity": "sha512-rz3uIbG7/1Xq/3US+GddoqBXNQ1gKh6Z81XxbdupiqLNY1CwUXAJzmrYFEidxXc+T+QcKRChemuPI9Pf6+PwcA==", + "license": "MIT" + }, + "node_modules/@aztec/noir-contracts": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts/-/noir-contracts-0.23.0.tgz", + "integrity": "sha512-HOJYWpQ939MdjZRzPWerHDhAxW5Ga5Zh8+u78pMF2JviOPuvwRrrdFl4WZM62rSmTbpSROEarHeAl9PY3arvCw==", + "deprecated": "This package is deprecated. Please use @aztec/noir-contracts.js instead.", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@aztec/aztec.js": "0.23.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-contracts.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-1.1.3.tgz", + "integrity": "sha512-5JpQMOmps0pHKKhV7l6hcODdSBWjxMmheUM2ArArgy0JOT92Oz0WR9kqFBsV6tpzahMLa0+S2XnhIi6DQf8ZFQ==", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@aztec/aztec.js": "1.1.3", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/traverse": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", - "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-contracts/node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "license": "MIT" + }, + "node_modules/@aztec/noir-contracts/node_modules/@aztec/aztec.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-0.23.0.tgz", + "integrity": "sha512-mXr/Qre4N98yLHXateR1Uq8bmKH5hSODo8CsKMstMtJat3lq2vZvTBmre5z4sNnxMbRDWJ4Rr5R7VpFgjPMxlA==", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@aztec/circuit-types": "0.23.0", + "@aztec/circuits.js": "0.23.0", + "@aztec/ethereum": "0.23.0", + "@aztec/foundation": "0.23.0", + "@aztec/types": "0.23.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" } }, - "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", - "dev": true, + "node_modules/@aztec/noir-contracts/node_modules/@aztec/bb.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", + "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "comlink": "^4.4.1", + "commander": "^10.0.1", + "debug": "^4.3.4", + "tslib": "^2.4.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "bb.js": "dest/node/main.js" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-contracts/node_modules/@aztec/ethereum": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", + "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@aztec/foundation": "0.23.0", + "dotenv": "^16.0.3", + "tslib": "^2.4.0", + "viem": "^1.2.5" }, "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-contracts/node_modules/@aztec/foundation": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", + "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@aztec/bb.js": "0.23.0", + "@koa/cors": "^4.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "debug": "^4.3.4", + "detect-node": "^2.1.0", + "elliptic": "^6.5.4", + "hash.js": "^1.1.7", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "levelup": "^5.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "memdown": "^6.1.1", + "pako": "^2.1.0", + "sha3": "^2.1.4", + "zod": "^3.22.4" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@cypress/request": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", - "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", - "license": "Apache-2.0", + "node_modules/@aztec/noir-contracts/node_modules/@koa/cors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", + "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", + "license": "MIT", "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~4.0.0", - "http-signature": "~1.4.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "6.13.1", - "safe-buffer": "^5.1.2", - "tough-cookie": "^5.0.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "vary": "^1.1.2" }, "engines": { - "node": ">= 6" + "node": ">= 14.0.0" } }, - "node_modules/@cypress/request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/@aztec/noir-contracts/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", - "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", - "cpu": [ - "ppc64" - ], + "node_modules/@aztec/noir-contracts/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "license": "MIT", - "optional": true, - "os": [ - "aix" - ], "engines": { - "node": ">=18" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", - "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", - "cpu": [ - "arm" - ], + "node_modules/@aztec/noir-contracts/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", - "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", - "cpu": [ - "arm64" - ], + "node_modules/@aztec/noir-contracts/node_modules/@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", - "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/noir-contracts/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", - "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", - "cpu": [ - "arm64" + "node_modules/@aztec/noir-contracts/node_modules/abitype": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } ], "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", - "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/noir-contracts/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=18" + "node": ">=14" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", - "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", - "cpu": [ - "arm64" + "node_modules/@aztec/noir-contracts/node_modules/isows": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } ], "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "ws": "*" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", - "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", - "cpu": [ - "x64" + "node_modules/@aztec/noir-contracts/node_modules/viem": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } ], "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "0.9.8", + "isows": "1.0.3", + "ws": "8.13.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", - "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", - "cpu": [ - "arm" - ], + "node_modules/@aztec/noir-contracts/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", - "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "node_modules/@aztec/noir-noir_codegen": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-1.1.3.tgz", + "integrity": "sha512-HnX/lrDEHoizn6M/bAWDL5WoaZSALFLvBLauGwfG9XdSpFpgwWvZF9UhZADg0+lehqx+vwSny31rP3q2fOSZlw==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@aztec/noir-types": "1.1.3", + "glob": "^11.0.2", + "ts-command-line-args": "^2.5.1" + }, + "bin": { + "noir-codegen": "lib/main.js" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", - "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/noir-noirc_abi": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-1.1.3.tgz", + "integrity": "sha512-0bXBVUQrELTzYiKZwJZh8KgqCC6XXD/kR6pvFQKkJs4qBT07wya8yh4VYF0ynDSq+YHgFPgZgDdVPR5FfdYOHQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@aztec/noir-types": "1.1.3" + } + }, + "node_modules/@aztec/noir-protocol-circuits-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-1.1.3.tgz", + "integrity": "sha512-Jq08Qyhf+S14cJqGxucKo8aSS/st+1vxAwl0wOvqwVJRUBH3+gSLO1aV19/qeveXv1n0AuPVdWSxEz4nweYvQw==", + "dependencies": { + "@aztec/blob-lib": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-acvm_js": "1.1.3", + "@aztec/noir-noir_codegen": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/stdlib": "1.1.3", + "change-case": "^5.4.4", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", - "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/noir-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-1.1.3.tgz", + "integrity": "sha512-8zNJeRecFbI9Kib2uyrKoXdeu5L4lXRgLHNG8YACOXYjuWJtbyJ/h2nCVqEj3vD0AiF7rHZ27oDBxoggwlpYVA==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/@aztec/protocol-contracts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-1.1.3.tgz", + "integrity": "sha512-fM6ZeO35jAxo7/8d6K6ltXux7e9DsudZGHU+gLjRQeCgYkmYUjoaoGhzSMIo0SS35aD9lSjr2oDUPrm1FBCYIg==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "lodash.chunk": "^4.2.0", + "lodash.omit": "^4.5.0", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" + } + }, + "node_modules/@aztec/pxe": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-1.1.3.tgz", + "integrity": "sha512-O2rgeZIlIxkscwW0JoCnKEzDUfIFt3oPRfuBZGmEyl8Utt5TWBdvfsHPa275TAAqCvIeOBHkuNiwRdxX6pZ5og==", + "dependencies": { + "@aztec/bb-prover": "1.1.3", + "@aztec/bb.js": "1.1.3", + "@aztec/builder": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/key-store": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/simulator": "1.1.3", + "@aztec/stdlib": "1.1.3", + "koa": "^2.16.1", + "koa-router": "^12.0.0", + "lodash.omit": "^4.5.0", + "sha3": "^2.1.4", + "tslib": "^2.4.0", + "viem": "2.23.7" + }, + "bin": { + "pxe": "dest/bin/index.js" + }, + "engines": { + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", - "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/simulator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-1.1.3.tgz", + "integrity": "sha512-ypoTSF2KxAZTbapnoCuxZE++8j5rHNlWiwYSKzhF07VNwS2waDwxOElNfOpbsePam8Rakf4wu3dumyOxh07xtw==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-acvm_js": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "@aztec/world-state": "1.1.3", + "lodash.clonedeep": "^4.5.0", + "lodash.merge": "^4.6.2", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", - "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/stdlib": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-1.1.3.tgz", + "integrity": "sha512-jd9Ob8+zv7BvRNFvPeizvbLf2qMvrC6ZVep6fJ+hDZTEnRbOz/dPUaRhf+W7Iyot3Ltan52DBYwfvLYlAQZrVQ==", + "dependencies": { + "@aztec/bb.js": "1.1.3", + "@aztec/blob-lib": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.9.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", - "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/telemetry-client": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-1.1.3.tgz", + "integrity": "sha512-lhukZyoJJbUdNf8LNY+pbNkXFViE+OdSFvFjpY9vWqIfGt7X75KCa8rcuUyLUR4StvmT/b8etLz8bAmQdmmcVg==", + "dependencies": { + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.55.0", + "@opentelemetry/core": "^1.28.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/host-metrics": "^0.35.4", + "@opentelemetry/otlp-exporter-base": "^0.55.0", + "@opentelemetry/resource-detector-gcp": "^0.32.0", + "@opentelemetry/resources": "^1.28.0", + "@opentelemetry/sdk-logs": "^0.55.0", + "@opentelemetry/sdk-metrics": "^1.28.0", + "@opentelemetry/sdk-trace-node": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "prom-client": "^15.1.3", + "viem": "2.23.7" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", - "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/types": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/types/-/types-0.23.0.tgz", + "integrity": "sha512-VRLUBWWAl8OGuE3pNCqdv/QPZj3emQ6VQZn7Z2bjW3+1O/QRFuS3c6IQ8sqsq7dLVEdNmxrRnCyosAxC4WIzjg==", + "dependencies": { + "@aztec/ethereum": "0.23.0", + "@aztec/foundation": "0.23.0" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", - "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/types/node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "license": "MIT" + }, + "node_modules/@aztec/types/node_modules/@aztec/bb.js": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", + "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "comlink": "^4.4.1", + "commander": "^10.0.1", + "debug": "^4.3.4", + "tslib": "^2.4.0" + }, + "bin": { + "bb.js": "dest/node/main.js" + } + }, + "node_modules/@aztec/types/node_modules/@aztec/ethereum": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", + "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", + "dependencies": { + "@aztec/foundation": "0.23.0", + "dotenv": "^16.0.3", + "tslib": "^2.4.0", + "viem": "^1.2.5" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", - "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@aztec/types/node_modules/@aztec/foundation": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", + "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", + "dependencies": { + "@aztec/bb.js": "0.23.0", + "@koa/cors": "^4.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "debug": "^4.3.4", + "detect-node": "^2.1.0", + "elliptic": "^6.5.4", + "hash.js": "^1.1.7", + "koa": "^2.14.2", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "levelup": "^5.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "memdown": "^6.1.1", + "pako": "^2.1.0", + "sha3": "^2.1.4", + "zod": "^3.22.4" + }, "engines": { "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", - "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/types/node_modules/@koa/cors": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", + "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "vary": "^1.1.2" + }, "engines": { - "node": ">=18" + "node": ">= 14.0.0" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", - "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", - "cpu": [ - "arm64" - ], + "node_modules/@aztec/types/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", - "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/types/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], "engines": { - "node": ">=18" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", - "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/types/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", - "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", - "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", - "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/types/node_modules/@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/block": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-4.3.0.tgz", - "integrity": "sha512-NHzfNIqadldAB91LjkHOaQgMNA/Pc7C1N9NAm/QpewW6D0B9bSIYYnxwmv3EUyd/sbfBEheLFpwrBpvkCN+iAA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethereumjs/blockchain": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-6.3.0.tgz", - "integrity": "sha512-2FLtkThtA0SsfG6v7BzElEwLHMYE0nQf8BFGO/+HeFTwldWw0tybaobzJcX/p0j9bwEsRtnadU/iTAbXsHuNFw==", - "license": "MPL-2.0", "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/ethash": "^2.1.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" }, - "engines": { - "node": ">=14" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethereumjs/common": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", - "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "node_modules/@aztec/types/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", "license": "MIT", "dependencies": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" - } - }, - "node_modules/@ethereumjs/ethash": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-2.1.0.tgz", - "integrity": "sha512-J7nOkkNcPaWM2cZ7vdTZ8lmuRVhSQatiO/9yHTo9fkWnAxiOjkLw7ppLUrtpcCJbP7Ouk75n2ppixd4SdacNJQ==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.2.2", - "ethereum-cryptography": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@ethereumjs/evm": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/evm/-/evm-1.4.0.tgz", - "integrity": "sha512-ruLYlw6lfYukFiHyoGpJTI42UciW5ASXwMCRsmng9kuxv8TyBs711SbBUlzpO/Y2bxKGWvx6XCQJGxMCd/bqzw==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "@ethersproject/providers": "^5.7.1", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" }, - "engines": { - "node": ">=14" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethereumjs/evm/node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "node_modules/@aztec/types/node_modules/abitype": { + "version": "0.9.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", + "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", "funding": [ { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" } ], "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" - }, + "node_modules/@aztec/types/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", "engines": { "node": ">=14" } }, - "node_modules/@ethereumjs/statemanager": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.1.0.tgz", - "integrity": "sha512-yOM0Q1SMCyi0Z/D9xbXsFYdZvbXtNAYNyZ2qmEfyUk46DZHILay78/ghjPaAqszqog3zeBf7hZqzBzf2Od4o2A==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" - } - }, - "node_modules/@ethereumjs/statemanager/node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "node_modules/@aztec/types/node_modules/isows": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", + "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", "funding": [ { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" } ], "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" + "peerDependencies": { + "ws": "*" } }, - "node_modules/@ethereumjs/statemanager/node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "node_modules/@aztec/types/node_modules/viem": { + "version": "1.21.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", + "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", "funding": [ { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "type": "github", + "url": "https://github.com/sponsors/wevm" } ], "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethereumjs/statemanager/node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "0.9.8", + "isows": "1.0.3", + "ws": "8.13.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@ethereumjs/statemanager/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + "node_modules/@aztec/types/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "utf-8-validate": { + "optional": true } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/@ethereumjs/trie": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/trie/-/trie-5.1.0.tgz", - "integrity": "sha512-OVaHuZUx1ao+VmYYg63kzmMgPqwFHPdDTP3hqp5Jh4QGWdhY5ddIMVhXBZRTxqEnDZkUmBA21yyAxdmI8YaBzA==", - "license": "MPL-2.0", + "node_modules/@aztec/world-state": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-1.1.3.tgz", + "integrity": "sha512-fto3bPUsTYSgu/ETdU+knajh3dQ3/43JFzCug8EPc3LXeo2Cht/sMB+f3s8qPhCl30i42yvZTKDRPIK/2xsB7A==", "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "^2.0.0", - "readable-stream": "^3.6.0" + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/merkle-tree": "1.1.3", + "@aztec/native": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "tslib": "^2.4.0", + "zod": "^3.23.8" }, "engines": { - "node": ">=14" + "node": ">=20.10" } }, - "node_modules/@ethereumjs/tx": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", - "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "license": "MPL-2.0", + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@ethereumjs/vm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-6.5.0.tgz", - "integrity": "sha512-/i9dnF3Gw+l/47k/YgY/ba2p6lg2WY3YCkIVx0aoF71fC9nULfkQfJrTYlcn3FBiBFEjacI3p/N1F3hW7YcyzA==", - "license": "MPL-2.0", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/blockchain": "^6.3.0", - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/evm": "^1.4.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/statemanager": "^1.1.0", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.0.tgz", - "integrity": "sha512-MG6oHSQHd4ebvJrleEQQ4HhVu8Ichr0RDYEfHzsVAVjHNM+w36x9wp9r+hf1JstMXtseXDtkiVoARAG6M959AA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/providers": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.0.tgz", - "integrity": "sha512-+TTrrINMzZ0aXtlwO/95uhAggKm4USLm1PbeCBR/3XZ7+Oey+3pMyddzZEyRhizHpy1HXV0FRWRMI1O3EGYibA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/web": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.0.tgz", - "integrity": "sha512-ApHcbbj+muRASVDSCl/tgxaH2LBkRMEYfLOLVa0COipx0+nlu0QKet7U2lEg0vdkh8XRSLf2nd1f1Uk9SrVSGA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@fuel-ts/abi-coder": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.2.tgz", - "integrity": "sha512-Agkqnm6NAebbxCVnYqRTX2LCpBF5/xw3jCkTL8IYiqhAnRoVxQrWBF8NjQLERRxhtDkY7byW/GZ/4DLjhg68Cg==", - "license": "Apache-2.0", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", "dependencies": { - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "type-fest": "4.34.1" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=12" } }, - "node_modules/@fuel-ts/abi-coder/node_modules/type-fest": { - "version": "4.34.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", - "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@fuel-ts/abi-typegen": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.2.tgz", - "integrity": "sha512-NolJtjCYfByMsbkfWL2Y1HTS9IFWY46wkhuF9lgKWtAVhQ+nw2ffkkf+HR4DeHmEbHoJ3x5Lzw2+ZSb28SvCXw==", + "node_modules/@cypress/request": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", + "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", "license": "Apache-2.0", "dependencies": { - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@fuel-ts/versions": "0.101.2", - "commander": "13.1.0", - "glob": "10.4.5", - "handlebars": "4.7.8", - "mkdirp": "3.0.1", - "ramda": "0.30.1", - "rimraf": "5.0.10" - }, - "bin": { - "fuels-typegen": "typegen.js" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.4", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.14.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">= 6" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", + "node_modules/@cypress/request/node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", "dependencies": { - "balanced-match": "^1.0.0" + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", + "cpu": [ + "ppc64" + ], "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@fuel-ts/abi-typegen/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@fuel-ts/account": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.2.tgz", - "integrity": "sha512-QMAxxhf3jSfw6zaI7P0mC4lW2AbXH+dvI2ftrG8xFAQPcGryV0C9OsLSY+w0odYe9ie29/YmEWAwzwtmc1Q5nQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/address": "0.101.2", - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/merkle": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@fuel-ts/versions": "0.101.2", - "@fuels/vm-asm": "0.60.2", - "@noble/curves": "1.8.1", - "events": "3.3.0", - "graphql": "16.10.0", - "graphql-request": "6.1.0", - "graphql-tag": "2.12.6", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/address": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.2.tgz", - "integrity": "sha512-68Qd2D2WIGnW1Me/byW11AuJkWvZ9x6TW82DlpymiglkW3m7eQN/c6OS+AZ1rb2Kh3DJzCO5csXGEC/cnil3Kg==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/contract": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.2.tgz", - "integrity": "sha512-WLjtN0o+aMYSADlpUuUkX+lJtDkIPCaLP6HLwTmB2hs8w0ipLY8cswHI29Nn+eDD3aP/he1IEq9CB7dyx2j/fg==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/account": "0.101.2", - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/merkle": "0.101.2", - "@fuel-ts/program": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/crypto": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.2.tgz", - "integrity": "sha512-PispgowI8kx+wyBu4a0od4zqQ/VH+W7yCFp+AsuTpswDIBGccp7K7xqOYUY3YAT+H8ujzK7ZTfd6DIpBBqVLQw==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/errors": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.2.tgz", - "integrity": "sha512-lbucMZ4PA8oc8xY/LPiOUgM0fQSC0Otn6dr9+E3ARxOOyEwWF5CQZCxsLXCEIxehpZBV6kwYU8Etf4A+CHeeTA==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/versions": "0.101.2" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/hasher": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.2.tgz", - "integrity": "sha512-r0QkKj3PFjkO/FPlaNx7caYq/98MQ+U6GDqyaUcIwyWq+PFNFiBa3VMCBK+v7wTuCuk0iE20Qy6bgpkee3n4qg==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/math": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.2.tgz", - "integrity": "sha512-BCR0+DtvpXFuCEwUdGvT8mmgbpoeqUYyEHoCk+p0XboqxwR0Hfg/5Do/GfA3vqhpGRpuVk27P4Qk6U3r5a0VWg==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.2", - "@types/bn.js": "5.1.6", - "bn.js": "5.2.1" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/merkle": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.2.tgz", - "integrity": "sha512-+Nv5rBkv3UOL/UmDfh34qwssmSaqcG7DUMJd3o45XFu+lDTjnRqisYLHf1wMTRL8tbKktBxz/m/6jQDO94JmoA==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/program": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.2.tgz", - "integrity": "sha512-gIyEEjlBnL+jn8ceaVtkDuun6mg/q+zWhnToXPsmx7L/1R0V37v2aiIzcLn9tuYm3tMm/MsyOpbMNwNUtSU08g==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/account": "0.101.2", - "@fuel-ts/address": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/recipes": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.2.tgz", - "integrity": "sha512-4nxlDqYlld5648yp43L8arXvfJapMMzedRCN+C8VOmxzEnEpepJgg1aGmfnUH/xZQMx1S/3inrpvRNoZmTsInQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/abi-typegen": "0.101.2", - "@fuel-ts/account": "0.101.2", - "@fuel-ts/address": "0.101.2", - "@fuel-ts/contract": "0.101.2", - "@fuel-ts/program": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/script": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.2.tgz", - "integrity": "sha512-ovCSQpV2EOvsdUxLVQQIcLT24iHUeaBXeb5iDwXizz3GpawbB4jcD7SiwqfRe16uZ0U1/HTs7aLA/briMu0d7w==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/account": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/program": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2" - }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/transactions": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.2.tgz", - "integrity": "sha512-kC89/RWAGzQE0XA5+4VNRLLn2As/JlCiDRMsa9NDyX2bcR0QgVi8ZSnXScyrZ/BHbacqWRH7nqTGdyTkcmwUwA==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/address": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/utils": "0.101.2" - }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/utils": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.2.tgz", - "integrity": "sha512-5HnA6YtCRVNg0IqTL1jq+UhgVmHTch8vqn2cGXrCzvm/ec2KT6y4MNqiTNR+bjx7C+DxUD9fjW2qMtrblhaX8w==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/versions": "0.101.2", - "fflate": "0.8.2" - }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - }, - "peerDependencies": { - "vitest": "3.0.9" + "node": ">=18" } }, - "node_modules/@fuel-ts/versions": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.2.tgz", - "integrity": "sha512-t+IfrgL/XldlAJeOKkDIBjt4qh8AOFHJcfLFVOX7lindxYkkp47e2A/DUNxiZ4oSOSRZdbWpW/nuNuY1jTRmYw==", - "license": "Apache-2.0", - "dependencies": { - "chalk": "4", - "cli-table": "0.3.11" - }, - "bin": { - "fuels-versions": "versions.js" - }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuels/vm-asm": { - "version": "0.60.2", - "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", - "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", - "license": "Apache-2.0" - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@grpc/grpc-js": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", - "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12.10.0" + "node": ">=18" } }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", - "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", - "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/block": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-4.3.0.tgz", + "integrity": "sha512-NHzfNIqadldAB91LjkHOaQgMNA/Pc7C1N9NAm/QpewW6D0B9bSIYYnxwmv3EUyd/sbfBEheLFpwrBpvkCN+iAA==", + "license": "MPL-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/console/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/blockchain": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-6.3.0.tgz", + "integrity": "sha512-2FLtkThtA0SsfG6v7BzElEwLHMYE0nQf8BFGO/+HeFTwldWw0tybaobzJcX/p0j9bwEsRtnadU/iTAbXsHuNFw==", + "license": "MPL-2.0", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/ethash": "^2.1.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/console/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14" } }, - "node_modules/@jest/console/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/ethash": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-2.1.0.tgz", + "integrity": "sha512-J7nOkkNcPaWM2cZ7vdTZ8lmuRVhSQatiO/9yHTo9fkWnAxiOjkLw7ppLUrtpcCJbP7Ouk75n2ppixd4SdacNJQ==", + "license": "MPL-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.2.2", + "ethereum-cryptography": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/console/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/evm": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/evm/-/evm-1.4.0.tgz", + "integrity": "sha512-ruLYlw6lfYukFiHyoGpJTI42UciW5ASXwMCRsmng9kuxv8TyBs711SbBUlzpO/Y2bxKGWvx6XCQJGxMCd/bqzw==", + "license": "MPL-2.0", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "@ethersproject/providers": "^5.7.1", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/statemanager": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.1.0.tgz", + "integrity": "sha512-yOM0Q1SMCyi0Z/D9xbXsFYdZvbXtNAYNyZ2qmEfyUk46DZHILay78/ghjPaAqszqog3zeBf7hZqzBzf2Od4o2A==", + "license": "MPL-2.0", "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" } }, - "node_modules/@jest/core/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/trie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/trie/-/trie-5.1.0.tgz", + "integrity": "sha512-OVaHuZUx1ao+VmYYg63kzmMgPqwFHPdDTP3hqp5Jh4QGWdhY5ddIMVhXBZRTxqEnDZkUmBA21yyAxdmI8YaBzA==", + "license": "MPL-2.0", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "^2.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "license": "MPL-2.0", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/vm": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-6.5.0.tgz", + "integrity": "sha512-/i9dnF3Gw+l/47k/YgY/ba2p6lg2WY3YCkIVx0aoF71fC9nULfkQfJrTYlcn3FBiBFEjacI3p/N1F3hW7YcyzA==", + "license": "MPL-2.0", "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/blockchain": "^6.3.0", + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/evm": "^1.4.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/statemanager": "^1.1.0", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/core/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, + "node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, + "node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, + "node_modules/@ethersproject/basex": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", + "bech32": "1.1.4", + "ws": "8.18.0" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fuel-ts/abi-coder": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", + "integrity": "sha512-ZlifuRVn7yuR3VknX1vHWDX9BmUFryoGiNqdGTXCBq5XC6Z2ASmdJTis4wcGYaBsrlZv95RWym9i9TtRLA+Y1A==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "type-fest": "4.34.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/abi-typegen": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", + "integrity": "sha512-WWXESg9SaBOLBXYsTeW5We3LA2aHzRhCzUAp5UDqaCChztzAyyj4aXd68zpUiJ5UlH3C6bxgv2zHMhWMo+rriA==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "commander": "13.1.0", + "glob": "10.4.5", + "handlebars": "4.7.8", + "mkdirp": "3.0.1", + "ramda": "0.30.1", + "rimraf": "5.0.10" + }, + "bin": { + "fuels-typegen": "typegen.js" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@fuel-ts/account": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.3.tgz", + "integrity": "sha512-ubDVW4NSRdTEyaAFUnL75+ysjLcb+/5M3Rtk5hFDawhcrA9rSB0UDel5lOavERuJlKPtu4jngcv8nTiXdu4mGw==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "@noble/curves": "1.8.1", + "events": "3.3.0", + "graphql": "16.10.0", + "graphql-request": "6.1.0", + "graphql-tag": "2.12.6", + "ramda": "0.30.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/account/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fuel-ts/address": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.3.tgz", + "integrity": "sha512-GbolfGNSSx8hEHPxI4ayD3MAhnHMCg3mqCFncTXXFaL2uMK82aSvab8s0QLNxcIPZmS9T5rOCMY0sqwm5ahh7w==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fuel-ts/contract": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.3.tgz", + "integrity": "sha512-uMpELAr/jkyyNIUCuCrTKbhT1oH/smUEVKL7D+4HvJ2nqn7xO4XdaNFGf6/5qylElDP8xn4Xtte8sb+d9UeZTA==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/crypto": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.3.tgz", + "integrity": "sha512-bb/wnMMcf8czSpsamPfJx/I3/ag/mcmO2B9Tzy5Z4cFYbRs1Vzm2rVAmh7qsr00evxhftiu9QesPACZUjabZag==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fuel-ts/errors": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.3.tgz", + "integrity": "sha512-c2WqH0fkSLPqDmAeCNJonca1Ui9CElFz3PEh/77btIE61bX9Iclq/L7/GtZabz8jsedBBbGJwyrgE4GTgNMwXQ==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/versions": "0.101.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/hasher": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.3.tgz", + "integrity": "sha512-XaT1Gwq7KdQQUEDXrY3Vx7c6vgIAZlAVG6RszkY6a2Gl72eYGB1tMf1GKkkKEMw5/liF/C8OG9/recwbxlI4XQ==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@fuel-ts/math": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.3.tgz", + "integrity": "sha512-vqU4rzBjDkLHT7YTjhFWvbo3LDnDR3vgl33kMDj93eMu2tfm8W8WWRxOoqzLNf18sl8dcoYMrNvIgXIOplddOQ==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/errors": "0.101.3", + "@types/bn.js": "5.1.6", + "bn.js": "5.2.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/math/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@fuel-ts/merkle": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", + "integrity": "sha512-zOLlsSjmCmjACHPiJscVRIfq2DKtHd4eOPFwhQkaBedzp/NRAINAaapFayTJiyF8sBucCQN4cOyC6ZGD7jjf4w==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/program": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.3.tgz", + "integrity": "sha512-DZzP8CiqXqhi+jR9m0u+lbCrDtojGX5pv+j2lAyGRdyt80UIkFucDrbVXD0v2Iuni02PIaLDEAoum+y/sqGgrw==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/recipes": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.3.tgz", + "integrity": "sha512-rzVDeJM69Wth8wXly656g3VCNbFpouHfZQA2vJiEoAZn+YB9m9Z73DfAIDn7WUw3Sy/iBAw884OKoV3zZjV8qw==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/abi-typegen": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/contract": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/script": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.3.tgz", + "integrity": "sha512-Bt5NT9R9S9PNi9xmeq20J27QWgD9H4/csH1zXLVkWqS/hy+HKwojwn1n8Nje0ZgbQIBB52OHGiq/txz2XaIsrg==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/transactions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.3.tgz", + "integrity": "sha512-JBQ6BOUFiI/UX1VAvY+8AdS73XCTRirOBF/aLrnc8X+uVpoyHKvDaM+oWzl6YMMkgAGVz+D4DgYkjNWiKN+oag==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/utils": "0.101.3" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuel-ts/utils": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.3.tgz", + "integrity": "sha512-VGhp0TKT9h/E1Ptx7nFbiK/GnQptuewUg7aJgsgcYuSqyoJa+3cYbdTed5r9Mzoi4y/K/x/ano8Ui1yQETTa8Q==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "fflate": "0.8.2" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + }, + "peerDependencies": { + "vitest": "3.0.9" + } + }, + "node_modules/@fuel-ts/versions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.3.tgz", + "integrity": "sha512-IVsK4t/ouxtvsWZNxLccOUVe+3BIsjsXhok74jWiwB8ATGmf/CtKnvsDJhhx9OrALZFdMz7WiCXrsBkhEITpCA==", + "license": "Apache-2.0", + "dependencies": { + "chalk": "4", + "cli-table": "0.3.11" + }, + "bin": { + "fuels-versions": "versions.js" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + } + }, + "node_modules/@fuels/vm-asm": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", + "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", + "license": "Apache-2.0" + }, + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "license": "Apache-2.0", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/storage": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.0.tgz", + "integrity": "sha512-5m9GoZqKh52a1UqkxDBu/+WVFDALNtHg5up5gNmNbXQWBcV813tzJKsyDtKjOPrlR1em1TxtD7NSPCrObH7koQ==", + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", + "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "license": "BSD-3-Clause" + }, + "node_modules/@ioredis/commands": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.3.1.tgz", + "integrity": "sha512-bYtU8avhGIcje3IhvF9aSjsa5URMZBHnwKtOvXsT4sfYy9gppW11gLPT/9oNqlJZD47yPKveQFTAFWpHjKvUoQ==", + "license": "MIT" + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect/node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/expect/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/reporters/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", + "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", + "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.1", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", + "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", + "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", + "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", + "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", + "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", + "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", + "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@metamask/abi-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", + "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "@metamask/superstruct": "^3.1.0", + "@metamask/utils": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/eth-block-tracker": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-block-tracker/-/eth-block-tracker-9.0.3.tgz", + "integrity": "sha512-I29IwdhnSJtk/A05vFsiOV92ADXXtBymXfC0naSvHP9TYNNOryG9y2l0jmnSzBsP3+wefCkHJWEzEwF4YSKogw==", + "license": "MIT", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^5.0.0" + }, + "engines": { + "node": ">=16.20 || ^18.16" + } + }, + "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-filters": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-filters/-/eth-json-rpc-filters-7.0.1.tgz", + "integrity": "sha512-lq3JKi528MZi9ygkPLVyKV/FIJUMwvJnPF0OPnZuhEWA8S0SVC1si5qhqerGz+jrwgrweWf17m1wzgso0MbIfw==", + "license": "ISC", + "dependencies": { + "@metamask/eth-query": "^4.0.0", + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "async-mutex": "^0.5.0", + "pify": "^5.0.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20", + "yarn": "^1.22.22" + } + }, + "node_modules/@metamask/eth-json-rpc-infura": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-infura/-/eth-json-rpc-infura-9.1.0.tgz", + "integrity": "sha512-47x7evivl5XUsTsRoF9t27guCXgmfsbQq+pjHHFf87WoISGsgua6wVr91b1iVCv8MzQqupJBewtnG8AzWpwEEQ==", + "license": "ISC", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^2.1.0", + "@metamask/json-rpc-engine": "^7.1.1", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "node-fetch": "^2.7.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", + "dependencies": { + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-json-rpc-middleware": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-12.1.2.tgz", + "integrity": "sha512-qhaUq0SenE8P916yuYDj5dbdGRvl/qJDsjPGSlSJOi0QBASFDbKpo5k1st+ban6duJfRUQhrwzERCVyNbtil7w==", + "license": "ISC", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@metamask/eth-block-tracker": "^9.0.3", + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/eth-sig-util": "^7.0.0", + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "klona": "^2.0.6", + "pify": "^5.0.0", + "safe-stable-stringify": "^2.4.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^16.20 || ^18.16 || >=20" } }, - "node_modules/@jest/core/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-json-rpc-provider": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-2.3.2.tgz", + "integrity": "sha512-VaZx++3gfi85+j9zB5TvqSWLeZ6QpsNjIk56Nq6OMDp2U8iUEPgjdA8CybOtkyDb88EbpuOSzHZcdHEeIX3zPw==", + "license": "ISC", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@metamask/json-rpc-engine": "^7.3.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, + "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", "dependencies": { - "jest-get-type": "^29.6.3" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@metamask/eth-query/-/eth-query-4.0.0.tgz", + "integrity": "sha512-j2yPO2axYGyxwdqXRRhk2zBijt1Nd/xKCIXQkzvfWac0sKP0L9mSt1ZxMOe/sOF1SwS2R+NSaq+gsQDsQvrC4Q==", + "license": "ISC", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-sig-util": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", + "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", + "license": "ISC", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@ethereumjs/util": "^8.1.0", + "@metamask/abi-utils": "^2.0.4", + "@metamask/utils": "^9.0.0", + "@scure/base": "~1.1.3", + "ethereum-cryptography": "^2.1.2", + "tweetnacl": "^1.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^16.20 || ^18.16 || >=20" } }, - "node_modules/@jest/reporters/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/@metamask/eth-sig-util/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" + "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, - "node_modules/@jest/reporters/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, + "node_modules/@metamask/eth-sig-util/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@jest/reporters/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/json-rpc-engine": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", + "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, + "node_modules/@metamask/rpc-errors": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", + "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", "license": "MIT", + "dependencies": { + "@metamask/utils": "^9.0.0", + "fast-safe-stringify": "^2.0.6" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, + "node_modules/@metamask/rpc-errors/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/safe-event-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", + "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12.0.0" } }, - "node_modules/@jest/reporters/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, + "node_modules/@metamask/superstruct": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", + "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@metamask/utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", + "license": "ISC", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, + "node_modules/@metamask/utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@noble/hashes": "1.8.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 8" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 8" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 8" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8.0.0" } }, - "node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/api-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", + "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", + "license": "Apache-2.0", "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@opentelemetry/api": "^1.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/types/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "license": "MIT", + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jest/types/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", + "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/sdk-logs": "0.55.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", "engines": { - "node": ">=6.0.0" + "node": ">=14" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", + "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", "license": "Apache-2.0", "engines": { - "node": ">=10.0" + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz", + "integrity": "sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=14" }, "peerDependencies": { - "tslib": "2" + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.4.0.tgz", - "integrity": "sha512-Akn8XZqN3xO9YGcgvIiTauBBXTP92QSvw6EcGha+p5nm7brhbwvev5gw4fi+ouLGrBpfPpb72+S5pxl4mkMIGQ==", + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", - "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "node": ">=14" }, "peerDependencies": { - "tslib": "2" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.8.0.tgz", - "integrity": "sha512-HeR0JQNEdBozt+FrfyM5T0X3R+fIN0D+BRDkxPP5o41fTWzHfeZEqtK16aTW8haU+h+SG7XYq9PP5kobvOmkSA==", + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "license": "Apache-2.0", - "engines": { - "node": ">=10.0" + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=14" }, "peerDependencies": { - "tslib": "2" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/abi-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", - "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", - "license": "(Apache-2.0 AND MIT)", + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/host-metrics": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz", + "integrity": "sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g==", + "license": "Apache-2.0", "dependencies": { - "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^9.0.0" + "systeminformation": "5.23.8" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", - "license": "ISC", + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz", + "integrity": "sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA==", + "license": "Apache-2.0", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-transformer": "0.55.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@metamask/eth-block-tracker": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@metamask/eth-block-tracker/-/eth-block-tracker-9.0.3.tgz", - "integrity": "sha512-I29IwdhnSJtk/A05vFsiOV92ADXXtBymXfC0naSvHP9TYNNOryG9y2l0jmnSzBsP3+wefCkHJWEzEwF4YSKogw==", - "license": "MIT", + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", "dependencies": { - "@metamask/eth-json-rpc-provider": "^3.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.1.0", - "json-rpc-random-id": "^1.0.1", - "pify": "^5.0.0" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=16.20 || ^18.16" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/eth-json-rpc-provider": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", - "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", - "license": "ISC", - "dependencies": { - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz", + "integrity": "sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-logs": "0.55.0", + "@opentelemetry/sdk-metrics": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0", + "protobufjs": "^7.3.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@metamask/eth-json-rpc-filters": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-filters/-/eth-json-rpc-filters-7.0.1.tgz", - "integrity": "sha512-lq3JKi528MZi9ygkPLVyKV/FIJUMwvJnPF0OPnZuhEWA8S0SVC1si5qhqerGz+jrwgrweWf17m1wzgso0MbIfw==", - "license": "ISC", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", "dependencies": { - "@metamask/eth-query": "^4.0.0", - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "async-mutex": "^0.5.0", - "pify": "^5.0.0" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^16.20 || ^18.16 || >=20", - "yarn": "^1.22.22" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-json-rpc-infura": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-infura/-/eth-json-rpc-infura-9.1.0.tgz", - "integrity": "sha512-47x7evivl5XUsTsRoF9t27guCXgmfsbQq+pjHHFf87WoISGsgua6wVr91b1iVCv8MzQqupJBewtnG8AzWpwEEQ==", - "license": "ISC", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", "dependencies": { - "@metamask/eth-json-rpc-provider": "^2.1.0", - "@metamask/json-rpc-engine": "^7.1.1", - "@metamask/rpc-errors": "^6.0.0", - "@metamask/utils": "^8.1.0", - "node-fetch": "^2.7.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^16.20 || ^18.16 || >=20" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/json-rpc-engine": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", - "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", - "license": "ISC", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@metamask/eth-json-rpc-middleware": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-12.1.2.tgz", - "integrity": "sha512-qhaUq0SenE8P916yuYDj5dbdGRvl/qJDsjPGSlSJOi0QBASFDbKpo5k1st+ban6duJfRUQhrwzERCVyNbtil7w==", - "license": "ISC", + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", + "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", + "license": "Apache-2.0", "dependencies": { - "@metamask/eth-block-tracker": "^9.0.3", - "@metamask/eth-json-rpc-provider": "^3.0.2", - "@metamask/eth-sig-util": "^7.0.0", - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/rpc-errors": "^6.0.0", - "@metamask/utils": "^8.1.0", - "klona": "^2.0.6", - "pify": "^5.0.0", - "safe-stable-stringify": "^2.4.3" + "@opentelemetry/core": "1.30.1" }, "engines": { - "node": "^16.20 || ^18.16 || >=20" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/eth-json-rpc-provider": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", - "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", - "license": "ISC", + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", + "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "license": "Apache-2.0", "dependencies": { - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@opentelemetry/core": "1.30.1" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-json-rpc-provider": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-2.3.2.tgz", - "integrity": "sha512-VaZx++3gfi85+j9zB5TvqSWLeZ6QpsNjIk56Nq6OMDp2U8iUEPgjdA8CybOtkyDb88EbpuOSzHZcdHEeIX3zPw==", - "license": "ISC", + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.32.0.tgz", + "integrity": "sha512-+WdWSG4sZAfsk5DvRj/OUmatsHc+7Rdz8xdmxQdr1jpfUWjcKwOkGA4rondIf2ou/qPLOeYCs6hLLexsRdZaUw==", + "license": "Apache-2.0", "dependencies": { - "@metamask/json-rpc-engine": "^7.3.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/json-rpc-engine": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", - "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", - "license": "ISC", + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-query/-/eth-query-4.0.0.tgz", - "integrity": "sha512-j2yPO2axYGyxwdqXRRhk2zBijt1Nd/xKCIXQkzvfWac0sKP0L9mSt1ZxMOe/sOF1SwS2R+NSaq+gsQDsQvrC4Q==", - "license": "ISC", + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", + "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", + "license": "Apache-2.0", "dependencies": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, - "node_modules/@metamask/eth-sig-util": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", - "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", "dependencies": { - "@ethereumjs/util": "^8.1.0", - "@metamask/abi-utils": "^2.0.4", - "@metamask/utils": "^9.0.0", - "@scure/base": "~1.1.3", - "ethereum-cryptography": "^2.1.2", - "tweetnacl": "^1.0.3" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": "^16.20 || ^18.16 || >=20" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/json-rpc-engine": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", - "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "license": "Apache-2.0", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@metamask/rpc-errors": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", - "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", + "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", + "license": "Apache-2.0", "dependencies": { - "@metamask/utils": "^9.0.0", - "fast-safe-stringify": "^2.0.6" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/safe-event-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", - "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, "engines": { - "node": ">=12.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@metamask/superstruct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.1.0.tgz", - "integrity": "sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", "engines": { - "node": ">=16.0.0" + "node": ">=14" } }, - "node_modules/@metamask/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", - "license": "ISC", + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", + "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "license": "Apache-2.0", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.0.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "@opentelemetry/context-async-hooks": "1.30.1", + "@opentelemetry/core": "1.30.1", + "@opentelemetry/propagator-b3": "1.30.1", + "@opentelemetry/propagator-jaeger": "1.30.1", + "@opentelemetry/sdk-trace-base": "1.30.1", + "semver": "^7.5.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "1.4.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=14" } }, - "node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "license": "Apache-2.0", "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=14" } }, "node_modules/@pkgjs/parseargs": { @@ -3965,6 +6357,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -3978,6 +6371,7 @@ "version": "4.1.3-postman.1", "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -3988,18 +6382,11 @@ "node": ">=6" } }, - "node_modules/@postman/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/@postman/tunnel-agent": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -4072,9 +6459,9 @@ "license": "BSD-3-Clause" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz", - "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", "cpu": [ "arm" ], @@ -4086,9 +6473,9 @@ "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz", - "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", "cpu": [ "arm64" ], @@ -4100,9 +6487,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz", - "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", "cpu": [ "arm64" ], @@ -4114,9 +6501,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz", - "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", "cpu": [ "x64" ], @@ -4128,9 +6515,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz", - "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", "cpu": [ "arm64" ], @@ -4142,9 +6529,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz", - "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", "cpu": [ "x64" ], @@ -4156,9 +6543,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz", - "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", "cpu": [ "arm" ], @@ -4170,9 +6557,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz", - "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", "cpu": [ "arm" ], @@ -4184,9 +6571,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz", - "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", "cpu": [ "arm64" ], @@ -4198,9 +6585,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz", - "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", "cpu": [ "arm64" ], @@ -4212,9 +6599,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz", - "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", "cpu": [ "loong64" ], @@ -4225,10 +6612,10 @@ ], "peer": true }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz", - "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", "cpu": [ "ppc64" ], @@ -4240,9 +6627,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz", - "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", "cpu": [ "riscv64" ], @@ -4254,9 +6641,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz", - "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", "cpu": [ "riscv64" ], @@ -4268,9 +6655,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz", - "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", "cpu": [ "s390x" ], @@ -4282,9 +6669,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz", - "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", "cpu": [ "x64" ], @@ -4296,9 +6683,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz", - "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", "cpu": [ "x64" ], @@ -4309,10 +6696,24 @@ ], "peer": true }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz", - "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", "cpu": [ "arm64" ], @@ -4324,9 +6725,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz", - "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", "cpu": [ "ia32" ], @@ -4338,9 +6739,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz", - "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", "cpu": [ "x64" ], @@ -4352,65 +6753,98 @@ "peer": true }, "node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", + "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", "license": "MIT", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", - "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", "license": "MIT", "dependencies": { - "@noble/curves": "~1.4.0", - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", "license": "MIT", "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@scure/bip39": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", - "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "license": "MIT", "dependencies": { - "@noble/hashes": "~1.4.0", - "@scure/base": "~1.1.6" + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", "license": "MIT", "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@scure/starknet": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", @@ -4464,20 +6898,41 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } }, "node_modules/@swc/core": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.14.tgz", - "integrity": "sha512-WSrnE6JRnH20ZYjOOgSS4aOaPv9gxlkI2KRkN24kagbZnPZMnN8bZZyzw1rrLvwgpuRGv17Uz+hflosbR+SP6w==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.5.tgz", + "integrity": "sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.17" + "@swc/types": "^0.1.24" }, "engines": { "node": ">=10" @@ -4487,19 +6942,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.10.14", - "@swc/core-darwin-x64": "1.10.14", - "@swc/core-linux-arm-gnueabihf": "1.10.14", - "@swc/core-linux-arm64-gnu": "1.10.14", - "@swc/core-linux-arm64-musl": "1.10.14", - "@swc/core-linux-x64-gnu": "1.10.14", - "@swc/core-linux-x64-musl": "1.10.14", - "@swc/core-win32-arm64-msvc": "1.10.14", - "@swc/core-win32-ia32-msvc": "1.10.14", - "@swc/core-win32-x64-msvc": "1.10.14" + "@swc/core-darwin-arm64": "1.13.5", + "@swc/core-darwin-x64": "1.13.5", + "@swc/core-linux-arm-gnueabihf": "1.13.5", + "@swc/core-linux-arm64-gnu": "1.13.5", + "@swc/core-linux-arm64-musl": "1.13.5", + "@swc/core-linux-x64-gnu": "1.13.5", + "@swc/core-linux-x64-musl": "1.13.5", + "@swc/core-win32-arm64-msvc": "1.13.5", + "@swc/core-win32-ia32-msvc": "1.13.5", + "@swc/core-win32-x64-msvc": "1.13.5" }, "peerDependencies": { - "@swc/helpers": "*" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -4508,9 +6963,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.14.tgz", - "integrity": "sha512-Dh4VyrhDDb05tdRmqJ/MucOPMTnrB4pRJol18HVyLlqu1HOT5EzonUniNTCdQbUXjgdv5UVJSTE1lYTzrp+myA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.5.tgz", + "integrity": "sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==", "cpu": [ "arm64" ], @@ -4524,9 +6979,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.14.tgz", - "integrity": "sha512-KpzotL/I0O12RE3tF8NmQErINv0cQe/0mnN/Q50ESFzB5kU6bLgp2HMnnwDTm/XEZZRJCNe0oc9WJ5rKbAJFRQ==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.5.tgz", + "integrity": "sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==", "cpu": [ "x64" ], @@ -4540,9 +6995,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.14.tgz", - "integrity": "sha512-20yRXZjMJVz1wp1TcscKiGTVXistG+saIaxOmxSNQia1Qun3hSWLL+u6+5kXbfYGr7R2N6kqSwtZbIfJI25r9Q==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.5.tgz", + "integrity": "sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==", "cpu": [ "arm" ], @@ -4556,9 +7011,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.14.tgz", - "integrity": "sha512-Gy7cGrNkiMfPxQyLGxdgXPwyWzNzbHuWycJFcoKBihxZKZIW8hkPBttkGivuLC+0qOgsV2/U+S7tlvAju7FtmQ==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.5.tgz", + "integrity": "sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==", "cpu": [ "arm64" ], @@ -4572,9 +7027,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.14.tgz", - "integrity": "sha512-+oYVqJvFw62InZ8PIy1rBACJPC2WTe4vbVb9kM1jJj2D7dKLm9acnnYIVIDsM5Wo7Uab8RvPHXVbs19IBurzuw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.5.tgz", + "integrity": "sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==", "cpu": [ "arm64" ], @@ -4588,9 +7043,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.14.tgz", - "integrity": "sha512-OmEbVEKQFLQVHwo4EJl9osmlulURy46k232Opfpn/1ji0t2KcNCci3POsnfMuoZjLkGJv8vGNJdPQxX+CP+wSA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.5.tgz", + "integrity": "sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==", "cpu": [ "x64" ], @@ -4604,9 +7059,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.14.tgz", - "integrity": "sha512-OZW+Icm8DMPqHbhdxplkuG8qrNnPk5i7xJOZWYi1y5bTjgGFI4nEzrsmmeHKMdQTaWwsFrm3uK1rlyQ48MmXmg==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.5.tgz", + "integrity": "sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==", "cpu": [ "x64" ], @@ -4620,9 +7075,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.14.tgz", - "integrity": "sha512-sTvc+xrDQXy3HXZFtTEClY35Efvuc3D+busYm0+rb1+Thau4HLRY9WP+sOKeGwH9/16rzfzYEqD7Ds8A9ykrHw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.5.tgz", + "integrity": "sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==", "cpu": [ "arm64" ], @@ -4636,9 +7091,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.14.tgz", - "integrity": "sha512-j2iQ4y9GWTKtES5eMU0sDsFdYni7IxME7ejFej25Tv3Fq4B+U9tgtYWlJwh1858nIWDXelHiKcSh/UICAyVMdQ==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.5.tgz", + "integrity": "sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==", "cpu": [ "ia32" ], @@ -4652,9 +7107,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.14.tgz", - "integrity": "sha512-TYtWkUSMkjs0jGPeWdtWbex4B+DlQZmN/ySVLiPI+EltYCLEXsFMkVFq6aWn48dqFHggFK0UYfvDrJUR2c3Qxg==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.5.tgz", + "integrity": "sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==", "cpu": [ "x64" ], @@ -4674,21 +7129,22 @@ "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", - "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" } }, "node_modules/@temporalio/activity": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/activity/-/activity-1.12.1.tgz", - "integrity": "sha512-EPPIR5J0A6OxWTr5HGyeM2Lwh3US8S73N3ZFelCPaJwOq2Fh7qrLiwYp2wCwGYhhYI9Xppo3xE45MWUxayBa3Q==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/activity/-/activity-1.13.0.tgz", + "integrity": "sha512-/h+S7+D7JylaRGZq/3q6h0HxFwFop5zO7qWWrYAT7HCgXdtVNZJWEbPjpV9elJXDVSZ7lIz4GrZREATYZ38Txw==", "license": "MIT", "dependencies": { - "@temporalio/common": "1.12.1", + "@temporalio/client": "1.13.0", + "@temporalio/common": "1.13.0", "abort-controller": "^3.0.0" }, "engines": { @@ -4696,14 +7152,14 @@ } }, "node_modules/@temporalio/client": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/client/-/client-1.12.1.tgz", - "integrity": "sha512-m89isGb6I4BBeCbhkvXbpjeRZZUa3E2R06J/I+t2JWgv0Tg+PoNPusvU9UBd6LN7f7AetsQvAZKU6eQHyWxSEA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/client/-/client-1.13.0.tgz", + "integrity": "sha512-cIEqEFNy8HdvlKGTJQH80C8vUWG0PUAYVS++EGuSNmU3TFb/3TaV/ATVlBiLeiIr05lbDl3LAsWxTSO3gaRXEg==", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", - "@temporalio/common": "1.12.1", - "@temporalio/proto": "1.12.1", + "@temporalio/common": "1.13.0", + "@temporalio/proto": "1.13.0", "abort-controller": "^3.0.0", "long": "^5.2.3", "uuid": "^9.0.1" @@ -4712,15 +7168,29 @@ "node": ">= 18.0.0" } }, + "node_modules/@temporalio/client/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@temporalio/common": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/common/-/common-1.12.1.tgz", - "integrity": "sha512-gMVNYh49qGNFPKN22BPXtQlgvcD8rxUoP0QO0ePeaz9TyHG6+3TURGhc8xybJA7zHnpfW8TH8XHMWJIMzCPxtg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/common/-/common-1.13.0.tgz", + "integrity": "sha512-YBUXof7zsLbjI+J+FdndbN0JPZY3vKbBWhXV5T4efLZD1IyFmHww10bayDk+37/aVCgqPalBbgWHJnkwk0tRYA==", "license": "MIT", "dependencies": { - "@temporalio/proto": "1.12.1", + "@temporalio/proto": "1.13.0", "long": "^5.2.3", - "ms": "^3.0.0-canary.1", + "ms": "3.0.0-canary.1", + "nexus-rpc": "^0.0.1", "proto3-json-serializer": "^2.0.0" }, "engines": { @@ -4728,14 +7198,14 @@ } }, "node_modules/@temporalio/core-bridge": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/core-bridge/-/core-bridge-1.12.1.tgz", - "integrity": "sha512-JOLavcVhzLf4QDK7S/SAZjTbbtiYRoZoJCvJsl6T9s6MJFyeT1ih+4jeAN3UUmhLvaP++sqEuFSfRVJ0ZFoFNA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/core-bridge/-/core-bridge-1.13.0.tgz", + "integrity": "sha512-xJpO+6m88Bdt2g9n13CvfiLy0Rw80Rn8bbCG1U87LPVPoR2xbE2YgcX7ps56zptiQgrSldT7S8UYU2f5X5iAyQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", - "@temporalio/common": "1.12.1", + "@temporalio/common": "1.13.0", "arg": "^5.0.2", "cargo-cp-artifact": "^0.1.8", "which": "^4.0.0" @@ -4744,10 +7214,26 @@ "node": ">= 18.0.0" } }, + "node_modules/@temporalio/nexus": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/nexus/-/nexus-1.13.0.tgz", + "integrity": "sha512-YKVIWzE8/83aGzaR28Y2m45WWlAxboKjHrvpdIrWogYEB7sG6dgju07zIqCKtXcA/k7ja29fq638y5ii7SLP8Q==", + "license": "MIT", + "dependencies": { + "@temporalio/client": "1.13.0", + "@temporalio/common": "1.13.0", + "@temporalio/proto": "1.13.0", + "long": "^5.2.3", + "nexus-rpc": "^0.0.1" + }, + "engines": { + "node": ">= 18.0.0" + } + }, "node_modules/@temporalio/proto": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/proto/-/proto-1.12.1.tgz", - "integrity": "sha512-hW5jvxBuoKdh3CwbGT/AQoPMFoGG8xcPcHRMCTta/HZGFHRDibbr0aDfPS6ke7oYtcpWF0A8d6jRAHEXyPUvUQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/proto/-/proto-1.13.0.tgz", + "integrity": "sha512-jplwOQAgghdRJljTVI9Lawar4L0vGM+vT0TfxvKm+/hVf4CpPEAwvy+El9doR4wu1uYg9g94LnPmZdzoUu5qyA==", "license": "MIT", "dependencies": { "long": "^5.2.3", @@ -4758,22 +7244,25 @@ } }, "node_modules/@temporalio/worker": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/worker/-/worker-1.12.1.tgz", - "integrity": "sha512-jI3UxPAVbuM2MJO0c27iNV59KNHgAlx6yoJOpcE+jdGAmoN52MHdSt3qedrWtWINgZDbZg9dPC8KoDbXr9kP6g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/worker/-/worker-1.13.0.tgz", + "integrity": "sha512-NmtDleOccUVrYwbg8H3gjQt5dPMbKG6SUTegO9KlhipsEuJQ69OAeenMhjUmuEsZhG/jkaFwPR81JnAvBovgIw==", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", "@swc/core": "^1.3.102", - "@temporalio/activity": "1.12.1", - "@temporalio/client": "1.12.1", - "@temporalio/common": "1.12.1", - "@temporalio/core-bridge": "1.12.1", - "@temporalio/proto": "1.12.1", - "@temporalio/workflow": "1.12.1", + "@temporalio/activity": "1.13.0", + "@temporalio/client": "1.13.0", + "@temporalio/common": "1.13.0", + "@temporalio/core-bridge": "1.13.0", + "@temporalio/nexus": "1.13.0", + "@temporalio/proto": "1.13.0", + "@temporalio/workflow": "1.13.0", "abort-controller": "^3.0.0", - "heap-js": "^2.3.0", + "heap-js": "^2.6.0", "memfs": "^4.6.0", + "nexus-rpc": "^0.0.1", + "proto3-json-serializer": "^2.0.0", "protobufjs": "^7.2.5", "rxjs": "^7.8.1", "source-map": "^0.7.4", @@ -4788,18 +7277,28 @@ } }, "node_modules/@temporalio/workflow": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@temporalio/workflow/-/workflow-1.12.1.tgz", - "integrity": "sha512-r2d2tzEf6zJENewZMku1ge53QO52ZTN8bJXp8zzerPYyMx9Iqhg3Ck1ckrdpxpDw9gxBYZsRbwS2vpiq53ZKRQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@temporalio/workflow/-/workflow-1.13.0.tgz", + "integrity": "sha512-8mVMB55cwl0e4+EBlp1prQyttJ8qYZfhsieVcygirr5xXKBU6wcSCun3sAk16lTYa4S5We7XZPyZk0vBB6/WOA==", "license": "MIT", "dependencies": { - "@temporalio/common": "1.12.1", - "@temporalio/proto": "1.12.1" + "@temporalio/common": "1.13.0", + "@temporalio/proto": "1.13.0", + "nexus-rpc": "^0.0.1" }, "engines": { "node": ">= 18.0.0" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -4850,9 +7349,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -4871,13 +7370,13 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, "node_modules/@types/bn.js": { @@ -4889,6 +7388,12 @@ "@types/node": "*" } }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "license": "MIT" + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -4966,6 +7471,7 @@ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4984,12 +7490,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "version": "24.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", + "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~7.10.0" } }, "node_modules/@types/prettier": { @@ -5015,6 +7521,35 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "license": "MIT", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", @@ -5022,6 +7557,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -5039,6 +7580,24 @@ "dev": true, "license": "MIT" }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@viem/anvil": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@viem/anvil/-/anvil-0.0.10.tgz", + "integrity": "sha512-9PzYXBRikfSUhhm8Bd0avv07agwcbMJ5FaSu2D2vbE0cxkvXGtolL3fW5nz2yefMqOqVQL4XzfM5nwY81x3ytw==", + "license": "MIT", + "dependencies": { + "execa": "^7.1.1", + "get-port": "^6.1.2", + "http-proxy": "^1.18.1", + "ws": "^8.13.0" + } + }, "node_modules/@vitest/expect": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", @@ -5351,6 +7910,27 @@ "generate": "dist/generate.js" } }, + "node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -5381,6 +7961,46 @@ "node": ">=12" } }, + "node_modules/abstract-level/node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/abstract-leveldown": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.0.0", + "is-buffer": "^2.0.5", + "level-concat-iterator": "^3.0.0", + "level-supports": "^2.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -5405,6 +8025,15 @@ "acorn": "^8.14.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/acorn-walk": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", @@ -5424,6 +8053,15 @@ "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", "license": "MIT" }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -5485,13 +8123,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -5544,6 +8198,24 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -5590,12 +8262,45 @@ "tslib": "^2.4.0" } }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "license": "MIT", + "dependencies": { + "retry": "0.13.1" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -5644,109 +8349,6 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-jest/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/babel-jest/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-jest/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-jest/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -5781,9 +8383,9 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { @@ -5804,7 +8406,7 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { @@ -5871,12 +8473,6 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "license": "Unlicense" - }, "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", @@ -5892,10 +8488,20 @@ "node": ">=14.0.0" } }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -5903,22 +8509,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", + "license": "MIT" + }, "node_modules/bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==" + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "license": "MIT" }, "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -5955,10 +8576,47 @@ "run-parallel-limit": "^1.1.0" } }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.25.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", + "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", "funding": [ { "type": "opencollective", @@ -5975,10 +8633,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001737", + "electron-to-chromium": "^1.5.211", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -6034,16 +8692,29 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "license": "MIT", "dependencies": { "load-tsconfig": "^0.2.3" }, @@ -6054,6 +8725,26 @@ "esbuild": ">=0.18" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c-kzg": { + "version": "4.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/c-kzg/-/c-kzg-4.0.0-alpha.1.tgz", + "integrity": "sha512-I8S9+c6OEaF6mD5OQJ/PylPk8C3TENQqvMomzV4u+NyOTdVOwF/VFj/z2o5OOPt930qkms0AbzXZ+Qu4qQCYxg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^5.0.0" + } + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -6064,6 +8755,19 @@ "node": ">=8" } }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "license": "MIT", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -6115,7 +8819,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -6132,9 +8835,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001697", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz", - "integrity": "sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==", + "version": "1.0.30001741", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", + "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", "funding": [ { "type": "opencollective", @@ -6189,9 +8892,9 @@ } }, "node_modules/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "license": "MIT", "peer": true, "dependencies": { @@ -6233,6 +8936,12 @@ "node": ">=8" } }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "license": "MIT" + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -6257,6 +8966,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6301,6 +9011,19 @@ "node": ">=8" } }, + "node_modules/cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/cjs-module-lexer": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", @@ -6315,39 +9038,103 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "abstract-level": "^1.0.2", - "catering": "^2.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "^2.2.2", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/classic-level/node_modules/napi-macros": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "license": "MIT" + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { - "colors": "1.0.3" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.2.0" + "node": ">=8" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/clone": { @@ -6372,13 +9159,28 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, + "node_modules/co-body": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.2.0.tgz", + "integrity": "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==", + "license": "MIT", + "dependencies": { + "@hapi/bourne": "^3.0.0", + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -6404,6 +9206,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", @@ -6425,26 +9233,215 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, "license": "MIT" }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-hex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-hex/-/convert-hex-0.1.0.tgz", + "integrity": "sha512-w20BOb1PiR/sEJdS6wNrUjF5CSfscZFUp7R9NSlXH8h2wynzXVEPFPJECAnkNylZ+cvf3p7TyRUHggDmrwXT9A==" + }, "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, "license": "MIT" }, + "node_modules/convert-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-string/-/convert-string-0.1.0.tgz", + "integrity": "sha512-1KX9ESmtl8xpT2LN2tFnKSbV4NiarbVi8DVb39ZriijvtTklyrT+4dT1wsGMHKD3CJUjXgvJzstm9qL9ICojGA==" + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -6463,6 +9460,19 @@ "node": ">=0.8" } }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -6526,10 +9536,19 @@ "node": ">=0.10" } }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -6566,6 +9585,27 @@ "node": ">=6" } }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT" + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -6576,6 +9616,20 @@ "node": ">=0.10.0" } }, + "node_modules/deferred-leveldown": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz", + "integrity": "sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", + "dependencies": { + "abstract-leveldown": "^7.2.0", + "inherits": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -6602,6 +9656,12 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -6611,6 +9671,44 @@ "node": ">=0.10" } }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -6621,6 +9719,12 @@ "node": ">=8" } }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -6636,19 +9740,32 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -6671,6 +9788,18 @@ "node": ">= 0.4" } }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -6687,16 +9816,31 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, "node_modules/electron-to-chromium": { - "version": "1.5.91", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.91.tgz", - "integrity": "sha512-sNSHHyq048PFmZY4S90ax61q+gLCs0X0YmcOII9wG9S2XwbVr+h4VW2wWhnbp/Eys3cCwTxVF292W3qPaxIapQ==", + "version": "1.5.214", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz", + "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==", "license": "ISC" }, "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "license": "MIT", "dependencies": { "bn.js": "^4.11.9", @@ -6709,9 +9853,9 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", "license": "MIT" }, "node_modules/emittery": { @@ -6728,15 +9872,33 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", - "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -6775,9 +9937,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -6808,9 +9970,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", - "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", + "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -6820,31 +9982,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.2", - "@esbuild/android-arm": "0.25.2", - "@esbuild/android-arm64": "0.25.2", - "@esbuild/android-x64": "0.25.2", - "@esbuild/darwin-arm64": "0.25.2", - "@esbuild/darwin-x64": "0.25.2", - "@esbuild/freebsd-arm64": "0.25.2", - "@esbuild/freebsd-x64": "0.25.2", - "@esbuild/linux-arm": "0.25.2", - "@esbuild/linux-arm64": "0.25.2", - "@esbuild/linux-ia32": "0.25.2", - "@esbuild/linux-loong64": "0.25.2", - "@esbuild/linux-mips64el": "0.25.2", - "@esbuild/linux-ppc64": "0.25.2", - "@esbuild/linux-riscv64": "0.25.2", - "@esbuild/linux-s390x": "0.25.2", - "@esbuild/linux-x64": "0.25.2", - "@esbuild/netbsd-arm64": "0.25.2", - "@esbuild/netbsd-x64": "0.25.2", - "@esbuild/openbsd-arm64": "0.25.2", - "@esbuild/openbsd-x64": "0.25.2", - "@esbuild/sunos-x64": "0.25.2", - "@esbuild/win32-arm64": "0.25.2", - "@esbuild/win32-ia32": "0.25.2", - "@esbuild/win32-x64": "0.25.2" + "@esbuild/aix-ppc64": "0.25.3", + "@esbuild/android-arm": "0.25.3", + "@esbuild/android-arm64": "0.25.3", + "@esbuild/android-x64": "0.25.3", + "@esbuild/darwin-arm64": "0.25.3", + "@esbuild/darwin-x64": "0.25.3", + "@esbuild/freebsd-arm64": "0.25.3", + "@esbuild/freebsd-x64": "0.25.3", + "@esbuild/linux-arm": "0.25.3", + "@esbuild/linux-arm64": "0.25.3", + "@esbuild/linux-ia32": "0.25.3", + "@esbuild/linux-loong64": "0.25.3", + "@esbuild/linux-mips64el": "0.25.3", + "@esbuild/linux-ppc64": "0.25.3", + "@esbuild/linux-riscv64": "0.25.3", + "@esbuild/linux-s390x": "0.25.3", + "@esbuild/linux-x64": "0.25.3", + "@esbuild/netbsd-arm64": "0.25.3", + "@esbuild/netbsd-x64": "0.25.3", + "@esbuild/openbsd-arm64": "0.25.3", + "@esbuild/openbsd-x64": "0.25.3", + "@esbuild/sunos-x64": "0.25.3", + "@esbuild/win32-arm64": "0.25.3", + "@esbuild/win32-ia32": "0.25.3", + "@esbuild/win32-x64": "0.25.3" } }, "node_modules/escalade": { @@ -6856,6 +10018,12 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", @@ -6866,6 +10034,62 @@ "node": ">=8" } }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -6879,6 +10103,203 @@ "node": ">=8.0.0" } }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -6892,6 +10313,27 @@ "node": ">=4" } }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -6932,6 +10374,15 @@ "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eth-block-tracker": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-8.1.0.tgz", @@ -6960,6 +10411,18 @@ "@scure/bip39": "1.3.0" } }, + "node_modules/ethereum-cryptography/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", @@ -6972,10 +10435,46 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/ethereum-cryptography/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/ethers": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.0.tgz", - "integrity": "sha512-5Xhzp2ZQRi0Em+0OkOcRHxPzCfoBfgtOQA+RUylSkuHbhTEaQklnYi2hsWbRgs3ztJsXVXd9VKBcO1ScWL8YfA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", "funding": [ { "type": "individual", @@ -6988,36 +10487,36 @@ ], "license": "MIT", "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.0", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.0", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.0", - "@ethersproject/wordlists": "5.7.0" + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, "node_modules/event-target-shim": { @@ -7029,6 +10528,12 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -7038,25 +10543,34 @@ "node": ">=0.8.x" } }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -7076,6 +10590,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -7112,6 +10627,12 @@ ], "license": "MIT" }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -7122,9 +10643,23 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", @@ -7132,9 +10667,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", @@ -7147,6 +10682,33 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -7167,34 +10729,28 @@ "tough-cookie": "^4.0.0" } }, - "node_modules/fetch-cookie/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" }, - "node_modules/fetch-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, "engines": { - "node": ">= 4.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "license": "MIT" }, "node_modules/fill-range": { @@ -7209,6 +10765,18 @@ "node": ">=8" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "license": "MIT", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -7223,6 +10791,75 @@ "node": ">=8" } }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "license": "ISC" + }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -7243,6 +10880,21 @@ } } }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -7296,6 +10948,15 @@ "node": ">= 6" } }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -7310,6 +10971,15 @@ "node": ">=12" } }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/fs-monkey": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", @@ -7320,7 +10990,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -7338,32 +11007,32 @@ } }, "node_modules/fuels": { - "version": "0.101.2", - "resolved": "https://registry.npmjs.org/fuels/-/fuels-0.101.2.tgz", - "integrity": "sha512-aqlSd5MXguLBv9xR2XBtL+GivZuleT9SoEochnX1IdP3ZFCYdvIOJi6YTsrlrLus23ZKNGqDeUk+rlm/odi2VA==", + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/fuels/-/fuels-0.101.3.tgz", + "integrity": "sha512-NTCYDT2lZ8ZjVAkA1rfp37r7fMM8V/91Qx0KUGYqXqjHl9ySsmL3ay64NP4W0gczpwipc3K5j/WWxvVZ9fcQ+Q==", "license": "Apache-2.0", "dependencies": { - "@fuel-ts/abi-coder": "0.101.2", - "@fuel-ts/abi-typegen": "0.101.2", - "@fuel-ts/account": "0.101.2", - "@fuel-ts/address": "0.101.2", - "@fuel-ts/contract": "0.101.2", - "@fuel-ts/crypto": "0.101.2", - "@fuel-ts/errors": "0.101.2", - "@fuel-ts/hasher": "0.101.2", - "@fuel-ts/math": "0.101.2", - "@fuel-ts/program": "0.101.2", - "@fuel-ts/recipes": "0.101.2", - "@fuel-ts/script": "0.101.2", - "@fuel-ts/transactions": "0.101.2", - "@fuel-ts/utils": "0.101.2", - "@fuel-ts/versions": "0.101.2", + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/abi-typegen": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/contract": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/recipes": "0.101.3", + "@fuel-ts/script": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", "@fuels/vm-asm": "0.60.2", "bundle-require": "5.1.0", "chalk": "4", "chokidar": "3.6.0", "commander": "13.1.0", - "esbuild": "0.25.2", + "esbuild": "0.25.3", "glob": "10.4.5", "handlebars": "4.7.8", "joycon": "3.1.1", @@ -7381,9 +11050,10 @@ } }, "node_modules/fuels/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7392,6 +11062,7 @@ "version": "13.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", "engines": { "node": ">=18" } @@ -7400,6 +11071,7 @@ "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -7415,35 +11087,128 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/fuels/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/fuels/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/fuels/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fuels/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^2.0.1" + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "license": "MIT" - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -7497,359 +11262,126 @@ "node": ">=8.0.0" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "node_modules/get-port": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", + "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause" - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", - "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.2.0", - "cross-fetch": "^3.1.5" - }, - "peerDependencies": { - "graphql": "14 - 16" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/heap-js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.6.0.tgz", - "integrity": "sha512-trFMIq3PATiFRiQmNNeHtsrkwYRByIXUbYNbotiY9RLVfMkdwZdd2eQ38mGt7BRiCKBaj1DyBAIHmm7mmXPuuw==", - "license": "BSD-3-Clause", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "license": "MIT", "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "assert-plus": "^1.0.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-signature": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", - "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", - "license": "MIT", + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "license": "ISC", "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.18.0" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=0.10" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">= 6" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "license": "MIT", + "node_modules/glob-to-regex.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz", + "integrity": "sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==", + "license": "Apache-2.0", "engines": { - "node": ">=10.18" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "license": "BSD-2-Clause" + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "min-document": "^2.19.0", + "process": "^0.11.10" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -7858,1236 +11390,1191 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.8.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", + "node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "license": "Apache-2.0", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } }, - "node_modules/ioredis": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", - "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", - "dependencies": { - "@ioredis/commands": "^1.1.1", - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.4", - "denque": "^2.1.0", - "lodash.defaults": "^4.2.0", - "lodash.isarguments": "^3.1.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, "engines": { - "node": ">=12.22.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/graphql": { + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", + "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", + "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "@graphql-typed-document-node/core": "^3.2.0", + "cross-fetch": "^3.1.5" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "graphql": "14 - 16" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "gaxios": "^6.0.0", + "jws": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/is-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", - "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", - "license": "MIT", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-function": { + "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "license": "MIT" - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "is-extglob": "^2.1.1" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, "engines": { - "node": ">=16" + "node": ">=4" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, + "node_modules/heap-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.6.0.tgz", + "integrity": "sha512-trFMIq3PATiFRiQmNNeHtsrkwYRByIXUbYNbotiY9RLVfMkdwZdd2eQ38mGt7BRiCKBaj1DyBAIHmm7mmXPuuw==", "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, + "license": "MIT" + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "engines": { + "node": ">= 6" } }, - "node_modules/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" + "debug": "4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 6.0.0" } }, - "node_modules/jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10" } }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14.18.0" } }, - "node_modules/jest-circus/node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10.18" } }, - "node_modules/jest-circus/node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, + "node_modules/idb": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.3.tgz", + "integrity": "sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg==", + "license": "ISC" + }, + "node_modules/idb-keyval": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", - "dependencies": { - "jest-get-type": "^28.0.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 4" } }, - "node_modules/jest-circus/node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=4" } }, - "node_modules/jest-circus/node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflation": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/jest-circus/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ioredis": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.7.0.tgz", + "integrity": "sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g==", "license": "MIT", + "dependencies": { + "@ioredis/commands": "^1.3.0", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, "engines": { - "node": ">=10" + "node": ">=12.22.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/ioredis" } }, - "node_modules/jest-circus/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, + "node_modules/ip-address": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 12" } }, - "node_modules/jest-circus/node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "license": "MIT", "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=4" } }, - "node_modules/jest-circus/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "hasown": "^2.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-circus/node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-circus/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "which-typed-array": "^1.1.16" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "ws": "*" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-config/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-config/node_modules/jest-util": { + "node_modules/jest": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", "dev": true, "license": "MIT", "dependencies": { + "@jest/core": "^28.1.3", "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-config/node_modules/pretty-format": { + "node_modules/jest-changed-files": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "execa": "^5.0.0", + "p-limit": "^3.1.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10.17.0" } }, - "node_modules/jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-each/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "path-key": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-each/node_modules/jest-util": { + "node_modules/jest-circus": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", "dev": true, "license": "MIT", "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", "@jest/types": "^28.1.3", "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "node_modules/jest-circus/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-node/node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "node_modules/jest-circus/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/@jest/fake-timers": { + "node_modules/jest-circus/node_modules/jest-diff": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-circus/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-environment-node/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/jest-environment-node/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/jest-message-util": { + "node_modules/jest-circus/node_modules/jest-message-util": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", @@ -9108,21 +12595,7 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/jest-util": { + "node_modules/jest-circus/node_modules/jest-util": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", @@ -9140,7 +12613,7 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-environment-node/node_modules/pretty-format": { + "node_modules/jest-circus/node_modules/pretty-format": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", @@ -9156,254 +12629,264 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-leak-detector": { + "node_modules/jest-cli": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-leak-detector/node_modules/@jest/schemas": { + "node_modules/jest-cli/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { + "node_modules/jest-config": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/jest-config/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve": { + "node_modules/jest-config/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies": { + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^28.0.2" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "detect-newline": "^3.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/transform": { + "node_modules/jest-each": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", + "jest-get-type": "^28.0.2", "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "node_modules/jest-each/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { + "node_modules/jest-each/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -9416,175 +12899,123 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve-dependencies/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve-dependencies/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/expect": { + "node_modules/jest-each/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-diff": { + "node_modules/jest-each/node_modules/pretty-format": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-haste-map": { + "node_modules/jest-environment-node": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", "dev": true, "license": "MIT", "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-message-util": { + "node_modules/jest-environment-node/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", + "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-snapshot": { + "node_modules/jest-haste-map": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-util": { + "node_modules/jest-haste-map/node_modules/jest-util": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", @@ -9602,22 +13033,54 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-worker": { + "node_modules/jest-leak-detector": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/pretty-format": { + "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", @@ -9633,207 +13096,217 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-resolve/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", "micromatch": "^4.0.4", - "walker": "^1.0.8" + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "node_modules/jest-message-util/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/jest-worker": { + "node_modules/jest-message-util/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-mock": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@jest/types": "^28.1.3", + "@types/node": "*" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/environment": { + "node_modules/jest-resolve": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/fake-timers": { + "node_modules/jest-resolve-dependencies": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/schemas": { + "node_modules/jest-resolve/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/transform": { + "node_modules/jest-runner": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", + "@types/node": "*", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "emittery": "^0.10.2", "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/jest-runner/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "node_modules/jest-runner/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/jest-runner/node_modules/ansi-styles": { @@ -9849,39 +13322,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, "node_modules/jest-runner/node_modules/jest-message-util": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", @@ -9903,30 +13343,6 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, "node_modules/jest-runner/node_modules/jest-util": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", @@ -9945,37 +13361,6 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-runner/node_modules/pretty-format": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", @@ -10028,169 +13413,293 @@ "@jest/transform": "^28.1.3", "@jest/types": "^28.1.3", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/jest-runtime/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "stack-utils": "^2.0.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/environment": { + "node_modules/jest-runtime/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^28.1.3", "@jest/types": "^28.1.3", "@types/node": "*", - "jest-mock": "^28.1.3" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "node_modules/jest-runtime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "*" } }, - "node_modules/jest-runtime/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "node_modules/jest-runtime/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^28.0.2" + "path-key": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "node_modules/jest-runtime/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "mimic-fn": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/@jest/globals": { + "node_modules/jest-runtime/node_modules/pretty-format": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-runtime/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-runtime/node_modules/@jest/transform": { + "node_modules/jest-snapshot": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", + "expect": "^28.1.3", "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "node_modules/jest-snapshot/node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "node_modules/jest-snapshot/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -10203,14 +13712,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/diff-sequences": { + "node_modules/jest-snapshot/node_modules/diff-sequences": { "version": "28.1.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", @@ -10220,7 +13722,7 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/expect": { + "node_modules/jest-snapshot/node_modules/expect": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", @@ -10237,7 +13739,7 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-diff": { + "node_modules/jest-snapshot/node_modules/jest-diff": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", @@ -10253,172 +13755,72 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-get-type": { + "node_modules/jest-snapshot/node_modules/jest-get-type": { "version": "28.0.2", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-runtime/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", "dev": true, "license": "MIT", "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-snapshot": { + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", "jest-diff": "^28.1.3", "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "pretty-format": "^28.1.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-util": { + "node_modules/jest-snapshot/node_modules/jest-message-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", "dev": true, "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.12.13", "@jest/types": "^28.1.3", - "@types/node": "*", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-worker": { + "node_modules/jest-snapshot/node_modules/jest-util": { "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", "dev": true, "license": "MIT", "dependencies": { + "@jest/types": "^28.1.3", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-runtime/node_modules/pretty-format": { + "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", @@ -10439,6 +13841,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10451,11 +13854,25 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-util/node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -10468,6 +13885,13 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-validate": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", @@ -10486,26 +13910,16 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/jest-validate/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-validate/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -10597,9 +14011,10 @@ } }, "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -10607,13 +14022,14 @@ "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", "engines": { "node": ">=10" } @@ -10674,6 +14090,21 @@ "node": ">=6" } }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -10699,13 +14130,13 @@ "license": "MIT" }, "node_modules/json-stable-stringify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz", - "integrity": "sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz", + "integrity": "sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==", "license": "MIT", "dependencies": { "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "isarray": "^2.0.5", "jsonify": "^0.0.1", "object-keys": "^1.1.1" @@ -10717,6 +14148,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json-stringify-deterministic": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz", + "integrity": "sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -10737,9 +14183,9 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -10748,6 +14194,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/jsonify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", @@ -10772,6 +14227,48 @@ "verror": "1.10.0" } }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -10791,6 +14288,136 @@ "node": ">= 8" } }, + "node_modules/koa": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", + "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", + "license": "MIT", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-bodyparser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", + "license": "MIT", + "dependencies": { + "co-body": "^6.0.0", + "copy-to": "^2.0.1", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT" + }, + "node_modules/koa-compress": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.1.tgz", + "integrity": "sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "compressible": "^2.0.18", + "http-errors": "^1.8.1", + "koa-is-json": "^1.0.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==", + "license": "MIT" + }, + "node_modules/koa-router": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "deprecated": "Please use @koa/router instead, starting from v9! ", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.2.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/koa-router/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/koa-router/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/level": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/level/-/level-8.0.1.tgz", @@ -10809,13 +14436,49 @@ "url": "https://opencollective.com/level" } }, + "node_modules/level-concat-iterator": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", + "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", + "dependencies": { + "catering": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/level-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-3.0.1.tgz", + "integrity": "sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/level-iterator-stream": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz", + "integrity": "sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/level-supports": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", - "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", + "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/level-transcoder": { @@ -10828,7 +14491,41 @@ "module-error": "^1.0.1" }, "engines": { - "node": ">=12" + "node": ">=12" + } + }, + "node_modules/leveldown": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.1.tgz", + "integrity": "sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A==", + "deprecated": "Superseded by classic-level (https://github.com/Level/community#faq)", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "^7.2.0", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/levelup": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.1.1.tgz", + "integrity": "sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", + "dependencies": { + "catering": "^2.0.0", + "deferred-leveldown": "^7.0.0", + "level-errors": "^3.0.1", + "level-iterator-stream": "^5.0.0", + "level-supports": "^2.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=10" } }, "node_modules/leven": { @@ -10841,6 +14538,19 @@ "node": ">=6" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10848,10 +14558,43 @@ "dev": true, "license": "MIT" }, + "node_modules/lmdb": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", + "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.4.2", + "@lmdb/lmdb-darwin-x64": "3.4.2", + "@lmdb/lmdb-linux-arm": "3.4.2", + "@lmdb/lmdb-linux-arm64": "3.4.2", + "@lmdb/lmdb-linux-x64": "3.4.2", + "@lmdb/lmdb-win32-arm64": "3.4.2", + "@lmdb/lmdb-win32-x64": "3.4.2" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "license": "MIT" + }, "node_modules/load-tsconfig": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -10890,6 +14633,24 @@ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, + "node_modules/lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "license": "MIT" + }, "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -10902,6 +14663,13 @@ "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", "license": "MIT" }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -10909,6 +14677,31 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "license": "MIT" + }, + "node_modules/lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "license": "MIT" + }, + "node_modules/lodash.times": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.times/-/lodash.times-4.3.2.tgz", + "integrity": "sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A==", + "license": "MIT" + }, "node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", @@ -10916,15 +14709,15 @@ "license": "Apache-2.0" }, "node_modules/lossless-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.0.2.tgz", - "integrity": "sha512-+z0EaLi2UcWi8MZRxA5iTb6m4Ys4E80uftGY+yG5KNFJb5EceQXOhdW/pWJZ8m97s26u7yZZAYMcKWNztSZssA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.2.0.tgz", + "integrity": "sha512-bsHH3x+7acZfqokfn9Ks/ej96yF/z6oGGw1aBmXesq4r3fAjhdG4uYuqzDgZMk5g1CZUd5w3kwwIp9K1LOYUiA==", "license": "MIT" }, "node_modules/loupe": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", - "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "license": "MIT", "peer": true }, @@ -10937,14 +14730,20 @@ "yallist": "^3.0.2" } }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "license": "MIT" + }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "license": "MIT", "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/make-dir": { @@ -10998,15 +14797,54 @@ "node": ">=8.9.0" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memdown": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-6.1.1.tgz", + "integrity": "sha512-vh2RiuVrn6Vv73088C1KzLwy9+hhRwoZsgddYqIoVuFFrcoc2Rt+lq/KrmkFn6ulko7AtQ0AvqtYid35exb38A==", + "deprecated": "Superseded by memory-level (https://github.com/Level/community#faq)", + "license": "MIT", + "dependencies": { + "abstract-leveldown": "^7.2.0", + "buffer": "^6.0.3", + "functional-red-black-tree": "^1.0.1", + "inherits": "^2.0.1", + "ltgt": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/memfs": { - "version": "4.25.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.25.1.tgz", - "integrity": "sha512-sEOWdgYwyNK3uEAi+OVd1214o7hXu0ZQpKb3lI460B9ZPTdpcYNSgrG536k2MYr6mvfbOt7cS2uM+ThMuy34pw==", + "version": "4.38.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.38.2.tgz", + "integrity": "sha512-FpWsVHpAkoSh/LfY1BgAl72BVd374ooMRtDi2VqzBycX4XEfvC0XKACCe0C9VRZoYq5viuoyTv6lYXZ/Q7TrLQ==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/json-pack": "^1.0.3", - "@jsonjoy.com/util": "^1.3.0", - "tree-dump": "^1.0.1", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", "tslib": "^2.0.0" }, "engines": { @@ -11037,6 +14875,15 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micro-ftch": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", @@ -11057,10 +14904,22 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -11078,14 +14937,25 @@ "node": ">= 0.6" } }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/min-document": { @@ -11109,22 +14979,25 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "*" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11171,10 +15044,42 @@ "node": ">=12.13" } }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, "node_modules/mustache": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", + "license": "MIT", "bin": { "mustache": "bin/mustache" } @@ -11199,30 +15104,53 @@ } }, "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, "license": "MIT" }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "license": "MIT" }, + "node_modules/nexus-rpc": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/nexus-rpc/-/nexus-rpc-0.0.1.tgz", + "integrity": "sha512-hAWn8Hh2eewpB5McXR5EW81R3pR/ziuGhKCF3wFyUVCklanPqrIgMNr7jKCbzXeNVad0nUDfWpFRqh2u+zxQtw==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + } + }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "license": "MIT" }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -11254,6 +15182,20 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -11262,23 +15204,24 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", + "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", "license": "MIT" }, "node_modules/node-vault": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.2.tgz", - "integrity": "sha512-//uc9/YImE7Dx0QHdwMiAzLaOumiKUnOUP8DymgtkZ8nsq6/V2LKvEu6kw91Lcruw8lWUfj4DO7CIXNPRWBuuA==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.5.tgz", + "integrity": "sha512-sIyB/5296U2tMT7hH1nrkoYUXkRxuLsG40fgUHaBhzM+G/uyBKBo+QNsvKqE5FNq24QJM+tr97N+knLQiEEcSg==", + "license": "MIT", "dependencies": { "debug": "^4.3.4", "mustache": "^4.2.0", - "postman-request": "^2.88.1-postman.33", + "postman-request": "^2.88.1-postman.42", "tv4": "^1.3.0" }, "engines": { - "node": ">= 16.0.0" + "node": ">= 18.0.0" } }, "node_modules/normalize-path": { @@ -11291,30 +15234,45 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -11332,43 +15290,130 @@ "node": ">= 0.4" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "license": "MIT" + }, + "node_modules/ox": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11387,6 +15432,22 @@ "node": ">=8" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -11409,10 +15470,22 @@ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", "license": "(MIT AND Zlib)" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", "license": "MIT" }, "node_modules/parse-json": { @@ -11434,11 +15507,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -11448,7 +15529,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11471,26 +15551,35 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", + "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" }, "node_modules/pathe": { "version": "2.0.3", @@ -11516,22 +15605,22 @@ "license": "MIT" }, "node_modules/pg": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.1.tgz", - "integrity": "sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==", + "version": "8.16.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", + "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.7.0", - "pg-pool": "^3.8.0", - "pg-protocol": "^1.8.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" + "pg-connection-string": "^2.9.1", + "pg-pool": "^3.10.1", + "pg-protocol": "^1.10.3", + "pg-types": "2.2.0", + "pgpass": "1.0.5" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.1.1" + "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -11543,16 +15632,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", + "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", - "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", + "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", "license": "MIT" }, "node_modules/pg-int8": { @@ -11565,18 +15654,18 @@ } }, "node_modules/pg-pool": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz", - "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", + "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz", - "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", "license": "MIT" }, "node_modules/pg-types": { @@ -11634,10 +15723,83 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pino": { + "version": "9.9.4", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.9.4.tgz", + "integrity": "sha512-d1XorUQ7sSKqVcYdXuEYs2h1LKxejSorMEJ76XoZ0pPDf8VzJMe7GlPXpMBZeQ9gE4ZPIp5uGD+5Nw7scxiigg==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", + "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "secure-json-parse": "^4.0.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^5.0.2" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -11670,6 +15832,7 @@ "version": "1.0.32", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "license": "MIT", "dependencies": { "async": "^2.6.4", "debug": "^3.2.7", @@ -11683,6 +15846,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -11691,6 +15855,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -11701,7 +15866,17 @@ "node_modules/portfinder/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/postcss": { "version": "8.5.6", @@ -11772,9 +15947,10 @@ } }, "node_modules/postman-request": { - "version": "2.88.1-postman.42", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.42.tgz", - "integrity": "sha512-lepCE8QU0izagxxA31O/MHj8IUguwLlpqeVK7A8vHK401FPvN/PTIzWHm29c/L3j3kTUE7dhZbq8vvbyQ7S2Bw==", + "version": "2.88.1-postman.43", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.43.tgz", + "integrity": "sha512-5ivoZnMvnX47/HA7mk2GQubZsnXptlJGVyO0hLV3MTK/MDgJVnB/q3bUgzU4KhwG8OBxe2L8uqv3ZpK6mp+RdA==", + "license": "Apache-2.0", "dependencies": { "@postman/form-data": "~3.1.1", "@postman/tough-cookie": "~4.1.3-postman.1", @@ -11793,6 +15969,7 @@ "oauth-sign": "~0.9.0", "qs": "~6.5.3", "safe-buffer": "^5.1.2", + "socks-proxy-agent": "^8.0.5", "stream-length": "^1.0.2", "uuid": "^8.3.2" }, @@ -11804,18 +15981,11 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, - "node_modules/postman-request/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/precond": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", @@ -11824,11 +15994,21 @@ "node": ">= 0.6" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -11838,11 +16018,32 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/pretty-format/node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -11859,6 +16060,35 @@ "node": ">= 0.6.0" } }, + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/prom-client": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.3.tgz", + "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.4.0", + "tdigest": "^0.1.1" + }, + "engines": { + "node": "^16 || ^18 || >=20" + } + }, "node_modules/promise-to-callback": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", @@ -11889,7 +16119,8 @@ "node_modules/property-expr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", - "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==" + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", + "license": "MIT" }, "node_modules/proto3-json-serializer": { "version": "2.0.2", @@ -11904,9 +16135,9 @@ } }, "node_modules/protobufjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", - "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -11945,6 +16176,16 @@ "url": "https://github.com/sponsors/lupomontero" } }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -11955,12 +16196,12 @@ } }, "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -11995,6 +16236,12 @@ ], "license": "MIT" }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, "node_modules/ramda": { "version": "0.30.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", @@ -12014,6 +16261,46 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -12039,6 +16326,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -12046,6 +16334,15 @@ "node": ">=8.10.0" } }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/redeyed": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", @@ -12088,6 +16385,15 @@ "node": ">=12" } }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -12169,30 +16475,152 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "license": "MIT", + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", + "node_modules/rimraf/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^7.1.3" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/rollup": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz", - "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "license": "MIT", "peer": true, "dependencies": { @@ -12206,29 +16634,53 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.45.1", - "@rollup/rollup-android-arm64": "4.45.1", - "@rollup/rollup-darwin-arm64": "4.45.1", - "@rollup/rollup-darwin-x64": "4.45.1", - "@rollup/rollup-freebsd-arm64": "4.45.1", - "@rollup/rollup-freebsd-x64": "4.45.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.45.1", - "@rollup/rollup-linux-arm-musleabihf": "4.45.1", - "@rollup/rollup-linux-arm64-gnu": "4.45.1", - "@rollup/rollup-linux-arm64-musl": "4.45.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.45.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1", - "@rollup/rollup-linux-riscv64-gnu": "4.45.1", - "@rollup/rollup-linux-riscv64-musl": "4.45.1", - "@rollup/rollup-linux-s390x-gnu": "4.45.1", - "@rollup/rollup-linux-x64-gnu": "4.45.1", - "@rollup/rollup-linux-x64-musl": "4.45.1", - "@rollup/rollup-win32-arm64-msvc": "4.45.1", - "@rollup/rollup-win32-ia32-msvc": "4.45.1", - "@rollup/rollup-win32-x64-msvc": "4.45.1", + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", "fsevents": "~2.3.2" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/run-parallel-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", @@ -12287,6 +16739,23 @@ ], "license": "MIT" }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -12327,6 +16796,22 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", "license": "MIT" }, + "node_modules/secure-json-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", + "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/semaphore": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", @@ -12336,9 +16821,9 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -12388,6 +16873,50 @@ "node": ">=0.10.0" } }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sha256": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sha256/-/sha256-0.2.0.tgz", + "integrity": "sha512-kTWMJUaez5iiT9CcMv8jSq6kMhw3ST0uRdcIWl3D77s6AsLXNXRp3heeqqfu5+Dyfu4hwpQnMzhqHh8iNQxw0w==", + "dependencies": { + "convert-hex": "~0.1.0", + "convert-string": "~0.1.0" + } + }, + "node_modules/sha3": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", + "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", + "license": "MIT", + "dependencies": { + "buffer": "6.0.3" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -12492,7 +17021,6 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, "license": "ISC" }, "node_modules/sisteransi": { @@ -12512,6 +17040,53 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -12550,6 +17125,18 @@ "webpack": "^5.72.1" } }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -12610,12 +17197,6 @@ "node": ">=0.10.0" } }, - "node_modules/sshpk/node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "license": "Unlicense" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -12643,9 +17224,9 @@ "license": "MIT" }, "node_modules/starknet": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/starknet/-/starknet-6.23.1.tgz", - "integrity": "sha512-vQV9luXpmwZZs9RVZaRwm2iD8T0PYx1AzgZeQsCvD89tR0HwUF0paty27ZzuJrdPe0CmAs/ipAYFCE55jbj0RQ==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/starknet/-/starknet-6.24.1.tgz", + "integrity": "sha512-g7tiCt73berhcNi41otlN3T3kxZnIvZhMi8WdC21Y6GC6zoQgbI2z1t7JAZF9c4xZiomlanwVnurcpyfEdyMpg==", "license": "MIT", "dependencies": { "@noble/curves": "1.7.0", @@ -12695,13 +17276,13 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/starknet/node_modules/@scure/base": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", - "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">= 0.6" } }, "node_modules/std-env": { @@ -12711,14 +17292,30 @@ "license": "MIT", "peer": true }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, "node_modules/stream-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", + "license": "WTFPL", "dependencies": { "bluebird": "^2.6.2" } }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -12728,6 +17325,12 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "license": "WTFPL OR MIT" + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -12742,20 +17345,46 @@ "node": ">=10" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/string-length/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", @@ -12771,7 +17400,22 @@ "node": ">=8" } }, - "node_modules/strip-ansi": { + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -12783,6 +17427,21 @@ "node": ">=8" } }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", @@ -12796,6 +17455,15 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -12807,20 +17475,21 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -12829,6 +17498,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -12897,13 +17584,139 @@ "webpack": ">=2" } }, + "node_modules/systeminformation": { + "version": "5.23.8", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.23.8.tgz", + "integrity": "sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ==", + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "license": "MIT", + "dependencies": { + "bintrees": "1.0.2" + } + }, + "node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "license": "Apache-2.0", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/terminal-link": { @@ -12924,13 +17737,13 @@ } }, "node_modules/terser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", - "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -12975,6 +17788,26 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -12990,22 +17823,77 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, "node_modules/thingies": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", - "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", - "license": "Unlicense", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", "engines": { "node": ">=10.18" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, "peerDependencies": { "tslib": "^2" } }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", + "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", @@ -13022,14 +17910,14 @@ "peer": true }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "license": "MIT", "peer": true, "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -13039,11 +17927,14 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", "peer": true, + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -13054,9 +17945,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "peer": true, "engines": { @@ -13097,21 +17988,21 @@ } }, "node_modules/tldts": { - "version": "6.1.76", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.76.tgz", - "integrity": "sha512-6U2ti64/nppsDxQs9hw8ephA3nO6nSQvVVfxwRw8wLQPFtLI1cFI1a1eP22g+LUP+1TA2pKKjUTwWB+K2coqmQ==", + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "license": "MIT", "dependencies": { - "tldts-core": "^6.1.76" + "tldts-core": "^6.1.86" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.76", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.76.tgz", - "integrity": "sha512-uzhJ02RaMzgQR3yPoeE65DrcHI6LoM4saUqXOt/b5hmb3+mc4YWpdSeAQqVqRUlQ14q8ZuLRWyBR1ictK1dzzg==", + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", "license": "MIT" }, "node_modules/tmpl": { @@ -13121,6 +18012,20 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13133,26 +18038,40 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, "node_modules/toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "license": "MIT" }, "node_modules/toposort": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "license": "MIT" }, "node_modules/tough-cookie": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", - "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "license": "BSD-3-Clause", "dependencies": { - "tldts": "^6.1.32" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { - "node": ">=16" + "node": ">=6" } }, "node_modules/tr46": { @@ -13162,9 +18081,9 @@ "license": "MIT" }, "node_modules/tree-dump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.3.tgz", - "integrity": "sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -13177,6 +18096,21 @@ "tslib": "2" } }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, "node_modules/ts-jest": { "version": "28.0.8", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", @@ -13302,10 +18236,19 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, "node_modules/tsyringe": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.9.1.tgz", - "integrity": "sha512-dJCWk0RolAnGk0j839M0lcuS/PtNUPaMsnBosn+wg5N16xy0tofcVuvsidMs0JuRbaJ0wVIT7RsuHWbVIZ5Rcg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", "license": "MIT", "dependencies": { "tslib": "^1.9.3" @@ -13336,16 +18279,38 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "license": [ + { + "type": "Public Domain", + "url": "http://geraintluff.github.io/tv4/LICENSE.txt" + }, + { + "type": "MIT", + "url": "http://jsonary.com/LICENSE.txt" + } + ], "engines": { "node": ">= 0.8.0" } }, "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -13357,23 +18322,49 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", + "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -13383,6 +18374,15 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -13392,13 +18392,25 @@ "uglifyjs": "bin/uglifyjs" }, "engines": { - "node": ">=0.8.0" + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", "license": "MIT" }, "node_modules/unionfs": { @@ -13410,18 +18422,27 @@ } }, "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -13448,6 +18469,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -13465,13 +18495,9 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -13499,6 +18525,22 @@ "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -13513,10 +18555,88 @@ "extsprintf": "^1.2.0" } }, + "node_modules/viem": { + "version": "2.23.7", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz", + "integrity": "sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.7", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", + "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "license": "MIT", "peer": true, "dependencies": { @@ -13612,11 +18732,14 @@ } }, "node_modules/vite/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", "peer": true, + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -13627,9 +18750,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "peer": true, "engines": { @@ -13732,6 +18855,12 @@ "node": ">=10.13.0" } }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "license": "MIT" + }, "node_modules/web3-provider-engine": { "version": "17.0.1", "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-17.0.1.tgz", @@ -13793,9 +18922,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.101.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.0.tgz", - "integrity": "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==", + "version": "5.101.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", + "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -13808,7 +18937,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", + "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -13880,6 +19009,27 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -13897,24 +19047,55 @@ "node": ">=8" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "license": "MIT" }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -13938,11 +19119,63 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { @@ -13960,16 +19193,16 @@ } }, "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -14043,6 +19276,56 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -14057,7 +19340,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -14070,6 +19352,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/yup/-/yup-1.6.1.tgz", "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", + "license": "MIT", "dependencies": { "property-expr": "^2.0.5", "tiny-case": "^1.0.3", @@ -14081,12 +19364,22 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/js/package.json b/js/package.json index d915576d..7a928ee8 100644 --- a/js/package.json +++ b/js/package.json @@ -11,10 +11,16 @@ "license": "ISC", "description": "", "dependencies": { + "@aztec/accounts": "1.1.3", + "@aztec/aztec.js": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-contracts": "^0.23.0", + "@aztec/noir-contracts.js": "1.1.3", + "@aztec/pxe": "1.1.3", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", - "ethers": "5.7.0", + "ethers": "^5.8.0", "fuels": "^0.101.2", "ioredis": "^5.6.0", "node-vault": "^0.10.2", diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/AddCoreServices.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/AddCoreServices.ts index a569efad..3de7d604 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/AddCoreServices.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/AddCoreServices.ts @@ -3,7 +3,6 @@ import Redis from 'ioredis'; import Redlock from 'redlock'; import { container } from 'tsyringe'; import { ConvertToRedisUrl } from './RedisHelper/RedisFactory'; -import { TreasuryClient } from './TreasuryClient/treasuryClient'; export async function AddCoreServices(): Promise { @@ -14,9 +13,7 @@ export async function AddCoreServices(): Promise { retryDelay: 200, retryJitter: 100, }); - // const treasuryClient = new TreasuryClient(); container.register("Redlock", { useValue: redlock }); container.register("Redis", { useValue: redis }); - // container.register("TreasuryClient", { useValue: treasuryClient }); } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/AztecSignTransactionRequest.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/AztecSignTransactionRequest.ts new file mode 100644 index 00000000..e0b9e914 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/AztecSignTransactionRequest.ts @@ -0,0 +1,7 @@ +import { BaseSignTransactionRequestModel } from "./TreasurySignTransactionRequestModel"; + +export interface AztecSignTransactionRequest extends BaseSignTransactionRequestModel { + nodeUrl: string; + tokenContract: string; + contractAddress: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts index 65edba61..067983e8 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts @@ -2,10 +2,12 @@ import { TreasuryGenerateAddressResponseModel } from './TreasuryGenerateAddressR import { TreasurySignTransactionResponseModel } from './TreasurySignTransactionResponseModel'; import { BaseSignTransactionRequestModel } from './TreasurySignTransactionRequestModel'; import { FuelSignTransactionRequest } from './FuelSignTransactionRequest'; +import { AztecSignTransactionRequest } from './AztecSignTransactionRequest'; export { TreasuryGenerateAddressResponseModel, TreasurySignTransactionResponseModel, BaseSignTransactionRequestModel, - FuelSignTransactionRequest + FuelSignTransactionRequest, + AztecSignTransactionRequest, }; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts index 8666080c..cc2d81b4 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts @@ -2,7 +2,8 @@ import { BaseSignTransactionRequestModel, TreasuryGenerateAddressResponseModel, TreasurySignTransactionResponseModel, - FuelSignTransactionRequest + FuelSignTransactionRequest, + AztecSignTransactionRequest, } from "./Models"; import axios from "axios"; @@ -19,7 +20,7 @@ export class TreasuryClient { async signTransaction( networkType: string, - request: BaseSignTransactionRequestModel | FuelSignTransactionRequest + request: BaseSignTransactionRequestModel | FuelSignTransactionRequest | AztecSignTransactionRequest ): Promise { const res = await this.apiClient.post( `${networkType.toLowerCase()}/sign`, diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json b/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json new file mode 100644 index 00000000..17044063 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json @@ -0,0 +1,12975 @@ +{ + "transpiled": true, + "noir_version": "1.0.0-beta.7+0000000000000000000000000000000000000000", + "name": "Train", + "functions": [ + { + "name": "add_lock_private_user", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11091894166229312484": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17476367995570638746": { + "error_kind": "string", + "string": "NoAllowance" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + }, + "18313900523101689315": { + "error_kind": "string", + "string": "Note contract address mismatch." + } + } + }, + "bytecode": "H4sIAAAAAAAA/+19B5wct3X+7BWSd+SRyyKR6mySKFKSt97tuVJW782SJUu2tXe7SxVK7GqUxD2SEimSImmJRVR17457r//EiWM7idMTpzmJncQpTnXi2ImdPyDN23333ZvZ2ds3x4V0+P1wNzsAPnx4eHjAABhMwnvRze7yvEu7XrxOGN/p/+8wfiHco//8uluI1yvcmyHcmyncSwr35gr3jjF+JdxbYHwV7h0n3DtZwDtFuLdQuLdIuLdYyGOJcG+pcO9U4d5pQh7LhHhnCPeW+3LhLuH/p/vZVH8uVx7IlNPZdDGVGRwq5FO5/FB/IV1I5wv5UqaQzZYLucLA4NDgQGowncuW05X8YLaSetHN7KxjpVpymeE4ec4aP8883rDc5hjfxbhaOfzCvz7dq18vY9ez/DiULml+zzZ+jvFzO+v3yXWCDFKtufQZiljJTr26maemQ6lUnPJbrog1W1F+xyjKT9LteUy3j2HXc9j1XNDtY83v+cYvMP44Qbc7lOvmNE9PnsfryTPN7bHFXRizHI5X1KsTYpLDCb4cukAG3CWU5ZLw4rExni7PwRpgl+8nQjjLPAeEk06luCxO9K37STgitQH3wj0baRqQ0u4duBDH2/LKFetS6RMVW/FJir3DpFIiy9FKebKvVKegUp4sKOUpjinlyYpKeYqjSnlyp3tKudBXqkWolAsFpVw0AUqpoUiklAsVlXLRpFJOmFIu9pVqCSrlYkEplzimlIsVlXKJo0q52EGlXOor1amolEsFpTx1ApRysaJSLlVUylMnlXLClPI0X6lOR6U8TVDK0x1TytMUlfJ0R5XyNAeVcpmvVGegUi4TlPKMCVDK0xSVcpmiUp4xqZQTppTLfaVagUq5XFDKFY4p5XJFpVzhqFIud1Apz/SV6ixUyjMFpTxrApRyuaJSnqmolGdNKuWEKeXZvlK9ApXybEEpX+GYUp6tqJSvcFQpz3ZQKVO+UqVRKVOCUqYnQCnPVlTKlKJSpieVcsKUMuMrVRaVMiMoZdYxpcwoKmXWUaXMOKiUOV+p8qiUOUEp8xOglBlFpcwpKmV+UiknTCn7faUaQKXsF5RywDGl7FdUygFHlbLfQaUs+Eo1iEpZEJRycAKUsl9RKQuKSjk4qZQTppSv9JXqVaiUrxSU8lWOKeUrFZXyVY4q5SsdVMpX+0r1GlTKVwtK+ZoJUMpXKirlqxWV8jWTSjlhSvlaX6leh0r5WkEpX+eYUr5WUSlf56hSvtZBpVzpK9U5qJQrBaU8ZwKU8rWKSrlSUSnPmVTKCVPK1/tKdS4q5esFpTzXMaV8vaJSnuuoUr7eQaU8z1eq81EpzxOU8vwJUMrXKyrleYpKef6kUk6YUl7gK9WFqJQXCEp5oWNKeYGiUl7oqFJe4KBSXuQr1cWolBcJSnnxBCjlBYpKeZGiUl48qZQTppSX+Ep1KSrlJYJSXuqYUl6iqJSXOqqUlziolJf5SnU5KuVlglJePgFKeYmiUl6mqJSXTyrlhCnlFb5SXYlKeYWglFc6ppRXKCrllY4q5RUOKuVVvlJdjUp5laCUV0+AUl6hqJRXKSrl1ZNKOWFKeY2vVNeiUl4jKOW1jinlNYpKea2jSnmNg0r5Bl+prkOlfIOglNdNgFJeo6iUb1BUyusmlXLClPJ6X6neiEp5vaCUb3RMKa9XVMo3OqqU1zuolDf4SnUjKuUNglLeOAFKeb2iUt6gqJQ3OqqUimfETphSvslXqptQKd8kKOVNE6CUXIitKuWbFJXypkmlnDClvNlXqjejUt4sKOWbHVPKmxWV8s2OKuXNDnbfb/GV6q2olG8RlPKtE6CUNyt2329RVMq3TirlhCnlLb5SFVEpbxGUsuiYUt6iqJRFR5XyFgeVcshXqmFUyiFBKYcnQClvUVTKIUWlHJ5UyglTypKvVGVUypKglGXHlLKkqJRlR5Wy5KBSVnylWoVKWRGUctUEKGVJUSkrikq5alIpJ0wpb/WV6jZUylsFpbzNMaW8VVEpb3NUKW91UClv95XqDlTK2wWlvGMClPJWRaW8XVEp75hUyglTytW+Ut2JSrlaUMo7HVPK1YpKeaejSrnaQaW8y1eqNaiUdwlKuWYClHK1olLepaiUayaVcsKUcq2vVOtQKdcKSrnOMaVcq6iU6xxVyrUOKuV6X6k2oFKuF5RywwQo5VpFpVyvqJQbJpVywpRyo69Um1ApNwpKuckxpdyoqJSbHFXKjQ4q5d2+Ut2DSnm3oJT3TIBSblRUyrsVlfKeSaWcMKW811eq+1Ap7xWU8j7HlPJeRaW8z1GlvNdBpbzfV6rNqJT3C0q5eQKU8l5FpbxfUSk3TyrlhCnlA75SPYhK+YCglA86ppQPKCrlg44q5QMOKuVDvlJtQaV8SFDKLROglA8oKuVDikq5ZVIpJ0wpq75SjaBSVgWlHHFMKauKSjniqFJWHVTKrb5SbUOl3Coo5bYJUMqqolJuVVTKbZNKOWFKud1XqodRKbcLSvmwY0q5XVEpH3ZUKbc7qJSP+Eq1A5XyEUEpd0yAUm5XVMpHFJVyx6RSTphS7vSV6lFUyp2CUj7qmFLuVFTKRx1Vyp0OKuUuX6l2o1LuEpRy9wQo5U5FpdylqJS7J5VywpRyj69Uj6FS7hGU8jHHlHKPolI+5qhS7nFQKff6SrUPlXKvoJT7JkAp9ygq5V5Fpdw3qZQTppT7faV6GyrlfkEp3+aYUu5XVMq3OaqU+x1Uysd9pXoClfJxQSmfmACl3K+olI8rKuUTk0o5YUp5wFeqg6iUBwSlPOiYUh5QVMqDjirlAQeV8pCvVIdRKQ8JSnl4ApTygKJSHlJUysMxVS4qYas8n9TjmY6T5xFH5PnU+Hlm8IblNsd70SARV1tfv/CvT/fq10fY/af8a0r3tPn9jPHPGv9c54v3re9m5Q+TSao1l35ase443+c7YyRcA1dUji6fq2tC72Y83+7L5R3+/3f6/9/l/3839gzvEnqBDmXBJhQF905HLM17xs8zhzcaWZq3s+t3sOv3gKV5r/n9PuPfb/wHOuv3yWn3/opKnn6vYu//QWWLh3XzQVYH72PX72fXH4C6+ZD5/WHjP2L8Lx2FXuBdaiO1Spnz/WhnjIQtuJaxIvIfVVTajykqbVwytBy1jB/J8GOOGOmP6/HMxcnzE+PnmcUbksH6ODNM1tP1h9j9T4DB+qT5/SnjP238ZzpH403qqF7df1aPZ1aq+8+yOn43u/5kSN1/zvz+vPFfMP6LwkACbXKqNZc+QdGOfknRvvOBtMVd2EAOGn2AFve3O6L/X1bjmRmKk+dXFHiWK9lyf7oSa1/y1XHzzER6MPkysxtfCZgO+SrYk6+Z3//P+F82/lcm4MFE8Usg6a8p2qavx9QmteWn+M2p9P9TlN+vOiI/xa8bpn9ZUX6/FvOD8deZPfhVdv1r7PpXwDZ8w/z+deO/afy3JsA2KH6jN/0Nxbr5tiO6rfg1+PSvK8rvNxyR3/mK8vumovx+M2bb8G1mA36DXf8mu/4W2IbfMr+/Y/xvG/87E2AbzlGsm99SrJvfdUS3X6Mov+8oyu/3HJHfoKL8fltRfr8fs234XWYDfo9d/z67/h2wDX9gfv+h8X9k/B9PgG3IK9bNHyjWzXcd0e20ovz+UFF+f+KI/M5SlN8fKcrvT2O2Dd9lNuBP2PWfsus/BtvwZ+b3nxv/F8Z/bwJswxmKdfNninXzl47o9qmK8vtzRfn9lSPyW6Qov79QlN9fx2wb/pLZgL9i13/Nrr8HtuH75vcPjP8b4/92AmzDSYp1833Fuvk7R3RbcStn+geK8vuhI/JTfGkg/TeK8vv7mG3D3zEb8EN2/ffs+m/BNvyD+f2Pxv+T8T+aANug+Opb+h8U6+afHdFtxZes0/+oKL9/cUR+isd5pP9JUX7/GrNt+GdmA/6FXf8ru/4R2IZ/M7//3fj/MP7HE2AbFA+lSv+bYt38pyO6rXj8YfrfFeX3X47IT/Gg3fR/KMrvJzHbhv9kNuC/2PVP2PWPwTb8t/n9U+N/Zvz/TIBtUDwuPv3finXzv47otuKHSdI/VZTfzx2Rn+InsNI/U5TfL2K2Df/LbMDP2fUv2PX/gG34v84XfySM7+iK3zYofsgx/X+KddPZ5YZuK34yOO116cmvyxH5KX6cPp1QlF93V7y2weo32YAudt3Nrju6RtuGKeZiqvHTjO+ZANvwVsW6maJYN72O6PZNivKbqii/6Y7Ib7ki1jRF+c2I2Tb0MhswnV3PYNc9YBv6zMVM42cZn+yqvzDYwepFcitVypF54V2SJTHlgfvgtd8pOt3Tbw/aHG/sbH+O1znA8WoHOF7uAMeLHeB4vgMcz3GA42sc4DjoAMe8AxzTDnA8ywGOZzjA8VQHOC5ygONJDnA87ADHJxzguM8Bjrsd4LjDAY7bHOC4xQGOmx3geI8DHDc4wHGNAxzvcIDjKgc4DjvA8a0OcLzJAY6Kc/Gh58OkWnPpvpjWNmquQ5nwlxQXzWfrFX7UYUYWd6H34oKCvz9hjNOuyIT38lY4bZ5f6nSDZ6c3wQ24nU7hWhFT4bXLrNg402c6UuYOxTKf5UiZFRtj+uwJKnOqNZd+haL8jnXE6KY8N3imHeGZcYRn1hGeOWWe2jbDnoyrebqzxbKnqmrzzHt6HD/U6YY971cs8wmO2PMBzw2eBUd4DjrC85WO8HyVIzxf7QjP1zjC87WO8HydIzxXOsLzHEd4vt4Rnuc6wvM8R3ie7wjPCxzheaEjPC9yhOfFjvC8xBGelzrC8zJHeF7uCM8rHOF5pSM8r3KE59WO8LzGEZ7XOsLzDTHxbOf11OsmqMyp1lz6ekX5He/IvOwbPTd43uAIzxsd4fkmR3je5AjPmx3h+WZHeL7FEZ5vdYTnLY7wLDrCc8gRnsOO8Cw5wrPsCM+KIzxXOcLzVkd43uYIz9sd4XmHIzxXO8LzTkd43uUIzzWO8FzrCM91jvBc7wjPDY7w3OgIz02O8LzbEZ73OMLzXkd43ucIz/sd4bnZEZ4POMLzQUd4PuQIzy2O8Kw6wnPEEZ5bHeG5zRGe2x3h+bAjPB9xhOcOR3judITno47w3OUIz92O8NzjCM/HHOG51xGe+xzhud8Rnm9zhOfjjvB8whGeBxzhedARnocc4XnYEZ5POsLziCM8n3KE59OO8HzGEZ7POsLzOUd4Pu8Iz7c7wvMdjvB8pyM83+UIz3c7wvM9jvB8ryM83+cIz/c7wvMDjvD8oCM8P+QIzw87wvMjjvD8JUd4ftQRnh9zhOfHHeH5CUd4ftIRnp9yhOenHeH5GUd4ftYRnp9zhOfnHeH5BUd4ftERnl9yhOeXHeH5FUd4ftURnl9zhOf/c4TnLzvC81cc4fl1R3j+qiM8f80Rnt9whOevO8Lzm47w/JYjPL/tCM/fcITnbzrC87cc4fkdR3j+tiM8f8cRnr/rCM/fc4Tn7zvC8w8c4fmHjvD8I0d4/rEjPL/rCM8/cYTnnzrC888c4fnnjvD8C0d4fs8Rnn/pCM+/coTnXzvC8/uO8PyBIzz/xhGef+sIz79zhOcPHeH5947w/AdHeP6jIzz/yRGeP3KE5z87wvNfHOH5r47w/DdHeP67Izz/wxGeP3aE5386wvO/HOH5E0d4/rcjPH/qCM+fOcLzfxzh+b+O8Py5Izx/4QjP/3OEpwV0gWfCEZ4djvDsdIRnlyM8ux3hOcURnlMd4TnNEZ49jvDsdYTndEd4znCEZ58jPGc6wnOWIzyTjvCc7QjPOY7wnOsIz3mO8DzGEZ7HOsJzviM8FzjC8zhHeB7vCM8THOF5oiM8T3KE58mO8DzFEZ4LHeG5yBGeix3hucQRnksd4XmqIzxPc4Tn6Y7wXOYIzzMc4bncEZ4rHOF5piM8z3KE59mO8HyFIzxTjvBMO8Iz4wjPrCM8c47wzDvCs98RngOO8Cw4wnPQEZ6vdITnqxzh+eqYeHYAz2yqP5crD2TK6Wy6mMoMDhXyqVx+qL+QLqTzhXwpU8hmy4VcYWBwaHAgNZjOZcvpSn4wW/GxE4plfs3LsMyvdaTMnYplft0ElTnVmkuvTOjJr6/LjTKfo1jmL3W6YWtf70ifcK4jPM9zhOf5jvC8wBGeFzrC8yJHeF7sCM9LHOF5qSM8L3OE5+WO8LzCEZ5XOsLzKkd4Xu0Iz2sc4XmtIzzf4AjP6xzheb0jPN/oCM8bHOF5oyM83+QIz5sc4XmzIzzf7AjPtzjC862O8LzFEZ5FR3gOOcJz2BGeJUd4lh3hWXGE5ypHeN7qCM/bHOF5uyM873CE52pHeN7pCM+7HOG5xhGeax3huc4Rnusd4bnBEZ4bHeG5yRGedzvC8x5HeN7rCM/7HOF5vyM8NzvC8wFHeD7oCM+HHOG5xRGeVUd4jjjCc6sjPLc5wnO7IzwfdoTnI47w3OEIz52O8HzUEZ67HOG52xGeexzh+ZgjPPc6wnOfIzz3O8LzbY7wfNwRnk84wvOAIzwPOsLzkCM8DzvC80lHeB5xhOdTjvB82hGezzjC81lHeD7nCM/nHeH5dkd4vsMRnu90hOe7HOH5bkd4vscRnu91hOf7HOH5fkd4fsARnh90hOeHHOH5YUd4fsQRnr/kCM+POsLzY47w/LgjPD/hCM9POsLzU47w/LQjPD/jCM/POsLzc47w/LwjPL/gCM8vOsLzS47w/LIjPL/iCM+vOsLza47w/H+O8PxlR3j+iiM8v+4Iz191hOevOcLzG47w/HVHeH7TEZ7fcoTntx3h+RuO8PxNR3j+liM8v+MIz992hOfvOMLzdx3h+XuO8Px9R3j+gSM8/9ARnn/kCM8/doTndx3h+SeO8PxTR3j+mSM8/9wRnn/hCM/vOcLzLx3h+VeO8PxrR3h+3xGeP3CE5984wvNvHeH5d47w/KEjPP/eEZ7/4AjPf3SE5z85wvNHjvD8Z0d4/osjPP/VEZ7/5gjPf3eE5384wvPHjvD8T0d4/pcjPH/iCM//doTnTx3h+TNHeP6PIzz/1xGeP3eE5y8c4fl/jvD0OtzgmXCEZ4cjPDsd4dnlCM9uR3hOcYTnVEd4TnOEZ48jPHsd4TndEZ4zHOHZ5wjPmY7wnOUIz6QjPGc7wnOOIzznOsJzniM8j3GE57GO8JzvCM8FjvA8zhGexzvC8wRHeJ7oCM+THOF5siM8T3GE50JHeC5yhOdiR3gucYTnUkd4nuoIz9Mc4Xm6IzyXOcLzDEd4LneE5wpHeJ7pCM+zHOF5tiM8X+EIz5QjPNOO8Mw4wjPrCM+cIzzzjvDsd4TngCM8C47wHHSE5ysd4fkqR3i+2hGer3GE52sd4fk6R3iudITnOY7wfL0jPM91hOd5jvA83xGeFzjC80JHeF7kCM+LHeF5iSM8L3WE52WO8LzcEZ5XOMLzSkd4XuUIz6sd4XmNIzyvdYTnGxzheZ0jPK93hOcbHeF5gyM8b3SE55sc4XmTIzxvdoTnmx3h+RZHeL7VEZ63OMKz6AjPIUd4DjvCs+QIz7IjPCuO8FzlCM9bHeF5myM8b3eE5x2O8FztCM87HeF5lyM81zjCc60jPNc5wnO9Izw3OMJzoyM8NznC825HeN7jCM97HeF5nyM873eE52ZHeD7gCM8HHeH5kCM8tzjCs+oIzxFHeG51hOc2R3hud4Tnw47wfMQRnjsc4bnTEZ6POsJzlyM8dzvCc48jPB9zhOdeR3juc4Tnfkd4vs0Rno87wvMJR3gecITnQUd4HnKE52FHeD7pCM8jjvB8yhGeTzvC8xlHeD7rCM/nHOH5vCM83+4Iz3c4wvOdjvB8lyM83+0Iz/c4wvO9jvB8nyM83+8Izw84wvODjvD8kCM8P+wIz484wvOXHOH5UUd4fswRnh93hOcnHOH5SUd4fsoRnp92hOdnHOH5WUd4fs4Rnp93hOcXHOH5RUd4fskRnl92hOdXHOH5VUd4fs0Rnv/PEZ6/7AjPX3GE59cd4fmrjvD8NUd4fsMRnr/uCM9vOsLzW47w/LYjPH/DEZ6/6QjP33KE53cc4fnbjvD8HUd4/q4jPH/PEZ6/7wjPP3CE5x86wvOPHOH5x47w/K4jPP/EEZ5/6gjPP3OE5587wvMvHOH5PUd4/qUjPP/KEZ5/7QjP7zvC8weO8PwbR3j+rSM8/84Rnj90hOffx8SzA3hmU/25XHkgU05n08VUZnCokE/l8kP9hXQhnS/kS5lCNlsu5AoDg0ODA6nBdC5bTlfyg9mKj32aYpn/YYLKnGrNpf+xQ09+s7vcqOcuRfn9kyO63a1Y5h85UuYpimX+Z0fKPFWxzP/iSJmnKZb5Xx0pc49imf/NkTL3Kpb53x0p83TFMv+HI2WeoVjmHztS5j7FMv+nI2WeqVjm/3KkzLMUy/wTR8qcVCzzfztS5tmKZf6pI2Weo1jmnzlS5rmKZf4fR8o8T7HM/+tImY9RLPPPHSnzsYpl/oUjZZ6vWOb/c6TMCxTL7HW6UebjFMuccKTMxyuWucORMp+gWOZOR8p8omKZuxwp80mKZe52pMwnK5Z5iiNlPkWxzFMdKfNCxTJPc6TMixTL3ONImRcrlrnXkTIvUSzzdEfKvFSxzDMcKfOpimXuUyyzgXphv8v3/QKvMP5M488y/mzjX2HzMD5tfMbKwfic8Xnj+40fML5g/KDxrzT+Vca/2vjXGP9a41/nl/sc419v/LnGn2f8+cZfYPyFxl9k/MXGX2L8pcZfZvzlxl9h/JXGX2X81cZfY/y1xr/B+OuMv974Nxp/g/E3Gv8m428y/mbj32z8W4x/q/G3GF80fsj4YeNLxpeNrxi/yvhbjb/N+NuNv8P41cbfafxdxq8xfq3x64xfb/wG4zcav8n4u42/x/h7jb/P+PuN32z8A8Y/aPxDxm8xvmr8iPFbjd9m/HbjHzb+EeN3GL/T+EeN32X8buP3GP+Y8XuN32f8fuPfZvzjxj9h/AHjDxp/yPjDxj9p/BHjnzL+aeOfMf5Z458z/nnj3278O4x/p/HvMv7dxr/H+Pca/z7j32/8B4z/oPEfMv7Dxn/E+F8y/qPGf8z4jxv/CeM/afynjP+08Z8x/rPGf874zxv/BeO/aPyXjP+y8V8x/qvGf834/2f8Lxv/K8Z/3fhfNf7XjP+G8b9u/DeN/5bx3zb+N4z/TeN/y/jvGP/bxv+O8b9r/O8Z//vG/4Hxf2j8Hxn/x8Z/1/g/Mf5Pjf8z4//c+L8w/nvG/6Xxf2X8Xxv/feN/YPzfGP+3xv+d8T80/u+N/wfj/9H4fzL+R8b/s/H/Yvy/Gv9vxv+78f9h/I+N/0/j/8v4nxj/38b/1PifGf8/xv+v8T83/hfG/5/xtoEljO8wvtP4LuO7jZ9i/FTjpxnfY3yv8dONn2F8n/EzjZ9lfNL42cbPMX6u8fOMP8b4Y42fb/wC448z/njjTzD+RONPMv5k408xfqHxi4xfbPwS45caf6rxpxl/uvHLjD/D+OXGrzD+TOPPMv5s419hfMr4tPEZ47PG54zPG99v/IDxBeMHjX+l8a8y/tXGv8b41xr/OuNXGn+O8a83/lzjzzP+fOMvMP5C4y8y/mLjLzH+UuMvM/5y468w/krjrzL+auOvMf5a499g/HXGX2/8G42/wfgbjX+T8TcZf7Pxbzb+Lca/1fhbjC8aP2T8sPEl48vGV4xfZfytxt9m/O3G32H8auPvNP4u49cYv9b4dcavN36D8RuN32T83cbfY/y9xt9n/P3Gbzb+AeMfNP4h47cYXzV+xPitxm8zfrvxDxv/iPE7jN9p/KPG7zJ+t/F7jH/M+L3G7zN+v/FvM/5x458w/oDxB40/ZPxh4580/ojxTxn/tPHPGP+s8c8Z/7zxbzf+Hca/0/h3Gf9u499j/HuNf5/x7zf+A8Z/0PgPGf9h4z9i/C8Z/1HjP2b8x43/hPGfNP5Txn/a+M8Y/1njP2f8543/gvFfNP5Lxn/Z+K8Y/1Xjv2b8/zP+l43/FeO/bvyvGv9rxn/D+F83/pvGf8v4bxv/G8b/pvG/Zfx3jP9t43/H+N81/veM/33j/8D4PzT+j4z/Y+O/a/yfGP+nxv+Z8X9u/F8Y/z3j/9L4vzL+r43/vvE/MP5vjP9b4//O+B8a//fG/4Px/2j8Pxn/I+P/2fh/Mf5fjf834//d+P8w/sfG/6fx/2X8T4z/b+N/avzPjP8f4//X+J8b/wvj/894O5hIGN9hfKfxXcZ3Gz/F+KnGTzO+x/he46cbP8P4PuNnGj/L+KTxs42fY/xc4+cZf4zxxxo/3/gFxh9n/PHGn2D8icafZPzJxp9i/ELjFxm/2Pglxi81/lTjTzP+dOOXGX+G8cuNX2H8mcafZfzZxr/C+JTxaeMzxmeNzxmfN77f+AHjC8YPGv9K419l/KuNf43xrzX+dcavNP4c419v/LnGn2f8+cZfYPyFxl9k/MXGX2L8pcZfZvzlxl9h/JXGX2X81cZfY/y1xr/B+OuMv974Nxp/g/E3Gv8m428y/mbj32z8W4x/q/G3GF80fsj4YeNLxpeNrxi/yvhbjb/N+NuNt9+Wt99tt99Et98bt9/ytt/Jtt+gtt93tt9Ott8ltt/8td/Ttd+qtd+Btd9Ytd8vtd8Gtd/dtN+0tN+LtN9irBpvvyFov89nv31nvytnv9lmv4dmvzVmv+Nlv5Flvz9lv+1kv5tkv0lkv/djv6Vjv1NjvwFjv69iv11ivwtiv7lhv2dhvxVhv8Ngv3Fgvx9gz+a3597bM+Xtee32LPS3G2/P8LbnY9uzp+25zvbMZHsesT3r156ja8+otee/2rNV7bml9kxQe96mPcvSnhNpz2C05xvaswPtuXz2zDt7npw9q82eg2bPGLPnd9mzsey5U/ZMJ3tekj2L6GvG2zN07Pk09uwXe66KPbPEngdiz9qw51jYMyLs+Qv2bAN7boB9J9++727fJbfvadt3oO37xfbdXfterH3n1L7Pad+VtO8h2nf87Ptz9t00+96XfafKvq9k3wX6S+PtOyz2/RA7zrXvNdh3Bux+fLvX3e4jt3u07Z5lux/Y7mm1ezztnke7B9DuibN7xOyeKbuHyO6psXtM7J4LuwfBrsnbNWq7ZmvXMO2anl3jsms+dg3ErgnYOXI7Z2znUO2cop1js3NOdg7GzknYZ3T7zGqf4ewzjR3jd7w4dPDsfl3rVnh155sVC/1CuN3favd72v2Pdj+g3R9n94vZ/VN2P5HdX2P3m9j9F3Y/gl2ft+vVdv3Wrmfa9T273mXXf+x6iF0fsPPldv7Yzqfa+UU732bnnxYav8j4xcbb51f7PGefb+z+8dONX2b8GcYv98a6qez6ZP//MT8457h133rf+TzewpAwO6ax7tk5d1dPv8vWdt0t9sO+f8zVTz80fdkveFg6EYyZ8cOeuvIXS47bufPfeVg5IN0U///001783+P/JkI2ma2flf7vVGsu3cNwtfELqWKmxxvtlPlnexhmDPgZwu+KBz9Fuvv26mh8D/Lt838nmCwpDYVxpX2HHzbND6frLf51D+DFUe+ck7bc5gr8O1jZrDu3GkfemWHCP8/H90ZhV3ID2dJAsX94qFAayg7nioWBXHGgmB/sT6dLxVRpcDA1lBlOFQcqBTPJU66kh8rl9PBgsZIq5ItZwj6fcVd8tyJF+BfEg1+zJxfGg1+zJxdVJdlny0MDqWy+2F8YSleK/ZXUUG6gkC1WBgZKxdKgmWvLp0rp4f70cCZdKRSK+XxxOD+YTlfKg/lKoZ+wLxaxy4XC8ODQQCVVKVYGM2a+LpUZGi5V8mYSb6BQKQ/nK5VsbjCVzxZKxeHSwHB6cDhbyFSGy4OV1GCtXi8RsUuZfLEyXCoN5VKVwexAcaBgdGdwYMgAFNLZ/nRxeNDoVCVdLg4PDA8VyymTVzldLA2kSwPZPGFfymSup+91/Mtiwa/rzOWx4GeGCP+KqiT75rjiDcK+Mhbu6Rr+VfHUbU02V4uyKaSLxn6VSrl0oTRcyqbK2YqxXIVirtSfLtimlS0MlbL5gbIxeOlCcSCTL+f7i0XTxorD6Vq9XiNilzMDuVx2MD2QSw/0l7L95VKqMFwplMxceDo9lC6VKhVjN4dMo630Dwz2m3ZVHi4PlAtD/abx1trTtSJ2a46w38BknvD09f26ePBrNvL6ahw6k6rJ/o3VsbJPF7KZzEDWrlcUSql0rjScKWQy1rAZxRnOlAdz6cFKLpPLDpdMB5krFNPWoA4PVgovghP2DfFwr8nmxnjwc4T/pmosdVuT/U3x8K8Q/s2x8M/W+tg3x8I/W5P/W3x8T082tX7wrcHY41Z/wr5FwM4Us8MpM4oo5o2JLZtFwlTZDB/LQ4VypT9THBrOpTKldDpdzpk/mXIpNzhkzPNQv1lZzA+Z7GptqhiLzNO18fCQMn5/MTVY7u8fIPxhZfyhof6BopEn4ZeU8bPD/eVKdqBmc8rK+MV8rlLJZ4uEX1HGz6dT5XxmoKabq5TxB4dS+X4zqib8W5XxzRg/Wxos1sY4t2nLZ6icGi6lB+n5+nYfn/KwjvK+Qzlv3w0mID/PGz1/4EH+vcBVeyyfgPw4Hy4felYn2a2ujuWaFMK4jcGwTuEe5SNhDStilRSxyopYFUWsVYpYtypiUbuOt63lav3o6ljwswXCvzMW/FSZ8O+KAz9dH7uvYfieHv8a/lqGn4gBf1088q/hr49HPrXnyg0+fhzYG/Wxa+OjTfHIvTa+uzse/NozzT3x4NfGv/fGg1+zO/fFgz9I+PfHg18b/26OB782fnwgHvza+PfBePBLhP9QLPjpmny2MHw9u5yp2c1qPPg1+YzEgp+t8d8aD37NNm+LBT9Xw98eD37NPj8cD37NPj8SD35tXLUjFvx87fl7Zyz4/bX6fTQe/Fr/vise/Nqc6O548Gtzinviwa/p/2Px4Nf0f288+LXxyb548Gvjk/3x4NfGJ2+LB7/WPz4eD35t/PBEPPi1/vFAPPg1+3kwHvya/TwUC/5ArX8/HA9+zX4+GQ9+zX4eiQe/Zj+fige/Zj+fjge/Zj+fiQe/Zt+ejQe/Zt+eiwe/Zt+ejwe/ZPeb2r1r0497EU/a86c43krRfjrae0d58Ly72X3FZ6lSlPl8nn8vcI1jPp/nR3xQPnw+34ZNEbgmhTCswylCPlOEfJJCGI7PWsE6rIj1mCLWQUUszTI+oYi1XxHrgCLWXkWsLYpYmrLXbENPtinWTkUsTZ3QlL2mfu1WxNJs25o6sUsRS9NGP62I1a79I417ezx5fLDS/51q0RH+tHjwsySLqSGy4PnTWImPrRIB/wkLwyivXsBSLls6rGycP9bzVMaHyyAIa2qTWD1CWBx1OiWk3Jh/UHxpvEzxe0LwefxZ3lgd7gFZ9MYji0xYvfH3yCj/GYxnqTy0adVla1Z54ILG/ydCPFqT7/DGyntaAJYHv0+Ee50MjzvLe5Z/XSlvHL71DcVVq8olw34DxByT9LyqfB8fi3icmFU4M15TEpMZTkcxk9aRytvqmO5fr15TLJ1bXLth0+pyB4iSPwGjODkcFhurKsEoeSHxzquO/k1vx3R6wY5ESXjTWJgkAsKkVh+k9VhdXUK+dK9DiD8VsKYK6Yh7Z0h6jsHToSqFNYco6krlsE6aVcC3JsNmcuJpdunseJtd3DM5YXXF5RrvaCmdCWsD0wT5UF32CGGERT1Ptyf3TNNYGbGn7GU8uuHev/j/k4BpHb2BFNaT83skX6uvfw9l43WDehpPPeTSUfWU8u/1Yu2u0mF6IY0Oe7yx9ay56zNKvXK+VJe9QhhhUXfG9ZTH52/98/j8mtLzez/3/ye9sTqNetorlIff43r6E/+6J6A8K/3fqZbcwAC2ccqD5x3P6DY9HLUdUP69Xpx6V28HUj1J9oRkN13gmhTCcLQ8XchnupBPUgjD2YBWsA4qYu1SxNqjiPVkm2LtV8Q6oIi1VxFriyLW44pYmnrfjvIK6webxbJOU1ePKGLtU8TS1FXNMu5UxGrXtv2cItaIIhbtssBxJuFb1+ONbXvaz248PyoHv8fz7wWuunzqYyVJrtKYluQzIx751PjMEPjMEORDddknhBHWTP83f2bg8WewMvL4/JrS83sX+hWWBEzr8JmhTygPv8efGc5JjC4brxvU0zjrgedHvPk9nn+vF2e7SYXqhdT+e7yx9awon1SUeuV8qS5nCmGERTPnXE95/D5WRh6fX1N6fu860FOu06inM4Xy8HtcT68EPeV1g3oaSz2kK5H1lPLv9eJsN3U9lfRihiDHHm9sPSvKJxWlXjlfqstZQhhh0ZvEXE95/JmsjDw+v6b0/N4w6CnXaXxzdZZQHn6P6+mbfdyegPKs9H+nWnL5nFSXevgD6T6hnNjOuKz19DobuZ1R/r3eWL2Io50lgU+QHpDsZgtck0IY6shsIZ/ZQj5JIQyfa1rB2qOItUURa5ci1uOKWDsVsfYrYj2hiKWpE7sVsXYoYj2phCXZ51Z4HVbiZd0RRSzNtv2cIpamLdRsjwcUsTTr8XlFLE2d0JS9Vtv2lMuoqRMHFbHa1U5o8no5jJkm+7SjJ3vN9viYIpZmGZ9pU16a4wnNMuL6AH+2TPj/e7yxbU/xOZs+blHLj8rB7/H8e4GrLp/6c7Yk16QgV5LdHIFrUgjD5+w5Qj5zhHySQhj2Ga1g7VHE2qKIpVnG/YpYBxSxjihiacr+OUWsyXpsDut5RSxNnditiHVQEUvTfj2piKUpe01d1ZR9u9ovTV3V1K8nFLE061FTvzTbkKZ+HVbE2qmIpVnGdh3LaZZRczzRrvXYrmO5ZxSx2nWcoznGnBxPvDTakKad0OSlpV/2GudVW+H1lBIv6zRlrzkGoL4W97sRvnXxzqFlIu+xxTm0WPZgNZhDk/bW9Xhj9VBRPuko9cz5Ul3OFcIIa57/m+8J4/HnsDLy+Pya0vN7b/SFkgRM63BP2FyhPPweydfuCbva/9ETUJ6V/u9Ua66A86GUB8+by0lR7yJ94Ybn3+vFqXf1diDVk2RfSHbzBK5Jb6zuoD7ME/KZJ+QzidVeWG9QwgqzYRRuXY+QTtve8vyoHPwez7/Xi9UupMPkKtlLks8x8cintkf5GIHPMYJ8qC6PFcIIa77/m/dHPP4xrIw8Pr+m9PzeZuiPjmVxsQ0cK5SH3+P90aaO0WXjdYN6Gk89RH/ng/Lv9eJsN3U9lfRCav893th6VpRPKkq9cr5Ul/OFMMJa4P/mesrjH8vKyOPza0rP7z0Kesp1GvV0vlAefo/r6Tb/xywvuH1Gac8cV7LbKEOeDttDLPWdLqeitgfKv9eLs33W28OxEeVK8pkfi3xKlSj6w/lSXS4QwgjLP6h6VHvg8eezMvL4/JrS83tPQXvgbQfbwwKhPPwebw8HwG7zukE9jaUeUqlKVD2l/Hu9OO1kXU8lvZD6vx5vbD0r8ilHqVfOl+ryOCGMsI73f3M95fEXsDLy+Pya0vN77wc95TqN7+odJ5SH3+N6+k543sXyrPR/p1py5bRUl3r4xdpJpMfFgp8Z7BHqSw9/qED4J8SD30/4J8aCX6jV70mx4Odr8jk5HvwS4Z8Sj/7U+C+MBT+bJfxFseCXa/wXx4Kfq+EviQV/qNZ+l8aCP1jT/1PjkU+tfk+LBb+SJ/zT45FPjf+yePjX7P9yhq85F0H4Z8aCXz8VeYVXd51CmSh/GoucweInAv4TFoZRXr2AFde4Tyob54/PfSsYHy6DIKwVTWL1CGFx1OnykHLz/PtCuGI5rMMzcMYrE+t2K2I9ooh1WAlLGtu2wmurIq8FSryk8W8rWMcrYnUqYVm3varH6wQlXvb6xDbFOkkR62RFrFMUsRYqYi1SxFqshGUdfs2uFV5LFHkdqurxWqrEy16fqoil1XfY69MUsU5XxFqmhGUdzp22CxatIcc735UbjHe+K1uMd74rV4p3viufjXe+KzcQ73xXLhfvfFRumJ4FqI+kPLjuLmT39Z5bcpHfNaX8e4GrLp/68+NC4IPywf1BiwSuSSEMbcAiIZ9FQj5JIQz3CreC9bQi1k5FrMcVsfYrYu1WxNqiiPWEItYeRawn2xRLU1f3KmJpyd5e47igXXRVsz0eUcRq1/b4lCKWZhtqV9nvU8TStBOafa2mjdaUvaa82lW/NMcmmvWoKfuXg514TgnLXuMzciu8tlf1eB2vxEsTy7ptVT1eJyjy2l7Vw9qhiKXFy17jXH0rWJ1KWNZp6YR1jyhh2Wuc32mXetTkpaWr9rpdbWGfIi9N+6VZj5q82lFe1mnqKs6ttoOuWqdlv6x7XhFLc/z1mCKW5pyC5phc81lBc+6Rxvc0j30SC0v4/+NdA0iNew3gpHj4hK4BnCTIVdoPq8inFKWeOV+qy8VCGGEt8X/zdwd4/EWsjDw+v6b0/N4X/IpLAqZ1+O7AYqE8/B7J17478KnO0WVbyOKhnsZTD9G/MUv593qxtpt0mF4sFOQo6QWlTQphOKaPWl9S3ePeulawDipi7VLE2qOI9WSbYu1XxDqgiLVXEWuLItYhRSzNNqRZj08rYu1UxDqiiKXZtjX1S7MNadrVl4Psn1DE0rTRZAvp/fhFXh272xudzyIhn0Uh+fD0FC/e98HymXjfB8v3x/s+WK5C466lTK4JkB3fp6k3RixEPk+D8u8Frrp86mPW04APygfHrKcLXJNCGO6vOl3I53Qhn6QQhra1FaynFbF2KmI9roi1XxFrtyLWFkWsQ4pYhxWxNGXfrrp6RBFrjyKWpn5p2pyDilgvB9k/oYilWcYn2xRLs23vVcTSkr29xr2T7aKr7ToG0MSa7Lcn+21X+o7Jfnuy357st1+asm9XXX1KEUtTXpo2R1P2+xSxNNuQZr/drja6XccTmmXUHPtq1qOm7F8OduI5JayEN3YPRStYixSxtObJ7fViJSzrtlX1ePUp8tpe1cPaoYj1iBKWvV7i6WG91GVvr3F/eytYxytinaCEZZ2mvE5V4qWpq9ZptqF21ft2LeNL3RZq8rJusu9wv++w7mElLHutuedhe1WP18lKvOz1iYpYWn2tdZr9o5a8rNte1cPStF/PK2JpPvM9poiluaajOQ+gOT+huT8H30Hie8MS/n/pzHCbz0r/d6oll4n8bgfl3wtcdfnU98lJcj1NkCvJbpnANSmEoT1dJuSzTMgnKYShvreC9aQi1i5FrIOKWE8rYu1RxDrcprx2K2JtUcR6ThFrRBHreUUsTXkdUMTSbI9HFLE09V7TFmrW42OKWJo2R1MnnlDE0pT9zjbldUgRS1MnNMcmmv22Zj22q/3S1C/N9tiuNloTS1O/9ipikezxvR7Ct076fpPis14uAflROfg9nn8vcNXlU3/Wk+QqPUOT7JYLXJNCGK5BS98IWi7kkxTC0Da3goX9dStYuxSx9ihiPdmmWPsVsQ4oYu1VxNqiiHVIEWunIpZmezyiiKWpX5ryelwRS1O/NNuQpl3V1AlNu9qubVuzPWq2oacVsTTb48tBv55QxNIcA+A5EXy8jedENDvm5+kpXp+QLuH/j/ebqoORz0Gg/HsFmcQx5l8eUa7NfK/TXmt+fxL7plawnlbE2qmI9bgi1n5FLM1vpW5RxNL6Dp91Wt9dtU5T9u2qq0cUsfYoYmnql6bNOaiI9XKQ/ROKWJplfLJNsTTb9l5FLC3Z22ut70Zbp6mr7ToG0MRq135bU/aaYwBNG605nmhXXZ3st49enzY5Jm8Oa3JMfvT0a3JcePT0qx3HhdZpyqtddfUpRSxNeWnaHE3Z71PE0mxDmn1Hu9rodu3TNMuoOfbVrEdN2b8c7MRzSlgJb+wep1Z4bavq8VqkxMte9yliaa4PacrrZEVeO6p6WI8oYdnrJZ4elpZOWLe9qoelJXvNtq3dHrXakL1erIRlnWZ7fDnoF57j0grW8YpYJyhhWacpr1OVeGnaQus0bXS76n27lvGl3tdq8rJucmzift9h3cNKWJrjCeu2V/V4aY3J7fWJilhafa11mv2j5jPM9qoelqb9el4RS3NO4TFFLM11K815Js35L839hXiOC9/bmvD/93hj24vNZ6X/O9Wai3yOC+XfC1yV+aTD5Crt0yb5nBkPn6EE4HM+Zwryobo8SwgjrLP93/xb0jz+mayMPD6/pvT83p9NefF/EjCtw29JnyWUh98j+VrIP5wyumy8blBP46mHdCmqnlL+vV6s7SYdphdS+5f0gtImhTCcw4laX1Ld496EVrAOKmLtUsTao4j1ZJti7VfEOqCItVcRa4si1iFFLM02pFmPTyti7VTEOqKIpdm2NfVLk5dmPWry0rQTmjqhWY9PKGJp2nt835CPrfB9w7DxqZQPT0/x+oR0NLbq8eQxykr/d6olV8gnID8qB7/H8+8VZBLH+O6siHIl2Z0tcE0KYTh3dbaQz9lCPkkhDNtoK1hPK2LtVMR6XBFrvyLWbkWsLYpYhxSxDitiacq+XXX1iCLWHkUsTf3S5KVZj5q8NO2qpk5o1uMTiliasn+yTbE07cReRSwt2dtrfHexXXS1XccTmliTY4DJMUCcdnVyDDA5BpgcA0yOARphacqrXXX1KUUsTXm1q53Yp4il2Ybate9o17Fvu+qX5jhasx41Zf9ysBPPKWElvLH7IFrBWqSIpTV/b68XK2FZh++ytMKrT5HX9qoe1g5FLC1e2vWoxcu6R5SwtHVCqx7t9XFKvOz18YpYJyhhWacpr1OVeNnrJUpY1rWrrm6v6mG91NujdhnbUb+sm+yHJvUewx5WwrLXmntEtlf1eJ2sxMten6iIpdVvW6fZ12rJy7rtVT0sTVv4vCKW5rPoY4pYmutWmvMTmvMmmvuZ8P2mThaW8P/TvkJuz228lf7vVGsu8rfLKP9e4KrMp7avsM8bK9dOQa4ku/kC1ySEWYfv+cwX8pkv5DNRWFJ9W7/S/51qyeXzfULeqGt8f4Ne3aYLUXWN8u/1xtZtHLq2APgE1RvJ7jiBa1IIwzo8TsjnOCGfpBCG66ytYL1NEUuT10ElLHs9zdPB0i7jFkWsJxSxnlTE2quIpSmvI4pYzypiHVLE2qOIpSn7/YpYuxWxNMv4nCLWiCIWPXvg2MK6lf7/VKqSG8iWBor9w0OF0lB2OFcsDOSKA8X8YH86XSqmSoODqaHMcKo4UCnkC/lyJT1ULqeHB4uVVCFfzMU7dsgP9Hhjbbzi2CRN+MfHg58h/BPiwc8S/snx4Nfqd1E8+HnCXxwPfj/hL4kHfyDe97/SBcI/Ox78QcJ/RTz4RcJPxYNfIvx0PPhlws/Eg18h/Gws+JkU4efiwa/Zz3w8+DX72R8Pfs1+DsSDX7OfhXjwa/ZzMB78mv18ZTz4Nfv5qnjwa/bz1fHg1+zna+LBr9nP18aDX7Ofr4sHv2Y/V8aDX7Of58SCn63Zz9fHg1+zn+fGg1+zn+fFg1+zn+fHg1+zPxfEg1+zPxfGg1+zDxfFg1+zDxfHgz9M+JfEg1+zP5fGg1+zP5fFg1+zP5fHgp+r2Ycr4sGv2Ycr48Gv2Yer4sGvja+ujge/Nr66Jh78mn27Nh78mn17Qzz4tfHVdfHg1+zn9fHg1+znG+PBHyL8G+LBr9nnG+PBr9nnN8WDX7PPN8WDX7PPN8eCn6+ND98cD37N/r8lHvya/X9rPPg1+39LPPg1+1+MB79m/4fiwa/Z/2Gv7nSw63PbpTi4pys13S+L3LPloYFUNl/sLwylK8X+SmooN1DIFisDA6ViaTBXHsinSunh/vRwJl0pFIr5fHE4P5hOV8qD+Uqh1m9VGPeEmmwKNe6rYsFP1fTy1lhkX6rZtdsE2Wdypf6hYmqgMlAsFiqmE8qUzL9+I/lKPlMczA4XTU2UhspFs9wzmBkuZUrZcsG01XJ2sL9crtv828V6bYV3qib3O7SxU9laX7taxC4XCsODQwOVVKVYGcwUzdxoZmi4VMmn+o00KuXhfKWSzQ0aMRRKxeHSwHB6cDhbyFSGy4OV1GCtPu8UsUuZfLEyXCoN5VKVwexAcaBg5Ds4MGQACulsf7o4PGjW2CrpcnF4YHioWE6ZvMrpYmkgXRqoP+PeFYsu1tcQ1qjrYuGFv/YY5E/7Gy/oTL61LK8pUK51/m8659m6ddV6nLUsnMf/1KwX/1u8z/v5RdlD16Ve7hfkOpiA/DxP3tdE+U/UHrou4IPywX1N3QLXJIRZh+vc3UI+3UI+EtbzilhbFLEOKWLtUcQ6oIi1WxFrvyKWZhn3KmK1q37tVMQ6rIh1RBFLU7805fW4Ipamfmm2oYOKWJo6oWlXcS8+D8NxBB/HKPbbmajjCMq/1xvbb8cxjpjiRZPrDOOn+9er1xRL5xbXbti0utwBouTDMBQnh8Nic7HwMBzyYbyLqqN/X1Ydm84TsDsZXg8Lk0RAmDTs5WXqCUjHZeEJ9zqE+FMAa4qQjrh3hqT3vNjVuTbt0BsPfjasbniZKP8+b6zMEwH/CQvDKK9eT5b5SiXZhZWN80eT1sP44OOWhNXTJFaPEBZHnU4JKTfPvy+Eq1QOPBZe6jKkRySK3xvCi8efJeRNaUmG01mYdjcSJEPeFil/a7bpdYlSeWjTqsvWrPLAdYIcSG4LIB7ZwQ4v3A5yLA9+L4B7nQyPu7BH/ijtmXhalxSwaCpickhQc5NDgpf2kEAytahKPd7Ysq70/6dacen6SsUUEbuQLuaKhVIply6UhkvZVDlbGU4VC0UzzZ0u2EWFbGGolM0PlEsDxXShOJDJl/P9xaJZXSgOpzMWc5EveMk8o1kiU8m/QtcjyLYb4t/MZidP9RPYZpD0w4c2rb7jmvLG9beV7y4bS7vBA9dId6+ujv59TXVsOsmFDX/a1YzFPbwK033rmjRjqEJxmzGqenJaZqxLwIxixrC6pHyt6xDih5kxnCjvDElvXZ9wD1U9phFsZFXHJ4m4nsLC6pnLp0VV5+LkcFjso9ljS4P3KQJm2OA9TD094V6jgXBYL9QZkF9PSH7UG0lNoxvivt4HirlJpOYwXCzDZK9Uc5O90ku7V+oU0iG3VueoqBzWJb3g8vd4Y+Wx0v+fSpUzA7lcdjA9kEsP9Jey/eVSqjBcKZSy6WI6PZQulSqVXHFgKFceqPQPDPbns4XycHmgXBjqz6QrOanZJjy9V4Us7nUhA3l8mMSBvHV8m0EPC+fxb/IDbH43soE8vWJ7d3H1baXixvL5d63bVN5ULl2xZmN5wzl3lc6/u3zXxqaH9RdXR/++pDo2neSsASApzGb4KAVuhDshvnXUoij+XP/+FK/OgcehtN0Q/xZfUnZGabb/trakicSnD9JTuHWkSfOA+0r/d6o1F7kDoPx7gWtcHcA84IPyabID4GqB4uRwWOyj2QEcw8IkEWAHwMt0TEA6VHm81yHEnwdY84R02AFI6TkGT4eqhM2Pzz7MEfLG5reONb95xwXnO8cbKwdsgp1CftRcj4G41lFzPRYwVvq/Uy25/EDU5kr59wLXuJrrscAH5dNkc+UqxuGvBziKw+Nydz2j5AXEk6p9SEiHDscrx0KYdaQO8RzflY5svSn/Xi9O9ayrg3QMHJdPB8gnpuPWQo83WyDIh+ryJCGMsE7xf3OzxOMvYGXk8fk1pef3dvhmKwmY1uExeycJ5eH3SL525DLSMzo/altPsrHdozCW5O2P60qQOZ8n5J0U0lM8KZ+pLeYzVcgH10atW1MdHdYbEsbXJ48FzBksHa6T8eOFroWwmQxzKmDOCsFMCpi27s6cXsez/nQWTzLFOGw4jfHhafnvbohr3Ybq6DCK+36mV8+CXvFuCOv7mAa8w+qb4pGsuJ5gnfL2jHXK7QTKX2qPFHaKUC4KWxiCuVTAtHJbMn10PC537FtOZ/cVhxr9UfsWyr/XG6tPcfQtkn5z+WDfsiwe+eQTgM/5LBPkQ3V5hhBGWMv937xv4fGXsTLy+Pya0vN7n4G+5QwWF/uWM4Ty8Hu8b/lYz+iyof2Q/hMu3sP2zWVD9SuNtahNWT5f7BldFkrH5cn7oyIL5/EvZguYXwmxYVh/p0EZG9neY4UyRrXjNwDWaSG8ljXAuh6wePplgHVGA6wbAYunPwOwljfA2gRYPP1ywFrRAOtuwOLpVwDWmQ2w7gEsnv5MwBpugHUvYPH0w4BVaoB1H2Dx9CXAqjTAuh+weHp8FXFVA6zNgMXT42uHtzbAegCwePpbAeu2BlgPAhZPfxtg3d4A607A4ulvB6w7GmDdBFg8/R2AdWcDrCsBi6e/E7DuCsGy13T05CwhPaXtE7DIzsf3+t0LQ4TIz8OUfy9w1eVTH7Os8cbKlcsHX0NbK3BNCmH4bLZWyGetkI+EdZoi1umKWMsUsc5QxFquiLVCEetMRaxhRaySIlZFEWuVItatili3KWLdroh1hyIW9j9h42d7TUcTh42fKR23QTjfic+NPD7HCBqf82WK0xtwPgE4j3ecbq9PBqzxjtPt9SLAGu843V4vBqzxjtPt9RLAGu843V6fBVjjHafb67MBa7zjdHv9CsBqZZz+UHU0Vivj9CJgjXecbq9T3mis8Y7T7XUasMY7TrfXGcAa7zjdXmcBa7zjdHudA6ywcfqaBlh5wOLp1wDW2gZY/YDF068FrHUNsAYAi6dfB1jrG2AVAIunXw9YGxpgDQIWT78BsDY2wHolYPH0GwFrUwOsVwEWT78JsO5ugPVqwOLp7wasexpgvQawePp7AOveECzrLq+OxuLp7wWs+xpgnQtYPP19gHW/F17G10IZefr7AWtzA6zXARZPvxmwHmiAtRKwePoHAOvBBljnABZP/yBgPdQA6/WAxdM/BFhbGmCdC1g8/RbAqjbAOg+wePoqYI2EYFn35upoLJ5+BLC2NsC6FLB4+q2Atc0LL+P53mgsnn4bYG1vgHUBYPH02wHr4RAs61ZXR2Px9A8D1iMNeF0IvHj6RwBrRwOsiwCLp98BWDtDsKy7qjoai6ffCViPNuB1MfDi6R8FrF0NsC4BLJ5+F2DtboB1KWDx9LsBa08DrMsAi6ffA1iPhWBZd0d1NBZP/xhg7W3A63LgxdPvBax9DbCuACyefh9g7W+AdSVg8fT7AettDbCuAiye/m2A9XgDrKsBi6d/HLCeaIB1DWDx9E8A1oEGWNcCFk9/ALAONsB6A2Dx9AcB61ADrOsAi6c/BFiHG2BdD1g8/WHAerIB1hsBi6d/ErCONMC6AbB4+iOA9VQDrBsBi6d/CrCeboD1JsDi6Z8GrGcaYN0EWDz9M4D1bAOsmwGLp38WsJ5rgPVmwOLpnwOs5xtgvQWwePrnAevtDbDeClg8PaXtE7AS/n9aM3oHu6+3RpNLJyA/Kge/x/PvBa66fOprRu/wxsr17ewerhm9U+CaFMJwzvGdQj7vFPKRsJYpYp2hiLVcEWuFItaZiljDilglRayKItYqRaxbFbFuU8S6XRHrDkWsOxWx1ihirVXEWqeItV4Ra4Mi1kZFrE2KWHcrYt2jiHWvItZ9ilj3K2JtVsR6QBHrQUWshxSxtihiVRWxRhSxtipibVPE2q6I9bAi1iOKWDsUsXYqYj2qiLVLEWu3ItYeRazHFLH2KmLtU8Tar4j1NkWsxxWxnlDEOqCIdVAR65Ai1mFFrCcVsY4oYj2liPW0ItYziljPKmI9p4iFc46N9snd4l+H7ZOjdEHvY3WyONLeOI4RtA+vk3FutB+vCJylPKX3G9dXR4fx9xtxTz5/5xnffeTvMOP7Vvz9xrdD2EIWhu+6LWVhVB7p/caekPLw83rxvV7+fi6+wz2DhS2AsD4WdhKE8fdzT4GwWSxsIYQlWdhSVlZ6P7cbyvoK/37MJ7yIR4+FvR+dCPjveWPnxa3DdsvPIUpAPvMU8+FYdDRe2NEc482Ht9EOKM+xivnguxw8nwVCPqQ3vN0q6k3kd2ko/15vrI2JY11EOvtggSDXiEeN4PEOXJwcDovNxcLDOuEextM4GYgfIyGJAF8z5WU6JSAdl4Un3OsQ4p8EWEHHZnQG5CdVJU+HqpSA+0EnA81n4Tz+pb4+2JOB5h9Xjx+UF5cHHg5G3IMOB0MOFP9KxmH2cTJmV0C5FgRgDk2vc7lmuozpCZhSuU6BciGHk4ADxb+elet4OHXpFCG9F3CP5O8JafG3pDNzIP7CBuXBeqL4N4fU03yBA2+TKNOFwAHjnBLA4RaBAzdrw2vW3uebNQ8cnp6YgN8ocjwBab6AE+RIDLZ4pIqdgIsmCvPhOMjJFplGbKXy6vLGckCh0VYnAjLr8GSHQ2jPG9vdxtS9Re5uKf9eT9bFlTp8Qo9O4vLBIZF0FFJSCOOKgQoYls8Mrz6037BxzfogXYjaDycEPpjea4BFvyf1Z/z6E3G4hmrDxcnhsNhBVdZITTQO3Q4b5nBMGq6FDbF4dc0V8qV7HUL8BYC1QEhH3MOGYxyDp5O6RexipS6YH/TI4z/Euj86yBHT0O8yu8aDGif+6SkdeVfZS/TpKQlwFIfH5S7JKHkB8SSVp8MtojTHeA+E6i+Rut0pcMBDMbjsKIxvksEJq7UsrJtdo+sUyk7ltc3opOPquBgPufKmjROJvNmsgTA+Ql8LYQtZ2DoI45OF6yGMvzS9AcL45CttdumGMhyGybaYej1xso3ymuWNlSufwET97hTu4aQRTz83JJ+ZLeYzU8gnZlmm422v9Q/thY1QeP7YLihc+k9YGIajr7iP0Q7rsq3DepZmg8KwFjSJFfMoOItDDqnckn2VuErlwNkPWpxY4j+S2Efgj4QsbuDwI54Pg2YjH95I+fcC17j0Ufr+jPQBTmmBh9Ki7bPu4Wo9HoZ1Cvc6QrAOKmI9pYh1QBFrtyLWFkUszTJq1qNmGXcpYmmW8QlFrEOKWI8rYu1RxDqiiLVfEUtTJzTbo2Yb0tQJTXntVcR6UhFLU/aPKWJpyv6wIpamvDRt4U5FLE15tast1JSXps15OYyZNHVCs9/Wkr29nubpYFmnqfeast+niKWp95pl1LQTmmMATXk9p4j1PGBFfa6n+H1CfGleiuYy+WZOSktzKHxuUntFNUhOfAMp5W85kj0olYc2rbpsDT9vsZaey4Hklod4tCTY4Y21OTMCsDz4nYd7nQyPO/4xyShLZvHMx2Yjr2BT/hO1ZCZtNpfmPaUPfFDapBB2KrvmYTwf6cMbSSEM++1WsJ5QxDqkiPW4ItYeRawjilj7FbE0deKAItYWRSxNndCU115FLE15PaaIpSmvpxSxNHV1tyLWy6EeDytiacpLsx/aqYilKa927Yc05aVp7zX1S9PmaLZHTZ3QHDNpyd5e4xxMu+i9puz3KWJp6r1mGTXtRLuOv55TxKI5GOmFYdwmHfaRSikfnn5ZBCzpeZjirxDih831SB/86PF/8wP04pjrkepjBcuT8h/PXA/JLQ3xcK6H27blAVge/E7DvaC5Hty3dMifTCL5xrQfTdwXifsV+V6opVA+aX6R30P95el7Q/KZ3mI+04V8pA9LU7ljlnMpAflROfg9nn+vIJM45tDmRpQrySemOb3hhDfWXnUKeRJfqssw20rtlb/ewOPjB+F5++b2phvufdBvm0lvrN3Fj/ZGte92rvfdM0aXbbz7WTmu1G9EaQ/jzYdj0QeApddn0I40u4eVp18QgEX1bh19nNSG4wcVqT66BEzr1lTreDz+Z/36sv3NdrZ/38bh+1z5h5A/PyOcK0/LuXZD/BXsQ8hf8jElOVO9S3qAbwH2CvlKmGibm6276QKHMCxeXzMgPj+8RIqPb2ZT/F9jdXc8vEWMH6e2juvPggAOXH/4B/OC9Odb49Cf35gRzhX1Z4Y3Ou/aATJMf74D+sNlHKY/MyCM6w/JSOrb8Z2HZvt2nj5sDHEMhHHux0LYMUK5EhDG+R0Twm+GwIH6T/xY4Ur/d6ol1/w7TjMhjL/jNAvC1rKwJITxg3qxX+EH72K/zQ/SxcN8+MG4CyGMH3Q7A8L4wbX4+il3nfCb14ttizuaeBeL6w2+i8XbIR60TLLiJ0pIbR6fC37E3mf4dt/o/MLGtfyAJEW9y0YZJ/D8J2pcOwv4BNkU6ZAoSpuEMOu2VevxMKxTuNcRgrVFEeuQItZORazDilhHFLH2K2JpyutxRSxN/TqgiHVQEUtTJ/YoYdnrKZ4OlnVPKvGyTlMndiliaerEE4pYmnZVs21r6ap17WpXNXVC035ptiFNndCU115FLE157VbE0tRVTV6T/fbRk5fmeFXTRmuOAZ5SxNK0X+2qE5p2ol37Ic1nGM0yPquINWlXXxr2S7MeH1XE0pRXu9qcdh0XPqaIpdkeNftazXps1/FqVRFLk5emXd2niKVpJ9rVRmvy0pR9u9oJzTH5y+G5VrPffloRS5OX5nOtZj1qtkfNZxjNeV9NLE2dwDZE6578aHnau2IdfQCoG+J/y1+H7oE8Ep7qWnMubF8c5b0wprwTkJ/nyevclL90riru7eRhXS1wHSwP5LOZcildHC4MlYdqeykXAle8h/vBTxPih+0Fjem83gztu+is1vH5h6+s62JhCyGsm4XxM3ZvWzSaf0x7cTJR5M/zTwrxcR9pGJZ1VDdzvNG6xtujtGeE75PAthRPO85G3jNC+fcCV10+9T0jki2dJci4L0TGSSHsRHaN9qtTuBe0d9c6HO+3gvWkItYuRayDilhPK2LtUcQ63Ka8ditibVHEek4Ra0QR63lFLE15HVDE0myPRxSxNPVe0xZq1uNjilia9ahpvzTldUgRa6cilqa8NNuQ5nhCU16PK2JN2tWjZ1e1ZG+v8TyBdtF7TdnvU8TS1HvNMmraib2KWO06Xt2qiEXjVZwrtNf8/ZN459NSmXjnkOrfG5HmtHiZNL8hQ3lN1DdkpLKF6QGf71rIroOwTmsSK955tXqdLvSCy83z7wvhKpUjqSiTkwAr6txSs3U7yxtbn5Q25jZWm+c8KUROPP/xnM1BcstAvBuqdTmgvBcGYHnwOwP3OhkedyRjPv+IH4WXbPIMdg8/Jcl1bS5gHdsA6wbAmhvC66QGWNcDFk+POrywAdaNgCXVSZh+c6xNgMXTB72/H4R1N2BJuklYZzTAugewePozAGt5A6x7AUs6X4awVjTAug+wpLN6COvMBlj3A5Z0zg5hDTfA2gxYPP0wYJUaYD0AWDx9CdKVWBg/U0B6V5a/X79q5mhO0vkM/N3VoC/av3tmHfP2maN58/Q93uiwHhY2DzhzWZCNIhvPz73WtvE8P8+Txz6Ufy9wVeZTG/tI55Rz+VD/GPFzqXikBRcnh8Nic7HwsE64h69m90C68Xy9eCYLi9LlSEejYzouC0+41yHE7wOsPiEdce8MSc8xpGPVsfz8aAu6P0fIuxviP+AX3g5F5sPRH1JeXB4kU9QTOn4E4yAHil9lHGYfJ2N2BZRrRgDmIWZyts2UMT0BUyrXTCgXcqgttUP8Haxcx8OXobm+YhvYUB3NbZaQlxdwj2PztBgWlm+jtPZ6NrvGMElv50B8vgwfRV8p/v4QXZkucODlxXpFDhhnZgCHAwIHblqH16y9zzetHji+m0gyhViVWAXTBZwgR2KwxTs0U8ah32Hqx03YDCGPGQEcedoZ7LpUXl3eWA4QEPYtvQGZdXiyw09yUjrrerxYu+PIwwPKv9eT9XalDp802nHig/LBrRwzBa5JIYwrRjP5zGBxN2xcsz5IF6KOG6T+CtN7kDYh3LOOf2Zkoo5qk/KZ0WI+MyLmE8fxZVI+M1vMZ6aQD2JJjyXW3VGth/P4n2R2fOMiGbMjAJOmCij+KqE80rFYFP9WIf4qoYwkywoLu9VrnDeXJfZ7tzXJ9XYh/m0szirgyvnd3iTXGyaY6wKBa5+QN/YhvFxHow+h/HuFMsbRh4TJ1bomHzG5qqM4ORwWm4uFh2FXMQviXVwd/Xs8j5h3sDBJBPiIyct0R0A6bBJ4r0OIfztg3S6kI+6dIek5Bk+HqiSls79XC2miNJ07AH+l/zvVkkvnozYdyn+imk4jvcHh150C16QQxh8LeRjP504hHwnrFEWsiiJWUhFrriLWsYpYJyliLVTEOk0Ra5ki1hmKWMsVsVYoYp2piDWsiFVSxLpVEWuBIlafItbpgCU99gQNo8bziIzzRbcH5D9PSO9B2gTcmxeARTj2Hh/L4GMH9QtTvPBHnm6IT4Xi06idEAf59An3qDw9Qt5HYwhP+U/UF0IbPXrhOORWgWtSCMP+vhIxHw0dt47G9gmBD6b3ACsh3ONhko7zaQDScVxJ5Wn5Sqq06k7jEmkVvRf4SCvyPP58iL+ccZDi869C8PhzhTYnraZPD8iP8+P3wqaPlgdgBZ3mflwA9+MYd5zWkXYOSFOUFF/aHcD7eeIjyQb78BVCeXh90op+N8Q/RShP2FuhNC3axcIU7UnJ8riH8UC5dldHlztMhtahzIeF+FyWJLMkxOfyl3ZMr4Aw3rZwfCrtyOE7QrHdS1+p4F8oCPsaRTu1+3TEdr80ID/OL6zd8/TNtHvraBcNch9ost0vFfi1U7t/TcR2Tzo12e5bb/dSfx+13fP+/vMBXyYhXI5lw3E+gXhxneFjhiEWzuNfHtIGJBsSNpUutWn+7I1fxeGyXA5hnDs9Ex29PizfL+nyqK9cVaPLwjqUnWRvuI2g+k56Y23LMgjjz5A49yH1U3zHLOor1zPeT30Rljz50irp6+TSes01vbQecVkEu31c0W51WQTjXVQd/Xs8yyJ9LEwSAS6LhO2Wkz5U6An3OoT4MwBrhpCOuHeGpOcYQR9h5OXnO5Xofo+QdzfEv5OZ6nnHBeeLuyOlJlgW8jt6G2XT6ajN1fGNsthcCT4JcBSHx+UuySh5AfGw2q27sjo2HToSZbzf9Gz+m1uopmtYGH7Lai0L62bX6DqFslN5bTM7qYlvWfHmjt+y4s1mDYTxjSprIYyv2K2DML7StR7C+GbLDRDGN03St8LQ1OzwMyYdiOl7U+L3c7GeJ0cPL5nRw9XV0b/HM3qQXhWLOnqYG5COy8IT7rXD6EFKZ39PEdJEaToxvV4b+Xgyyn+imk4jvcHFjHkC16QQhu1inpDPPCEfCQsXEhuNlFtdGEnA7xkB+XcI6b0QLJ4mIfAOWxhBWzTFC28f+H7Ku0MW/6T01k12NWPbS7N7wKVN/0khDPuc3oj5aOi4ddQHJQQ+mN5rgJWIUBb+NIY6TuWc4jX3JPgJQcdJ1p1Ceou/CCZs7mXx8HN797HfnRBfKsf9UA6Mcy+Ug+J/npVjNpSDcyI+fZCewq2jdroZuK/0f6dac5HbKeXfC1zjaqebgQ/Kp8khIVcLFCeHw2IHNY1GzfG86ujf4xkSPsDCJBHgkJCX6YGAdKjyeK9DiL8ZsDYL6Yh7Z0h6jsHToSph8+MTSvcJeWPz+1bIhBLP9z5vrBywCfYJ+VFzfQDiWkfN9UEo00r/d6olly9Eba6Ufy9wjau5Pgh8UD5NNleuYhz+jQBHcXhc7t7IKHkB8aRqXyCkQ0ei7AbO3/fVz1r63/evZ3ljVb0L+HAOYRYvKaSneFI+U1vMZ6qQD05IWUeHwlPYOqGsFLaepVsH6TawsGshbKNQLgrbFIJ5dwjmPUKYrbsrZtfzCjJjXMXRHEsmMGpzwcNcePoHAeuhBlh4mAtP/xBgbWmAhYe58PRbAKvaAAsPc+Hpq4A10gALD3Ph6UcAa2sDLDzMhaffCljbGmDhYS48/TbA2t4ACw9z4em3A9bDDbDwMBee/mHAeqQBFh7mwtM/Alg7GmDhYS48/Q7A2tkA60HA4ul3AtajDbDuBCye/lHA2tUA6ybA4ul3AdbuBlhXAhZPvxuw9oRg2WvaRjhLSL8HsB5rgHU8YPH0lLZPwEr4/2kYtZfdV1yXizybR/n3AlddPvVh1F5vrFy5fHB2Yp/ANSmE8b6Ih/F89gn5SFibFbEeVMR6SBFriyJWVRFrRBFrqyLWNkWs7YpYDytiPaKItUMRa6ci1qOKWLsUsXYrYmFfFjaut9cn+NezvLG2FKdGuD3DaQ1p+kR6Dgh6buBTIw824HwycB7v84O9XgRY431+sNeLAWu8zw/2eglgjff5wV6fBVg8PdrcrQ2wzgYsnr6Z5wd7/QrAauX54aHqaKxWnh+KgDXe5wd7nfJGY433+cFepwFrvM8P9joDWON9frDXWcAa7/ODvc4B1nifH+x1HrBaeX7oB6yw54e9DbAGAIun3wtY+xpgFQCLp98HWPsbYA0CFk+/H7De1gDrlYDF078NsB5vgPUqwOLpHwesJxpgvRqwePonAOtAA6zXABZPfwCwDoZgWXd5dTQWT38QsA41wDoXsHj6Q4B12Asv42u90Vg8/WHAerIB1usAi6d/ErCONMBaCVg8/RHAeqoB1jmAxdM/BVhPN8B6PWDx9E8D1jMNsM4FLJ7+GcB6tgHWeYDF0z8LWM+FYFn35upoLJ7+OcB6vgHWpYDF0z8PWG/3wst4vjcai6d/O2C9owHWBYDF078DsN4ZgmXd6upoLJ7+nYD1rga8LgRePP27AOvdDbAuAiye/t2A9Z4QLOuuqo7G4unfA1jvbcDrYuDF078XsN7XAOsSwOLp3wdY72+AdSlg8fTvB6wPNMC6DLB4+g8A1gdDsKy7ozoai6f/IGB9qAGvy4EXT/8hwPpwA6wrAIun/zBgfaQB1pWAxdN/BLB+qQHWVYDF0/8SYH20AdbVgMXTfxSwPtYA6xrA4uk/Blgfb4B1LWDx9B8HrE80wHoDYPH0nwCsTzbAug6wePpPAtanGmBdD1g8/acA69MNsN4IWDz9pwHrMw2wbgAsnv4zgPXZBlg3AhZP/1nA+lwDrDcBFk//OcD6fAOsmwCLp/88YH2hAdbNgMXTfwGwvtgA682AxdN/EbC+1ADrLYDF038JsL7cAOutgMXTfxmwvtIA6xbA4ukpbZ+AlfD/0/rTV9l9vfWeXOT3wij/XuCqy6e+/vRVb6xcuXxw/elrAtekEIZzjl8T8vmakI+E9ZAi1hZFrKoi1ogi1lZFrG2KWNsVsR5WxHpEEWuHItZORaxHFbF2KWLtVsTao4i1VxFrnyLWfkWstyliPa6I9YQi1gFFrIOKWIcUsQ4rYj2piHVEEespRaynFbGeUcR6VhHrOUWs5xWx3q6I9Q5FrHcqYr1LEevdiljvUcR6ryLW+xSx3q+I9QFFrA8qYn1IEevDilgfUcT6JUWsjypifUwR6+OKWJ9QxPqkItanFLE+rYj1GUWszypifU4R6/OKWF9QxPqiItaXFLFwzrHRPrmifx22T47S8XknfFWwE9Lw+BwjaB9eJ+PcaD/eEHBuZT8efqlJ2o8nvTe2vjo6jL83hu8KrGdh+C7aBha2GcL4e2M4/7uJhT0IYXezsIcg7B4WRmWd4tXfG+uGsl7t34/5jW7x8CGUB5d/IuC/542dk7YO2ww/lCoB+WxWzIfLC+ehH1DMh+s0ludBxXw41nnVF/9L7RC/7ifZoYdC8uHpKZ6Uz7oW81kn5INY9Cq3dfSOJm/X3RC/4rcZ+yr3Y4tGY0q2bR27h+9jSraN2mKVhWmuqxD+1njwsySLEUEWvEyUf58gu2b0mOfV642183GsSUll4/xRD0cYnyq7DsIaaRKrRwiLo06rXnC5ef59IVylcgS1TZ5PjyATir81hBePH7b/nWS4jYUpyjATJkNpD709lmCaf10qD21addka/BrdqLbA5XYCxCO70+GN1cGRACwPfp8A9zoZHncTZcelfHpbzKdXyKdPSNeMfZLykThLJ+5Qf2THcDvg3X/Sb34UCX9PBz/BQfF/uqCOucvHlN4jCmqTVPe8j7QOTyri489OIQ72rxR/H+tf8SviPA1xOC6EM2Hycyk4ZzofAjkcgHFx1Rtd9pX+71SLThoXU16zgK+9XgthfJy7GcL42BTftZXeL+P3UF/Dzo2g30HjKD7O4vGfaXIcFfWYIUorPfOhHKR8wvrx+yPmM73FfKYL+bQ6TpLykTjjM6913A59AOyQHzSqTfK0dB5AN8T/O2aHPhxih/CZH8d2aJvRDlF+QXYI9ZPifzzEDknPDldWgzkTJrdDnDPaIYr/GbBDIyx93HaI8pL6WTy9stl+doYgh7j7WTy4uqqYT5WFUVuRxppof0YgH7wXZn9GoDxB7fXrs+U8pfbKdbcb4n+UtddvQHvl+h42PqtCWFXIF9uM5419frQuzJZVA7Ci9lEU/zshfVTVG8uP2+awZ/1qAL8uT25Ta6v1MgdhecI9is/7R5z/GoG41ZC4VeDNdXvYv453fqGQJX3f5o11FLZd4Exh/D3iN1br8dB1wm9eJqsP+xfVcTEe8uFy2h6AKdmEDdXRcanMHQLuVsDl7RzlRWeKYRv/Z1/fbRv//mwZD/XEurf4P+J9hi7ksH65w/pF+aCT6pd42/r9ahP1y+vwYQjjdhnPo+P2nDCs7P8b+v12a0vjaS/NyFNqL5I8cZ1G6h+5PLsB44Q59Tg/A32nONgnWEfth9osya9LSG8dju8o/i9Y/zJ9sZx/WHvzPNkucDngOZLbPZmLVGaKu8CXE+kjb2N6+phLUz0+Apx53jtiyjsB+XmePNdM+fcJfIh3rxDW1QLXfHpgINOfK+UrQ/2FfL6cAHziivdwnlQ6XyIpxCdZPxqLrLMl6fNyO5lcretiYTsgrJuFEUfbhm5bNJr/zpj4R5E/zz8pxN9Yrcdrpi6TQj74XNEKVnWcWHO80W1A6gtHWDrsC/n4hZ95OjCnfl+yi2G2jmwb2n1eTrSDObB1vP9T1KGcNB5FW/dITHlHtXWUf58XXLe9Qlgrtq6Uz6VzlcH8UKmSLZcGKglvbJ/QKdxDWyfp7Swhfsy2IiXZOrRnXSzsEQjjto44SrYunn4xm4oif55/UoiPti5qXSaFfNDWtYJVHScW2To+DsJx6ghLh+PUrUJ5uK3D57JXgk2K6UsH4jwg2lTO1zr+DL2VyQnlizj8Hh838zQ4L0PxX8/G7a+bI/OjMlwr8JP2dfFynTcnON5WIZ6dWyTbsqq88dpbi+vLpWvLw+vLGzs9mR4WEYuPj1MexLOuC+7dA79x+mYd4FAX3OU1dlwlOJZUdRwbu96LfJFZEzbTf+SRtp9Zt9L/n2rRSY+O2NVW2X29JpWJ/FhB+fd6Y1Uuji0sVeCD8sHucSQe+aTsEzBOb1t3V3WsbJAHbiGUPlYTRf68vNJUO+oN5SuZwKDlzhIzWdfPqcdHGxBl2xhvJ2FbZxJC/AqEVVlZEiH4OA1yM2vHx8O3O/lQh8oR71fDM2npq+Hc/vFhVJD+8/gkc1zi4TIJWx638qQ6D1uSl5Y8+XdKUa+l5XDU3ZlCPnG3kZlQHq6XuGWg2eVCSR8bLXutDWhjQcteWRbO47+dLXttgPqUhg9HsQ1kmm0DUj1wWdOxnkkh/s3V0WFSG5DkhLqwTuAg9UOSLqwLyMe626vjzwfT4/eAw8YR8QzNo3+2m/KfqHHE/RHlSvJ5KB75pKLYFskeVoUwwhrxf3ObweM/xMrI4/NrSs/v7fPtSNj2gbB+it8j+Vr79Cg8tsQ9HgprD+PNh2PRp2rou+L0THGEjaUOzwlOT5+nmcLSSFsPsDxch3if8gz0KXy5RNK1Kgvn8VexPuX5cY4R0I42O0YI2x4Y1i9Yh5/9ibJtdLonb1Ol77dTHdNUyQdZHb8/4HHcOl4/H4H64bZQqh/8dnzQdMBH2LQM5/hxxvGjIW2Pc/xkQDx7vcYbGw9tkefJ4xesQz5NIcXnto3H/2zEcT3pQ7xjmrQ4ruf1j2OaRv0R6W7Yliqs599k9fxVaK+SXRxvmwwaTwbZ8phf2xuMOuZohw+xSmOOoLZjHY3vpPjS6yRSvdm5C7TbSYZF+U5j97bCPexzwsYo1nFb8ttzZAxePmmcQ0fsc4wotrxZfZbK1A7tJopeS/mEjYHieq206l/H/NpejmS/jfGUxry4XW07K0MnYEjxR4A/4uMRfJS+y5O3yFJ7wH5s7twX/7+wlQ360rAyWkeflEwInDqFOCPAmZaFpgRwvhE4U/wfsr4Xt5zzvgnlbB1us6f4/8gwNy6SeXpeNDsqLY/xJTDiI219fgTS8WU4rHMJG5fCJRw8chHL2cHuzRawpaVg61f6v1MtOsKjpVK+3XenwKcb4v8U9HgXyDRMZtY/KuTLj0qcDfk+Cvm+oJeLR2MSNz6+5/WOdTICeSDPVRBO8f+PjcF+Dv0e7695/9g9V86bPw/sCOH6iMCVt5kt1dHhNR33833ha9+LZa6cD+d69OYP5bE2cXyhnNXR8pHsB48/XvshLdVvhTBp3J7wxtqwKH0MrwcpPm6LpPizWT3Ts1LYPKXFp35JmocIerWuUT8lPb/ydYj5c2XcoFe26NOyuIZ1A5u3OH6unLd1vA2e2GTeNwTknWR5nwIylOYyNMd/Ul3N9UaXqwpYeA/HeDx9FThXFTgnQzhL/TOO9Ue8seUZCcmHpx+B8owI5Yl5PBv52ZXy7xVkEsezq/RsKb16S/G3CfEfCom/XYgv1Rt/duW21YN8+bPrdrjXymtp/U3aBT4XzOP/YH4dcxDsAuflJxdtxjxP5uJ54XWUFNLjnoS4ngvnQXkeCilPs+utPP1EvZ45D/IJ0puLQG/8oKZfP/5VpjeXhuhN2Gv1Ya86RplTD6uD+yPms6XFfKK+uvlS1qmblHTqk0yn3hIyznupy3lEMR+Oha9W87FDlV3zMMoH74WNk4K2iXIOto7vnCvnGVVvKP7TTG/WRtAbqQ6qEDYi5DtRe3Mmyh6GYVUFLIo/IsQPG4NFXQ+QXqck3Y73dZLo+0Mo/17gqsunPt6V5gi2CbKb4dXnPorlDelM4bzy8Pr71m7EyiDAJAh5OwBSfA9+YzpLqgviPCTkYR0/44MrUhLS44Aa8aNwahS3UbjUCLcFlNPzojVCnr7Z8xTxvVOKv5NNokQ5Y4ErT5QzFsI27qCs6X5vQDo+aczDeJkvCykzxd8XUuYRL7zMN0CZq4zTCKQbYWHVgDLT/WmevEmCMCQZH+ON5t6sPvH0EzVYOQbyCercnw6YPA7aQHorC+fxd7LO/Tno3KXBd9zlDzpPiZfrVhanCvGpXF0CpnX44gfFf59f9pgnfsR3mIIGdLx8L5xtNbexbMLqnOLfz+r8wxHqPKz9SOeEhdkKpwcy6XIqio7z/J0fyHwvMVrIUQcymC5sIINxqxCPFKnVgYzEKShuswMZ/gSAA5lmd4zw9BQv3t1UmTE7lPmqDm9M+ES2hZVB6qCDdoImAvCxA6D0XQGywx0WFP9rbBAzf/GL11JdHRvAz/Oi1RVPP1G7e46FfOKYxbUOZzQmerAepIP0NkyjQdJ3muww8W0yir+cdZi/Cx1m1F1kUWZqUec9L9oMf1h7i9p+UEZdAqZ1QYfS/jMMoKosvZ6dyqeO3qpdPnLnjwM6aVdFrxDW0iE8A5V0qr9/IFvJFAvlfD/2kcQV70VZ0TtFiB/vjFFOPIRnG5OrdV0sbCuEdbMwvjKIB1PEMzDLlaLIn+efFOJvYGVopi4lrMvGiUWHSYwwzj7UUbNlQZM497NwHv/HIRMa0uHH0oG9YYc548MQlhFtonUr/f+NNKnSwFF+VD9TBS5VkAvF/R++Q2jx6LJUhbKQjeoMycMT7iW8YNlhHh1C2tu80dxGInDj6UdYXp1CuipgTNQOFCmfk1rM5yQhnzhXvniejcZjffPqabi9CVqRerBaD+fxF7DxWNLHlN7m5RyxDqSxENpISk877zAO2huKf4zPSdopfT+UmZczTM/4eIxzDprQOt7ncDQntLDMXV59dy+3j+dX5TI3OhCZ4ktjlrATKqT+F7GCJs2DDv35iT9za3VlEej5Wi+8/BdUR2NS/JUMc2mTmBcGYL5uXh3zdGg7/IMN8z05P+s6hXtoH3h6ike6GNdb34S/IR782oeG1guy4GWi/Fv9eBzPq9cbW0dxTCRKZQurZ/4BEHxTSsJa3yRWjxAWR52uCyk3z78vhKtUjirIRMpnviATir8xhBePT22Y6z6lJRnyDzcqyjATVt/8Q5KU/3g+HkVymw/x8ONRXPYbArA8+D0f7nV68sejrM0c8SffZgnlWwG4Ut3xe6j/PD3Fk/LpbjGfbiGfMKwVAhb27Tx+txCfysE/EDoxc9t1/dwkcJXm6MajnyS3EyEejVs6vLFt8O4ALA9+nwj3gvSzU8gDP0gT1i6tmyVgoF3fFJInldU66Q1YiocH25ZhvBqPrSoM4IdqKQ+e9/0x5R21zw9aR+C8pbfZW5k/zBQrueHhbCo9mM5XitnBsPYtrYdQfGm+50whPsk6no9hvvgxhhc4VOv4fPe7dV0sDE/I6mZhxFGaP4zHZhVyUeTP85dOKcT5w2bXtsKejaNi0fwht/vUtifK1oRhSXN9CeA8xZPXNtGWUfzV7Pmf3rzr9ILl4An3OryxduqK6ov/pb4U+5C7hbLyeyg3np7iHT1bmco3ayt7A2SyUodP6IliklxxbZanldZa8aMdzc6btzsW1238kDyFS/8pH7yH+eB4gecT1zp8lHYy3nw4Fo0h417vp7nEmPvmlPQmKTmcq5b0hs/f4VhpGwvD+pH2sUgfZrqDXaPrhN84PjhpcR0X45GTNtthv9fsRzmlj+RJ8098Pv7IPDlPPh/P50CC9kcsY/OUz4TMKQbtHeJz25xr0F6Dd8CzQpWlj3tum/LqEcqnl/dARfqgKjnp1CRsI7z9YBvh7QfbCG8/eOI5d1I7IFnYdnB9E+1grVCOsA/kSpvLqRxSf7AWwrgN3wJhfPxQhTBuK+n0tQTkZ53UXnENIqzMcY+He4SyHk3dxdOqRlh8PiZHJ+kglcnq4N4IOohjEeSGMhzPcwPGQTtK8X85ZN3wbpaGMB9gmEGnlHHbyscUaFsp/jfAtsY0Jyfa1ign5k/EXCHPz/Pk5452OFVQet62c5f0sezVa4qlc4trN2xaXe4AUfKmL5l6jM/jekJYJ9xbD/EuqY7+Tc0BmzBid7J8pS2m0hRF2LYkaQrlbiFfutchxN8MWJuFdMQ9bMqGY0jT4oQhpbO/7wxIEyQr3k2grMJeYN3SAAvf+Qp7n6faAOt6wAr7bvJIA6wbAYunHwGsrQ2wNgEWT4/bHbY1wLobsMK2I2xvgHUPYPH0eJDUww2w7gUsnj7o8LEgLDyEOezgtx0NsO4HLOm7XoS1swHWZsCSvodIWI82wHoAsHj6RwPS8a7auiiH9sfznct0NmpXR/lP1KH9ktylgx9JdrsErkkhjC8N8zCezy4hHwlroyLW/YpYDylibVHEqipijShibVXE2qaItV0R62FFrEcUsXYoYu1UxNqkiLVWEWuDItY9gCVt75Ns7gzfW7dh45r1Zf/5wgMX9jxgf28OyH+OkN6DtAm4NycAi3DsPT7Gx8d1fgCmNB4nPPxQxkn+tKe0zLdOSG9d2JbAmLcvRn60pfx7vbE6HEd/vwH4oHywv98ocE0KYTglsi5iPho6bh098yYEPpjeA6yEcM86aQtalcXBMle90XzxXth0IcXD6fezmN4HvU4jLSFYh1v6KX6KYeJB4FWhDM18UAFlRHykZ0xKG+/SQiEtTXWSk6bpcXqfjzVwep+PHXB6n48FcLqN9+1cJuikadeqfx11CQz1hXBRX8hWo93kaflSlrQN9nTIU7I3/B62CZ6e4kn5dLeYT7eQTxjW6QIWxZe2f4Rty5S2Jca8xaO2LVPacirNh41nWybJbQnEw22Z0nZIxPLg9xK41+nJ2zIlXVkXwJPybaQr0usGiMWXCmiOzobj8gPFL/s2mOp9I5Rtpf871ZIbzIZt/4h3aWow8pxH0NYOzlvactTSFsxCNp0upNLlciqXKpZSYW1Z2nJE8aUtSsuE+PEupQympC2YuM2yi4XdDWHdLIw4Slsw47FPg5Hkz/OXtu7gFsxmt+XxsBvGiUVbMLmNx9cL4rZN+Hri7cIYcqK50BhqTch4VuqbpA8ChL1+I73CgeVq9hWOdRHzWd5iPsuFfPqEdImA/5QP3sN8JM6Nti89cEw9DdfvoGcPmvvvhvg/YNuXtvjX0jYNnPNttC0A2yul59sCwvplir+d6SduC9gIZebllPSMytwllMs63BZA8R+FsUFM22zFbQHYF0/8uCH63Am+nhHTK3fpsD5A2g4UcVsAqjgXJ4fDYnOx8LBGUyQXVUf/Hs+2AGm4E7bULXXd0jLdRiFfutfobS7MB4fSnSHpOYb0WEIYUjr7uxyQJkhW0uO29FiIy1SbG2Bh1yhtgSCshxpg4baAsBNnqg2wcFuAdCwvYY00wMJtATz9CGBta4CF2wJ4+ijbAjhWq9sCOFar2wI4VqvbAjhWq9sCpKFB2LYATMe7V+uiLOXzZSrFpfzI56tT/hO1lC/JPWwp/1GBa1IIwykPacvAo0I+EtZWRawtilibFLHuV8TarIj1kCJWVRFrRBFrmyLWdkWshxWxHlHE2qGItVYR62gvmd8dkH9SSO9B2gTcSwZgEY69x8e/UZbM+Vg1aMn8u5NL5ir96kt1yZyeBxMCH0zvAVZCuGcdXzKneNJbNNKzC8XHty8QA5e1Kf4PQ5a1pWexsGXtsDcAOB/pORdPH5aec6Xpev7GkHVdLExRr4elb/ty+XRXo8vCOpRdVYjPxzH4hliVheGbZby94LiqkV6FLWdTWj61KT3vLoQ8m30jm6cPO5W6u8V8uoV8wrAWClgUX3pGDVvOlp5Rqa/Ab7Wv9H+nWnOZMF2TnnPHs5xNcjsB4uFydpWl2x6A5cHvE+Beo+VsXqcbA3hSvo10hacP08l1LeYjfYMal4NO9vuKmE94yYZ9Tzne07ULkZfBKX9pa1HVv+4VwlpZBq8UMqnhbKWcymeHhoZTtZO0pTkvfi+KzVgqxI/XLhTEZfCHmVyt62Jh2yGM933EUVoGfzgm/lHkz/NPCvFxGTxqXUpYl40Ti5bBq4zz0bI1I/7vJb6tkZbB4+YS8xbHrPSZJnKSPcG3wHn7bfYtcD9602+Bc5njXEuzb4H7PyO/BU7xM0wncLlX+oxh2FvghMmXezlnXO6l+APQB46w9HEv91JeE/U92HjL2Hw7wG0W3K7jNmDeZ+EyOZ9HWwthfB0CT7aV5salV+3wlJndLAy3Fu9hYfhMz53UlqlebHvYcVwdF+N5kCfXGxzHVFkYyVfa8nEau+ZhxBXvob7x9GsD0nE+1sV8Wm863tOd6icqh21NkPRnvNuJeF69gKUtu7CyhW2jkraPhmFF2RLIsWLe/lKr000h5ZZskMRVKgfO00vt7DRBJhR/SwgvHl+aG6O0Mfd1oacQS6+gjGd+gOS2AuLhKdlB+1Y4lge/V8C9oPkBii9tNdwscIqy1W5TAyzcaxK0byaovXEs3GsiySpM7zgW7jWR9I6wRhpg4V4TSWcIa1sDrFb3mnCsVveacKxW95pwrFb3mnCsVveacKxWj6DgWM0cQSE9T1onzbfzbbYPwtoJpeVrIXwevMrCefwvHlvHrLJrfJ2R24EHvNFhfOz4IPDna2Jkk+J9lSX6+iDl3wtclfmkw2yvtE0+4rZQPDmDi5PDYbG5WHgYLgPi0u46SDeebaFSl7FBwAzrMjAdl4Un3OsQ4m8ErI1COuLeGZKeY0gfucDy41tg9t59Qt74FtgTbPphPkw/SHlxeeAUiLTjncdBDhT/cMgUCMXpCijXhgDMjzCT89SxMqYnYErl2gTlQg4bgQPFf46Vi7Y/eN5YfcU2QNOn+HiA3KV7HJunxbCwfBultdf3smsMk/T2PohP22uCZIq6QvHfF6Ir6wUO0tbwIA4YZ1MAhw8JHLhpHV6z9r6AHRFd7FoyhViVWAXrBZwgR2KwxaPmgDj0O0z9pN0kXsA9rAZKyz9EXyqvLm8M2jKCfcvagMw6PNnhB5sonXXtun0opo9dhW4fkj7MJR2OituHpK0kzeYz3u1DQeMGqb/C9B6kTQj3rLON5dPTRscLGwJbd0e1Hs7jf4XZCdwORHE6AjDpsZTiS6f/SFPfFH+3EJ9P51L+NB7i08C7vcZ5Sx9cpPh7muT6mBCfTyHvAq6c32NNcr1hgrmuE7j2CXmjjeLlOho2ivLvFcoYh40Kk6t1TT7CcFVHcXI4LHaQWUBThI8FF1dH/x7PI8xeFiaJAB9heJn2BqTDJoH3OoT4jwHWY0I64t4Zkp5j8HSoSlI6+3u1kCZK09kL+Cv936mWXDryN2oo/4lqOo30Brv3fQLXpBCG0wD7hHz2CflIWFsVsR5VxFqriLVREWuTItbdilhbFLFGFLG2KWJtV8R6WBHrEUWsHYpYOxWxNiti7VbEWqeItUERC99Skt7gCBpGabyl9FhA/vOE9B6kTcC9eQFYhGPv8bEMPnZQvzDFC3/k6Yb40/0PAktvKT0qpLcuytu/OFZa6f9OteYiD+Ep/4l6+7fRoxeOQ3YLXJNCGPb3UQ8M13pLicb2CYEPpvcAKyHc42GSjksfucBVO55WWrXbKuCGPbJT/8mnODjGndV6OI9/Ims7OMUhrSSHPVpLq8W8LyY+s4ADTyutJI/419LObIoX8xtPZemNJ17e7upoWUir3Tw+yk5a0ebjBfxmPe//t0HYCAvjO9fRhlB9WP3rmzc6XpXxSQT8J654D/u7Kguj71NKB6q2mg/HWgP58J0ffLU8M7+Oy2XC2xEfM2dZOI9/xfw6Zt6/Dtv5gQfqFlg7/NXFwemr3uiwKgvD761xPcBxmVROLj+0FxT/tYznr8NObd4u/cu422VFapfc7mG7lGwUj4/tMqwdc5klvbFtFp+1pN1HXOaNdqRjnfLDm3n8i4XxEPHj/c9W4L65Se5SfyTZGX7w73fmvng9Czhgf4D1ElZXSSH91gCsDoE/b9dY751C3lJ80gm+zC3Z726Ifz2rq9mLZUwvgMOWAM5TAuI/DBwo/psEfQmzE1z/twMmxX8zw8RDGhth3hqAeUvIWEVqp9vYvWb7WxyPcDnugDDOvcpwOWaHEPd2yJ+HcT3HfL0QvtjnNuI74l+jXt7D+rM7/OsewFO25dmwujxDKE/UutwSUn7EonRd3lh9DWtDXF7r58uY3U1ibhLGBNJYh75tOoXxCLOh0ndOcZzE0/JxkjS2CPrO8INCe5XGCoQV61ghXU5JYwUui26WbxTZoU3ZJsTn9YxjeB5/bXV0WNhH+bT64g/MHY07EoJrr48DHmFjSHtdYuE8/p4QOy7JMEzm0jMqHwcQH8mOb4cwSafbTV+5fFBfw2RhXbPP66ivUv8k6SuO48L0yrowfaW0Vl+fDhk7Uv7S3MII8GmkMzhX/DDjIMXHMRDFf0fIuErq46rs3njnB5rp43i75TK5sjq6PBT/fRHtOdVLvM9+6bTUPrhcsX2EydA6lLn0ZgCXJcksCfG5/KX28QiEcf2M8gwUte3w/vtOsPXViLjYhrnOVFleaOsp/mdDbL12/1r1r8PekgmzHe2my+1i60cgTLL1kv5V/WurfzdFGGuEnQgl6cqIwF+aF8N5Z56Ov/n8AnZ1bLmPRt2HzWGFtQPrmh0jYd1Lp8ZIc0Q4x1IV8uE25UooRyObgnOtFP8PmrQpYXqlaVOqLCzMplC8l7NehdmUZvUqrA+ktNYGXQTjR54nngwn6VHY2lfUZ78wPeoUeI0w3B4B17qV/v9Uiy5sTabHG1u/inM/kffmUf60Js7lGMeauFSvXD6kB/GeAJbKzfbGthXr7qqOlQ3ywPb0EONOMr6R4eDJPvwNVr529uMIa2fS29U4H/AzNnf2E8CUTk6K2vYprcXtnytz5bhhJ9dsY1hSfF52Hv8XIc+Akv2UdIviNxrD4elYUdfXqwH5SHsJpH65Fn9Bvaxhz4cTs2afSR/tNXucIwlbs6+yMNxzKOmqdDIDtleeVmqvm1m5pLbFbQLnSDysu5PFwXkT0uUge0CnB+D47hhBj8JkMYfda7ZfxjbD+5Moz+JSPYTZDKluxuzJYeVHm7GNpZHGaChTin9KiEwlOxQmU419PlFliq/7UD5RZUrxTwuRKZ+/iyJTin9GiEwlGYXJtNE+A5QplzfuK24kU3w1TZrfDJMpxU+FyJSfoBhFphQ/exRlysv8CKTjNmOEXXd6Y+1db0C62SGY2wIww8afiBFUl5JNw7p8TUhdSuXaFrFc25XKtb3JclH8c2Mq1+aAcm1uslzbGpQr6NTji4VySX1Y0HOtNOdiHc79U/zLI47tKO+X+txG1b+W5jY2Q5i05ypMX8bzfHMizG1w/UQd8CFH6YA0T4f7ym6OqAP8xFrrulhY3DpQrRdjjA6MsDBJ98c755wU4tNzsqQDVchHSwfmzx0dj5c3EfCf8sR7HVC2EaFsKCf+HMHnKPA5gp9wL7VFjE/tju+t4+0N959Q/DVMX2lvnfTeB5/TWLdAzjuoreCcBsXfvqCOudG/ll4pJ7mO13ZzOQfZ7vsmbfco200yk2w3tukw2y29+yGdMC2dcMvf/XhmTmP+0lwyxZfGfNIYDMd8O0PGRtIcEJdTLgDzMab3uxeMLj+vR9rvZOMdXKCT9/6QZ4dGpw82O7eDe4ek/RZYbqyrg2AXpPURlAkfq/L4OFblYc08W0h7e1GGUwLi4xic4j8j6FmUvQ8Sv6j9Ih9Xo02vCrhhujAixK+yOLi2I63fhL2vcfTWCDMZyRbz8qItDhsTWae1J1Ky09wWY/uQTpaPqiuU1urKWt8WS3NX90coG7/XEcIf2wqV51OsreC++RGWJsq4neJ/NsQuSmUIWy+PuuYrjWe2h6TjOtQj5LXS/59KVVpylB/ZrakCl6D+8qvcji2WuSbG8G3NSX1nAuTEbbCibUglID/PG/usgH2T1N+sVOFTX5OV5gGldhfvl4LSFb4my/WXr8nyupHGD9L4lz+PfBP6LskGcHuaYeE8/nfYuOw3AjA9r3nbSWkt7tdnj8bV3qMWto8rbH0T9wZL7+sQB2lvLI9fYuE8/h8x2xD2XuSErH2mK0d9byzuf+V7Y0cAS9I/rgtBX5AKGofyNsLj/3XIODRsf261Se5bBe7YzrHtfDPCGLWV/bnHsXAe/x+bXGudqL10PB3/8sgL2NV62OT+3LF76fj7QpRno71xHwDbLb1jJJ1rgfrK9Y/zOJ6F8/g/D9G/EYFD2Bd3G83X4nuAVRYW1rcc9XeBUunM0Z4zo7qPskdY2hclnX/C30Xb4etfnHIcKKRqY1qqQ9JXdF0snMdP+oa0l5WD/ne1wLMyUExXssVKMV8slXLDRfzSmnVUZ9NjyD9TKPQPZoZSuYHScKWUy050/sND/UO58tBwfzrXn82lShNe/lKpnM6lBwYL5VyuNJif6Pxz+eLAcHEgnR7Mpcu5dMP8rT2Y7usi2VSK2+/ft+1qIfsCWwLw6Jqek7hNUHxuG05Afp4nP0dS/r3AVZlP7TmyA/gkAuTdwzjEwGcoAficT6cgH6rL6UIYYdG5Wbw/ng78qYw8Pr+m9Pze2TBuns7i0tk+CSGsU7hHnK2eLgM97WLx8CyfbiFPCpsSEjY1JGyaN5o7D+th6dZBul4B84UvwsN6ilS3XP/wbGDUfY41vQEWfl2Lp58OWDMaYOHXtXj6GYDV1wALv67F0/cB1swGWPh1LZ5+JmDNaoCFX9fi6WcBVrIBFn5di6dPAtbsBlj4dS2efjZgzWmAhV/X4unnANbcBlj4dS2efi5gzWuAhV/X4unxPMljGmDh17V4+mMA69gGWA8CFk9/LGDNb4B1J2Dx9JS2T8DC/nkBu380+mfKvxe4xtU/L/DGypXLB/vD4wSuSSEM7dZxQj7HCflIWH2KWDMVsWYpYiUVsWYrYs1RxJqriDVPEesYRSy0W43665uqL/4P668pHdddHq+TxZH6aI4RNB7gY/NG44IrgbOUpzTGpDOUcIxJ+fKwKcCNh01lYdMhjI8x0e73sLAZEMafNak8fIyJz3a8bFhWzlHi3Ath/LmiG8K4jKZBGO8/pkAYlx+VO45n6qFS/3BqMJsuFYsDqYH+QjPP1PiMxdNRf4x6vnKcPEe74XRC4Cn1x5R/L3DV5VPvj6VnBel5juTTF498UmH2q0+QD/GZGQufVJZ0JSnkTVyp3+PP4zx+H5Mhj8+vKT2/9wzoq/S8kYQw6/BZXXpG4vc6jhKW9LzF5UZ1am3K20AWXF8TAf8JF+8hR16faNenK+bDsWiuQWpP1q/0f6dactkMlWOmUA7Km+uVXtvJD0S1dZR/rxdrW06H6TCXDz57JAWuSW+sDm+r1uM10m+ej4R1pE2x9ihiPaGIdUgRS1Ne+xWxDihi7VXE2qKIpVnGg4pYmrx2KWJptkfNetytiKXZhp5UxNKsR01dfVoRS1O/DitiPauIpan37WpzNMv4nCLWiCLW84pYmvLSHJto6le7jgs19b5dx3I7FbEeV8R6OYzl2lXvNccmk31ac1jtOpZrV1uoOZbTtIWa9agpr3Ydf21VxGrX8ddjiliabVuzDWnKS7Mf0mxD7Sp7TfulOS/XrnNDmvqlOfZt1zFmO/Yd9hrXrDT6jlkB2Pw6bG1YyichcJbWlPlekx5vbHk115UJf05M+FRuaR8qLxPlj2vMFC79JywMo7x6AUu5bOmwsoWtRfN1dy6DIKzZTWL1CGFx1GkypNw8/74QrlI5+hRl0q2INQWwpPYvrd9SfGn/tKQnYfunqW75XkLFus2E1a20B9vuWaB9WaXy0KZVl61Z5YHrBDmQ3K6HePQeQIc3tm3MDsDy4Pf1cK+T4XE3Ufa9T0hH8WLeM5SJai8p/15BJnHYy5kR5SrtN5oJMuftZ2O1fs3j0n6msHdzpP4m3r63Pxu1fij/ierPwuy6dVg/Uey6ddur9Xit2GLrnlHEOqSItUcRa5ci1hFFLM0y7lbE2qKIpakTOxWxNHXibYpYLwedOKCIdVARq13btqbsNeX1mCKWZhkfV8TSrEdNvd+riKWp9/sUsTR14jlFLE2dmBx/vTRstGZfu0MR6+VgC59XxNK0OY8qYj2liKXZhjTlpdmnteu4sF37tHZ9ttKUvWYb0pSXpo2e7DteGn2H5rOVpi08rIg1Oadw9NqQpuw1y/isIla7Pg9pyn6/Ila7zhdqjnMm7cTRG09M2omjJ/t2tRNRxl/T2D08e1Ha20BYcxpg4dmLPH2Uc/Y4Fp69KO3xoHTzAvLh541IZ+tZ1+eNLVvC/98j4GvvV+L5UZn4PZ5/r1DGONbZpXMLpW8Nk+yOEbgmhTCuWzyM53OMkI+ENRs4cD2foPrLjLf+ZsfDJ7T+JPvRbP0FnWVF4V4by3zKUZD5lBZlbt2G6ov/pXM9cd+fxGGewCEppKd4Uj5zWsxnTsR8ZreYz+yI+cQhN/wt7e2iuqQ2wut5pf8/1ZrLkX4dC7x4vjGdXRq5bVL+vcA1rrYpnVHL5YNtc4HANSmEHQNyjaE+s0fxbNzI9flSORuX6m+WIFc8P1TisEDgkBTSLwjJZ36L+cwX8ukR0q30/6dactkcypjy5vkez+4fDf2k/Hu9sXUeh34eD3xQPqifJwhck0JY/PWZqvQJZcD6PCEe+UWuT8q/14tVv2r1eQLwQflgfZ4ocE0KYeOoz8xwJZ3Nlwfyqf5iLl/qz2ZKmYFUKZevpNOFdGYwV8hmK8O5QqmQyVYyA5nhPqEMWJ8nxiO/XNT6pPx7vVj1q1afJwIflA/W50kC1ySEWUfju4QQ1inc6wjAwj6hFSzr6BsiMfYDedR94s7z5eU7GnaD8u/1YtX7dFidcfmgnp0scE0KYQsgHa/PiZF5dmi8Mo9prBoqc2m81IzMrXu4Wo+HYZ3CvY4QrJ2KWPsVsR5XxNqjiLVbEWuLItYRRayDiliaZdyliKVZxicUsQ4pYj2liKWpX5rtUVO/NG2hJq8Diliaev9y0Il9ilia+vWkIpZmGTVl/5gilqbeH1bEmrQTLw07oVnGZxWxNMcT7Sr75xSxJttQc1g7FLEm29DRk73ms7vmMzKeNcbnkHAdrNl5SZ6e4kn5zG8xn/kR85nTYj5zIuYzu8V8ZkfMZ0qL+UyJmM+k3EbnE1VuL7X281Irz3Et5nNcxHyObzGf4yPmc0KL+ZwQMZ8TW8znRCGfHiHdSv9/OptNp1KlgXSlVMnmBwYzQ+n+bH9/JVcZ6C/kSpV8rlgaKKdzxWxmsDyQqqQLZbNqmh0e6K8Mlob7K9I37Ombc7YtX3/i6PLQN0T5nmL+zc4OFs7j//6Jdcwb/Wv8ZqnHrnsAL+FprpNkIn/vmvLvBa66fOrrNh3AB+WD6zadAtckhFn3cLUeD8M6hXthWAcVsZ5SxDqgiLVbEWuLItbTilg7FbEeV8Tar4jVrvWoqaua7VGT1y5FrD2KWE8qYmnqxGOKWJo6cVgRS1NemvZLk9cRRSzNetTk1a59h2Y9aspes21rlvE5RawRRaznFbFeDv22ZtuOo6+lZ2X+PEffU58F6ez1dAjrYmEcg4dxfl0h/Hj6roB0WA56Ho3r/TnCnxYPfu2bAFMFWfEyUf70fNnN4icC/hMWhlFevYClLbuwsnH+qAdTGR+c95SwpjaJ1SOExVGnU0LKzfPvC+EqlaMLZCK1s4QgE7o/LYQXjz9LyJvSkgx7WJiiDDNhMuRtkfIfz/cUSG4rIB6dOdDhjdXBqQFYHvxeAfc6GR53swBDsqPYnoPqNxmQ3rq+kHz6hHRUvumM40IWPg3yWOiN5bgwhCNPT/GkfBIt5pMQ8kEsac7Uujuq9XAe/8/9eVJbho2LRmMuEvhJdUX3FwvxF7E4xEeSzeII6azrE/IiTtSOl7D72raQ50d8+T2efy9wjatPWgJ8UD7YNpYKXJNCGNqFpUI+S4V8JCyqz1ne2PrF769IercoJJ8+IZ94dSGTQ1lyR2GnCmWksNNYGNcPdJ3wm5fJttlvL67jYjzkw2VO3NpNTosg7DQWn86pobDTWRi9dzUeGX6vCRnyuiLeZFPpWzN/42/weKGvPWl0HDqzYMpJ9TgdJ43OY5FQrj5vbFvH79csFcIs/l/5fKjtcd3Dvo/Lu1O4F9b3nRaA1cWwehgWnWHUDfGX+PIg3Tyd4erpZv8AyW0Z44R9yRkx5R21L6H8+wQ+xLtXCOtqgWtluJDKpvr7S+X+3FA+V0kAPnHFezgeWC7El74hRLJe4cUi60ztO4vVOv5yJlfruljYGRDWzcKIo9X72xaN5r88Jv5R5M/zTwph/AycZuoyKYTdUNXB4vZAA2vqOLHmeKPbE7c5ks3E/VjN2kye/rSQfGa3mM9sIZ94bWqmINlUcpINw29+Lg8oPzqpT6cy2bZ55pI6LsZDPlzmxG2WN1ZOOH9zOvDBe2H71ige1QfXPcX6GESZe0L5lwtlpDBuk7mc0En1QWWy9bGyifrgMidu7San0yGMz5HcWB0ddiYLa3acymW4epw6jTKMZ0yTKaKcPIHXCkEWKCd73ewzEZXJyunz49S1FRDGdY24zfKCbdh4+7A5QjmkfGa3mM9sIZ94xy6ZIaneyUn1jv3BWQHlRyfpBJWp2f6AyxzrXbKVCW+s3ncK98L6A2yj8YyF62fUcJuE5T9LKCOFnc3CuJzQSfXBx87N9Adc5sSt3eS0HMLOZvGxP3gFC2u2P+AyXD1Onea8OfcuTx7bvKn64v9uiL+JzWFsgDkMPqdDedt4n4Z4ywXe8dZt9Hlcyr/Xi9NG1udxVwCfIPsh2U1KmxTC8PvnZwr5nCnkI2GF9U/4fkKz/dOxQj7t1s6PhTBuD7l+oGvUlpuZx5XacrvJCeetuD3EeVwte9jMPK7Up6DeRrWHFP8QzFvGZL9Sc6BcPC/pOabd7Wo8zyPhdlWyQ83aVf580KpdJX2Uxpn4Plaz48z5Qj7tZi/mQ5jWOPPbLdoEl8aZ7WBXpb4p6pgw6nj0uuqL/3E8+gU2Hv3cScG8TmV5/2xyPIrOqfEo1eUsb6yO4Xj0VCGfU0PyOVbIZ3I8OpYPl3m72s1TIcyl8Shxj2oPKf6fttF49FSh/PGuRUW3q5R/rzdWn+Owq9K6kWSHpDUYSpsUwnA8KtnvFUI+EhaOR3kd4Xi02XWw+UJ5Yl7faWptgnOU+jauH+gareE0Y1eltYl2kxOug3F7jHb1LBbWyjrY98bZNwU9IzcaE54u5BFvPaTKUW0X7gGKyZbWbNcy4BPU1u0edjrnaFV541WbhlbfNnxp+b4N59xVuqq4fuNtxdXnlErryxs28NLwHPqE0qK2YBy6Tgr3OcbyBqXAL/XxWl4OWCsaYOGX+nj6FYB1ZgMs/FIfT8/T8t/d3lietDuwIwIOtlyJ143Ai1tLHM2c3QBrE2Dx9GcD1isaYN0NWDw9T8t/d3tjeaK8wnCsTzfgdU91NK8US58GrEwDrHsBi6fPAFa2AdZ9gMXT87T8d7c3lifKKwzH+lwDXvdXR/PKsvQ5wMo3wNoMWDx9HrD6G2A9AFg8PU/Lf3d7Y3mivMJwrB9owOvB6mhe/Sz9QEC6IFvGbYPUdgdYuKSrvO55mfuEe9i7Fth9xd6sFLV3pfx7vbH1EkfvWvDGyo/LB58MBgWuSSEMnwwGhXwGhXwkrOWKWKcrYp2piHWWItYKRayUIlZaEWtAESuriJVTxCI7Jo298CS7Zp+8eXp80uN1rmdzsrW3H3hfQo7CCkIZJdvD7SI66WmOymSf5rYtreNiPOTDZU7cSE5cn4+mnPApk+sX9csU9koW1uwTMZXXyvBjTciQ61MBwlYIaeOVb/RZOsq/1xurC3H0xdIYXmrDJLuMwDUphKENDxsz8XwkLBrXSc8ReOplSsgnFZLP8QLnmNtaBmXJHYVlhTJSGLf3XD/QNWpPzczScZkTt3aTUwrC+PMWztLx8WYrNqmZWTpeV1mGjzLk8fib7tLzs8QrIeCkIC6FdQhp8VRWHoanv0r2g9/D9naCwLdPSId2mduDo2GXKf9eL06dr9vlTES5Su0gAzKX2kgCwng+WSEfCQvHAGH9ajzju+hfBKX8J6pflfoh6YugE6HfQfWcDuGTi4dP7S1Paf5KGnfYtyGmeGN1SJprQ955hk/3oox5cF682XlLjoXz4s3OW3IsnBeXZIDzlO9lb+kfOnl0HJrTfYrFedK/lvoskoON926Ih/PD1vV4Y+vnaLR9yr8XuMbV9qV65PLhuj3VC9cxXsdB6w1nC2VFnT+rASfUeSkvSSconqQT0qqkjff+kHhnCvEQg/SXr3/hKRUU90M+hh2r/XypnC9hWBfzLpLIOou74OLerSHN5YTt1jiau4c1sNp1Rwbu4JqInQaU6Xh3a9hVcNpJYlbBzfr39cXVt5WKG29bc9c15XWbyhs2dgHsqQF06DduUKWsOI4XQte6Dgg7HcL5cpTkomyM4Cp1NB5LKP+J2hjRaOkezcRZAtekEMY3qQR1V2cJ+UhYpCvSy1v4UZFmX946UeDcbptAT4QwPjzg+oFOc7Ps5Mtb9Tjj3SzL6wqHYItY/PXV0WFLWLrTIB0/rI7w+eFZFI8fWLoIME5mYUsg7BQWtpTh/+vCF69nCRzxcC4Ks65TuIdtcprAB7GCDueieu6G+B1+QXq8sXLT09n64VxhQ9HTYso7ah+DOsT5EO9eISyOw7miHg5E8aVNu2GHc8UzDJQP5+KbSq3rYmGnQVg3C+NDNzycK6ZD5DJR5M/zTwpheDhXswc9SYcktorF7YEG1tRxYtHhXPwxj2yOZDPxMJZmbSZPvyQkn9kt5jNbyCdem5rJSzaVnGTD8DCW0wPKj07q66lMzR7GIvXZs7yxcsLDWJo9rHaKwJXqI54phkw/ytwTyi8dQEZh3CZzOaGT6oPK1OxhLNI4Kd7+ODMgPW96IbJYCmH8uQUPY+HP082OX6m8zR7GwvVpGYSdJqRt1xel4qnv8BelpD5C0gHsb3kYlz8P4/ksE/KRsOb619ILqGiTmn0BdYrAud0OcESbxKcimz0wkB/gON4XUHHuoV3khNOX3O7gM7V0SN54ZNjMM7V0CGY7HbrIZYFysteL2TW6RtO8nx+n7cbDGKQpYOkVIhyjNmt/5gjlkPKZ3WI+syPms6TFfJaE5MPD0J42O+aeInCW8lnaYj7SBxbaqS1JY6R2O8CU1we2s6VC2phfyIw8RsIXMuN5lgt/IVN6zpH6JEorHaaNbbqVg7lxjBR3m3bpUGWuH+gatadmxkhSe2o3OeGcubTFR9smNTNG4nWFS+58Pp3u8bE9HhpH8bf78+lWR7aeMjq/RSwPvmbwdYi3RODdrvZwSTx8Qu2hZD+atYfd7LpVe4jzl1yv8NCiZuexjhXyabd2jocWcXvY7DzWeO2h1JZdGqO1gz2U+hTU26j2kOK/B9YXY7Jf4qFFOBc3Oc6Mf5yJrwC3YlfDnunw0KJmx5nzhXzazV7goUWT48yXzjgz6pgwqv3FQ+Mo/jfZePQbAeNMzsPG61ko86e41k3aTV27qTkepbqUPs6J49FFQj6LQvI5VsjHpfHoRNlNLvN2tZuLIMyl53PiHtUeUvx/aKPx6CKh/PHuUYhuV3G/26J4+KSluguzQ9LaMKWV1nNxPNrK2nDYcz6OR5t9zp8v5BPzfpWm92HgeFTqc6LaBL5fZbzP+cSt3eQUtl8F7Wor+1W4DL83zr4JbZLGmDAm2xX5EE20XXGPCSXbJbX18R+iyXcbYGlRWzAOXTc6RPP0BqXAFyd5LUexshwLXxbm6ZcB1hkNsPBlYZ4eP5tCv7u9sTzx0L4wHGy5Ei88RJNbyyiHjnIsPESz2UNHORYeojlRh46e3YAXHqJ5Fksf5aBQjoWHaEoHfBJWqgEWHqLJ0+NhI/QbXzy3DuUVhmN9ugEvPESz2Zf3ORYeotnsy/scCw/RPJqHjnJeeIimdJgCpguyZdw2SG2XH84g6Sqve17mPuEe9q4xHVoZ+RBNyr/XG1svcfSu0gEa0oFaJLt+gWtSCMNdo9LhsP1CPhLW6YpYSxWxzlDEWq6ItUwR6yxFrLMVsXKKWClFrLQiFtkxaeyFh2g2++TN0+OTHq9zPZuTzZEN4X0JOQrLC2WUbA+3i+ikpzkqk32aa+YQTS5z4kZy4vp8NOWET5lcv/AQTX4wZ7NPxFReK8NmDtHk+pSHsGVC2njlG32WjvLv9cbqQhx9sTSGl9owye4VAtekEIY2PGzMxPORsGhcJz1H4CGaZwn5nBWSz/EC53h1IVNBWXJHYdJBoRTG7T3XD3SN2lMzs3Rc5njYaLvI6SwI489bOEvHx5ut2KRmZul4XaUYPsqQx+OHaErPzxKvhIBzFsSlsA4hLR6iycPwEE3JfvB72N5OEPj2CenQLsd08Flku0z593qx9hPpMHspyVVqB68AmUttJAFhPJ+wQ4c5Fo4BwvrVeMZ30Q8lo/wnql+V+qGwQzTj1O+gej47hE9Mh8TWTmOQ5q+kcQc/RJPrkDTXhrwzDJ/uRRnz4Lx4s/OWHAvnxZudt+RYOC8uyQDnKT+98MX/VobvWTg6Ds3pfoDFeZ9/LfVZJAcb75MQD+eHrWvXA3RjOvks9ABd6XA/fohmkI7xOg5ab5AOOkWdX96AE+q8lJekE/wz0agTi1i8ZSzeZ0PinSHEQwzpEM1FEEZxv+Bj2LEaHqK5yBuNb13Mu0gi6yzuglsUD5/QXXBcPuPdBYdzsq3sgtPcidyuOzIWQdhE7DRo5hBNaR1lHIdoLgqgQ7/x4ErKqpVDNJdCeNRDNMM2RnCVOhqPJZT/RG2MaLR0j2ZiucA1KYQtYddB3ZX0ZXsJK+wFdTxEc4mQT9hLBicKnNttEygeojn5ksFL7yUDbgfxEE1+yCUegNjokMtuwO9e9OJ/qrtFLL3i8kMJ9Yby4HkvjSnvqLYWNwFKh0hIdriVwyQz5aHh/mKxkh2upIaLlXLCG2tzw+wwxZc2tC0Q4sd7UFi2SHrPD5PErXBdLGwphHWzMH64Fx4mGc9wLluMIn+ef1KIv6Faj9dMXSaFfPDQxqhYdGgjt9O+CEUbg20xHjsQfdxD+fcC17jGPYu8sXLtEuQatulWOkwHXxJqdjzCscjuT/RLQpyDYn+ek8bf5CjsVKGMFIYH+tI1OqnPpjK18pIQHgjXLnLCdi4dTis9tjY77uEybGbcw+sKD2VbJKSNV77RbRKOAWKykekwWyG14bDxitSnLGbXrfZPVJezvLF1iy/YdAn5dIXkM1/Ip93aGr5gw20S1w90mjZJak/tJqcuCGs3myTZdeTeLcRdCGEU9/V+JPvsVfGvpTYywxsdtpCFTWfXPF++ZYDiW3dHVeZ5oX9hZfLri2XMjgBMXjfW8XE9b5PWdbEwPV0bTlve9yyq80Db2F0dXSbJnkljLIof9jIQl1HSG6vXaEslG7eI3aNlGEmefL7Jui4WFrc8OUeU5+IGZUJ5SvLnciIZSf3JyYB1soDFZRwmT+J4NOTJOUaRp9QPho0DuDxJRtIzwymAJclzIbt3GXCl9FOE+ByvG+IPM5tz/HGj+c1g6VEXpgvY3IaGtbNeoRx9EMbTWtzrT6zft25qdTTuC//ZvW6G+0L5eHwI62FhXdXR+fT6v7tYPhyLeHRD/A2sL3mhDCwNpU8K+U+B/EfxFu5xHUSsTuEexbcyXe1ztHXZCzgk/5X+71STbjjfPzScyxdT5bT9mcGX9jkXm78kJ24jrCNZ87qYIpStG+JvZn38g6z9vxBXyM/G2xMSLxHw/wUM4V5XdfQ9qY647lJ8yru3OpYjhU1nYdx+WTfD/83lxbGIRzfEfxR0l+sbpU8K+U+D/EfxFu6h7k4X4k8X4r9wAKTPkfSWl137Ge+FPAGf30Nue2JsV+Wh3ODA0OBwPlVKDaYHs43albXr0327HjafGFWX8dmPY9F8Kj3T8ANnNbeuEf5U4KeEnyY5dXtj5UR5T4ulbJVKlHrg+fcC1zj0n+dHfFA+uG7RE498ynarFuketx9TBNkgj6nAsTcmjtIYlzhJayvEw8a5/NTRHDti4hhvG63U1hH5s/+66ov/X9gCuaieL68b/szM9Z737Tz+B1nf/n7WbxEupSc7NZ2FTxXC6TfVV4cQF9d6poIMJbny+KSTUwLKOgXKSvE/5pfPcpt9nIzJ5cd5dQRgfpJhboQ64eP0sDZP8acL8XkbIz6zvLFtczqk49x7vNGO35PqJwFxsQ/m635TIe7UgHxQHhKHaQIO9pOIiXmiPliHz0idQj68TfE+v0fIX7F/yEt9JTkKw4PreRgv+1ur9XjopDlEKpMt7/5FdVyMh3yktqY5NqL73ew+5tsJcadAXFyP5By7FTgmhXymAO7UEP4JwOkS0vV5cnuU/kflmxD4Sn1Nq/lwrFuqo/Ph9cz7tO8uquOiHe8U0j5UrYfz+H/B+rQ/i9inoS3hZShW6/fQZuM4FtskzjNh34VxeD/O43+f2abZ8DwyRcjP3vsbkKc0RpDGfThG6F5cx/whyFMaA8zyxsoGdbgH8uLjY+pfUAb/yur1R4uC8yK59oWU0d7790VyPM6Bx0MMqe8kDKldU7pZAi9se2g7poTkIfVnUh7dENZq/Uj9Nh9rSGMYKZz35zwfvNchxG80/ugNwJZwpwg4kp2fBmEJIQxtGC8vt2E4NpGeybhtlNpdUN2Fjb0l7lHGVVNCuEvy43ZIey4nVUilU8MD+UolXeovDuUazeVo55/JDxaKg0OpdKaSyWQL/ROdf3+uP10oFAvD/cOVwdzw0ETnPzzYXxnMZofS2cFSeTA94eUv57JDlXTFzOdlK6lsIT3R+ZvZ+Uw5lx4ayqfLxcHBSjNziZJ95n0Fb0P8Pm9/tGcA++slfn8d71ybfJBwlD5OKp9kX64PKN9r2Xjk9MWN8wuzmVJf2AFh3C5iHdXmzyOWgeKf7fPm8wbSvBefc7Ouqzq6fCv9+6nWXE5a2+XP693V0eUOm6uwDsfJM4T4fA0UxzR87RSf5boFLKlfQj2b4snjXsJDPRtkdYRru1zne4E7LzuOFTqFfMPmOCzP66A9x7QuMCDNKZDr8+TxDQ/j7QT37OFcMQ/jetDs/laSheV1fYR9UJKdQFsgzftJdoLv9XqBX3Usr6PRbvkYG9utNCfJ41PbSXpj6w31VRo7Sm0Ax5ydIflJz0u8DQStyXGbwOcUboR9YNKcAk+L9prir2V9zs3Q53D7hPoi2Rnk4nmyHYsy1yQ9u1K9SOt8mnOXCciPysHv8fx7vVjtVxrtPZdr2FpbTOOjHPGRnnmlerZrczO9sXUmPV/zeVY8zlma+5RsG46PJNsmtXW0A9Iza9jcRFhb5+tLUcaOUjvGds7jb2TteHfI2DFons/zwuswrM65fHEuRlqvCZunCbPn00J4NVpjQl7SGpMn5N2oDGF6J42vj2Kfmpf6VF527FPDxrbWYR30CfGl8W4S4nOZh809Se1yOoRFbZd8HLo7oC/l5eB2FueHpPbJ+2jeryeAC8+Dz5/Rkd4JyGOKEJ/jdUP8J4SxPmKSrbHuwepYTOTM73O54HM7xTvMONxy6ovXUd5hjGnvSuT3iWt7NwV5xNG/S89/0r7imJ+XhsPagTTuw+crrDvehoP2IeA6J+8buN3Hefv3+LqVBEzr6PyQhBAmrWnxvXrPLx5dtrjWVvG9mqB9MR8EG8Xbu7Q3gOwHtsWPsnHCR2CcIOn+dC/cZkl7cVB/gvazoM2i+J8MsVnScw7n9WBVxvyMMC8VphdS/aEu8/hh64XSOp30LhFvTy9gV8dixjxGKEljBC4fHCOEycK6ZsePpB9JiM/lKLUjnAMN01XrwvbO8PcLqN2pz/Gn0+lKf26o0D+cSVVKwxM9x5+rDBT7KwOpfKaUK2dKxWbm+MNknBBkPCtExlHHQ4iVCMHqboCFRz4GtUFMN0Hjk8hH0OH4JJ49oeHjEy4fnBuVxgpJIQyfgZudP5LmPDWwsG/m2EFtQ3pm5zLyPHm8w2V7RfXF//HuR04NSc+AHpR5hsA5IcSX5rD5/uVhNu7HeJgnl90MCON2vg/CeD8yE8J4PzILwqQ5xiht0Low/ekOKJdGPlLfJ/XXreYjzdehvDXykeYCpXkUbN9h+26kfBJCPtKzKB97/3yxnGfQGBTn2in+giV1THrJk+KQjDpYnD7/ukfgrmgHBqX1FQ9kw20QztHzdS7UeW4/UE/5/A/q1kzGge/LRifZHYpnMUci2B1J1jH1pW0l66jyJFnYdF9owo5zfaUy8efJsHbE88V2dAJrI2csqcfn+XhetGe5RvPG+CwnzRu3az8t1T3qzEwWhjozi4Vh++RHO3OZoGs0LojaPrGeJbsfdK4A6hWf+/15k3O0CSGPKM833Q2wojyThGFFfVaafL4Z45x6vulSxEpAebjsGz37N9Jn1MGwZ2yeboJ0MPIaP+pgIh4+6ahyHa8OaupNu2PF+T671G6C5uyvgz6L0gXN2eNzA8V/Exvv3OBfR33vB8uJeeKewkb7+nH8FLaXnucl7eEIe6cjaM8wlx0vG+0VwX0RQ768Gu1HPZpr8BM5v04yk+bXw/Zt4tiwU8DkOj85JzY5JzY5Jyb/j5pPO8+J7Qp4HguaE0P7TPHfw/q2xwLmxPaxOE9Nzom94CZiTuypyTmxF5wLc2LvZ23kM5NzYoH99EtpTuwzATaY8kAbHHVObJcwhqN4+E4RH8fRfit8frl3aR37y2DjCe+Xmf5+dclonrzcb6qODpP2Ntt7m/w8Jdtl/Ur/d6olN1AMG8fE+55CbjjKuILnP1FngkV9T0Eao+KeXT6eeqRaj4dhncK9jhCsg4pYRxSx9ihibVHE2qeItVMR60lFLE15aZZRi5dkB9tFVw8rYmm2bU2dOKCINWm/Ju1XnGXUlP0uRSxNvX9KEUuzbbdre9S00e3a12rW425FrJdDP/RyKKMmL0272q79dlURS5OXpryeUcTar4ilOTZp1z5tsj0evTK2a7/9cnhO09SJRxWx2lXvDylitetcx9OKWHHaaIrL1zbo7AHr6HvruEaxHtYEYpqXL4XtBYj3Oxi5yGcb4Dq/dFZtrxDWyjunQ+lKtpwaGsplhkr5/v7+BOATV7yHc5ZRvz9Asp4ej6yHpH1kvUyu1nWxsB4I62ZhxNHKHr+VHs8aam4oivx5/kkhPp6xELUu6fvm01g+YefDr62ODpsicODrfmH71KT1T35WQXVpnStPh3rWCWl5eILlL93n1wm4z/Pl+V1XHZ0O1xyRC5a3U+ApyaJDkIW0f6ETMHg75XtRbR2/xPaPl6Pa2XbdPx7zGTIl1EfOp93OkDng67i0vy9oH7IncKC8PZ/LXmg7R3s/+pGlo9NQuqhnyFD859h+jmf868n96KPLhufQUPz3+vKyutcG+9HLlsdLeT/6ESbvyf3oY8s4uR9dLpdGPpP70YNtgPZ+9N9aKucZ9Zwwiv/3rG/7naWj45CMfo/F+QuYU+DcFe3A5H50b6ysJ/ej1+O02370f2Jt5GfQNif3o78096P/LMAGUx5og2ms32g/Otl27TPwBjLD+WI2P5gaLucHiv0DzZyBNzmGrMeZHEPK5dLIZ3IMGWxLtMeQJ58q59nsOV+Dp9YxF506Og7JaAmLc7Z/PTmGrMdDpzWGRFlPjiHrcdptDPlq1kYugbY5OYZ8aY4hLwmwwZQH2uCoY8iTWbt/4V61Hk+xDjNUnu5qnTPJpqta5z2F8bZuGgujeMS1Jx6uKeLa6+NT++R58rJ0QHy87oZ7b2V1yctI5eD3OD7Fn87CKH4nu0ccSX+nsLDp1eawpgHW1BawiFdSiD91nLwkrCmA1SNg8Xt8bepqv27iOFu8OFAezPVnM8PZymCxkCo081yFa8mjyueN1h3l9hD5XDq6N1Hn0nUCH5QPXUs2kNLiGop1uHdDOu9Q+v7IRGFJ65moCzF9kyXy+XCUf68Xq26mw+TaKchVesbGb5/x51SsP2kfgbTHyhUsSm+d9BxI+welMS3KFNs7D5PW3ifyG8k74PlmGnBd6f9OteiO1jeS38meCXaf2ji/dvxG8uM+70Z7ACa/kRzt7Fsuc9w/Mt5vJD/L6uhofiP589CeY9qv5fw3kn8vwvPl5DeS606aQ6W2k/TG1hvqK28DPRDG24DGN5I/z55VpH5UGuMQR6oLaf+oddiPUvyvQbuL6VvDYj/K7T6WTzHvfmldhJy0DoNtXuo3JXuAbV6ad4va5kkWzbZ5aRwY9n3csO+7Sm0A2wdvA9i/8X4g6Bul1tF7LAnA9Lzwvk/ai9noeZu3Cb4m8ocwH0f58TEPTxv0nfEfsXHbd2HcJq2hTn5nvP5/8jvjY/lI9Tz5nfH4vzP+b6wdTzttdPklO5oAfp4XXodhdc7lS1wnvzMuP6MexXHp5HfGWRh/lqP2EtZ/cTuLa1tS++R99CqfMOUZ17w0rgNq4hdS+WFcM1fmn4157T8d8zpFivSNxlpSWazDuUyexur6bK9+fSpLY90bGXYCwm4Q8qWwG6syD+vexMLQTt3EwkjP45zzMHo2EPf4bq7AH+f0zq3GknetjZ7n43t62CnCPp9xT8TA/YJ48DOEf2E8ss8S/kXx4Nf4XxwPfo7wL4lH/jX5XMrwPU9fPy+Lh38N//J4+Nf0/4pY+Gdq/K+MBb+/xv+qePBr+nl1PPh5wr8mHvxBwr82Hvwy4b8hHvwK4V8XC/5AjuaohvyGFbYPAP973tg5FOtqe5e8WMdmTa/TS+cb4LN6s3spePo4vonWG8B5pf871ZoLPctAKrc0b4MybHbfgLRWF/N8fCrmNb48yUKa35N0k+JPazJ+T5PxpTmYrpD405vEn9Fk/L4m489sMv6siPFxDy5hWEe6Mpvd1xxjRrEJPP9e4KptE/ogP0kWc+LJuz+qLOaALGKqm3TM5a3Z37lQXqxfyj8J8bHsPK6EZR3pvG2rZG9WlTdesWZjeUNHABavD54nxsdrct0BOJ3e2DaHaYP2mWCaaQH3ewLu9wbcnx5wf0bA/b6A+zMD7s/yZEfzExS3G8LPr4bH5+sZXkDeKN+4f3sTmJcGV9JJ6ToREqcvAN+6mOcoI9tMujdR52N1Ah+Uz3j3Up9XrcfDsChjdhewLouBl+aznTR2p3hhbWG8+fB0+L5VhxBmbeEwcCOZ8HVYnnY2C+fxT07UMSuQt/SMF/Nc90DU9o57GeJ+hpSedSQdlfY0hX2LjM9dYljYOrKEdd7LAOuyGHjF/R48vhMq9QVhewyi7CFv9r12aW055ndh+hvZtK0BZQqyafwcRx7/Txnmw95oGUo2JGqfTmPSWQKXKPNEHOsiwJLmicJsD8e6ELCksx7C2gvHuhiwgvY/Bekcly+N2SXd7mkSC9vQFAFLOvfA+pX+71RLLtcvtQ89/P7hngDZKOEPSO9kYL8ezxnX6ch7FCn/XuCqbItq/XrUd1Ck9+ZxLw8PQx2U5g5nCPkkhTBcX2sF6xolLKkdtMLraiVe1l2liHWFItZ1ilhvUMTSKqNku9pFJzRlr6kTmm1bk9e1iliauqpZj6RfNH6kuH/g/5fGE4p9Yn+U5+yemPJOQH4kPw/Ki2deSc8g2t/3GBwsl/OZSjGdymf7s+XQ/fvSM06zfTvJekY8ss5Je6inM7la18XCeiCsm4URRzuWvjUxmn9MY7dI8pfGQzz+edV6vGbqkr7vgWMNko/UPnkY12k8r0h67yHsGTVs/zR/X0J6Z43CeoVyUBivP+xHJV2W9rYnveB6QdkHPVfz99F5/O/7/22ZT0iM5h61zFguac2+N2K5egOwugLKhe9oU/x/8P9bHdiQGI0pyZ3rKc4JcE4o9xkNsHBOgKfHZ4u+Blg4J8DT9wHWzAZYOCfA088ErFkhWLy9zBLSz4Iwno633Rewq/Uw/vxvXRcL05ybtvpxd6LOA8vL7bT1SUEWPD7pTlKIT3tCpfLOOorl7WmyvJJ+Y3l5u2m3+g07v0LSdR7/QigvPx9vekh5e49iecPqt5EtvBjKK9kvl+q30Tt6+I4lLy8/axjL62L98vGSVN6ZECa9g8jHDTgW4Xl2sHtkI6VxGceltQNc31zo52dlsQfypjhRxwsUfwnDxPGCNFefFMojrQVFmavvCsFqdq6eY+HYI2yuvtE+Sxx7SGM2HMNiPB5HGlPx8KAxIec8vQFnHOM0O46TztcKG8fRMxsfSyk+s2WovfD9cuQojO+zw+f8eSys2fN/a2eRGr+P2R+Mh3y4DOdCGB+/EjdJV/HZA3WXX9eevT1Zl7D9U/yVrP2XOuo8reN2nnjFbOf7m7XzjZ4dcFwqvfd8FPtxsbzTQsrb6N18HJdKbd+l+m10PtOFIeVtg+cssbytfEsOx6VRz9+aoHPzxPJ2NVleqf+RyjsDwjoFWeC+NOuCxmE8jO9Li1NmA4X6mdNUXzSXha6LhfP4q3wA7TOLKwPFdCVbrBTzxVIpN1xsdGYx3Z9arYd3AtcX+PvX0jnfnRDGz2qm8lM+dKY29XmIRTzwDO71PoB0RjaeLc3znwL5j+It3OPjb8TqFO5RfKt7d/iJ4jiLejjfPzScyxdT5bT9mWlUr5KcuG2xjmTN62KKULZuiH9/ol7mB5jdeCGukN8LZ5yGxEsE/H8BQ7jXVR19T6ojrrsUn/LuFThSGD+XnNs962b4v7m8OBbx6Ib4O0F3ub5ReulcdH7OPOYl5Y+6K53JPl2Ib+tnBOwRL7v2vpcX8gR8fg+57Y6xXZWHcoMDQ4PD+VQpNZgezEY5432IBUrjdN43nVcdHUZJb+yol++JxOg4hPcka2cHoX/m/Oh8AzwDjnOx9673f0jnxli/0v+dasnlytL7pXr4/QVpD7ge/kDtXJ1p8eAX491nN5Ah/N545J+V1nsV+eel9XA9/ExJmvtQ5F/Tz5nxyL9Wv7Pi4V97fzsZD37/0XsHNjccZYzB84/7HdgE5Ed8UD64D3SuwFV6fxVtvPQu7Fwhn6QQhvuoWsG6ThHrakWsK5SwpP6vFV5XKvKaqshLS16aZdTkJY0D2kFXpfFDu7RtTZ24VhFr0n5N2q84y6gp+15FXlp6b6+nK/LSbNvt2B61bXS79rWa9XiVItbLoR96OZRRi5e2XW3XfhvnTdpFvzTtKs7dtMLrGkVems9W7TrGnGyPR6+M7dpvvxye0zR1AueGX4p6j/PT7TKO1nweSiryitNGU1y+r4fO/rGO3vfANcxrYc0wnjNjc6WwM3Ck9TjNvBOQn+fJawL4jp50xlKvENbK+vRQupItp4aGcpmhUr6/vz8B+MQV7+G8v7T/WlpfkNYOFWU9FLavT3oXdRqEdbMw4ii9ixrPe8u5oSjy5/knhfjnVevxmqlLeheVjzHx3VCuw/jdnSkCB74vQHpnNQH40j4/+7/YUefK03GOvHxh38PrDLjPrxNwn+fL87ugOjodD0sIXLC8nQJPSRYdgiyivB/M2ynhxbHPJVcZKPZXBlL5TClXzpQa7gsc9K97IEy3PcX9Dab6Nwq8ePhn4z2zLJOPt9+tf4PpvGodX/rGbCfEwzQ2XLJBFEfac6RXz7mY5ZTJSnuONPUIbRHJHMsUdIYAhUv/CQvDKK+JOsNSKlvYOaua30yVsI5mnUrv3Uljow4I62JhUyCMj43494UXsnhBfQ72d9bdWq1jrGB4Z/rXJL84bXdcNsO6uQJ/npd17b4vfrn/u533xS/xr6d79T20WYYX1EY6vLF40hmT/HugMbbnDHGVzouWvo1n5+GP8a83bFyzvnzxXeffWx7etPG2NXedWxy+teyB441PGtwGffydN9xO4X6HN7oz4M5WSLu/LFPwfx/tl2VO8K/dHhTnChM1KI5p0Joj/Jg+MCQOiiWDQzpMD5n8mjhRnAtZnAtZHOvCBs7SC2/nQxhvSxdAmPRiPH40lfQ+3g49VziaHTp1PGSQrXFe6F/ftWbjbZX7zr9r3abypnLpqk1Dq28bvmDTXcMvGurVqz1wOOhOwO8O+I02uUvAQcfTJVgZ2t1WH+//Ptq2Gl+Ojukg39pHTOM5/K5ui7jjL1jjB3WkiX6PcZN+d8D/sLiJENw+IYwwaXGC88WDaOj/MQw3jn51Xjz4Yl0dw67nQTm5vFcqcSA8arPdAqcOCKsN+IFfQp9f2gPXKeRFjnRmHrtH8vz/xZLqVgOeCQA=", + "debug_symbols": "vb3driQ9cp57L3Osg2Iwfhi+FWNDGMtjY4DByBhLBjYE3/uuDJLxRner2Lmq1rdP3I9H34oni5kRmUkyyf/403//y3/79//5z3/9+//41//9p//yX//jT//tH3/929/++j//+W//+i9//re//uvfn//rf/zpcf0/jcaf/kv7p+e/Pv/tj/VvW//S+revf3n9K+tfXf/a+nfF6yser3i84vGKxyser3i84vGKxyser3i84smKJyuerHiy4smKJyuerHiy4smKJyuerni64umKpyuerni64umKpyuerni64tmKZyuerXi24tmKZyuerXi24tmKZyveWPHGijdWvLHijRVvrHhjxRsr3ljxxornz3hy/dvWv7T+7etfXv/K+lfXv7b+Hetfj3/p8Vj/tvXvM55e//b1L69/Zf2r619b/z7j+fXvdXz9Ce2xoW2gDX0Db7h+tV2gG2zD2HBFHk+gx4a24YrcLugbeMMzMl0K0g22YWzwBVfSTGgbaEPfwBt25L4j9x2578h9R+YdmXdk3pF5R+YdmXdk3pF5R+YdmXdk2ZFlR5Yd+coluk7mlUwTZINusA1jgy+4UmpC20AbdmTdkXVH1h1Zd2TdkXVHth3ZdmTbkW1Hth3ZdmTbkW1Hth3ZduSxI48deezIY0ceO/LYkceOPHbksSOPHdl3ZN+RfUf2Hdl3ZN+RfUf2Hdl3ZF+R++OxoW2gDX0Db5ANusE2jA07ctuR247cduQrB2lcwBtkg26wDWODL7hycELbQBt2ZNqRaUemHfnKwd4vGBt8wZWDE9oG2tA38AbZoBt25L4j9x2Zd+QrB7teQBv6Bt4gG3SDbRgbfMGVgxN2ZNmRZUeWHfnKQX5coBtsw9jgC64cnNA20Ia+gTfsyLoj646sO7LuyLYj245sO7LtyLYj245sO7LtyLYj2448duSxI48deezIY0ceO/LYkceOPHbksSP7juw7su/IviP7juw7su/IviP7juwrMj8eG9oG2tA38AbZoBtsw9iwI7cdue3IbUduO3LbkduO3HbktiO3HbntyLQj045MOzLtyLQj045MOzLtyLQj047cd+S+I/cdue/IfUfuO3LfkfuO3HfkviPzjsw7Mu/IvCPzjsw7Mu/IvCPzjsw7suzIsiPLjiw7suzIOwd55yDvHOTIQbrAF0QOBrQNtKFv4A2yQTfYhh1Z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", + "brillig_names": [ + "discover_new_messages", + "get_note_internal", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "directive_integer_quotient", + "directive_invert" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "add_lock_public_user", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2722406262643068352": { + "error_kind": "string", + "string": "HashlockAlreadySet" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "16870384257694633552": { + "error_kind": "string", + "string": "Function add_lock_public_user can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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Ui0CAAAtCjAcBCosHAsAKh0LHBwKLgsAJwIdAEgnAiEEKy0IACstCgUsLQodLQAIACEAJQAAGlItAgAALQosHgQqCx4dACocHQsnAhwAaCcCHgQrLQgAKy0KBSwtChwtAAgAHgAlAAAaUi0CAAAtCiwdBCoKHRwAKgscChwKKgsAJwIcAHAnAh4EIS0IACEtCgUiLQocIwAIAB4AJQAAGlItAgAALQoiHQQqCx0FACoKBQstCAEFJwIKBBgACAEKAScDBQQBACIFAgotCgocLQ4LHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcLQ4FCRwKHwUAHAoSCgAcChYLABwKGBIAHAoaFgAcChsYABwKERoAHAoOEQAcCgQOAC0IAQQnAhsEDAAIARsBJwMEBAEAIgQCGy0KGxwtDgYcACIcAhwtDgUcACIcAhwtDiAcACIcAhwtDgocACIcAhwtDgscACIcAhwtDhIcACIcAhwtDhYcACIcAhwtDhgcACIcAhwtDhocACIcAhwtDhEcACIcAhwtDg4cHAoZBQAcCggGABwKDAgAHAoTCgAcChQLABwKFQwAHAoPDgAcCgMPAC0IAQMnAhEEDAAIAREBJwMDBAEAIgMCES0KERItDgcSACISAhItDgUSACISAhItDhASACISAhItDgYSACISAhItDggSACISAhItDgoSACISAhItDgsSACISAhItDgwSACISAhItDg4SACISAhItDg8SACISAhIuDIBKABIuCIBFABcjAAANqw0iABeATgAFJAIABQAAEg4jAAANwC0LCQQtCwQFACIFAgUtDgUELQgBBScCBwQEAAgBBwEnAwUEAQAiBQIHLQoHCS4MgEcACQAiCQIJLgyARwAJACIJAgkuDIBHAAkrAgAHAAAA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", + "debug_symbols": "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", + "brillig_names": [ + "add_lock_public_user" + ] + }, + { + "name": "commit_private_user", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + }, + { + "name": "randomness", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6418028854678020178": { + "error_kind": "string", + "string": "FundsNotSent" + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfM8yj+qh6kSZbkSTWpTYo871SSKImTUoNTg1ODUyPyvAa1SZHnnUoSJXGSJGmSJXlSakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhq1NSoqVFTo6ZGTY2aGjU1amrU1Kip0VKjpUZLjZYaLTVaarTUaKnRUuPO80b/cH/yeyWVpIdGkyBOkiRNsiRPqklt0p3ng0pSapTUKKlRUqOkRkmNkholNSg1KDUoNSg1KDUoNSg1KDUoNSg1ODU4NTg1ODU4NTg1ODU4NTg1ODUkNSQ1JDUkNSQ1JDUkNSQ1JDUkNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1LDUsNSw1LDUsNSw1LDUsNSw1LDU8NTw1PDU8NTw1PDU8NTw1PDU8NWpq1NSoqVFTo6ZGTY2aGjU1amrU1Gip0VKjpUZLjZYaLTVaarTUaKnRpkYUqw0qSZTESZKkSZbkSTUpNTLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLP28xzumae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae03WlRkmNkholNUpqlNQoqVFSo6RGSY2SGpQalBqUGpQalBqUGpQalBqUGpQanBqcGpwanBqcGpwanBqcGpwanBqSGpIakhqSGpIakhqSGpIakhqSGpoamhqaGpoamhqaGpoa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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "notify_created_nullifier_oracle_wrapper", + "notify_created_note_oracle_wrapper", + "random", + "decompose_hint", + "lte_hint", + "field_less_than", + "build_msg_block", + "attach_len_to_msg_block", + "get_random_bytes", + "get_random_bytes", + "get_app_tag_as_sender", + "increment_app_tagging_secret_index_as_sender_wrapper", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "AAAAAAAEAAAAAAAAAAAAEgAAAAAAAAAQAAAAAAAAVgkAAAAA//////////8ADLN0mIAbZjrcIAF9\ng8fOlXsJNKoXGzcP6/DS9dIAZu8QgViOA8a5OPECqbn56EnLgYb8dqdmABdrQDqxR+tjaRzYJK0t\nQ0LubxFX8ch3SbRVN6Tu+N1n6rtHGoYcb0CgDxazpFFRyqAk871Mn+9u04EyvCfnAyY9LrTUi3Wv\nkccYTRby+4VXpMbwU2NfYAp6Xt8frfOnMHzUKTayIn5dAi0lxirkQFJUjODeHxbbhwnhdosCfDDB\nAOU06KL2XW4GCpWpAoq6Yg74XT44E4rQQFVWkpdRo5dgU/4khw/54XYsfB0kRYue3jIC7W8Kq1rC\nOj7rgGlpIAirZC/Q2r2fSgxHdWJeBWWzATFIogPNq3lTubNewyBHa0i15fJc9V68DUIWKkDo/jIL\nLYP2DLOlDiMJG7bTsKXUmbzCz9kYUH0P9C79xx4kzcdA3S7UxoD5KkuhDXYO47aCSz8JB9vbDAUW\ntS6uCpkA8Djz1dXleaYzXgFyXI8FSO2oLjxeBQ8QEabVvIpfVK1Cmo0sICvRD9kVavxZhNfishhT\njnOjarMEaHGye2msWK1jh5dtDtpyAx4+e0Dduaitynb2eIOYxRh/VfVGtLRhV/a+BFuVRaXoytaQ\noB//6iBpJJwKMw7rLrj+HbyrMZ0B+GxjgUpZfwUg5X3FTj7CJv4+zvYKIRkIcYeOBEZthR414FGc\n+DhVRIhAayP6zQLFwRGKtdxJVSoZqdtaTvKbT2/47hwvghNYE4gC9nRxE/rYbgzClA1wKcNsFbfg\n2yd2nNVrAyFG4WrEPyhoS1Qs3LAeWgsu+RsaPtwFFsZNEE5NcxekCC4C8IBqM3hE6qu9weQDryo1\nXx96I4J44CbLcGUqbPF3gYIrtHtc2dALZ18OHjbA653SF8a3h6WDJVqLyibRsYBgNNr8vLQdXghY\neO2tMPNmi/srymGJA934yEhPlQWxaMvG1LFkkoo8SCziPyiv4dgr6gzoSLgDKRC2WBAskfLbk77p\nmxuWvmwv9ro4pu+MSZKlFb9pD48Wrhh3QbCFu0a1bhEYvQDekeUhBWqNhFr+dfEbiBwrQjXoe/Ug\ntSvCM+uJ6gP/M3QKla1thOVv+d+D2h4/dZi0VKuy+iZwqv0OuhGhcw7P+U/IUoN7mKbEa/yNDab9\nne+gx9CcQqTcL45bla9ClQ13p6kQalYcbwb7WsAq/qPYxWdHTWRjPjFn63XP0lynZD/nsQa6Uaoi\ntXgW7SReYwTaH8wbhqbNdjivqAN1cBhMOxlr2XcPsU0rsqMgHlFqbYOUdbvcWOIyTQIllOLlBgK+\nvcJDemaZUCBPF8styXyle2qA5DAvChwUxbkHd5kiS95E6PYD34Gl6mMzzQ7ws0ue1XY8HETmakjL\nZUeU0bWyIPpN4JXFCQX5MAQtC7ZEpDRUvWShXLt+2J+v8FZruuI99wlB/nFCvKPyOzsL+AWmW6Gy\nxBDethHfNZiC0ioZbun30kwN0qbZul2iqx9jwzqK/wNKh8/SkGtI5tmB4MzbbimVlLkz4d/OrRaa\nH2TGl0bHliC6OHP7pzXF3S70UMLeO/zBEkK4fSBaR9wE8cZ2BpC2u4A/sc+3zLxhER6Bp9wx7vvA\nLL4/M3ERMxLRC7eQQq153ZJWMRnha+/nbljRrqREXgedbV6/ot+HMEXifhVyQ6urOYta1HoGKQgs\n17GXzsaM2tJ2TI4wf8EDrQ7D4E2FQG75p+97jrRVW/6NEwkf4jcF3TvenqxhvQDw8tlHbj9SJnXc\nsVzHExPvav6m+odbUImFMnFSux/2ImuEkPkrSEMMn2SBiLw+lXvagStlqa/JlghHy3DcCZwe+Fiy\nwW0jSLVJTgVkFi55XYxyrc6YFt1KGR+0/DtJiAtaDT7C5fKzBDrVkn917iJOe4uwdsAdnRXmldtJ\nYoR5L0k+SqJepx+Q/5V+KqqeomSYTxXLfqssT2ml2Ailb00MDfwyFqfkTkJc7/GGGfQrfw/rg2SO\nEbH+DYvGtgxvIQt+Bww1reRIgasMq+ppQb4/zeTE4IFhvnl5SCKu+7P2F0xNqsxv6+gtiDGpBETv\nEX32GkvxinRGtU2OzdDlJyENPQ9wXJw7Qm4veGR5CujPFMTyBusHozGX/1z2u6wLrwcDm+cLVXtv\nDU1Z+xKAoZlYPQqQ5tVT5L1kSbWO9QehChGFSw0wrqddreiukl/tbL8F77PitlsEvecaM00v6zMA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAACB/tBbAkrMN+Tr8hHGF9jyy+5MMe/qTOXTpBtIfZjEF8OjfllwDLt0YI7NyzeRF9xpbnR\nszicL+Hs8rs6bsceTADENyb3W2/aDeIs4ODfq2vMegX/lalrKJQkxfczZw2WL5tuC04sAZaN5cMk\ngqp9HQoJ1xeOyTuteFj5bmTwtI0dWKphxkrVIgQ9ecSAIhnlW6GXUa3+bDYyTT+2wtoJiS18GKk8\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "commit_public_user", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3559210201980528457": { + "error_kind": "string", + "string": "Function commit_public_user can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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EwAqGBMUHAoKEwIcChEKAgQqEy8RBCoKORMAKhETCi0IAREAAAECARwKEhMAJwISACAnAh4EPy0IAD8tCgtALQoSQQAIAB4AJQAAI9MtAgAALQpAGAQqOxgSACoTEhgnAhIAQCcCHgQ/LQgAPy0KC0AtChJBAAgAHgAlAAAj0y0CAAAtCkATBCo8ExIAKhgSExwKPhIAJwIYAEgnAh8EOy0IADstCgs8LQoYPQAIAB8AJQAAI9MtAgAALQo8HgQqEh4YACoTGBInAhMAaCcCHgQ7LQgAOy0KCzwtChM9AAgAHgAlAAAj0y0CAAAtCjwYBCoQGBMAKhITEBwKOhIAJwITAHAnAh4EHy0IAB8tCgsgLQoTIQAIAB4AJQAAI9MtAgAALQogGAQqEhgLACoQCxItCAELJwIQBBgACAEQAScDCwQBACILAhAtChATLQ4SEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATLQ4LERwKGgsAHAoXEAAcChkSABwKGxMAHAocFwAcCh0YABwKFRkAHAoUFQAcCgoUAC0IAQonAhoEDAAIARoBJwMKBAEAIgoCGi0KGhstDgwbACIbAhstDgsbACIbAhstDhYbACIbAhstDhAbACIbAhstDhIbACIbAhstDhMbACIbAhstDhcbACIbAhstDhgbACIbAhstDhkbACIbAhstDhUbACIbAhstDhQbHAoJCwAcCgcJAC0IAQcnAgwEDAAIAQwBJwMHBAEAIgcCDC0KDBAtDgYQACIQAhAtDgsQACIQAhAtDggQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAtDgkQACIQAhAuDIBKABAuCIBGAA0jAAARmw0iAA2AUQAMJAIADAAAHKwjAAARsC0LEQotCwoMACIMAgwtDgwKLQgBDCcCDQQEAAgBDQEnAwwEAQAiDAINLQoNEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABArAgANAAAAAAAAAAAXAAAAAAAAAAAtCAEQJwIRBAUACAERAScDEAQBACIQAhEtChESLgyARwASACISAhIuDIBHABIAIhICEi4MgEcAEgAiEgISLQ4NEi0IAQ0AAAECAS0ODA0tCAEMAAABAgEtDhAMLQgBEAAAAQIBLgyARgAQLQgBEQAAAQIBLgyARQARLQsKEgAiEgISLQ4SCi4IgEYAByMAABKfDSIAB4BSABIkAgASAAAcYiMAABK0JwITBBQtCAAULQoNFS0KDBYtChAXLQoRGAAIABMAJQAAJNMtAgAALQoVEi0IAQwnAg0EGQAIAQ0BJwMMBAEAIgwCDScCEAQYACoQDRAtCg0RDCoREBMWChMTJAIAEwAAEyYuDIBHABEAIhECESMAABMFLQgBDQAAAQIBLQ4MDS4IgEYAByMAABM+DSIAB4BSAAwkAgAMAAAcFSMAABNTLQsNCicCDAQYLgIACoADKACABAQAGSUAACVHLgiABQAQACoQDBEtDhIRLQ4QDS4IgEYAByMAABOMDCoHDAokAgAKAAAb5iMAABOeLQgBCgAAAQIBKQIADAB6PyscLQgBDScCDgQNAAgBDgEnAw0EAQAiDQIOLQoOEC0ODBAAIhACEC0OBRAAIhACEC0OCxAAIhACEC0OCBAAIhACEC0OCRAAIhACEC0OBhAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAtDg0KLQsBBQAiBQIFLQ4FAScCBQIALQgBBicCCAQfAAgBCAEnAwYEAQAiBgIIJwIJBB4AKgkICS0KCAsMKgsJDBYKDAwkAgAMAAAUmi0OBQsAIgsCCyMAABR7LQgBCAAAAQIBLQ4GCC0LAQYAIgYCBi0OBgEuCIBGAAcjAAAUvw0iAAeAUwAGJAIABgAAG5kjAAAU1C0LCAYnAggEEC0IABAtCgYRAAgACAAlAAAl1S0CAAAtChEHLQsKBi4CAAaAAygAgAQEAA0lAAAlRy4IgAUACAEiAAiATQAJLQ4HCS0OCAotCwIGACIGAgYtDgYCLQgBBicCBwQfAAgBBwEnAwYEAQAiBgIHJwIIBB4AKggHCC0KBwkMKgkICxYKCwskAgALAAAVdS0OBQkAIgkCCSMAABVWLQgBBwAAAQIBLQ4GBy0LAgYAIgYCBi0OBgIuCIBGAAEjAAAVmg0iAAGAUwAGJAIABgAAG0wjAAAVry0LBwInAgcEEC0IABAtCgIRAAgABwAlAAAl1S0CAAAtChEGLQsKAi4CAAKAAygAgAQEAA0lAAAlRy4IgAUABwEiAAeATgAILQ4GCC0OBwotCwMCACICAgItDgIDLQgBAicCBgQfAAgBBgEnAwIEAQAiAgIGJwIHBB4AKgcGBy0KBggMKggHCRYKCQkkAgAJAAAWUC0OBQgAIggCCCMAABYxLQgBBgAAAQIBLQ4CBi0LAwIAIgICAi0OAgMuCIBGAAEjAAAWdQ0iAAGAUwACJAIAAgAAGv8jAAAWii0LBgInAgYEEC0IABAtCgIRAAgABgAlAAAl1S0CAAAtChEDLQsKAi4CAAKAAygAgAQEAA0lAAAlRy4IgAUABgEiAAaATwAHLQ4DBy0OBgotCAECJwIDBB8ACAEDAScDAgQBACICAgMnAgYEHgAqBgMGLQoDBwwqBwYIFgoICCQCAAgAABceLQ4FBwAiBwIHIwAAFv8tCAEDAAABAgEtDgIDLQgBAicCBgQfAAgBBgEnAwIEAQAiAgIGJwIHBB4AKgcGBy0KBggMKggHCRYKCQkkAgAJAAAXcC0OBQgAIggCCCMAABdRLQgBBgAAAQIBLQ4CBi0IAQInAgcEHwAIAQcBJwMCBAEAIgICBycCCAQeACoIBwgtCgcJDCoJCAsWCgsLJAIACwAAF8ItDgUJACIJAgkjAAAXoy0IAQUAAAECAS0OAgUnAgIEWicCBwQ8LgiARgABIwAAF+QNIgABgFMACCQCAAgAABoJIwAAF/ktCwMCJwIEBBAtCAAQLQoCEQAIAAQAJQAAJdUtAgAALQoRAy0LCgIuAgACgAMoAIAEBAANJQAAJUcuCIAFAAQBIgAEgFAABy0OAwctCwYCJwIGBBAtCAAQLQoCEQAIAAYAJQAAJdUtAgAALQoRAy4CAASAAygAgAQEAA0lAAAlRy4IgAUAAgEiAAKAUQAGLQ4DBi0LBQMnAgUEEC0IABAtCgMRAAgABQAlAAAl1S0CAAAtChEELgIAAoADKACABAQADSUAACVHLgiABQADACoDDwUtDgQFLQ4DCi0IAQInAgQEDQAIAQQBJwMCBAEAIgICBCcCBQQMACoFBAUtCgQGDCoGBQcWCgcHJAIABwAAGRouDIBHAAYAIgYCBiMAABj5LQgBBAAAAQIBLQ4CBC4IgEYAASMAABkyDCoBDwIkAgACAAAZvCMAABlELQsEAScCBAQMBiIEAgInAgYEAwAqBAYFLQgBAwAIAQUBJwMDBAEAIgMCBS0OBAUAIgUCBS0OBAUnAgYEAwAqAwYFACIBAgYuAgAGgAMuAgAFgAQuAgAEgAUlAAAGUwAiAwIFLQsFBCcCBgQCACoFBgE3CwABAAQmACIDAgUAKgUBBi0LBgItCwQFLgIABYADKACABAQADSUAACVHLgiABQAGACIGAgcAKgcBCC0OAggtDgYEASIAAYBJAAItCgIBIwAAGTIAIgQCCQAqCQELLQsLCC0LAwkuAgAJgAMoAIAEBAAfJQAAJUcuCIAFAAsAIgsCDAAqDAENLQ4IDS0OCwMBIgABgFMACAwqCAIJJAIACQAAGl8lAAAmlAAiBAILACoLCAwtCwwJLQsGCC4CAAiAAygAgAQEAB8lAAAlRy4IgAUACwAiCwIMACoMAQ0tDgkNLQ4LBgAqAQcIDCoIAgkkAgAJAAAasiUAACaUACIEAgsAKgsIDC0LDAktCwUILgIACIADKACABAQAHyUAACVHLgiABQALACILAgwAKgwBDS0OCQ0tDgsFASIAAYBJAAgtCggBIwAAF+QAIgMCBwAqBwEILQsIAi0LBgcuAgAHgAMoAIAEBAAfJQAAJUcuCIAFAAgAIggCCQAqCQELLQ4CCy0OCAYBIgABgEkAAi0KAgEjAAAWdQAiAgIIACoIAQktCwkGLQsHCC4CAAiAAygAgAQEAB8lAAAlRy4IgAUACQAiCQILACoLAQwtDgYMLQ4JBwEiAAGASQAGLQoGASMAABWaACIBAgkAKgkHCy0LCwYtCwgJLgIACYADKACABAQAHyUAACVHLgiABQALACILAgwAKgwHDS0OBg0tDgsIASIAB4BJAAYtCgYHIwAAFL8cCgcKAAAqDgoNACIQAhEAKhEHEi0LEgowCgAKAA0BIgAHgEkACi0KCgcjAAATjAAiCgIQACoQBxEtCxEMLQsNEC4CABCAAygAgAQEABklAAAlRy4IgAUAEQAiEQITACoTBxQtDgwULQ4RDQEiAAeASQAMLQoMByMAABM+ACIKAhMAKhMHFC0LFBInAhMEFC0IABQtCg0VLQoMFi0KEBctChEYLQoSGQAIABMAJQAAJqYtAgAAASIAB4BJABItChIHIwAAEp8BIgANgEkADAAiCgISACoSDRMtCxMQLQsREg0iAAyAUgATJAIAEwAAHNslAAAmlC4CABKAAygAgAQEABglAAAlRy4IgAUAEwAiEwIUACoUDBUtDhAVASIADIBRABAOKgwQEiQCABIAAB0bJQAAI68AIgcCFAAqFA0VLQsVEg0iABCAUgAUJAIAFAAAHT4lAAAmlC4CABOAAygAgAQEABglAAAlRy4IgAUAFAAiFAIVACoVEBYtDhIWLQ4UES0KDA0jAAARmygAgAQEeAANAAAAgASAAyQAgAMAAB2ZKgEAAQX3ofOvpa3UyjwEAgEmKgEAAQW+Hj//PqT2+jwEAgEmKgEAAQUxZNrSOf7nSTwEAgEmJQAAHXEcCgIFACsCAAYAAAAAAAAAAAEAAAAAAAAAAAQqBQYHLQgBBScCBgQEAAgBBgEnAwUEAQAiBQIGLQoGCC4MgEcACAAiCAIILgyARwAIACIIAgguDIBHAAgtCAEGJwIIBAUACAEIAScDBgQBACIGAggtCggJLgyARwAJACIJAgkuDIBHAAkAIgkCCS4MgEcACQAiCQIJLQ4HCS0IAQcAAAECAS0OBQctCAEFAAABAgEtDgYFLQgBBgAAAQIBLgyARgAGLQgBCAAAAQIBLgyARQAILQsBCQAiCQIJLQ4JAS4IgEYABCMAAB6rDSIABIBLAAkkAgAJAAAfKyMAAB7AJAIAAwAAHs0jAAAe/ycCAQQJLQgACS0KBwotCgULLQoGDC0KCA0uCIBKAA4ACAABACUAACamLQIAACMAAB7/JwICBAktCAAJLQoHCi0KBQstCgYMLQoIDQAIAAIAJQAAJNMtAgAALQoKASYMKgQCCSQCAAkAAB89IwAAH3sAIgECCgAqCgQLLQsLCScCCgQLLQgACy0KBwwtCgUNLQoGDi0KCA8tCgkQAAgACgAlAAAmpi0CAAAjAAAfewEiAASASQAJLQoJBCMAAB6rKgEAAQUC3G4ngHYSnTwEAgEmJQAAHXEtCAEGJwIHBBgACAEHAScDBgQBACIGAgcnAggEFwAqCAcILQoHCQwqCQgKFgoKCiQCAAoAAB/qLgyARwAJACIJAgkjAAAfyS0IAQcAAAECAS0OBgcuCIBGAAUjAAAgAg0iAAWAUgABJAIAAQAAIBwjAAAgFy0LBwEmHAoFAQAAKgQBAi8KAAIAAS0LBwIuAgACgAMoAIAEBAAYJQAAJUcuCIAFAAMAIgMCBgAqBgUILQ4BCC0OAwcBIgAFgEkAAS0KAQUjAAAgAiUAAB1xLQgBBgAAAQIBLQ4EBi4IgEYABSMAACCIDSIABYBSAAMkAgADAAAgoiMAACCdLQsGASYtCwEDLQsCBA0iAASAUgAHJAIABwAAIL8lAAAmlAAiAwIIACoIBAktCwkHASIABIBJAAgOKgQICSQCAAkAACDnJQAAI68tDgMBLQ4IAi0LBgMuAgADgAMoAIAEBAAYJQAAJUcuCIAFAAQAIgQCCAAqCAUJLQ4HCS0OBAYBIgAFgEkAAy0KAwUjAAAgiCUAAB1xASIAAoBRAAQOKgIEBSQCAAUAACFNJQAAI68NKIBSAAQABQsiAAWARQAEJAIABAAAIWolAAAnyi0IAQQnAgUEDAAIAQUBJwMEBAEAIgQCBScCBgQLACoGBQYtCgUHDCoHBggWCggIJAIACAAAIbEuDIBHAAcAIgcCByMAACGQLQgBBQAAAQIBLQ4EBS4IgEYAAyMAACHJDSIAA4BRAAQkAgAEAAAh4yMAACHeLQsFASYAKgMCBA4qAwQGJAIABgAAIfolAAAjrw0iAASAUgAGJAIABgAAIg8lAAAmlAAiAQIHACoHBAgtCwgGLQsFBC4CAASAAygAgAQEAAwlAAAlRy4IgAUABwAiBwIIACoIAwktDgYJLQ4HBQEiAAOASQAELQoEAyMAACHJJQAAHXEBIgABgEkAAy0LAwIBIgABgEsABC0LBAMcCgMFBhwKBQQAHAoEAwYBIgABgEQABS0LBQQBIgABgEwABi0LBgUcCgUHBhwKBwYAHAoGBQYnAgYEBQAqAQYILQsIBxwKBwgGHAoIBgAcCgYHBicCBgQGACoBBgktCwkIHAoICQYcCgkGABwKBggGASIAAYBNAAktCwkGHAoGCgYcCgoJABwKCQYGASIAAYBOAAotCwoJHAoJCwYcCgsKABwKCgkGASIAAYBPAAstCwsKHAoKDAYcCgwLABwKCwoGASIAAYBQAAwtCwwLHAoLDQUcCg0MABwKDAsFASIAAYBRAA0tCw0MHAoMDQIcCg0BABwKAQwCLQoCAS0KAwItCgQDLQoFBC0KBwUtCgYHLQoIBi0KCQgtCgoJLQoLCi0KDAsmKgEAAQWW3Pkm00vg3zwEAgEmKgEAAQVFp8pxGUHkFTwEAgEmKgEAAQUHKoPuEPeQ8DwEAgEmJQAAHXEtCAEEAAABAgEuDIBKAAQnAgYEAicCBwEBLQgBBScCCAQhAAgBCAEnAwUEAQAiBQIIJwIJBCBDA6oAAgAGAAkABwAIJwIKBCAuAgAIgAMuAgAKgAQlAAAn3CcCAgQhJwIGBCAuCIBJAAMjAAAkRgwqAwIHJAIABwAAJF0jAAAkWC0LBAEmLQsEBwQqBwcIAioGAwcOKgMGCSQCAAkAACR9JQAAKFwMKgcGCSQCAAkAACSPJQAAJpQAIgUCCgAqCgcLLQsLCRwKCQcABCoIAQkEKgcJCgMogEoABwAJBCoJCAcAKgoHCC0OCAQBIgADgEkABy0KBwMjAAAkRiUAAB1xLQsEBQsiAAWARQAGJAIABgAAJPUnAgcEADwGBwEnAgUEBi0IAAYtCgEHLQoCCC0KAwktCgQKAAgABQAlAAAobi0CAAAtCwEFLQsCBi0LAwctDgUBLQ4GAi0OBwMuDIBIAAQBIgAGgEkAAi0LAgEmLgGAA4AGCwCABgACgAckAIAHAAAlYiMAACVtLgCAA4AFIwAAJdQuAAABgAUBAAABgAQAAQEAgAOABIAJLgCAA4AKLgCABYALCwCACoAJgAwkAIAMAAAlwC4BgAqACC4EgAiACwEAgAoAAoAKAQCACwACgAsjAAAljygBgAUEAAEDAIAGAAKABiMAACXUJiUAAB1xLQgBAwAAAQIBLgyASgADLQgBBAAAAQIBLgyARwAEJwIFBB0uCIBGAAIjAAAmCA0iAAKAUwAGJAIABgAAJiIjAAAmHS0LBAEmLQsEBgIqBQIHDioCBQgkAgAIAAAmPSUAAChcDSIAB4BTAAgkAgAIAAAmUiUAACaUACIBAgkAKgkHCi0LCggcCggHAC0LAwgEKgcICQAqBgkHLQ4HBAUiAAiAQwAGLQ4GAwEiAAKASQAGLQoGAiMAACYIKgEAAQXFa8RaDhAAAjwEAgEmJQAAHXEtCwQGCyIABoBFAAckAgAHAAAmyCcCCAQAPAYIAS0LAwYLIgAGgEQAByQCAAcAACdbIwAAJuEtCwMGLQsBBy0LAggtCwQJDSIABoBEAAokAgAKAAAnBiUAACaULgIAB4ADKACABAQABCUAACVHLgiABQAKACIKAgsAKgsGDC0OBQwBIgAGgEkABQ4qBgUHJAIABwAAJ0YlAAAjry0OCgEtDggCLQ4FAy0OCQQjAAAnyScCBgQHLQgABy0KAQgtCgIJLQoDCi0KBAsACAAGACUAAChuLQIAAC0LAQYtCwIHLQsECC4CAAaAAygAgAQEAAQlAAAlRy4IgAUACQEiAAmASQAKLQ4FCi0OCQEtDgcCLgyASQADLQ4IBCMAACfJJioBAAEF9C7lhLv0IdE8BAIBJigAgAYEAAIHAIAEgAaABS4AgASACCgAgAkEAAANAIAJgAWAChcAgAqACiQAgAoAAChbAwCACAACgAgBAIADgAmACy4BgAuABgEAgAOACIALLgGAC4AHAQCAA4AJgAsuBIAHgAsBAIADgAiACy4EgAaACwEAgAkAAoAJIwAAJ/gmKgEAAQUohpKwR9z9QzwEAgEmJQAAHXEuCIBGAAUjAAAofg0iAAWARAAGJAIABgAAKOkjAAAoky0LAgUtCwUGACIGAgYtDgYFLQgBBicCBwQFAAgBBwEnAwYEAQAiBQIHJwIIBAQAIgYCCT8PAAcACS0LAQUtCwMHLQsECC0OBQEtDgYCLQ4HAy0OCAQmLQsDBgwqBQYHJAIABwAAKP8jAAApay0LAgYAIgYCCAAqCAUJLQsJBy0LAQgAIggCCgAqCgULLQsLCQAqBwkKLQsDBy0LBAkuAgAGgAMoAIAEBAAFJQAAJUcuCIAFAAsAIgsCDAAqDAUNLQ4KDS0OCAEtDgsCLQ4HAy0OCQQjAAApawEiAAWASQAGLQoGBSMAACh+", + "debug_symbols": "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", + "brillig_names": [ + "commit_public_user" + ] + }, + { + "name": "constructor", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "initializer" + ], + "abi": { + "parameters": [], + "return_type": null, + "error_types": { + "2233873454491509486": { + "error_kind": "string", + "string": "Initializer address is not the contract deployer" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17618083556256589634": { + "error_kind": "string", + "string": "Initialization hash does not match" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "JwACBAEoAAABBIBGJwAABAMnAgEEACcCAgQAHwoAAQACgEYlAAAAPyUAAABVKAIAAQSARicCAgQAOw4AAgABKACAQwQAAygAgEQEAAAoAIBFBAABJiUAAAReHgIAAgAtCAEDJwIEBAMACAEEAScDAwQBACIDAgQ2DgACAAQAASIAA4BFAAUtCwUEJwIFBAIAKgMFBy0LBwYcCgQDAAQqAwYHJwIDAQEkAgAEAAAAuCcCBgQAPAYGAS0IAQQnAgYEAwAIAQYBJwMEBAEAIgQCBjYOAAIABgIBIgAEgEUABi0LBgIAKgQFCC0LCAYcCgIEAAQqBAYFJAIAAgAAAQcnAgQEADwGBAEtCAECJwIEBAIACAEEAScDAgQBACICAgQfMIBFgEQABAEiAAKARQAGLQsGBBwKBAYEHAoGAgAtCAEEAAABAgEnAwQEAQAiBAIGHzCARIBFAAYnAgYAACcCCAANLQgBCScCCgQEAAgBCgEnAwkEAQAiCQIKLQoKCy0OCAsAIgsCCy0OAgsAIgsCCy0OBgstCAECJwIIBAQACAEIAScDAgQBACICAggtCggKLQ4GCgAiCgIKLQ4GCgAiCgIKLQ4GCisCAAgAAAAAAAAAAAMAAAAAAAAAAC0IAQonAgsEBQAIAQsBJwMKBAEAIgoCCy0KCwwtDgYMACIMAgwtDgYMACIMAgwtDgYMACIMAgwtDggMLQgBCAAAAQIBLQ4CCC0IAQIAAAECAS0OCgItCAEKAAABAgEuDIBEAAotCAELAAABAgEnAgwBAC0ODAstCwkNACINAg0tDg0JLgiARAABIwAAAmkNIgABgEMABCQCAAQAAAMkIwAAAn4tCwsBCioBDAQkAgAEAAACmCcCCQQAPAYJAScCAQQMLQgADC0KCA0tCgIOLQoKDy0KCxAACAABACUAAASHLQIAAC0LCAEtCwIELQsKCS0OAQgtDgQCLQ4JCi0OAwsBIgAEgEUAAi0LAgEKKgUBAiQCAAIAAAL5JQAABZoKKgcGAR4CAAIBCioHAgQSKgEEAiQCAAIAAAMaJQAABaweAgABADQCAAEmACIJAg0AKg0BDi0LDgQtCwsNCioNDA4kAgAOAAADTCcCDwQAPAYPAS0LCg0LIgANgEMADiQCAA4AAAPfIwAAA2UtCwoNLQsIDi0LAg8tCwsQDSIADYBDABEkAgARAAADiiUAAAW+LgIADoADKACABAQABCUAAAXQLgiABQARACIRAhIAKhINEy0OBBMBIgANgEUABA4qDQQOJAIADgAAA8olAAAGXi0OEQgtDg8CLQ4ECi0OEAsjAAAETScCDQQOLQgADi0KCA8tCgIQLQoKES0KCxIACAANACUAAASHLQIAAC0LCA0tCwIOLQsLDy4CAA2AAygAgAQEAAQlAAAF0C4IgAUAEAEiABCARQARLQ4EES0OEAgtDg4CLgyARQAKLQ4PCyMAAARNASIAAYBFAAQtCgQBIwAAAmkoAIAEBHgADQAAAIAEgAMkAIADAAAEhioBAAEF96Hzr6Wt1Mo8BAIBJiUAAAReLgiARAAFIwAABJcNIgAFgEMABiQCAAYAAAUHIwAABKwtCwIFLQsFBgAiBgIGLQ4GBScCBgQELQgBBycCCAQFAAgBCAEnAwcEAQAiBQIIJwIJBAQAIgcCCj8PAAgACi0LAQUtCwMGLQsECC0OBQEtDgcCLQ4GAy0OCAQmLQsDBgwqBQYHJAIABwAABR0jAAAFiS0LAgYAIgYCCAAqCAUJLQsJBy0LAQgAIggCCgAqCgULLQsLCQAqBwkKLQsDBy0LBAkuAgAGgAMoAIAEBAAFJQAABdAuCIAFAAsAIgsCDAAqDAUNLQ4KDS0OCAEtDgsCLQ4HAy0OCQQjAAAFiQEiAAWARQAGLQoGBSMAAASXKgEAAQX0gAGmWdMnQjwEAgEmKgEAAQUfAFASQCQi7jwEAgEmKgEAAQXFa8RaDhAAAjwEAgEmLgGAA4AGCwCABgACgAckAIAHAAAF6yMAAAX2LgCAA4AFIwAABl0uAAABgAUBAAABgAQAAQEAgAOABIAJLgCAA4AKLgCABYALCwCACoAJgAwkAIAMAAAGSS4BgAqACC4EgAiACwEAgAoAAoAKAQCACwACgAsjAAAGGCgBgAUEAAEDAIAGAAKABiMAAAZdJioBAAEFRafKcRlB5BU8BAIBJg==", + "debug_symbols": "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", + "brillig_names": [ + "constructor" + ] + }, + { + "name": "get_htlc_public", + "is_unconstrained": true, + "custom_attributes": [ + "view", + "utility" + ], + "abi": { + "parameters": [ + { + "name": "key", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "Train::HTLC_Public", + "fields": [ + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "claimed", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + ] + }, + "visibility": "public" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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DWwD28A2sA1sA9vANrANbAPbxDaxTWwT28Q2sU1sE9vENsPmkygXFrCCDeyggAoaOEBsBVvBVrAVbAVbwVawFWwFW8FWsVVsFVvFVrFVbBVbxVaxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGltjZ6OLYwA76TTgnDbKgETQvGuedTKcSVINaUA+SIA2yoBEUjhKOEo4SjrOtzbGDAvomnI4GHpvQb8n77MkLva0vLGAFG9hBARU0EFvF1rA1bN7WPkPAZ08u7KCAChroNt863tYneltf6MO4TjWoBfUgCdIgr3gcLv5iyu6zFnxaZPdJCT4tcqGACvqS+l7wJr1wBnqTXlhAv9Hl1IIOl99S8EmRCxU8XD5m5JMiF85Ab9HzSPIWvfBYs1PhLXphB33NnDTIgkbQXOTdeZJX9M3mP97ndvUf7zYcBzgD/cf7wmNJffKET3Fc2MAOCnjYfPH9t/uk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", + "brillig_names": [ + "get_htlc_public" + ] + }, + { + "name": "is_contract_initialized", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "boolean" + }, + "visibility": "public" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "is_contract_initialized" + ] + }, + { + "name": "lock_private_solver", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "randomness", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6418028854678020178": { + "error_kind": "string", + "string": "FundsNotSent" + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnkfxV/UgTbIkT6pJbVLkeaeSREmclBqcGpwanBqR5zWoTYo871SSKImTJEmTLMmTUkNSQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1PDUsNSw1LDUsNSw1LDUsNSw1LDUsNTw1PDU8NTw1PDU8NTw1PDU8NTo6ZGTY2aGjU1amrU1KipUVOjpkZNjZYaLTVaarTUaKnRUqOlRkuNlhp3njf6h/uT3yupJD00mgRxkiRpkiV5Uk1qk+48H1SSUqOkRkmNkholNUpqlNQoqUGpQalBqUGpQalBqUGpQalBqUGpwanBqcGpwanBqcGpwanBqcGpwakhqSGpIakhqSGpIakhqSGpIakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhqVFTo6ZGTY2aGjU1amrU1KipUVOjpkZLjZYaLTVaarTUaKnRUqOlRkuNNjWiWG1QSaIkTpIkTbIkT6pJqZF53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53mae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae0zXznK4rNUpqlNQoqVFSo6RGSY2SGiU1SmqU1KDUoNSg1KDUoNSg1KDUoNSg1KDU4NTg1ODU4NTg1ODU4NTg1ODU4NSQ1JDUkNSQ1JDUkNSQ1JDUkNSQ1NDU0NTQ1NDU0NTQ1NDU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avSq0atGrxq9aok3ub70qtGrRq9a4k289KrRq0avGr1q9KrRq0avGuerxvmq0atGrxq9apyvGuerRq8avWr0qtGrRq8avWr0qg28g+tLrxq9avSqDbwDL71q9KrRq0avGr1q9KrRqzbxTq4vvWr0qtGrNvEuvPSq0atGrxq9avSq0atGr9rCu+717fSq06tOr/rnevsn4QZ3eMATvuvt9KrTq17wlgon3OAO4y146VWnV51edXrV6VWnV51e9cAbA54w+0yvesVb8dKrTq86ver0qtOrTq86veqJN7m+9KrTq06veuJNvPSq06tOrzq96vSq06tOr3rD27i+9KrTq06vOp8HO58HO73q9KrTq06vOr3q9KrTq97xdq4vver0qtOrzufBPvDSq06vOr3q9KrTq06vOr3qE+/k+tKrTq86vep8HuwTL73q9KrTq06vOr3q9KrTq77wLq4vver0atCrwefB8Qm4wgk3uMMDnvBd7yh4S4EDrnDCeAteejXo1aBXg14NejXo1aBXI/BGgzs84AnjrXjp1aBXg14NejXo1aBXg16NirdyfenVoFeDXg0+D47ES68GvRr0atCrQa8GvRr0ajS8jetLrwa9GvRq8Hlw0KvB+Wpwvhr0avB5cHS83L8a9GrQq0GvBuer8fTqe+/0jH6fe25n9vvlgCuccIM7POAJ3/uEZwj8ZbwT78Q78U68E+/EO/FOvAvvwrvwLrwL78K78C68C++63jMY/nKBA67wvb6T+1eT+1eTXk16NenV5Hw1OV9NejXp1aRXk15NejXp1aRXk15NejXp1Qy8gZdeTXo16dXk8+Dk/tWkV5NeTXo16dWkV5NeTXo1K9464Anfn99JryafByf3rya9mvRq0qtJrya9mvRq0qvZ8LYCs8/0atKryefByf2rSa9mw8v5anK+mvRqcr6anK8mvZrcb5/cb5+dfeZ8Nfk8OLl/Nbl/NbnfPjlfTc5Xk/PV5Hw1OV9N7rfPwfWd7PNknzlfTT4PTu5fTe5fTe63T85Xk/PV5Hw1OV9NzleT++1zcX0X+7zYZ85Xk8+Dk/tXk/tXi/vti/PV4ny1OF8tzleL89WiV+sz4AnffV6crxa9Wty/Wty/WtxvX/Rq0atFrxa9WvRqcb99RYEDrnDCeLl/tejVoleLXi16tejVoleLXi3ut6/aYPaZXi16tfg8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+/cMxDPf/vD2zv2aT68e3t55nnPC6/Lp1dr7cHr18NfbPtu7e/Vywg3um2PzgCe8Nn9f85lv/zkdbS7w8c7NFd7e73+oOc58+8sd3t7v35kQZ7795e39/mfZ48y3v1zg7Y392navXt7e2K9t9+rl7f3+lyHizLe/POHt/f5N53Hm21/e3v3ePvPtLfdr2L16OeHtzf16dq9e3t48zznhdXn3qu33/Jlvf3l79/v5zLe/nPD29v06d69e3t6+93b36uXt7Xvtu1cvb2/fz7l79XKFt3fs59+9enl798/FmW9/ecLbO/d7YPfq5e2d+7XtXr28vWvv7e7Vyw3e3rX3effq5e1d27t71T/7OXev+nlv7169jwdc4YQb3OHBc04eX/fx8bmPD7wD76h8Pd6Bd+AdA558L+udeCfeGffrJ+udyeN4Z+dxvJP1TryLfV54F96Fd+FdeBfrXXgX613Xe+bbXy6/v+bMt7+PVx5PHm883nl8wBPGW/AWvAVvqTDegrfgLYPH8Ra8gTcKfPf5zLe/jyePNx7HG3gDb+CteCveynor3sp6K95631dnvv19HG+9P0dnvv15PPEm3uT6Jt5kn5P1Jt6cfA3rbff9fObb38fZ58Z6G97GehvehrfhpVezs97O+4peTXo16dWkV5NezY634+146dWkV5NeTXo16dWkV3NwfenVpFeTXk16NSfrnXgn3omXXk16NenVnHjp1Vx4F96Fl17NhZdeTXo16dVcvJ/XfT8verXo1aJX61PhhBvc4QFPGC+9WqXAwdfgpVeLXi16tejVoleLXi16tejVCtYb9/quwEuvVnS+hvXG5HG89f78Lnq16NWqeOnVolerst7KeunVqngTL71a9Gol+0yvVuKlVyvxJt7k+jb2mV6threxXnq1GteXXq2Gt+FteOnVoleLXi16tXryNayXXi16tThfLXq1BvtMrxa9WgPvwEuvFuerRa/WwEuv1sTL+Wpxvlqcrxbnq0WvFr1a9Gpxvlr0anG+WpyvFuerRa8WvVqL60uv1uL60qt1e1U/t1f18ylwwJWvTx5vcOdrBo9PHl/38fK5jxe8Be/tVf0UvAVvwVvw3l7VT8EbeANv4A28gTca39t5HG+w3sBb2eeKt+KteGve56mst7LeirfirXiT9SbeDB7Hm6w38SbrTbyJN/E2vA1vw9vwNtbb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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "notify_created_nullifier_oracle_wrapper", + "notify_created_note_oracle_wrapper", + "random", + "decompose_hint", + "lte_hint", + "field_less_than", + "build_msg_block", + "attach_len_to_msg_block", + "get_random_bytes", + "get_random_bytes", + "get_app_tag_as_sender", + "increment_app_tagging_secret_index_as_sender_wrapper", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "lock_public_solver", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "ownership_hash", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "15001264570739363109": { + "error_kind": "string", + "string": "Function lock_public_solver can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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AgACgAMuAgANgAQuAgAMgAUlAAAIiy0KCwIoAgADBIB4JwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgADgAMuAgANgAQuAgAMgAUlAAAIiy0KCwMuCICYAAQuCICZAAUuCICaAAYoAgAHBICbJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAHgAMuAgANgAQuAgAMgAUlAAAIiy0KCwcoAgAIBIC5JwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAIgAMuAgANgAQuAgAMgAUlAAAIiy0KCwgoAgAJBIDXJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAJgAMuAgANgAQuAgAMgAUlAAAIiy0KCwkoAgAKBID1JwIMBFotCAELJwINBFsACAENAScDCwQBACILAg0uAgAKgAMuAgANgAQuAgAMgAUlAAAIiy0KCwolAAAI0SUAAAleKAIAAQSBTycCAgQAOw4AAgABAQCAA4AFgAcuAIADgAguAIAEgAkLAIAIgAeACiQAgAoAAAjQLgGACIAGLgSABoAJAQCACAACgAgBAIAJAAKACSMAAAifJigAgEMAAQAoAIBEBAADKACARQEAACgAgEYEAAAoAIBHBgAAKACASAAAACgAgEkBAAEoAIBKBAABKACASwAAASgAgEwEAAIoAIBNBAAEKACATgQABigAgE8EAAcoAIBQBAAIKACAUQQACSgAgFIEAAooAIBTBAALKACAVAQAFygAgFUEAB4oAIBWBAAgJiUAACHQHgIADAAeAgANADMqAAwADQAOJAIADgAACYIlAAAh+R4CAAwBHgIADQAKKgwNDiQCAA4AAAmeJQAAIgsnAgwAAi0IAQ0nAg4EAwAIAQ4BJwMNBAEAIg0CDi0KDg8tDgwPACIPAg8tDgEPJwIPBBAtCAAQLQoNES4IgEwAEi4IgEUAEwAIAA8AJQAAIh0tAgAALQoRDgsiAA6ASAAPCyIAD4BFABAkAgAQAAAKFCUAACPrHgIADwYnAhEEEi0IABIuCIBFABMuCIBIABQtCgwVLQoOFgAIABEAJQAAI/0tAgAALQoTEC0IAQ4AAAECAS0OEA4tCAEQAAABAgEuDIBGABAtCAERJwISBBgACAESAScDEQQBACIRAhInAhMEFwAqExITLQoSFAwq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", + "debug_symbols": "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", + "brillig_names": [ + "lock_public_solver" + ] + }, + { + "name": "process_message", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [ + { + "name": "message_ciphertext", + "type": { + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec", + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 17, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "message_context", + "type": { + "kind": "struct", + "path": "aztec::messages::processing::message_context::MessageContext", + "fields": [ + { + "name": "tx_hash", + "type": { + "kind": "field" + } + }, + { + "name": "unique_note_hashes_in_tx", + "type": { + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec", + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 64, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "first_nullifier_in_tx", + "type": { + "kind": "field" + } + }, + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "vb3friW5cWf9Ln3ti00yIkjqVQYDQ/ZoBgIEyZDlD/hg+N1nM5jkijrlw8qz9+m5US91V8XKf/ztTJLJ/M/f/tef/uU//s8///mv//tv//7bH/7Hf/72L3//81/+8uf/889/+du//vEff/7bX5//9j9/e4z/SbX+9ofyT89/tt/+oOOf/bc/1Oc/2/M/9/HP9NsfUhqQnzD+Wa5/yvVPff5zVGi2oC5oC/oF/bEgLcgLygJZsCr3Vbmvyn1V7lfl/HgsSAvygrJAFugCW1AXtAWrclqV06qcVuW0KqdVOa3KaVVOq3JaldOqnFflvCrnVTmvynlVzqtyXpXzqpxX5bwql1W5rMplVS6rclmVy6pcVuWyKpdVuazKsirLqiyrsqzKsirLqiyjch1QF7QF/QJ9LEgL8oKyQBboglVZV2UdlduAfoE9FqQFeUFZ8Kyc04Bn5awDbEFd0Bb0C+pjwbNy7gPygrJAFjwrl8cAW1AXjMrjQI3m5zDa34Rn5TIUowFOKAtkgS6wBXVBW9AvGG1wwqrcV+W+KvdVua/KfVXuq3JflftVuTweC9KCvKAskAW6wBbUBW3BqPw8p2W0wQlpQV5QFsgCXWAL6oK2YFXOq3JelfOqnFflvCrnVTmvynlVzqtyXpXLqlxW5bIql1W5rMplVS6rclmVy6pcVmVZlWVVllVZVmVZlWVVllVZVmVZlWVV1lVZV2VdlXVV1lVZV2VdlXVV1lVZV2VblW1VtlXZVmVblW1VtlXZVuXRBuUxoF8w2uCEtCAvKAtkgS6wBXXBqlxX5bYqt6uyjMM7WqWMwytpwPjr/m/agn7BOJgT0oK8oCyQBbrAFqzKuirrqmyrsq3Ktirbqmyrsq3Ktirbqmyrsq3KdVWuq3JdleuqXFfluirXVbmuynVVrqtyW5XbqtxW5bYqt1W5rcptVW6rcluV26rcV+W+KvdVua/KfVXuq3Jflfuq3FflflXWEWhiA9KCvKAskAW64FlZHwPqgragXzACTdOAtOBZWWVAWSALdIEtqAvagn7BCLQJacGqnFflvCrnVXkEmuqAuqAt6BeMQJuQFozKdUBZIAuelW3s6Qi0CXVBW9AvGIE24VnZxvaMQJtQFsiCUXnYR6BNqBeMhqZtwPjr41yMZmX+b55/uI7jPJrVhLagXzCa1YS04FmnjsqjWU2QBbpgVB6u0awmjMp9QL9gNKsJaUFeUBY8K7dx1Y1mNcEW1AXPym0chNGsHEazamMzRrOakBeUBaPyUIxmNcEW1AVtQb9gNKs+pKNZTcgLyoJn5T42YzSrCbZgVB5XwmhWE/oEG21nwvjrOuD5h3sbMG7e8oDnH+7PzbDRUiakBXlBWSALdIEtqAvaglU5r8p5Vc6rcl4b5nfdj8cg21Q3tU19kd96P2RQ2pQ3lU2ySTe5YxwHvwOf1Db1RX4T/hgb6nfhk/Km4UhjW/xGfJJuGg4/xH4vPm7PzW/G09hfvxt38tvxSWlT3lQ2DUcelf2efJJtqpvapr7Ib8wnpU15U9m0HbYdth22HdXrjX2raVPeVDbJJl3kz7Hjt938QXaSVx5npu8t7XtL+9rS6s+c4zmg+kPnpLJJNukm21Q3tU19kT98TtqOtB1pO9J2pO1I25G2wx85sw3yv1sH+d/tg3STbaqb2qa+yK/2SWlT3lQ2bUfZjrIdZTvKdpTtkO2Q7ZDtkO2Q7ZDtkO2Q7ZDtkO3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7bDtsO2w7bDtsO2w7bDtsO2w7bDtqNtRt6NuR92Ouh11O+p21O2o21G3o21H2462HW072na07Wjb0bajbUfbjr4dfTv6dvTt6NvRt6NvR9+Ovh19OdrjsSltypvKJtmkm2xT3dQ2bUfajrQdaTvSdqTtSNuRtiNtR9qOtB15O/J25O3I27HbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO923nc777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO92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", + "brillig_names": [ + "process_message" + ] + }, + { + "name": "public_dispatch", + "is_unconstrained": true, + "custom_attributes": [ + "public" + ], + "abi": { + "parameters": [ + { + "name": "selector", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "772057049813214347": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "2233873454491509486": { + "error_kind": "string", + "string": "Initializer address is not the contract deployer" + }, + "2570651705007895968": { + "error_kind": "string", + "string": "HashlockNotMatch" + }, + "2722406262643068352": { + "error_kind": "string", + "string": "HashlockAlreadySet" + }, + "2830029349304997821": { + "error_kind": "fmtstring", + "length": 27, + "item_types": [ + { + "kind": "field" + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3559210201980528457": { + "error_kind": "string", + "string": "Function commit_public_user can only be called internally" + }, + "3564161243949231814": { + "error_kind": "string", + "string": "Function refund_public can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6012086182631426650": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "9323748002447105156": { + "error_kind": "string", + "string": "NotPassedTimelock" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "15001264570739363109": { + "error_kind": "string", + "string": "Function lock_public_solver can only be called internally" + }, + "16870384257694633552": { + "error_kind": "string", + "string": "Function add_lock_public_user can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17618083556256589634": { + "error_kind": "string", + "string": "Initialization hash does not match" + }, + "17814817983036354427": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "public_dispatch" + ] + }, + { + "name": "redeem_private", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_key_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_key_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "1186437190978851533": { + "error_kind": "string", + "string": "Non-zero hint for zero hash" + }, + "1589673740894288059": { + "error_kind": "string", + "string": "Hint values do not match hash" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7764445047318889914": { + "error_kind": "string", + "string": "Public data tree index doesn't match witness" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9199403315589104763": { + "error_kind": "string", + "string": "Proving public value inclusion failed" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "storage_read", + "get_public_data_witness", + "field_less_than", + "decompose_hint", + "lte_hint", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "load", + "store_in_execution_cache_oracle_wrapper", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "redeem_public", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "internal" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "secret", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "ownership_key", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "772057049813214347": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "2570651705007895968": { + "error_kind": "string", + "string": "HashlockNotMatch" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6012086182631426650": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17814817983036354427": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "redeem_public" + ] + }, + { + "name": "refund_private", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "1186437190978851533": { + "error_kind": "string", + "string": "Non-zero hint for zero hash" + }, + "1589673740894288059": { + "error_kind": "string", + "string": "Hint values do not match hash" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7764445047318889914": { + "error_kind": "string", + "string": "Public data tree index doesn't match witness" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9199403315589104763": { + "error_kind": "string", + "string": "Proving public value inclusion failed" + }, + "11091894166229312484": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + }, + "18313900523101689315": { + "error_kind": "string", + "string": "Note contract address mismatch." + } + } + }, + "bytecode": "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", + "debug_symbols": "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bUe2HXnnYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg23nYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYRw7aNaBu4A2yQTfYhrahLxg5OKFs2JFlR5YdWXbkkYNWBtiGtqEvGDk4oWygDXUDb5ANO7LuyLoj645sO7LtyLYj245sO7LtyLYj245sO7LtyG1Hbjty25Hbjtx25LYjtx257chtR247ct+R+47cd+S+I/cdue/IfUfuO3LfkfuKXK7rCipBFFSDOEiCNMiCWlBolNAooVFCo4RGCY2RkyZOGmRBQ6M59U0jMReVIAqqQRwkQRpkQaFBoVFDo4ZGDY0aGjU0amjU0KihUUOjhgaHBocGhwaHBocGhwaHBocGhwaHhoSGhIaEhoSGhIaEhoSGhIaEhoSGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhoWGhYaFhoWGhYaFhoWGhYaFRguNFhotNFpotNBoodFCo4VGC40WGj00emj00Oih0UOjh0YPjR4aPTT61ijXFVSCKKgGcZAEaZAFtaDQKKFRQqOERgmNEholNEpolNCIPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "get_note_internal", + "storage_read", + "get_public_data_witness", + "field_less_than", + "decompose_hint", + "lte_hint", + "call_private_function_internal", + "load", + "store_in_execution_cache_oracle_wrapper", + "directive_invert", + "directive_to_radix", + "directive_integer_quotient" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "refund_public", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "internal" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3564161243949231814": { + "error_kind": "string", + "string": "Function refund_public can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "9323748002447105156": { + "error_kind": "string", + "string": "NotPassedTimelock" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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ABwKCxkAHAoKCwAcCgIKAC0IAQInAhoEDAAIARoBJwMCBAEAIgICGi0KGhstDgQbACIbAhstDggbACIbAhstDh4bACIbAhstDgkbACIbAhstDhQbACIbAhstDhUbACIbAhstDhYbACIbAhstDhgbACIbAhstDhkbACIbAhstDgsbACIbAhstDgobHAoXBAAcCg8IABwKEAkAHAoRCgAcChILABwKEw8AHAoNEAAcCgwNAC0IAQwnAhEEDAAIAREBJwMMBAEAIgwCES0KERItDgUSACISAhItDgQSACISAhItDg4SACISAhItDggSACISAhItDgkSACISAhItDgoSACISAhItDgsSACISAhItDg8SACISAhItDhASACISAhItDg0SACISAhItDgMSLgiARQAqIwAAC8MNIgAqgEwAAyQCAAMAAA75IwAAC9gtCwcDLQsDBAAiBAIELQ4EAy0IAQQnAgUEBAAIAQUBJwMEBAEAIgQCBS0KBQcuDIBGAAcAIgcCBy4MgEYABwAiBwIHLgyARgAHKwIABQAAAAAAAAAAFwAAAAAAAAAALQgBBycCCAQFAAgBCAEnAwcEAQAiBwIILQoICS4MgEYACQAiCQIJLgyARgAJACIJAgkuDIBGAAkAIgkCCS0OBQktCAEFAAABAgEtDgQFLQgBBAAAAQIBLQ4HBC0IAQcAAAECAS4MgEUABy0IAQgAAAECAS4MgEQACC0LAwkAIgkCCS0OCQMuCIBFAAIjAAAMxw0iAAKATQAJJAIACQAADq8jAAAM3CcCCgQLLQgACy0KBQwtCgQNLQoHDi0KCA8ACAAKACUAABcoLQIAAC0KDAktCAEEJwIFBBkACAEFAScDBAQBACIEAgUnAgcEGAAqBwUHLQoFCAwqCAcKFgoKCiQCAAoAAA1OLgyARgAIACIIAggjAAANLS0IAQUAAAECAS0OBAUuCIBFAAIjAAANZg0iAAKATQAEJAIABAAADmIjAAANey0LBQMnAgQEGC4CAAOAAygAgAQEABklAAAXnC4IgAUABwAqBwQILQ4JCC0OBwUuCIBFAAIjAAANtAwqAgQDJAIAAwAADjMjAAANxikCAAIALRfGuCcCBAQCJwIGBAMAKgQGBS0IAQMACAEFAScDAwQBACIDAgUtDgQFACIFAgUtDgQFJwIFBAMAKgMFBC0KBAUtDgIFACIFAgUtDgEFACIDAgQtCwQCJwIFBAIAKgQFATcLAAEAAiYcCgIDAAAqBgMFACIHAggAKggCCS0LCQMwCgADAAUBIgACgEgAAy0KAwIjAAANtAAiAwIHACoHAggtCwgELQsFBy4CAAeAAygAgAQEABklAAAXnC4IgAUACAAiCAIKACoKAgstDgQLLQ4IBQEiAAKASAAELQoEAiMAAA1mACIDAgoAKgoCCy0LCwknAgoECy0IAAstCgUMLQoEDS0KBw4tCggPLQoJEAAIAAoAJQAAGCotAgAAASIAAoBIAAktCgkCIwAADMcBIgAqgEgAAwAiAgIFACoFKggtCwgELQsHBQ0iAAOATQAIJAIACAAADyglAAAZTi4CAAWAAygAgAQEABglAAAXnC4IgAUACAAiCAIJACoJAwotDgQKASIAA4BMAAQOKgMEBSQCAAUAAA9oJQAAFhYAIgwCCQAqCSoKLQsKBQ0iAASATQAJJAIACQAAD4slAAAZTi4CAAiAAygAgAQEABglAAAXnC4IgAUACQAiCQIKACoKBAstDgULLQ4JBy0KAyojAAALwygAgAQEeAANAAAAgASAAyQAgAMAAA/mKgEAAQX3ofOvpa3UyjwEAgEmKgEAAQW+Hj//PqT2+jwEAgEmKgEAAQUxdnHEg87uxjwEAgEmJQAAD74cCgIFACsCAAYAAAAAAAAAAAEAAAAAAAAAAAQqBQYHLQgBBScCBgQEAAgBBgEnAwUEAQAiBQIGLQoGCC4MgEYACAAiCAIILgyARgAIACIIAgguDIBGAAgtCAEGJwIIBAUACAEIAScDBgQBACIGAggtCggJLgyARgAJACIJAgkuDIBGAAkAIgkCCS4MgEYACQAiCQIJLQ4HCS0IAQcAAAECAS0OBQctCAEFAAABAgEtDgYFLQgBBgAAAQIBLgyARQAGLQgBCAAAAQIBLgyARAAILQsBCQAiCQIJLQ4JAS4IgEUABCMAABD4DSIABIBKAAkkAgAJAAAReCMAABENJAIAAwAAERojAAARTCcCAQQJLQgACS0KBwotCgULLQoGDC0KCA0uCIBJAA4ACAABACUAABgqLQIAACMAABFMJwICBAktCAAJLQoHCi0KBQstCgYMLQoIDQAIAAIAJQAAFygtAgAALQoKASYMKgQCCSQCAAkAABGKIwAAEcgAIgECCgAqCgQLLQsLCScCCgQLLQgACy0KBwwtCgUNLQoGDi0KCA8tCgkQAAgACgAlAAAYKi0CAAAjAAARyAEiAASASAAJLQoJBCMAABD4KgEAAQUC3G4ngHYSnTwEAgEmJQAAD74tCAEGJwIHBBgACAEHAScDBgQBACIGAgcnAggEFwAqCAcILQoHCQwqCQgKFgoKCiQCAAoAABI3LgyARgAJACIJAgkjAAASFi0IAQcAAAECAS0OBgcuCIBFAAUjAAASTw0iAAWATQABJAIAAQAAEmkjAAASZC0LBwEmHAoFAQAAKgQBAi8KAAIAAS0LBwIuAgACgAMoAIAEBAAYJQAAF5wuCIAFAAMAIgMCBgAqBgUILQ4BCC0OAwcBIgAFgEgAAS0KAQUjAAASTyUAAA++LQgBBgAAAQIBLQ4EBi4IgEUABSMAABLVDSIABYBNAAMkAgADAAAS7yMAABLqLQsGASYtCwEDLQsCBA0iAASATQAHJAIABwAAEwwlAAAZTgAiAwIIACoIBAktCwkHASIABIBIAAgOKgQICSQCAAkAABM0JQAAFhYtDgMBLQ4IAi0LBgMuAgADgAMoAIAEBAAYJQAAF5wuCIAFAAQAIgQCCAAqCAUJLQ4HCS0OBAYBIgAFgEgAAy0KAwUjAAAS1SUAAA++ASIAAoBMAAQOKgIEBSQCAAUAABOaJQAAFhYNKIBNAAQABQsiAAWARAAEJAIABAAAE7clAAAZYC0IAQQnAgUEDAAIAQUBJwMEBAEAIgQCBScCBgQLACoGBQYtCgUHDCoHBggWCggIJAIACAAAE/4uDIBGAAcAIgcCByMAABPdLQgBBQAAAQIBLQ4EBS4IgEUAAyMAABQWDSIAA4BMAAQkAgAEAAAUMCMAABQrLQsFASYAKgMCBA4qAwQGJAIABgAAFEclAAAWFg0iAASATQAGJAIABgAAFFwlAAAZTgAiAQIHACoHBAgtCwgGLQsFBC4CAASAAygAgAQEAAwlAAAXnC4IgAUABwAiBwIIACoIAwktDgYJLQ4HBQEiAAOASAAELQoEAyMAABQWJQAAD74BIgABgEgAAy0LAwIBIgABgEoABC0LBAMcCgMFBhwKBQQAHAoEAwYBIgABgEMABS0LBQQBIgABgEsABi0LBgUcCgUHBhwKBwYAHAoGBQYnAgYEBQAqAQYILQsIBxwKBwgGHAoIBgAcCgYHBicCBgQGACoBBgktCwkIHAoICQYcCgkGABwKBggGJwIGBAcAKgEGCi0LCgkcCgkKBhwKCgYAHAoGCQYnAgYECAAqAQYLLQsLChwKCgsGHAoLBgAcCgYKBicCBgQJACoBBgwtCwwLHAoLDAYcCgwGABwKBgsGJwIGBAoAKgEGDS0LDQwcCgwNBRwKDQYAHAoGDAUBIgABgEwADS0LDQYcCgYNAhwKDQEAHAoBBgItCgIBLQoDAi0KBAMtCgUELQoHBS0KCQctCgsJLQoGCy0KCAYtCgoILQoMCiYqAQABBVVFTwUJdio6PAQCASYqAQABBYFkm2itHhyEPAQCASYqAQABBUWnynEZQeQVPAQCASYlAAAPvi0IAQQAAAECAS4MgEkABCcCBgQCJwIHAQEtCAEFJwIIBCEACAEIAScDBQQBACIFAggnAgkEIEMDqgACAAYACQAHAAgnAgoEIC4CAAiAAy4CAAqABCUAABlyJwICBCEnAgYEIC4IgEgAAyMAABabDCoDAgckAgAHAAAWsiMAABatLQsEASYtCwQHBCoHBwgCKgYDBw4qAwYJJAIACQAAFtIlAAAZ8gwqBwYJJAIACQAAFuQlAAAZTgAiBQIKACoKBwstCwsJHAoJBwAEKggBCQQqBwkKAyiASQAHAAkEKgkIBwAqCgcILQ4IBAEiAAOASAAHLQoHAyMAABabJQAAD74tCwQFCyIABYBEAAYkAgAGAAAXSicCBwQAPAYHAScCBQQGLQgABi0KAQctCgIILQoDCS0KBAoACAAFACUAABoELQIAAC0LAQUtCwIGLQsDBy0OBQEtDgYCLQ4HAy4MgEcABAEiAAaASAACLQsCASYuAYADgAYLAIAGAAKAByQAgAcAABe3IwAAF8IuAIADgAUjAAAYKS4AAAGABQEAAAGABAABAQCAA4AEgAkuAIADgAouAIAFgAsLAIAKgAmADCQAgAwAABgVLgGACoAILgSACIALAQCACgACgAoBAIALAAKACyMAABfkKAGABQQAAQMAgAYAAoAGIwAAGCkmJQAAD74tCwQGCyIABoBEAAckAgAHAAAYTCcCCAQAPAYIAS0LAwYLIgAGgEMAByQCAAcAABjfIwAAGGUtCwMGLQsBBy0LAggtCwQJDSIABoBDAAokAgAKAAAYiiUAABlOLgIAB4ADKACABAQABCUAABecLgiABQAKACIKAgsAKgsGDC0OBQwBIgAGgEgABQ4qBgUHJAIABwAAGMolAAAWFi0OCgEtDggCLQ4FAy0OCQQjAAAZTScCBgQHLQgABy0KAQgtCgIJLQoDCi0KBAsACAAGACUAABoELQIAAC0LAQYtCwIHLQsECC4CAAaAAygAgAQEAAQlAAAXnC4IgAUACQEiAAmASAAKLQ4FCi0OCQEtDgcCLgyASAADLQ4IBCMAABlNJioBAAEFxWvEWg4QAAI8BAIBJioBAAEF9C7lhLv0IdE8BAIBJigAgAYEAAIHAIAEgAaABS4AgASACCgAgAkEAAANAIAJgAWAChcAgAqACiQAgAoAABnxAwCACAACgAgBAIADgAmACy4BgAuABgEAgAOACIALLgGAC4AHAQCAA4AJgAsuBIAHgAsBAIADgAiACy4EgAaACwEAgAkAAoAJIwAAGY4mKgEAAQUohpKwR9z9QzwEAgEmJQAAD74uCIBFAAUjAAAaFA0iAAWAQwAGJAIABgAAGn8jAAAaKS0LAgUtCwUGACIGAgYtDgYFLQgBBicCBwQFAAgBBwEnAwYEAQAiBQIHJwIIBAQAIgYCCT8PAAcACS0LAQUtCwMHLQsECC0OBQEtDgYCLQ4HAy0OCAQmLQsDBgwqBQYHJAIABwAAGpUjAAAbAS0LAgYAIgYCCAAqCAUJLQsJBy0LAQgAIggCCgAqCgULLQsLCQAqBwkKLQsDBy0LBAkuAgAGgAMoAIAEBAAFJQAAF5wuCIAFAAsAIgsCDAAqDAUNLQ4KDS0OCAEtDgsCLQ4HAy0OCQQjAAAbAQEiAAWASAAGLQoGBSMAABoU", + "debug_symbols": "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", + "brillig_names": [ + "refund_public" + ] + }, + { + "name": "sync_private_state", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [], + "return_type": null, + "error_types": { + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "sync_private_state" + ] + } + ], + "outputs": { + "globals": { + "notes": [ + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "string", + "value": "UintNote" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "value", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + }, + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "string", + "value": "UintNote" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "value", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + }, + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "kind": "string", + "value": "HTLC_Private" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + } + ], + "storage": [ + { + "fields": [ + { + "name": "contract_name", + "value": { + "kind": "string", + "value": "Token" + } + }, + { + "name": "fields", + "value": { + "fields": [ + { + "name": "admin", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + } + ], + "kind": "struct" + } + }, + { + "name": "minters", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ], + "kind": "struct" + } + }, + { + "name": "balances", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ], + "kind": "struct" + } + }, + { + "name": "total_supply", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ], + "kind": "struct" + } + }, + { + "name": "public_balances", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ], + "kind": "struct" + } + }, + { + "name": "symbol", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000006" + } + } + ], + "kind": "struct" + } + }, + { + "name": "name", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000008" + } + } + ], + "kind": "struct" + } + }, + { + "name": "decimals", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "000000000000000000000000000000000000000000000000000000000000000a" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + }, + { + "fields": [ + { + "name": "contract_name", + "value": { + "kind": "string", + "value": "Train" + } + }, + { + "name": "fields", + "value": { + "fields": [ + { + "name": "contracts_private", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + } + ], + "kind": "struct" + } + }, + { + "name": "contracts_public", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ] + }, + "structs": { + "functions": [ + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ], + "kind": "struct", + "path": "Train::add_lock_private_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::add_lock_private_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ], + "kind": "struct", + "path": "Train::add_lock_public_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::add_lock_public_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + }, + { + "name": "randomness", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::commit_private_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::commit_private_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + }, + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ], + "kind": "struct", + "path": "Train::commit_public_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::commit_public_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [], + "kind": "struct", + "path": "Train::constructor_parameters" + } + } + ], + "kind": "struct", + "path": "Train::constructor_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "key", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::get_htlc_public_parameters" + } + }, + { + "name": "return_type", + "type": { + "fields": [ + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "claimed", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + ], + "kind": "struct", + "path": "Train::HTLC_Public" + } + } + ], + "kind": "struct", + "path": "Train::get_htlc_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::is_contract_initialized_parameters" + } + }, + { + "name": "return_type", + "type": { + "kind": "boolean" + } + } + ], + "kind": "struct", + "path": "Train::is_contract_initialized_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "randomness", + "type": { + "kind": "field" + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + } + ], + "kind": "struct", + "path": "Train::lock_private_solver_parameters" + } + } + ], + "kind": "struct", + "path": "Train::lock_private_solver_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "ownership_hash", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + } + ], + "kind": "struct", + "path": "Train::lock_public_solver_parameters" + } + } + ], + "kind": "struct", + "path": "Train::lock_public_solver_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "message_ciphertext", + "type": { + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 17, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" + } + }, + { + "name": "message_context", + "type": { + "fields": [ + { + "name": "tx_hash", + "type": { + "kind": "field" + } + }, + { + "name": "unique_note_hashes_in_tx", + "type": { + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 64, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" + } + }, + { + "name": "first_nullifier_in_tx", + "type": { + "kind": "field" + } + }, + { + "name": "recipient", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + } + ], + "kind": "struct", + "path": "aztec::messages::processing::message_context::MessageContext" + } + } + ], + "kind": "struct", + "path": "Train::process_message_parameters" + } + } + ], + "kind": "struct", + "path": "Train::process_message_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_key_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_key_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ], + "kind": "struct", + "path": "Train::redeem_private_parameters" + } + } + ], + "kind": "struct", + "path": "Train::redeem_private_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "secret", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "ownership_key", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + } + ], + "kind": "struct", + "path": "Train::redeem_public_parameters" + } + } + ], + "kind": "struct", + "path": "Train::redeem_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::refund_private_parameters" + } + } + ], + "kind": "struct", + "path": "Train::refund_private_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::refund_public_parameters" + } + } + ], + "kind": "struct", + "path": "Train::refund_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [], + "kind": "struct", + "path": "Train::sync_private_state_parameters" + } + } + ], + "kind": "struct", + "path": "Train::sync_private_state_abi" + } + ] + } + }, + "file_map": { + "101": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", + "source": "use crate::{\n macros::{\n authwits::AUTHWIT_TYPES,\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::{generate_note_export, NOTES},\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n },\n messages::discovery::private_notes::MAX_NOTE_PACKED_LEN,\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n let contract_library_method_compute_note_hash_and_nullifier =\n generate_contract_library_method_compute_note_hash_and_nullifier();\n let note_exports = generate_note_exports();\n let public_dispatch = generate_public_dispatch(m);\n let sync_private_state = generate_sync_private_state();\n let process_message = generate_process_message();\n generate_authwit_exports();\n\n quote {\n $note_exports\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n let notes = NOTES.entries();\n\n if notes.len() > 0 {\n let max_note_packed_len = notes.fold(\n 0,\n |acc, (_, (_, len, _, _)): (Type, (TypeDefinition, u32, Field, [(Quoted, u32, bool)]))| {\n if len > acc {\n len\n } else {\n acc\n }\n },\n );\n\n if max_note_packed_len > MAX_NOTE_PACKED_LEN {\n panic(\n f\"One of the notes has packed len {max_note_packed_len} but the maximum is {MAX_NOTE_PACKED_LEN}\",\n );\n }\n\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..notes.len() {\n let (typ, (_, packed_note_length, _, _)) = notes[i];\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable<_> },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret it's raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = $packed_note_length;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_authwit_exports() {\n let authwits = AUTHWIT_TYPES.values();\n authwits.for_each(|(s): TypeDefinition| { s.add_attribute(\"abi(authwits)\"); });\n}\n\ncomptime fn generate_note_exports() -> Quoted {\n let notes = NOTES.values();\n // Second value in each tuple is `note_packed_len` and that is ignored here because it's only used when\n // generating partial note helper functions.\n notes\n .map(|(s, _, note_type_id, fields): (TypeDefinition, u32, Field, [(Quoted, u32, bool)])| {\n generate_note_export(s, note_type_id, fields)\n })\n .join(quote {})\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" + }, + "102": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", + "source": "use super::utils::{compute_fn_selector, size_in_fields};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let mut parameters_size = 0;\n for param in parameters {\n parameters_size += size_in_fields(param.1);\n }\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $parameters_size] = dep::aztec::context::public_context::calldata_copy(1, $parameters_size);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[public]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" + }, + "105": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", + "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n size_in_fields,\n};\nuse std::meta::{type_of, unquote};\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n let is_void = f.return_type() == type_of(());\n\n if is_fn_private(f) {\n if is_static_call {\n if is_void {\n create_private_static_void_stub(f)\n } else {\n create_private_static_stub(f)\n }\n } else {\n if is_void {\n create_private_void_stub(f)\n } else {\n create_private_stub(f)\n }\n }\n } else if is_fn_public(f) {\n if is_static_call {\n if is_void {\n create_public_static_void_stub(f)\n } else {\n create_public_static_stub(f)\n }\n } else {\n if is_void {\n create_public_void_stub(f)\n } else {\n create_public_stub(f)\n }\n }\n } else {\n if is_void {\n create_utility_void_stub(f)\n } else {\n create_utility_stub(f)\n }\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_private_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" + }, + "106": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" + }, + "109": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", + "source": "use crate::macros::{\n functions::{abi_export::create_fn_abi_export, call_interface_stubs::stub_fn, stub_registry},\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_noinitcheck, get_fn_visibility, is_fn_contract_library_method,\n is_fn_initializer, is_fn_internal, is_fn_private, is_fn_public, is_fn_test, is_fn_utility,\n is_fn_view, modify_fn_body, module_has_initializer, module_has_storage,\n },\n};\nuse protocol_types::meta::generate_serialize_to_fields;\nuse std::meta::type_of;\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[private] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n let to_prepend = quote {\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n\n fn_abi\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[public] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n let args_len = original_params\n .map(|(name, typ): (Quoted, Type)| {\n generate_serialize_to_fields(name, typ, false).0.len()\n })\n .fold(0, |acc: u32, val: u32| acc + val);\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len] = dep::aztec::context::public_context::calldata_copy(1, $args_len);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n\n fn_abi\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Check if function is marked as unconstrained\n if !f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[utility] but not marked as unconstrained, add unconstrained keyword\",\n );\n }\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // Inject context creation, storage initialization, and message discovery call at the beginning of the function\n // body.\n let to_prepend = quote {\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n\n fn_abi\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call == true, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + }, + "111": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", + "source": "use crate::{macros::utils::AsStrQuote, note::note_getter_options::PropertySelector};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse protocol_types::meta::{derive_packable_and_get_packed_len, generate_serialize_to_fields};\nuse std::{\n collections::umap::UHashMap,\n hash::{BuildHasherDefault, Hash, Hasher},\n meta::{type_of, unquote},\n};\n\n/// A map from note type to (note_struct_definition, note_packed_len, note_type_id, fields).\n/// `fields` is an array of tuples where each tuple contains the name of the field/struct member (e.g. `amount`\n/// in `TokenNote`), the index of where the packed member starts in the packed note and a flag indicating\n/// whether the field is nullable or not.\npub comptime mut global NOTES: UHashMap> =\n UHashMap::default();\n\npub comptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < 128 as u32,\n \"A contract can contain at most 128 different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates a quote that implements `Packable` for a given struct `s`.\n/// If the note struct already implements `Packable`, we return an empty quote.\ncomptime fn derive_packable_if_not_implemented_and_get_len(s: TypeDefinition) -> (Quoted, u32) {\n // We try to get the packed length of the note struct. If it does not implement `Packable`, we get Option::none()\n let packed_len_typ = std::meta::typ::fresh_type_variable();\n // We don't care about the result of the implements check. We just want the get the packed length.\n let _ = s.as_type().implements(\n quote { crate::protocol_types::traits::Packable<$packed_len_typ> }.as_trait_constraint(),\n );\n let maybe_packed_length = packed_len_typ.as_constant();\n\n if maybe_packed_length.is_some() {\n // We got some packed length meaning that the note struct implements `Packable`. For this reason we return\n // an empty quote for the implementation and the packed length.\n (quote {}, maybe_packed_length.unwrap())\n } else {\n // We didn't manage to get the packed length which means the note struct doesn't implement `Packable`\n // so we derive it and return it along with the packed length.\n derive_packable_and_get_packed_len(s)\n }\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_interface(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::utils::arrays::array_concat(aztec::protocol_types::traits::Packable::pack(self), [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::prelude::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates note export for a given note struct `s`. The export is a global variable that contains note type id,\n/// note name and information about note fields (field name, index and whether the field is nullable or not).\n///\n/// Example:\n/// ```\n/// struct TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField,\n/// owner: aztec::note::note_field::NoteField\n/// }\n///\n/// #[abi(notes)]\n/// global TokenNote_EXPORTS_5695262104: (Field, str<8>, TokenNoteFields_5695262104) = (\n/// 0,\n/// \"TokenNote\",\n/// TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField { index: 0, nullable: false },\n/// owner: aztec::note::note_field::NoteField { index: 1, nullable: false }\n/// }\n/// );\n///\n/// Randomly looking value at the end of the export name is generated by hashing the note struct type and is included\n/// to prevent naming collisions in case there are multiple notes with the same name imported in a contract.\npub(crate) comptime fn generate_note_export(\n s: TypeDefinition,\n note_type_id: Field,\n fields: [(Quoted, u32, bool)],\n) -> Quoted {\n let name = s.name();\n let mut hasher = Poseidon2Hasher::default();\n s.as_type().hash(&mut hasher);\n let hash = hasher.finish() as u32;\n let global_export_name = f\"{name}_EXPORTS_{hash}\".quoted_contents();\n let note_fields_name = f\"{name}Fields_{hash}\".quoted_contents();\n let (note_name_as_str, _) = name.as_str_quote();\n let note_name_str_len = unquote!(quote { $note_name_as_str.as_bytes().len() });\n\n let mut note_fields = &[];\n let mut note_field_constructors = &[];\n for field in fields {\n let (name, index, nullable) = field;\n note_fields = note_fields.push_back(quote { $name: aztec::note::note_field::NoteField });\n note_field_constructors = note_field_constructors.push_back(\n quote { $name: aztec::note::note_field::NoteField { index: $index, nullable: $nullable }},\n );\n }\n\n let note_fields = note_fields.join(quote {,});\n let note_field_constructors = note_field_constructors.join(quote {,});\n\n quote {\n pub struct $note_fields_name {\n pub $note_fields\n }\n\n #[abi(notes)]\n global $global_export_name: (Field, str<$note_name_str_len>, $note_fields_name) = ($note_type_id, $note_name_as_str, $note_fields_name { $note_field_constructors });\n }\n}\n\n/// Registers a note struct `note` with the given `note_packed_len`, `note_type_id`, `fixed_fields` and\n/// `nullable_fields` in the global `NOTES` map.\ncomptime fn register_note(\n note: TypeDefinition,\n note_packed_len: u32,\n note_type_id: Field,\n fixed_fields: [(Quoted, Type, u32)],\n nullable_fields: [(Quoted, Type, u32)],\n) {\n let mut fields = &[];\n for field in fixed_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, false));\n }\n for field in nullable_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, true));\n }\n\n NOTES.insert(note.as_type(), (note, note_packed_len, note_type_id, fields));\n}\n\n/// Separates note struct members into fixed and nullable ones. It also stores the index of where each struct member\n/// starts in the serialized note. Note that each struct member can occupy multiple fields (as in Field type).\ncomptime fn index_note_fields(\n s: TypeDefinition,\n nullable_fields: [Quoted],\n) -> ([(Quoted, Type, u32)], [(Quoted, Type, u32)]) {\n let mut indexed_fixed_fields: [(Quoted, Type, u32)] = &[];\n let mut indexed_nullable_fields = &[];\n let mut counter: u32 = 0;\n for field in s.fields_as_written() {\n let (name, typ, _) = field;\n if nullable_fields.all(|field| field != name) {\n indexed_fixed_fields = indexed_fixed_fields.push_back((name, typ, counter));\n } else {\n indexed_nullable_fields = indexed_nullable_fields.push_back((name, typ, counter));\n }\n let (serialization_fields, _) = generate_serialize_to_fields(name, typ, true);\n // Each struct member can occupy multiple fields so we need to increment the counter accordingly\n counter += serialization_fields.len();\n }\n (indexed_fixed_fields, indexed_nullable_fields)\n}\n\n/// Generates the following:\n/// - NoteTypeProperties\n/// - NoteType trait implementation\n/// - NoteHash trait implementation\n/// - Packable implementation\n///\n/// Registers the note in the global `NOTES` map.\n///\n/// For more details on the generated code, see the individual functions.\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_interface_impl = generate_note_interface(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n quote {\n $note_properties\n $note_interface_impl\n $note_hash_impl\n $packable_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - Packable implementation: Enables serialization/deserialization of the note\n///\n/// # Registration\n/// Registers the note in the global `NOTES` map with:\n/// - Note type ID\n/// - Packed length\n/// - Field indices and nullability\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n let note_type_id = get_next_note_type_id();\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n let note_properties = generate_note_properties(s);\n let note_interface_impl = generate_note_interface(s, note_type_id);\n\n quote {\n $note_properties\n $note_interface_impl\n $packable_impl\n }\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n assert(\n has_owner,\n \"Note must have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" + }, + "112": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", + "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields =\n storage_layout_fields.push_back(quote { pub $name: dep::aztec::prelude::Storable });\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::prelude::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" + }, + "114": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", + "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" + }, + "115": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", + "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" + }, + "116": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", + "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" + }, + "117": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", + "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n prelude::AztecAddress,\n utils::array,\n};\nuse protocol_types::{\n constants::GENERATOR_INDEX__EVENT_COMMITMENT, hash::poseidon2_hash_with_separator_bounded_vec,\n traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private_log` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" + }, + "118": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", + "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" + }, + "119": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", + "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" + }, + "12": { + "path": "std/convert.nr", + "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n quote { Field },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n impls.join(quote {})\n}\n" + }, + "120": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", + "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" + }, + "121": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", + "source": "use dep::protocol_types::{\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n prelude::AztecAddress,\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign, point_to_bytes},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> [u8; 32] {\n let rand1: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY,\n );\n let rand2: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY_2,\n );\n let rand1_bytes: [u8; 16] = rand1.to_le_bytes();\n let rand2_bytes: [u8; 16] = rand2.to_le_bytes();\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n bytes[i] = rand1_bytes[i];\n bytes[i + 1] = rand2_bytes[i];\n }\n bytes\n}\n\n// TODO(#10537): Consider nuking this function.\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> [u8; 32] {\n let shared_secret_bytes: [u8; 32] = point_to_bytes(shared_secret);\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret_bytes.len() {\n shared_secret_bytes_with_separator[i] = shared_secret_bytes[i];\n }\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256::digest(shared_secret_bytes_with_separator)\n}\n\nfn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret: Point,\n randomness_extraction_fn: fn(Point) -> [u8; 32],\n) -> ([u8; 16], [u8; 16]) {\n let random_256_bits = randomness_extraction_fn(shared_secret);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n (sym_key, iv)\n}\n\n// TODO(#10537): Consider nuking this function.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256,\n )\n}\n\n// TODO(#10537): This function is currently unused. Consider using it instead of the sha256 one.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2,\n )\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PLAINTEXT_LEN],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, iv, sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PLAINTEXT_LEN * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n // TODO: consider nuking the header altogether and just have a fixed-size ciphertext by padding the plaintext.\n // This would be more costly constraint-wise but cheaper DA-wise.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // TODO: this is insecure and wasteful:\n // \"Insecure\", because the esk shouldn't be used twice (once for the header,\n // and again for the proper ciphertext) (at least, I never got the\n // \"go ahead\" that this would be safe, unfortunately).\n // \"Wasteful\", because the exact same computation is happening further down.\n // I'm leaving that 2nd computation where it is, because this 1st computation\n // will be imminently deleted, when the header logic is deleted.\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, iv, sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret and symmetric key\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext = aes128_decrypt_oracle(header_ciphertext_bvec, iv, sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, iv, sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let mut env = TestEnvironment::new();\n // Advance 1 block so we can read historic state from private\n env.advance_block_by(1);\n\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"getSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(decrypted, plaintext_bvec, \"Decrypted bytes should match original plaintext\");\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n }\n}\n" + }, + "128": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", + "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PRIVATE_NOTE_MSG_TYPE_ID,\n )\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content: [Field; N + 1] = std::mem::zeroed();\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, sender, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient, sender);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" + }, + "129": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", + "source": "use crate::{\n oracle::notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n prelude::AztecAddress,\n};\n\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(indexed_tagging_secret);\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, sender, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" + }, + "137": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", + "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" + }, + "142": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", + "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" + }, + "144": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", + "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" + }, + "147": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" + }, + "150": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", + "source": "use protocol_types::traits::Serialize;\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" + }, + "152": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr", + "source": "use crate::{note::note_metadata::NoteMetadata, utils::array::subarray::subarray};\nuse protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n};\n\n// Number of fields a RetrievedNote adds to the packed or serialized representation of a note\n// +1 for the contract address\n// +2 for the note metadata\npub global RETRIEVED_NOTE_OVERHEAD: u32 = 1 + 2;\n\n/// A container of a note and the metadata required to prove its existence, regardless of whether the note is\n/// pending (created in the current transaction) or settled (created in a previous transaction).\n#[derive(Eq)]\npub struct RetrievedNote {\n pub note: NOTE,\n pub contract_address: AztecAddress,\n pub metadata: NoteMetadata,\n}\n\nimpl Serialize for RetrievedNote\nwhere\n NOTE: Serialize,\n{\n fn serialize(self) -> [Field; N + RETRIEVED_NOTE_OVERHEAD] {\n array_concat(\n array_concat(self.note.serialize(), [self.contract_address.to_field()]),\n self.metadata.serialize(),\n )\n }\n}\n\n// This function is not part of the Packable trait implementation because in the case of the retrieved note, the pack\n// functionality resides in TS (oracle.ts and txe_service.ts).\npub fn unpack_retrieved_note(\n packed_retrieved_note: [Field; N + RETRIEVED_NOTE_OVERHEAD],\n) -> RetrievedNote\nwhere\n NOTE: Packable,\n{\n let contract_address = AztecAddress::from_field(packed_retrieved_note[0]);\n let note_nonce = packed_retrieved_note[1];\n let nonzero_note_hash_counter = (packed_retrieved_note[2] as u1) != 0;\n\n let packed_note = subarray(packed_retrieved_note, RETRIEVED_NOTE_OVERHEAD);\n let note = NOTE::unpack(packed_note);\n\n RetrievedNote {\n note,\n contract_address,\n metadata: NoteMetadata::from_raw_data(nonzero_note_hash_counter, note_nonce),\n }\n}\n" + }, + "153": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullify(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullify_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullify`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullify_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify = compute_note_hash_for_nullify(retrieved_note, storage_slot);\n let inner_nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" + }, + "157": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + }, + "158": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", + "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle::(contract_address, slot, N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(storeCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(loadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(deleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(copyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n unconstrained fn setup() -> AztecAddress {\n let env = TestEnvironment::new();\n env.contract_address()\n }\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let contract_address = setup();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let contract_address = setup();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let contract_address = setup();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let contract_address = setup();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let contract_address = setup();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let contract_address = setup();\n\n copy(contract_address, SLOT, SLOT, 1);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n }\n}\n" + }, + "159": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(notifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" + }, + "16": { + "path": "std/embedded_curve_ops.nr", + "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2)[0]\n}\n" + }, + "160": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" + }, + "161": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", + "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(storeInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(loadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" + }, + "162": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", + "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" + }, + "166": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", + "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" + }, + "167": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", + "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" + }, + "168": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" + }, + "17": { + "path": "std/field/bn254.nr", + "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n" + }, + "170": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", + "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(fetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(validateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(bulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" + }, + "172": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", + "source": "use crate::note::{\n note_interface::NoteType,\n retrieved_note::{RETRIEVED_NOTE_OVERHEAD, RetrievedNote, unpack_retrieved_note},\n};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(notifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> {}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MAX_NOTES]\nwhere\n Note: NoteType + Packable,\n{\n // N + 3 because of the contract address, note nonce, and note_hash_counter that are stored out of the packed note.\n let packed_retrieved_notes: BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> = get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MAX_NOTES,\n NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD,\n );\n\n let mut notes = BoundedVec::<_, MAX_NOTES>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = unpack_retrieved_note(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MAX_NOTES];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n" + }, + "174": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", + "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" + }, + "175": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", + "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(getSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" + }, + "177": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", + "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" + }, + "179": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", + "source": "use crate::state_vars::storage::Storage;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because nothing is stored at said slot: it is only\n// used to derive the storage slots of nested state variables, which is expected to never result in collisions or slots\n// being close to one another due to these being hashes. This mirrors the strategy adopted by Solidity mappings.\nimpl Storage<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" + }, + "18": { + "path": "std/field/mod.nr", + "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" + }, + "181": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", + "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl Storage<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" + }, + "190": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable.nr", + "source": "use dep::protocol_types::{\n shared_mutable::{\n ScheduledDelayChange,\n ScheduledValueChange,\n shared_mutable_values::{unpack_delay_change, unpack_value_change},\n SharedMutableValues,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::Storage,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct SharedMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl Storage for SharedMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// SharedMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl SharedMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(\n self,\n new_value: T,\n ) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`SharedMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private shared mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(SharedMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let timestamp_horizon =\n value_change.get_timestamp_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the timestamp horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(timestamp_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: SharedMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let smv: SharedMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n smv.svc.get_current_at(current_timestamp)\n }\n}\n" + }, + "202": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", + "source": "/// Appends two `BoundedVec`s together, returning one that contains all of the elements of the first one followed by all\n/// of the elements of the second one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" + }, + "205": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", + "source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(\n src: [T; SRC_LEN],\n offset: u32,\n) -> [T; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"DST_LEN too large for offset\");\n\n let mut dst: [T; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + }, + "206": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", + "source": "use crate::utils::array;\n\n/// Returns `DST_MAX_LEN` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DST_LEN` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DST_LEN` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" + }, + "208": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", + "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" + }, + "209": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", + "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" + }, + "211": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", + "source": "use std::option::Option;\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\npub unconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\n// Returns (false, 0) if there is no square root.\n// Returns (true, sqrt) if there is a square root.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nfn test_sqrt() {\n let x = 9;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_some());\n let sqrt = maybe_sqrt.unwrap_unchecked();\n assert((sqrt == 3) | (sqrt == -3));\n}\n\n#[test]\nfn test_non_square() {\n let x = 5;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_none());\n}\n\n#[test]\nunconstrained fn test_known_non_residue_is_actually_a_non_residue_in_the_field() {\n assert(!is_square(KNOWN_NON_RESIDUE));\n}\n\n#[test]\nfn test_sqrt_0() {\n let x = 0;\n let sqrt = sqrt(x).unwrap();\n assert(sqrt == 0);\n}\n\n#[test]\nfn test_sqrt_1() {\n let x = 1;\n let sqrt = sqrt(x).unwrap();\n assert((sqrt == 1) | (sqrt == -1));\n}\n\n#[test(should_fail_with = \"The claimed_sqrt 0x04 is not the sqrt of x 0x09\")]\nfn test_bad_sqrt_hint_fails() {\n validate_sqrt_hint(9, 4);\n}\n\n#[test(should_fail_with = \"The hint 0x04 does not demonstrate that 0x0a is not a square\")]\nfn test_bad_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(10, 4);\n}\n\n#[test(should_fail_with = \"0 has a square root; you cannot claim it is not square\")]\nfn test_0_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test]\nunconstrained fn test_is_square() {\n assert(is_square(25));\n}\n\n#[test]\nunconstrained fn test_is_not_square() {\n assert(!is_square(10));\n}\n" + }, + "213": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", + "source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\n/// Uses the x coordinate and sign flag (+/-) to reconstruct the point.\n/// The y coordinate can be derived from the x coordinate and the \"sign\" flag by solving the grumpkin curve\n/// equation for y.\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n\n // If y > MOD_DIV_2 and we want positive sign (or vice versa), negate y\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n\n Point { x, y: final_y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign);\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2);\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n}\n" + }, + "214": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", + "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" + }, + "218": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", + "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `N` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `N`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; N],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + N as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n for i in 0..N {\n result[i] = self.packed[i];\n }\n result[N] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; N + 1]) -> Self {\n let mut value_packed: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_packed[i] = packed[i];\n }\n let hash = packed[N];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n oracle::random::random,\n test::{\n helpers::{cheatcodes, test_environment::TestEnvironment},\n mocks::mock_struct::MockStruct,\n },\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::{mem, test::OracleMock};\n\n global storage_slot: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n let result = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n\n // We should get zeroed value\n let expected: MockStruct = mem::zeroed();\n assert_eq(result, expected);\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n // We write the value with hash to storage\n cheatcodes::direct_storage_write(\n env.contract_address(),\n storage_slot,\n value_with_hash.pack(),\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let result = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n\n assert_eq(result, value);\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn test_bad_hint_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n env.advance_block_to(6);\n\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let _ = OracleMock::mock(\"storageRead\")\n .with_params((\n address.to_field(), storage_slot, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should revert because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn test_bad_hint_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value_packed = MockStruct { a: 5, b: 3 }.pack();\n\n // We write the value to storage\n cheatcodes::direct_storage_write(env.contract_address(), storage_slot, value_packed);\n\n // Now we write incorrect hash to the hash storage slot\n let incorrect_hash = random();\n let hash_storage_slot = storage_slot + (value_packed.len() as Field);\n cheatcodes::direct_storage_write(\n env.contract_address(),\n hash_storage_slot,\n [incorrect_hash],\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let _ = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n }\n}\n" + }, + "225": { + "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", + "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" + }, + "243": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", + "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\n\npub struct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n pub inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" + }, + "286": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", + "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n" + }, + "3": { + "path": "std/array/mod.nr", + "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" + }, + "301": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", + "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Empty, Hash},\n};\n\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Eq for PublicDataTreeLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.slot == other.slot)\n & (self.value == other.value)\n & (self.next_slot == other.next_slot)\n & (self.next_index == other.next_index)\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: u32) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" + }, + "303": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", + "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" + }, + "304": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", + "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::{arrays::array_concat, field::{field_from_bytes, field_from_bytes_32_trunc}},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a u128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" + }, + "305": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", + "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" + }, + "314": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", + "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" + }, + "318": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", + "source": "use super::traits::{Deserialize, Packable, Serialize};\n\n/// Returns the typed expression of a trait method implementation.\n///\n/// This helper function is preferred over directly inlining with `$typ::target_method()` in a quote,\n/// as direct inlining would result in missing import warnings in the generated code (specifically,\n/// warnings that the trait implementation is not in scope).\n///\n/// # Note\n/// A copy of this function exists in `aztec-nr/aztec/src/macros/utils.nr`. We maintain separate copies\n/// because importing it there from here would cause the `target_trait` to be interpreted in the context\n/// of this crate, making it impossible to compile code for traits from that crate (e.g. NoteType).\ncomptime fn get_trait_impl_method(\n typ: Type,\n target_trait: Quoted,\n target_method: Quoted,\n) -> TypedExpr {\n let trait_constraint = target_trait.as_trait_constraint();\n typ\n .get_trait_impl(trait_constraint)\n .expect(f\"Could not find impl for {target_trait} for type {typ}\")\n .methods()\n .filter(|m| m.name() == target_method)[0]\n .as_typed_expr()\n}\n\n/// Generates code that deserializes a struct, primitive type, array or string from a field array.\n///\n/// # Parameters\n/// - `name`: The name of the current field being processed, used to identify fields for replacement.\n/// - `typ`: The type of the struct or field being deserialized (e.g., a custom struct, array, or primitive).\n/// - `field_array_name`: The name of the field array containing serialized field data (e.g., `\"values\"`).\n/// - `num_already_consumed`: The number of fields already processed in previous recursion calls.\n/// - `should_unpack`: A boolean indicating whether the type should be unpacked (see description of `Packable`\n/// and `Serialize` trait for more information about the difference between packing and serialization).\n///\n/// # Returns\n/// A tuple containing:\n/// - `Quoted`: A code that deserializes a given struct, primitive type, array, or string from the field array.\n/// - `u32`: The total number of fields consumed during deserialization (used for recursion).\n///\n/// # Nested Struct Example\n/// Given the following setup:\n/// ```\n/// struct UintNote {\n/// value: u128,\n/// owner: AztecAddress,\n/// randomness: Field,\n/// }\n///\n/// struct AztecAddress {\n/// inner: Field,\n/// }\n/// ```\n///\n/// If `UintNote` is the input type, the function will generate the following deserialization code:\n/// ```\n/// UintNote {\n/// value: fields[0] as u128,\n/// owner: AztecAddress {\n/// inner: fields[1],\n/// },\n/// randomness: fields[2],\n/// }\n/// ```\n/// # Nested Struct Example with Unpacking\n/// - given the same setup as above and given that u128, AztecAddress and Field implement the `Packable` trait\n/// the result we get is:\n/// ```\n/// UintNote {\n/// value: aztec::protocol_types::traits::Packable::unpack([fields[0]]),\n/// owner: aztec::protocol_types::traits::Packable::unpack([fields[1]]),\n/// randomness: aztec::protocol_types::traits::Packable::unpack([fields[2]]),\n/// }\n/// ```\n///\n/// # Panics\n/// - If the deserialization logic encounters a type it does not support.\n/// - If an incorrect number of fields are consumed when deserializing a string.\npub comptime fn generate_deserialize_from_fields(\n name: Quoted,\n typ: Type,\n field_array_name: Quoted,\n num_already_consumed: u32,\n should_unpack: bool,\n) -> (Quoted, u32) {\n let mut result = quote {};\n // Counter for the number of fields consumed\n let mut consumed_counter: u32 = 0;\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint = quote { Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_unpack & typ.implements(packable_constraint)) {\n // Unpacking is enabled and the given type implements the `Packable` trait so we call the `unpack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We copy the packed fields into a new array and pass that to the unpack function in a quote\n let mut packed_fields_quotes = &[];\n for i in 0..packed_len {\n let index_in_field_array = i + num_already_consumed;\n packed_fields_quotes =\n packed_fields_quotes.push_back(quote { $field_array_name[$index_in_field_array] });\n }\n let packed_fields = packed_fields_quotes.join(quote {,});\n\n // Now we call unpack on the type\n let unpack_method = get_trait_impl_method(typ, quote { Packable<_> }, quote { unpack });\n result = quote { $unpack_method([ $packed_fields ]) };\n\n consumed_counter = packed_len;\n } else if typ.is_bool() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] != 0 };\n consumed_counter = 1;\n } else if typ.is_field() | typ.as_integer().is_some() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] as $typ };\n consumed_counter = 1;\n } else if typ.as_data_type().is_some() {\n // The field is a struct so we iterate over each struct field and recursively call\n // `generate_deserialize_from_fields`\n let (nested_def, generics) = typ.as_data_type().unwrap();\n let nested_name = nested_def.name();\n let mut deserialized_fields_list = &[];\n\n // Iterate over each field in the struct\n for field in nested_def.fields(generics) {\n let (field_name, field_type, _) = field;\n // Recursively call `generate_deserialize_from_fields` for each field in the struct\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n field_name,\n field_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `value: u128 { lo: fields[0], hi: fields[1] }`\n deserialized_fields_list =\n deserialized_fields_list.push_back(quote { $field_name: $deserialized_field });\n }\n\n // We can construct the struct from the deserialized fields\n let deserialized_fields = deserialized_fields_list.join(quote {,});\n result = quote {\n $nested_name {\n $deserialized_fields\n }\n };\n } else if typ.as_array().is_some() {\n // The field is an array so we iterate over each element and recursively call\n // `generate_deserialize_from_fields`\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n let mut array_fields_list = &[];\n\n // Iterate over each element in the array\n for _ in 0..array_len {\n // Recursively call `generate_deserialize_from_fields` for each element in the array\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n element_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n array_fields_list = array_fields_list.push_back(deserialized_field);\n }\n\n // We can construct the array from the deserialized fields\n let array_fields = array_fields_list.join(quote {,});\n result = quote { [ $array_fields ] };\n } else if typ.as_str().is_some() {\n // The field is a string and we expect each byte of the string to be represented as 1 field in the field\n // array. So we iterate over the string length and deserialize each character as u8 in the recursive call\n // to `generate_deserialize_from_fields`.\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let mut byte_list = &[];\n\n // Iterate over each character in the string\n for _ in 0..str_len {\n // Recursively call `generate_deserialize_from_fields` for each character in the string\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n quote {u8}.as_type(),\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n\n // We should consume just one field in the recursion so we sanity check that\n assert_eq(\n num_consumed_in_recursion,\n 1,\n \"Incorrect number of fields consumed in string deserialization\",\n );\n\n // We increment the consumed counter by 1 as we have consumed one field\n consumed_counter += 1;\n\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `fields[6] as u8`\n byte_list = byte_list.push_back(deserialized_field);\n }\n\n // We construct the string from the deserialized fields\n let bytes = byte_list.join(quote {,});\n result = quote { [ $bytes ].as_str_unchecked() };\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (result, consumed_counter)\n}\n\n/// Generates code that serializes a type into an array of fields. Also generates auxiliary variables if necessary\n/// for serialization. If `should_pack` is true, we check if the type implements the `Packable` trait and pack it\n/// if it does.\n///\n/// # Parameters\n/// - `name`: The base identifier (e.g., `self`, `some_var`).\n/// - `typ`: The type being serialized (e.g., a custom struct, array, or primitive type).\n/// - `should_pack`: A boolean indicating whether the type should be packed.\n///\n/// # Returns\n/// A tuple containing:\n/// - A flattened array of `Quoted` field references representing the serialized fields.\n/// - An array of `Quoted` auxiliary variables needed for serialization, such as byte arrays for strings.\n///\n/// # Examples\n///\n/// ## Struct\n/// Given the following struct:\n/// ```rust\n/// struct MockStruct {\n/// a: Field,\n/// b: Field,\n/// }\n/// ```\n///\n/// Serializing the struct:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_mock_struct }, MockStruct, false)\n/// // Returns:\n/// // ([`my_mock_struct.a`, `my_mock_struct.b`], [])\n/// ```\n///\n/// ## Nested Struct\n/// For a more complex struct:\n/// ```rust\n/// struct NestedStruct {\n/// m1: MockStruct,\n/// m2: MockStruct,\n/// }\n/// ```\n///\n/// Serialization output:\n/// ```rust\n/// generate_serialize_to_fields(quote { self }, NestedStruct, false)\n/// // Returns:\n/// // ([`self.m1.a`, `self.m1.b`, `self.m2.a`, `self.m2.b`], [])\n/// ```\n///\n/// ## Array\n/// For an array type:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_array }, [Field; 3], false)\n/// // Returns:\n/// // ([`my_array[0]`, `my_array[1]`, `my_array[2]`], [])\n/// ```\n///\n/// ## String\n/// For a string field, where each character is serialized as a `Field`:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_string }, StringType, false)\n/// // Returns:\n/// // ([`my_string_as_bytes[0] as Field`, `my_string_as_bytes[1] as Field`, ...],\n/// // [`let my_string_as_bytes = my_string.as_bytes()`])\n/// ```\n///\n/// ## Nested Struct with packing enabled\n/// - u128 has a `Packable` implementation hence it will be packed.\n///\n/// For a more complex struct:\n/// ```rust\n/// struct MyStruct {\n/// value: u128,\n/// value2: Field,\n/// }\n/// ```\n///\n/// # Panics\n/// - If the type is unsupported for serialization.\n/// - If the provided `typ` contains invalid constants or incompatible structures.\npub comptime fn generate_serialize_to_fields(\n name: Quoted,\n typ: Type,\n should_pack: bool,\n) -> ([Quoted], [Quoted]) {\n let mut fields = &[];\n let mut aux_vars = &[];\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint =\n quote { crate::traits::Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_pack & typ.implements(packable_constraint)) {\n // Packing is enabled and the given type implements the `Packable` trait so we call the `pack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We collapse the name to a one that gets tokenized as a single token (e.g. \"self.value\" -> \"self_value\").\n let name_at_one_token = collapse_to_one_token(name);\n let packed_struct_name = f\"{name_at_one_token}_aux_var\".quoted_contents();\n\n // We add the individual fields to the fields array\n let pack_method = get_trait_impl_method(\n typ,\n quote { crate::traits::Packable<$packed_len> },\n quote { pack },\n );\n let packed_struct = quote { let $packed_struct_name = $pack_method($name) };\n for i in 0..packed_len {\n fields = fields.push_back(quote { $packed_struct_name[$i] });\n }\n\n // We add the new auxiliary variable to the aux_vars array\n aux_vars = aux_vars.push_back(packed_struct);\n } else if typ.is_field() {\n // For field we just add the value to fields\n fields = fields.push_back(name);\n } else if typ.as_integer().is_some() | typ.is_bool() {\n // For integer and bool we just cast to Field and add the value to fields\n fields = fields.push_back(quote { $name as Field });\n } else if typ.as_data_type().is_some() {\n // For struct we pref\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n let struct_flattened = params.map(|(param_name, param_type, _)| {\n let maybe_prefixed_name = if name == quote {} {\n // Triggered when the param name is of a value available in the current scope (e.g. a function\n // argument) --> then we don't prefix the name with anything.\n param_name\n } else {\n // Triggered when we want to prefix the param name with the `name` from function input. This\n // can typically be `self` when implementing a method on a struct.\n quote { $name.$param_name }\n };\n generate_serialize_to_fields(quote {$maybe_prefixed_name}, param_type, should_pack)\n });\n let struct_flattened_fields = struct_flattened.fold(\n &[],\n |acc: [Quoted], (fields, _): (_, [Quoted])| acc.append(fields),\n );\n let struct_flattened_aux_vars = struct_flattened.fold(\n &[],\n |acc: [Quoted], (_, aux_vars): ([Quoted], _)| acc.append(aux_vars),\n );\n fields = fields.append(struct_flattened_fields);\n aux_vars = aux_vars.append(struct_flattened_aux_vars);\n } else if typ.as_array().is_some() {\n // For array we recursively call `generate_serialize_to_fields(...)` for each element\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n for i in 0..array_len {\n let (element_fields, element_aux_vars) =\n generate_serialize_to_fields(quote { $name[$i] }, element_type, should_pack);\n fields = fields.append(element_fields);\n aux_vars = aux_vars.append(element_aux_vars);\n }\n } else if typ.as_str().is_some() {\n // For string we convert the value to bytes, we store the `as_bytes` in an auxiliary variables and\n // then we add each byte to fields as a Field\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let as_member = name.as_expr().unwrap().as_member_access();\n let var_name = if as_member.is_some() {\n as_member.unwrap().1\n } else {\n name\n };\n let as_bytes_name = f\"{var_name}_as_bytes\".quoted_contents();\n let as_bytes = quote { let $as_bytes_name = $name.as_bytes() };\n for i in 0..str_len {\n fields = fields.push_back(quote { $as_bytes_name[$i] as Field });\n }\n aux_vars = aux_vars.push_back(as_bytes);\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (fields, aux_vars)\n}\n\n/// From a quote that gets tokenized to a multiple tokens we collapse it to a single token by replacing all `.` with `_`.\n/// E.g. \"self.values[0]\" -> \"self_values_0_\"\ncomptime fn collapse_to_one_token(q: Quoted) -> Quoted {\n let tokens = q.tokens();\n\n let mut single_token = quote {};\n for token in tokens {\n let new_token = if ((token == quote {.}) | (token == quote {[}) | (token == quote {]})) {\n quote {_}\n } else {\n token\n };\n single_token = f\"{single_token}{new_token}\".quoted_contents();\n }\n single_token\n}\n\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, false);\n let aux_vars_for_serialization = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let field_serializations = fields.join(quote {,});\n let serialized_len = fields.len();\n let serialize_trait: TraitConstraint =\n quote { Serialize<$serialized_len> }.as_trait_constraint();\n quote {\n impl $serialize_trait for $typ {\n #[inline_always]\n fn serialize(self) -> [Field; $serialized_len] {\n $aux_vars_for_serialization\n [ $field_serializations ]\n }\n }\n }\n}\n\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, _) = generate_serialize_to_fields(quote { self }, typ, false);\n let serialized_len = fields.len();\n let (deserialized, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { serialized }, 0, false);\n quote {\n impl Deserialize<$serialized_len> for $typ {\n #[inline_always]\n fn deserialize(serialized: [Field; $serialized_len]) -> Self {\n $deserialized\n }\n }\n }\n}\n\n/// Generates `Packable` implementation for a given struct and returns the packed length.\n///\n/// Note: We are having this function separate from `derive_packable` because we use this in the note macros to get\n/// the packed length of a note as well as the `Packable` implementation. We need the length to be able to register\n/// the note in the global `NOTES` map. There the length is used to generate partial note helper functions.\npub comptime fn derive_packable_and_get_packed_len(s: TypeDefinition) -> (Quoted, u32) {\n let packing_enabled = true;\n\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, packing_enabled);\n let aux_vars_for_packing = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let (unpacked, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { packed }, 0, packing_enabled);\n\n let field_packings = fields.join(quote {,});\n let packed_len = fields.len();\n let packable_trait: TraitConstraint = quote { Packable<$packed_len> }.as_trait_constraint();\n (\n quote {\n impl $packable_trait for $typ {\n fn pack(self) -> [Field; $packed_len] {\n $aux_vars_for_packing\n [ $field_packings ]\n }\n\n fn unpack(packed: [Field; $packed_len]) -> Self {\n $unpacked\n }\n }\n },\n packed_len,\n )\n}\n\npub(crate) comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let (packable_impl, _) = derive_packable_and_get_packed_len(s);\n packable_impl\n}\n\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct Smol {\n a: Field,\n b: Field,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct HasArray {\n a: [Field; 2],\n b: bool,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n}\n\nfn main() {\n assert(false);\n}\n\n#[test]\nfn smol_test() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n}\n\n#[test]\nfn has_array_test() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n}\n\n#[test]\nfn fancier_test() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n}\n" + }, + "320": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", + "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n fn pack(self) -> [Field; POINT_LENGTH] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; POINT_LENGTH]) -> Self {\n Self::deserialize(packed)\n }\n}\n" + }, + "321": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", + "source": "use crate::constants::TWO_POW_64;\n\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" + }, + "331": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", + "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] != 0,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] != 0,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] != 0,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] != 0,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n" + }, + "335": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_delay_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_timestamp_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading mutable shared state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" + }, + "337": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_value_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'timestamp horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the timestamp horizon (see `get_timestamp_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the timestamp horizon\n /// computed using the same historical timestamp.\n pub fn get_timestamp_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The timestamp horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the timestamp horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the timestamp horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our timestamp horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp timestamp horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the timestamp horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp timestamp horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical timestamp horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" + }, + "339": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr", + "source": "use crate::{\n hash::poseidon2_hash,\n shared_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// SharedMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct SharedMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl SharedMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n SharedMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * N + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, N + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable<2 * N + 1> for SharedMutableValues\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; 2 * N + 1] {\n let mut result = [0; 2 * N + 1];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; 2 * N + 1]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for SharedMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" + }, + "342": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", + "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" + }, + "356": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", + "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n}\n\nimpl Empty for Option {\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Type Parameters\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// fn serialize(self) -> [Field; N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n #[inline_always]\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// T = type of item in BoundedVec\n// M = max length of BoundedVec\n// O = field length of T\n// O * M + 1 = total serialized length of BoundedVec (the +1 is for length of the BoundedVec)\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n #[inline_always]\n fn deserialize(fields: [Field; O * M + 1]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[O * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; O];\n for j in 0..O {\n nested_fields[j] = fields[i * O + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize<0> for () {\n fn deserialize(_fields: [Field; 0]) -> Self {\n ()\n }\n}\n\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n #[inline_always]\n fn serialize(self) -> [Field; O * M + 1] {\n let mut fields = [0; O * M + 1];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..O {\n fields[i * O + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[O * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Type Parameters\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// fn deserialize(fields: [Field; N]) -> Self {\n/// str::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n #[inline_always]\n fn deserialize(fields: [Field; N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Type Parameters\n/// * `N` - The length of the Field array, known at compile time.\n#[derive_via(derive_packable)]\npub trait Packable {\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" + }, + "361": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", + "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n fn pack(self) -> [Field; BOOL_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; BOOL_PACKED_LEN]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n fn pack(self) -> [Field; U8_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U8_PACKED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n fn pack(self) -> [Field; U16_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U16_PACKED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n fn pack(self) -> [Field; U32_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U32_PACKED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n fn pack(self) -> [Field; U64_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U64_PACKED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n fn pack(self) -> [Field; U128_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U128_PACKED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n fn pack(self) -> [Field; FIELD_PACKED_LEN] {\n [self]\n }\n\n fn unpack(fields: [Field; FIELD_PACKED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n fn pack(self) -> [Field; I8_PACKED_LEN] {\n [self as u8 as Field]\n }\n\n fn unpack(fields: [Field; I8_PACKED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n fn pack(self) -> [Field; I16_PACKED_LEN] {\n [self as u16 as Field]\n }\n\n fn unpack(fields: [Field; I16_PACKED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n fn pack(self) -> [Field; I32_PACKED_LEN] {\n [self as u32 as Field]\n }\n\n fn unpack(fields: [Field; I32_PACKED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n fn pack(self) -> [Field; I64_PACKED_LEN] {\n [self as u64 as Field]\n }\n\n fn unpack(fields: [Field; I64_PACKED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; N]\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].pack();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n\n fn unpack(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" + }, + "362": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", + "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U8_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n fn serialize(self) -> [Field; U16_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n fn deserialize(fields: [Field; U16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n fn serialize(self) -> [Field; U128_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; FIELD_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n fn serialize(self) -> [Field; I8_SERIALIZED_LEN] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n fn deserialize(fields: [Field; I8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n fn serialize(self) -> [Field; I16_SERIALIZED_LEN] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n fn deserialize(fields: [Field; I16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n fn serialize(self) -> [Field; I32_SERIALIZED_LEN] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n fn deserialize(fields: [Field; I32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n fn serialize(self) -> [Field; I64_SERIALIZED_LEN] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n fn deserialize(fields: [Field; I64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; N]\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].serialize();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; N]\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N + 1]) -> Self {\n if fields[0] == 1 {\n let mut value_serialized: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_serialized[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_serialized))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" + }, + "380": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", + "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate. If the element\n// is not found, the function returns N as the index.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays where validate_array(array) returns true,\n// which ensures that:\n// 1. All elements before the first empty element are non-empty\n// 2. All elements after and including the first empty element are empty\n// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn array_concat(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to find the index of the last element in an array, allowing empty elements.\n// e.g. useful for removing trailing 0s from [1, 0, 2, 0, 0, 0] -> [1, 0, 2]\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn find_last_value_index(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut index = N;\n for i in 0..N {\n let j = N - i - 1;\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & !is_empty(array[j]) {\n index = j;\n }\n }\n index\n}\n\n// Routine which returns the length of an array right padded by empty elements\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\n// See smoke_validate_array_trailing for examples.\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn unsafe_padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let index = find_last_value_index(array);\n if index == N {\n 0\n } else {\n index + 1\n }\n}\n\n// Routine which validates that zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\npub fn padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // Safety: this value is constrained in the below loop.\n let length = unsafe { unsafe_padded_array_length(array) };\n // Check the elt just before length is non-zero:\n if length != 0 {\n assert(!is_empty(array[length - 1]), \"invalid right padded array\");\n }\n // Check all beyond length are zero:\n let mut check_zero = false;\n for i in 0..N {\n check_zero |= i == length;\n if check_zero {\n assert(is_empty(array[i]), \"invalid right padded array\");\n }\n }\n length\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test]\nfn smoke_validate_array_trailing() {\n let valid_array: [Field; 0] = [];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [0];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [3];\n assert(padded_array_length(valid_array) == 1);\n\n let valid_array = [1, 0, 3];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 0, 3, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [0, 0, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concatenated = array_concat(array0, array1);\n assert_eq(concatenated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" + }, + "381": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", + "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimised to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" + }, + "383": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", + "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n" + }, + "393": { + "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.1.2/src/sha256.nr", + "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\nmod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n let num_blocks = N / BLOCK_SIZE;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n }\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let (msg_block, _) = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let (new_msg_block, new_msg_byte_ptr) = build_msg_block(msg, message_size, msg_start);\n\n (new_msg_block, new_msg_byte_ptr)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" + }, + "414": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", + "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[custom_note]\n#[derive(Eq, Serialize)]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` from `sender` so that they can\n /// discover the note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n sender: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient, sender);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n array_concat(self.pack(), [storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n array_concat(note_completion_log, padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable},\n utils::arrays::array_concat,\n },\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n let partial_note = PartialUintNote { commitment };\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(\n array_concat(private_log_without_public_tag, public_log_without_tag),\n note.pack(),\n );\n }\n}\n" + }, + "42": { + "path": "std/option.nr", + "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" + }, + "43": { + "path": "std/panic.nr", + "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" + }, + "5": { + "path": "std/cmp.nr", + "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n}\n" + }, + "50": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", + "source": "pub fn bytes_to_u128_limbs(bytes: [u8; 32]) -> (u128, u128) {\n let mut high: u128 = 0;\n let mut low: u128 = 0;\n for i in 0..16 {\n high = (high << 8) + (bytes[i] as u128);\n }\n for i in 16..32 {\n low = (low << 8) + (bytes[i] as u128);\n }\n (high, low)\n}\n\npub fn u128_limbs_to_bytes(high: u128, low: u128) -> [u8; 32] {\n let mut bytes: [u8; 32] = [0; 32];\n\n let mut temp = high;\n for i in 0..16 {\n bytes[15 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n temp = low;\n for i in 0..16 {\n bytes[31 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n bytes\n}\n" + }, + "51": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", + "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n use dep::aztec::messages::logs::note::encode_and_encrypt_note;\n use dep::aztec::protocol_types::traits::{Deserialize, Packable, Serialize};\n use dep::aztec::state_vars::{private_immutable::PrivateImmutable, SharedMutable};\n use dep::sha256;\n use dep::token::Token;\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n use aztec::prelude::{AztecAddress, Map};\n use std::meta::derive;\n\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner, htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(\n htlc_public.src_receiver,\n htlc_public.src_receiver,\n )\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender(), context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(Id: Field) -> bool {\n storage.contracts_private.at(Id).is_initialized()\n }\n\n #[view]\n #[utility]\n unconstrained fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" + }, + "52": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", + "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::prelude::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenCommitted {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable<5> for TokenLockAdded {\n fn pack(self) -> [Field; 5] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; 5]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable<2> for TokenRefunded {\n fn pack(self) -> [Field; 2] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; 2]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable<6> for TokenRedeemed {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenLockedFirst {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable<6> for TokenLockedSecond {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" + }, + "6": { + "path": "std/collections/bounded_vec.nr", + "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n}\n" + }, + "63": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", + "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n use protocol_types::address::AztecAddress;\n\n global SLOT: Field = 1230;\n\n unconstrained fn setup() -> AztecAddress {\n TestEnvironment::new().utility().this_address()\n }\n\n #[test]\n unconstrained fn empty_array() {\n let contract_address = setup();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n }\n\n #[test]\n unconstrained fn array_push() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n }\n\n // TODO: uncomment this test once OracleMock::count is implemented in the stdlib.\n // #[test]\n // unconstrained fn for_each_remove_all_no_copy() {\n // let contract_address = setup();\n // let array = CapsuleArray::at(contract_address, SLOT);\n\n // array.push(4);\n // array.push(5);\n // array.push(6);\n\n // // We test that the copyCapsule was never called, which is the expensive operation we want to avoid.\n // let mock = OracleMock::mock(\"copyCapsule\");\n\n // array.for_each(|index, _| {\n // array.remove(index);\n // });\n\n // assert_eq(mock.count(), 0);\n // }\n}\n" + }, + "64": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{\n gas::GasOpts, private_context::PrivateContext, public_context::PublicContext,\n returns_hash::ReturnsHash,\n};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\nuse crate::test::helpers::cheatcodes;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateVoidCallInterface\n\npub struct PrivateVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticVoidCallInterface\n\npub struct PrivateStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicVoidCallInterface\n\npub struct PublicVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticVoidCallInterface\n\npub struct PublicStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\n// UtilityVoidCallInterface\n\npub struct UtilityVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\npub trait TXEPublicCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPublicCallInterface for PublicCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEPrivateCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPrivateCallInterface for PrivateCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEUtilityCallInterface {\n unconstrained fn call_with_txe(self) -> T;\n}\n\nimpl TXEUtilityCallInterface for UtilityCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n returns\n }\n}\n\nimpl TXEUtilityCallInterface for UtilityVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n returns\n }\n}\n" + }, + "71": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", + "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n include_by_timestamp::IncludeByTimestamp,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::array_concat,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: IncludeByTimestamp,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp =\n IncludeByTimestamp::min_with_u64(self.include_by_timestamp, include_by_timestamp);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n ReturnsHash::new(returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" + }, + "72": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", + "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl PublicContext {\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index) } == 1\n }\n\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n pub fn fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_l2_gas()\n }\n }\n pub fn fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_da_gas()\n }\n }\n\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> u128 {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> u128 {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> Field {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" + }, + "73": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", + "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.hash, 0);\n }\n\n pub fn raw(self) -> Field {\n self.hash\n }\n\n /// This is only used during private execution, since in public it is the VM itself that keeps track of return\n /// values.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n\n Deserialize::deserialize(preimage)\n }\n\n pub fn get_preimage_and_assert_empty(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n assert_eq(self.hash, 0);\n\n Deserialize::deserialize(preimage)\n }\n}\n" + }, + "74": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", + "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" + }, + "77": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", + "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n // TODO(#2707): Consider making this a u64 as we already cast this to that when encoding the message. This would decrease\n // the likelihood of collisions without any extra cost.\n inner: u32,\n}\n\nimpl Eq for EventSelector {\n fn eq(self, other: EventSelector) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl Serialize<1> for EventSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for EventSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" + }, + "79": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/hash.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n" + }, + "91": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", + "source": "use dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n hash::poseidon2_hash_with_separator, utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" + }, + "94": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", + "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ecdh shared secret using the address public key of the given address:\n/// [ephemeral_secret] * recipient_address_public_key = shared_secret.\n/// The intention is that the _creator_ of a shared secret would call this function,\n/// given the address of their intended recipient.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Point {\n derive_ecdh_shared_secret(ephemeral_secret, recipient_address.to_address_point().inner)\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n" + }, + "95": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", + "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" + }, + "96": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", + "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n" + } + } +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts new file mode 100644 index 00000000..81f63bcb --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts @@ -0,0 +1,211 @@ +import { BlockNumberResponse } from "../../Blockchain.Abstraction/Models/BlockNumberResponse"; +import { HTLCBlockEventResponse } from "../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; +import { EventRequest } from "../../Blockchain.Abstraction/Models/EventRequest"; +import { GetTransactionRequest } from "../../Blockchain.Abstraction/Models/ReceiptModels/GetTransactionRequest"; +import { TransactionResponse } from "../../Blockchain.Abstraction/Models/ReceiptModels/TransactionResponse"; +import { TransactionBuilderRequest } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransactionBuilderRequest"; +import { PrepareTransactionResponse } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; +import { TransactionStatus } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionStatus'; +import { TransactionType } from "../../Blockchain.Abstraction/Models/TransacitonModels/TransactionType"; +import { IAztecBlockchainActivities } from "./IAztecBlockchainActivities"; +import { BalanceRequest } from "../../Blockchain.Abstraction/Models/BalanceRequestModels/BalanceRequest"; +import { BalanceResponse } from "../../Blockchain.Abstraction/Models/BalanceRequestModels/BalanceResponse"; +import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; +import { AddLockSignatureRequest } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/AddLockSignatureRequest"; +import TrackBlockEventsAsync from "./Helper/AztecEventTracker"; +import { createRefundCallData, createLockCallData, createRedeemCallData, createCommitCallData } from "./Helper/AztecTransactionBuilder"; +import { TransactionFailedException } from "../../Blockchain.Abstraction/Exceptions/TransactionFailedException"; +import { createAztecNodeClient, Tx, TxHash } from "@aztec/aztec.js"; +import { mapAztecStatusToInternal } from "./Helper/AztecTransactionStatusMapper"; +import { AztecPublishTransactionRequest } from "../Models/AztecPublishTransactionRequest"; +import { TreasuryClient } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient"; +import { AztecSignTransactionRequestModel } from "./Models/AztecSignTransactionModel"; +import { buildLockKey as buildLockKey, buildCurrentNonceKey, buildNextNonceKey } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/RedisHelper"; +import { NextNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/NextNonceRequest"; +import { CurrentNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/CurrentNonceRequest"; +import { inject, injectable } from "tsyringe"; +import Redis from "ioredis"; +import Redlock from "redlock"; +import { TimeSpan } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/TimeSpanConverter"; +import { TransactionNotComfirmedException } from "../../Blockchain.Abstraction/Exceptions/TransactionNotComfirmedException"; + +@injectable() +export class AztecBlockchainActivities implements IAztecBlockchainActivities { + constructor( + @inject("Redis") private redis: Redis, + @inject("Redlock") private lockFactory: Redlock, + ) { } + + public async BuildTransaction(request: TransactionBuilderRequest): Promise { + try { + switch (request.type) { + case TransactionType.HTLCLock: + return createLockCallData(request.network, request.prepareArgs); + case TransactionType.HTLCRedeem: + return createRedeemCallData(request.network, request.prepareArgs); + case TransactionType.HTLCRefund: + return createRefundCallData(request.network, request.prepareArgs); + case TransactionType.HTLCCommit: + return createCommitCallData(request.network, request.prepareArgs); + default: + throw new Error(`Unknown function name ${request.type}`); + } + } + catch (error) { + throw error; + } + } + + public async GetBalance(request: BalanceRequest): Promise { + let result: BalanceResponse = { amount: 1000000000000 } + return result; + } + + public async GetLastConfirmedBlockNumber(request: BaseRequest): Promise { + + const provider = createAztecNodeClient(request.network.nodes[0].url); + const lastBlockNumber = await provider.getBlockNumber(); + const blockHash = await (await provider.getBlock(lastBlockNumber)).hash(); + + return { + blockNumber: lastBlockNumber, + blockHash: blockHash.toString() + }; + } + + public async ValidateAddLockSignature(request: AddLockSignatureRequest): Promise { + + return true; + } + + public async GetEvents(request: EventRequest): Promise { + + const result = await TrackBlockEventsAsync(request.network, request.fromBlock, request.toBlock, request.walletAddresses); + return result; + } + + public async getTransaction(request: GetTransactionRequest): Promise { + + const provider = createAztecNodeClient(request.network.nodes[0].url); + const transaction = await provider.getTxReceipt(TxHash.fromString(request.transactionHash)); + const transactionStatus = mapAztecStatusToInternal(transaction.status) + + if (transactionStatus == TransactionStatus.Initiated) { + throw new TransactionNotComfirmedException(`Transaction ${request.transactionHash} is still pending on network ${request.network.name}`); + } + + if (transactionStatus == TransactionStatus.Failed) { + throw new TransactionFailedException(`Transaction ${request.transactionHash} failed on network ${request.network.name}`); + } + + const transactionBlock = await provider.getBlock(transaction.blockNumber); + const latestblock = await provider.getProvenBlockNumber(); + const timestamp = transactionBlock.header.globalVariables.timestamp; + const confirmations = latestblock - transactionBlock.number; + + const transactionResponse: TransactionResponse = { + decimals: request.network.nativeToken.decimals, + networkName: request.network.name, + transactionHash: request.transactionHash, + confirmations: confirmations, + timestamp: new Date(Number(timestamp) * 1000), + feeAmount: "0", + feeAsset: request.network.nativeToken.symbol, + feeDecimals: request.network.nativeToken.decimals, + status: transactionStatus, + } + + return transactionResponse; + } + + public async signTransaction(request: AztecSignTransactionRequestModel): Promise { + + const treasuryClient = new TreasuryClient(request.signerAgentUrl); + + const response = await treasuryClient.signTransaction(request.networkType, request.signRequest); + + return response.signedTxn; + } + + public async publishTransaction(request: AztecPublishTransactionRequest): Promise { + + const parsed = JSON.parse(request.signedTx) as { signedTx: string }; + const buf = Buffer.from(parsed.signedTx, "hex"); + const signedTx = Tx.fromBuffer(buf); + + const provider = createAztecNodeClient(request.network.nodes[0].url); + + await provider.sendTx(signedTx); + const txHash = (await signedTx.getTxHash()).toString() + + return txHash; + } + + public async getNextNonce(request: NextNonceRequest): Promise { + const lockKey = buildLockKey(request.network.name, request.address); + + const nextNonceKey = buildNextNonceKey(request.network.name, request.address); + + const lock = await this.lockFactory.acquire( + [lockKey], + TimeSpan.FromSeconds(25), + { + retryDelay: TimeSpan.FromSeconds(1), + retryCount: 20, + }); + + try { + let pendingNonce: number = 0; + + const cached = await this.redis.get(nextNonceKey); + + if (cached !== null) { + pendingNonce = Number(cached); + } + + await this.redis.set(nextNonceKey, (pendingNonce + 1).toString(), "EX", TimeSpan.FromDays(7)); + + return pendingNonce + + } finally { + await lock.release().catch(() => { }); + } + } + + public async checkCurrentNonce(request: CurrentNonceRequest): Promise { + const currentNonceKey = buildCurrentNonceKey(request.network.name, request.address); + + const cached = await this.redis.get(currentNonceKey); + + let addressCurrentNonce: number = 0; + + if (cached !== null) { + addressCurrentNonce = Number(cached); + } + + if (addressCurrentNonce !== request.currentNonce) { + throw new Error(`Current nonce ${addressCurrentNonce} transaction nonce ${request.currentNonce}`) + } + } + + public async updateCurrentNonce(request: CurrentNonceRequest): Promise { + const lockKey = buildLockKey(request.network.name, request.address); + + const currentNonceKey = buildCurrentNonceKey(request.network.name, request.address); + + const lock = await this.lockFactory.acquire( + [lockKey], + TimeSpan.FromSeconds(25), + { + retryDelay: TimeSpan.FromSeconds(1), + retryCount: 20, + }); + + try { + await this.redis.set(currentNonceKey, (request.currentNonce + 1).toString(), "EX", TimeSpan.FromDays(7)); + } + finally { + await lock.release().catch(() => { }); + } + } +} diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts new file mode 100644 index 00000000..be98d3a9 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts @@ -0,0 +1,142 @@ + +import { AztecAddress, createAztecNodeClient } from '@aztec/aztec.js'; +import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; +import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; + +export default async function TrackBlockEventsAsync( + network: DetailedNetworkDto, + fromBlock: number, + toBlock: number, + solverAddresses: string[], +): Promise { + + const tokenCommittedSelector = 2050960156; + const tokenLockAddedSelector = 3251955602; + + const htlcContractAddress = network.htlcTokenContractAddress; + const response: HTLCBlockEventResponse = { + htlcCommitEventMessages: [], + htlcLockEventMessages: [], + }; + + try { + if (fromBlock == toBlock) fromBlock = fromBlock - 3; + + const provider = createAztecNodeClient(network.nodes[0].url); + + const blockResponse = await provider.getPublicLogs({ + contractAddress: AztecAddress.fromString(htlcContractAddress), + fromBlock: fromBlock, + toBlock: toBlock + }); + + if (!blockResponse) { + throw new Error(`No blocks found between ${fromBlock} and ${toBlock}`); + } + + for (const { log: { fields }, id } of blockResponse.logs) { + let selector = fields[0].toNumber(); + + if (selector !== tokenCommittedSelector && selector !== tokenLockAddedSelector) { + continue; + } + const blockNumber = await provider.getBlock(id.blockNumber) + const txId = blockNumber.body.txEffects[id.txIndex].txHash.toString(); + + let commitId = fields[1].toString(); + let timelock = fields[4].toNumber() + + if (selector == tokenCommittedSelector) { + + const amount = fields[2].toNumber(); + const sourceReceiver = fields[5].toString(); + const sourceAsset = readLowest30BytesAsString(fields[6].toString()); + const destNetwork = readLowest30BytesAsString(fields[7].toString()) + const destAsset = readLowest30BytesAsString(fields[8].toString()); + + const receiverAddress = solverAddresses.find( + x => x.toLowerCase() === sourceReceiver.toLowerCase()); + + const destAddress = [9, 10, 11] + .map(i => readLowest30BytesAsString(fields[i].toString())) + .join(''); + + const commitMsg: HTLCCommitEventMessage = { + txId: txId, + commitId: commitId, + amount: amount.toString(), + receiverAddress: receiverAddress, + sourceNetwork: network.name, + senderAddress: '0', + sourceAsset: sourceAsset, + destinationAddress: destAddress, + destinationNetwork: destNetwork, + destinationAsset: destAsset, + timeLock: timelock + }; + + response.htlcCommitEventMessages.push(commitMsg); + + } + else if (selector == tokenLockAddedSelector) { + + const hashLock = hashLockToHexValidated(fields[2].toBigInt(), fields[3].toBigInt()) + + const lockMsg: HTLCLockEventMessage = { + txId: txId, + commitId: commitId, + hashLock: hashLock, + timeLock: timelock, + }; + + response.htlcLockEventMessages.push(lockMsg); + } + } + + return response; + } + catch (error) { + + throw error; + } +} + +function readLowest30BytesAsString(hex: string): string { + if (hex.startsWith('0x')) { + hex = hex.slice(2); + } + + const byteLength = hex.length / 2; + + const start = Math.max(0, byteLength - 30) * 2; + const lowest30Hex = hex.slice(start); + + const bytes = new Uint8Array(lowest30Hex.length / 2); + for (let i = 0; i < lowest30Hex.length; i += 2) { + bytes[i / 2] = parseInt(lowest30Hex.slice(i, i + 2), 16); + } + + let decoded = new TextDecoder().decode(bytes).replace(/\x00/g, '').trim(); + + return decoded; +} + +function hashLockToHexValidated(high: bigint, low: bigint): string { + const MAX_128_BIT = (BigInt(1) << BigInt(128)) - BigInt(1); + + if (high < BigInt(0) || high > MAX_128_BIT) { + throw new Error(`High value out of range. Must be 0 <= high <= ${MAX_128_BIT}`); + } + + if (low < BigInt(0) || low > MAX_128_BIT) { + throw new Error(`Low value out of range. Must be 0 <= low <= ${MAX_128_BIT}`); + } + + // Combine: high << 128 + low + const combined = (high << BigInt(128)) + low; + + // Convert to hex and pad to 64 characters + const hexString = combined.toString(16).padStart(64, '0'); + + return '0x' + hexString; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts new file mode 100644 index 00000000..94925760 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts @@ -0,0 +1,238 @@ +import { decodeJson } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; +import { HTLCLockTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCLockTransactionPrepareRequest"; +import { HTLCRedeemTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCRedeemTransactionPrepareRequest"; +import { HTLCRefundTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCRefundTransactionPrepareRequest"; +import { HTLCCommitTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCCommitTransactionPrepareRequest"; +import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; +import { AztecAddress, Fr } from "@aztec/aztec.js"; +import { PrepareTransactionResponse } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; +import crypto from 'crypto'; + +export async function createRefundCallData(network: DetailedNetworkDto, args: string): Promise { + + const refundRequest = decodeJson(args); + const token = network.tokens.find(t => t.symbol === refundRequest.asset); + + if (!token) { + throw new Error(`Token not found for network ${network.name} and asset ${refundRequest.asset}`) + }; + + const htlcContractAddress = token.contract + ? network.htlcNativeContractAddress + : network.htlcTokenContractAddress; + + let functionInteraction: FunctionInteraction = { + interactionAddress: htlcContractAddress, + functionName: "refund_private", + args: [refundRequest.commitId], + } + + const json = JSON.stringify(functionInteraction); + + return { + data: json, + amount: "0", + asset: network.nativeToken.symbol, + callDataAsset: token.symbol, + callDataAmount: "0", + toAddress: htlcContractAddress, + }; +} + +export async function createCommitCallData(network: DetailedNetworkDto, args: string): Promise { + + const commitRequest = decodeJson(args); + const token = network.tokens.find(t => t.symbol === commitRequest.sourceAsset); + + if (!token) { + throw new Error(`Token not found for network ${network.name} and asset ${commitRequest.sourceAsset}`) + }; + + let htlcContractAddress = token.contract + ? network.htlcNativeContractAddress + : network.htlcTokenContractAddress; + + const randomness = BigInt('0x' + crypto.randomBytes(31).toString('hex')).toString() + + let functionInteraction: FunctionInteraction = { + interactionAddress: htlcContractAddress, + functionName: "commit_private_user", + args: [ + BigInt(commitRequest.id).toString(), + commitRequest.receiver, + commitRequest.timelock, + AztecAddress.fromString(token.contract), + commitRequest.amount, + commitRequest.sourceAsset.padStart(30, ' '), + commitRequest.destinationChain.padStart(30, ' '), + commitRequest.destinationAsset.padStart(30, ' '), + commitRequest.destinationAddress.padStart(90, ' '), + randomness, + ], + authwiths: [ + { + interactionAddress: token.contract, + functionName: "transfer_to_public", + callerAddress: htlcContractAddress, + args: [ + AztecAddress.fromString(htlcContractAddress).toString(), + commitRequest.amount, + randomness], + }] + } + + const json = JSON.stringify(functionInteraction); + + return { + data: json, + amount: "0", + asset: network.nativeToken.symbol, + callDataAsset: token.symbol, + callDataAmount: "0", + toAddress: htlcContractAddress, + }; +} + +export async function createRedeemCallData(network: DetailedNetworkDto, args: string): Promise { + + const redeemRequest = decodeJson(args); + const token = network.tokens.find(t => t.symbol === redeemRequest.asset); + + if (!token) { + throw new Error(`Token not found for network ${network.name} and asset ${redeemRequest.asset}`) + }; + + const htlcContractAddress = token.contract + ? network.htlcNativeContractAddress + : network.htlcTokenContractAddress + + const toHex = (n: bigint) => '0x' + n.toString(16); + const [secretHigh, secretLow] = hexToU128Limbs(toHex(BigInt(redeemRequest.secret))); + const [ownershipKeyHigh, ownershipKeyLow] = hexToU128Limbs(toHex(BigInt(redeemRequest.secret))); + + let functionInteraction: FunctionInteraction = { + interactionAddress: htlcContractAddress, + functionName: "redeem_private", + args: [ + Fr.fromString(redeemRequest.commitId).toString(), + secretHigh.toString(), + secretLow.toString(), + ownershipKeyHigh.toString(), + ownershipKeyLow.toString() + ], + } + + const json = JSON.stringify(functionInteraction); + + return { + data: json, + amount: "0", + asset: network.nativeToken.symbol, + callDataAsset: token.symbol, + callDataAmount: "0", + toAddress: htlcContractAddress, + }; +} + +export async function createLockCallData(network: DetailedNetworkDto, args: string): Promise { + + const lockRequest = decodeJson(args); + + const token = network.tokens.find(t => t.symbol === lockRequest.sourceAsset); + + if (!token) { + throw new Error(`Token not found for network ${network.name} and asset ${lockRequest.sourceAsset}`) + }; + + const htlcContractAddress = token.contract + ? network.htlcNativeContractAddress + : network.htlcTokenContractAddress + + const randomness = BigInt('0x' + crypto.randomBytes(31).toString('hex')).toString() + const hashlock = hexToU128Limbs(lockRequest.hashlock); + const ownershipHash = hexToU128Limbs(normalizeHex(lockRequest.receiver)); + + let functionInteraction: FunctionInteraction = { + interactionAddress: htlcContractAddress, + functionName: "lock_private_solver", + args: [ + BigInt(lockRequest.commitId).toString(), + hashlock[0].toString(), + hashlock[1].toString(), + lockRequest.amount, + ownershipHash[0].toString(), + ownershipHash[1].toString(), + lockRequest.timelock, + AztecAddress.fromString(token.contract), + randomness, + lockRequest.sourceAsset.padStart(30, ' '), + lockRequest.destinationNetwork.padStart(30, ' '), + lockRequest.destinationAsset.padStart(30, ' '), + lockRequest.destinationAddress.padStart(90, ' ')], + authwiths: [ + { + interactionAddress: token.contract, + functionName: "transfer_to_public", + callerAddress: htlcContractAddress, + args: [ + AztecAddress.fromString(htlcContractAddress).toString(), + lockRequest.amount, + randomness], + }] + } + + const json = JSON.stringify(functionInteraction); + + return { + data: json, + amount: (lockRequest.amount + lockRequest.reward).toString(), + asset: lockRequest.sourceAsset, + callDataAsset: lockRequest.sourceAsset, + callDataAmount: (lockRequest.amount + lockRequest.reward).toString(), + toAddress: htlcContractAddress, + }; +} + +interface FunctionInteraction { + interactionAddress: string, + functionName: string, + args: any[], + callerAddress?: string, + authwiths?: FunctionInteraction[], +} + +export const hexToUint256HexStrings = (hex: string): string[] => { + let h = hex.startsWith('0x') ? hex.slice(2) : hex; + if (h.length % 2) h = '0' + h; + const pad = (64 - (h.length % 64)) % 64; + h = '0'.repeat(pad) + h; + const out: string[] = []; + for (let i = 0; i < h.length; i += 64) out.push('0x' + h.slice(i, i + 64)); + return out; +}; + +export const hexToUint256Array = (hex: string): bigint[] => { + let h = hex.startsWith('0x') ? hex.slice(2) : hex; + if (h.length % 2) h = '0' + h; + const pad = (64 - (h.length % 64)) % 64; + h = '0'.repeat(pad) + h; + const out: bigint[] = []; + for (let i = 0; i < h.length; i += 64) out.push(BigInt('0x' + h.slice(i, i + 64))); + return out; +}; + +function hexToU128Limbs(hex: string): [bigint, bigint] { + const bytes = hex.replace('0x', '').match(/.{2}/g)!.map(b => parseInt(b, 16)); + let high = BigInt(0), low = BigInt(0); + for (let i = 0; i < 16; i++) high = (high << BigInt(8)) + BigInt(bytes[i]); + for (let i = 16; i < 32; i++) low = (low << BigInt(8)) + BigInt(bytes[i]); + return [high, low]; +} + +function normalizeHex(hex: string): string { + let value = hex.trim() + if (value.toLowerCase().startsWith("0x")) { + return value + } + return "0x" + value +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts new file mode 100644 index 00000000..9d18c294 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts @@ -0,0 +1,21 @@ +import { TxStatus } from "@aztec/aztec.js"; +import { TransactionStatus } from '../../../Blockchain.Abstraction/Models/TransacitonModels/TransactionStatus'; + +export function mapAztecStatusToInternal(status: TxStatus): TransactionStatus { + switch (status) { + case TxStatus.SUCCESS: + return TransactionStatus.Completed; + + case TxStatus.PENDING: + return TransactionStatus.Initiated; + + case TxStatus.DROPPED: + case TxStatus.APP_LOGIC_REVERTED: + case TxStatus.BOTH_REVERTED: + case TxStatus.TEARDOWN_REVERTED: + return TransactionStatus.Failed; + + default: + throw new Error(`Unhandled Aztec transaction status: ${status}`); + } +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts new file mode 100644 index 00000000..ff873643 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts @@ -0,0 +1,30 @@ +import { + type ContractInstanceWithAddress, + Fr, + type PXE, + getContractInstanceFromDeployParams, +} from '@aztec/aztec.js'; +import { SPONSORED_FPC_SALT } from '@aztec/constants'; +import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; + +export async function getSponsoredFPCInstance(): Promise { + return await getContractInstanceFromDeployParams( + SponsoredFPCContract.artifact, + { + salt: new Fr(SPONSORED_FPC_SALT), + }, + ); +} + +export async function getSponsoredFPCAddress() { + return (await getSponsoredFPCInstance()).address; +} + +export async function getDeployedSponsoredFPCAddress(pxe: PXE) { + const fpc = await getSponsoredFPCAddress(); + const contracts = await pxe.getContracts(); + if (!contracts.find((c) => c.equals(fpc))) { + throw new Error('SponsoredFPC not deployed.'); + } + return fpc; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts new file mode 100644 index 00000000..cc1c8aa1 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts @@ -0,0 +1,220 @@ +/* Autogenerated file, do not edit! */ + +/* eslint-disable */ +import { + AztecAddress, + type AztecAddressLike, + Contract, + type ContractArtifact, + ContractBase, + ContractFunctionInteraction, + type ContractInstanceWithAddress, + type ContractMethod, + type ContractStorageLayout, + type ContractNotes, + DeployMethod, + type FieldLike, + Fr, + loadContractArtifact, + loadContractArtifactForPublic, + type NoirCompiledContract, + NoteSelector, + PublicKeys, + type Wallet, +} from '@aztec/aztec.js'; +import TrainContractArtifactJson from "../ABIs/train.json"; +export const TrainContractArtifact = loadContractArtifact( + TrainContractArtifactJson as NoirCompiledContract, +); + +/** + * Type-safe interface for contract Train; + */ +export class TrainContract extends ContractBase { + private constructor(instance: ContractInstanceWithAddress, wallet: Wallet) { + super(instance, TrainContractArtifact, wallet); + } + + /** + * Creates a contract instance. + * @param address - The deployed contract's address. + * @param wallet - The wallet to use when interacting with the contract. + * @returns A promise that resolves to a new Contract instance. + */ + public static async at(address: AztecAddress, wallet: Wallet) { + return Contract.at( + address, + TrainContract.artifact, + wallet, + ) as Promise; + } + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy(wallet: Wallet) { + return new DeployMethod( + PublicKeys.default(), + wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(1), + ); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet) { + return new DeployMethod( + publicKeys, + wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(2), + ); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet }, + ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeys ?? PublicKeys.default(), + opts.wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(1), + opts.method ?? 'constructor', + ); + } + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return TrainContractArtifact; + } + + /** + * Returns this contract's artifact with public bytecode. + */ + public static get artifactForPublic(): ContractArtifact { + return loadContractArtifactForPublic( + TrainContractArtifactJson as NoirCompiledContract, + ); + } + + public static get storage(): ContractStorageLayout< + 'contracts_private' | 'contracts_public' + > { + return { + contracts_private: { + slot: new Fr(1), + }, + contracts_public: { + slot: new Fr(2), + }, + } as ContractStorageLayout<'contracts_private' | 'contracts_public'>; + } + + public static get notes(): ContractNotes<'UintNote' | 'HTLC_Private'> { + return { + UintNote: { + id: new NoteSelector(0), + }, + HTLC_Private: { + id: new NoteSelector(1), + }, + } as ContractNotes<'UintNote' | 'HTLC_Private'>; + } + + /** Type-safe wrappers for the public methods exposed by the contract. */ + declare public methods: { + /** add_lock_private_user(Id: field, hashlock: array, timelock: integer) */ + add_lock_private_user: (( + Id: FieldLike, + hashlock: (bigint | number)[], + timelock: bigint | number, + ) => ContractFunctionInteraction) & + Pick; + + /** commit_private_user(Id: field, src_receiver: struct, timelock: integer, token: struct, amount: integer, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: field) */ + commit_private_user: (( + Id: FieldLike, + src_receiver: AztecAddressLike, + timelock: bigint | number, + token: AztecAddressLike, + amount: bigint | number, + src_asset: string, + dst_chain: string, + dst_asset: string, + dst_address: string, + randomness: FieldLike, + ) => ContractFunctionInteraction) & + Pick; + + /** constructor() */ + constructor: (() => ContractFunctionInteraction) & + Pick; + + /** get_htlc_public(key: field) */ + get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** is_contract_initialized(Id: field) */ + is_contract_initialized: ((Id: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** lock_private_solver(Id: field, hashlock: array, amount: integer, ownership_hash: array, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ + lock_private_solver: (( + Id: FieldLike, + hashlock: (bigint | number)[], + amount: bigint | number, + ownership_hash: (bigint | number)[], + timelock: bigint | number, + token: AztecAddressLike, + randomness: FieldLike, + src_asset: string, + dst_chain: string, + dst_asset: string, + dst_address: string, + ) => ContractFunctionInteraction) & + Pick; + + /** process_message(message_ciphertext: struct, message_context: struct) */ + process_message: (( + message_ciphertext: FieldLike[], + message_context: { + tx_hash: FieldLike; + unique_note_hashes_in_tx: FieldLike[]; + first_nullifier_in_tx: FieldLike; + recipient: AztecAddressLike; + }, + ) => ContractFunctionInteraction) & + Pick; + + /** public_dispatch(selector: field) */ + public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** redeem_private(Id: field, secret: array, ownership_key: array) */ + redeem_private: (( + Id: FieldLike, + secret: (bigint | number)[], + ownership_key: (bigint | number)[], + ) => ContractFunctionInteraction) & + Pick; + + /** refund_private(Id: field) */ + refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** sync_private_state() */ + sync_private_state: (() => ContractFunctionInteraction) & + Pick; + }; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/IAztecBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/IAztecBlockchainActivities.ts new file mode 100644 index 00000000..c0f53f3e --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/IAztecBlockchainActivities.ts @@ -0,0 +1,22 @@ +import { IBlockchainActivities } from "../../Blockchain.Abstraction/Interfaces/IBlockchainActivities"; +import { CurrentNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/CurrentNonceRequest"; +import { NextNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/NextNonceRequest"; +import { GetTransactionRequest } from "../../Blockchain.Abstraction/Models/ReceiptModels/GetTransactionRequest"; +import { TransactionResponse } from "../../Blockchain.Abstraction/Models/ReceiptModels/TransactionResponse"; +import { AztecPublishTransactionRequest } from "../Models/AztecPublishTransactionRequest"; +import { AztecSignTransactionRequestModel } from "./Models/AztecSignTransactionModel"; + +export interface IAztecBlockchainActivities extends IBlockchainActivities { + + getTransaction(request: GetTransactionRequest): Promise; + + publishTransaction(request: AztecPublishTransactionRequest): Promise; + + signTransaction(request: AztecSignTransactionRequestModel): Promise; + + getNextNonce(request: NextNonceRequest): Promise; + + checkCurrentNonce(request: CurrentNonceRequest): Promise; + + updateCurrentNonce(request: CurrentNonceRequest): Promise; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts new file mode 100644 index 00000000..f4fe712f --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts @@ -0,0 +1,7 @@ +import { AztecSignTransactionRequest } from "../../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models"; + +export interface AztecSignTransactionRequestModel { + networkType: string; + signRequest: AztecSignTransactionRequest; + signerAgentUrl: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Models/AztecPublishTransactionRequest.ts b/js/src/Blockchain/Blockchain.Aztec/Models/AztecPublishTransactionRequest.ts new file mode 100644 index 00000000..6d603d4d --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Models/AztecPublishTransactionRequest.ts @@ -0,0 +1,5 @@ +import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; + +export interface AztecPublishTransactionRequest extends BaseRequest { + signedTx: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts b/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts new file mode 100644 index 00000000..6dd521cf --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts @@ -0,0 +1,43 @@ +import { Worker, NativeConnection } from '@temporalio/worker'; +import * as dotenv from 'dotenv'; +import 'reflect-metadata'; +import { extractActivities as ExtractActivities } from '../../../TemporalHelper/ActivityParser'; +import { container } from 'tsyringe'; +import { AddCoreServices } from '../../Blockchain.Abstraction/Infrastructure/AddCoreServices'; +import { AztecBlockchainActivities } from '../Activities/AztecBlockchainActivities'; + +export default async function run( taskQueue: string): Promise { + dotenv.config(); + + try { + await AddCoreServices(); + + const blockchainActivities = ExtractActivities(container.resolve(AztecBlockchainActivities)); + + const activities = { + ...blockchainActivities, + }; + + const connection = await NativeConnection.connect({ + address: process.env.TrainSolver__TemporalServerHost, + }); + const namespace = process.env.TrainSolver__TemporalNamespace; + + if (!namespace) { + throw new Error('TemporalNamespace environment variable is not set.'); + } + + const worker = await Worker.create({ + namespace: namespace, + taskQueue: taskQueue, + workflowsPath: require.resolve('../Workflows'), + activities: activities, + connection, + }); + + await worker.run(); + } + catch (e) { + throw new Error(`Exception happened in AztecWorker: ${e.message}`); + } +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts new file mode 100644 index 00000000..41d3e73e --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts @@ -0,0 +1,124 @@ +import { ApplicationFailure, continueAsNew, proxyActivities, uuid4 } from '@temporalio/workflow'; +import { IAztecBlockchainActivities } from '../Activities/IAztecBlockchainActivities'; +import { InvalidTimelockException } from '../../Blockchain.Abstraction/Exceptions/InvalidTimelockException'; +import { HashlockAlreadySetException } from '../../Blockchain.Abstraction/Exceptions/HashlockAlreadySetException'; +import { AlreadyClaimedExceptions } from '../../Blockchain.Abstraction/Exceptions/AlreadyClaimedExceptions'; +import { HTLCAlreadyExistsException } from '../../Blockchain.Abstraction/Exceptions/HTLCAlreadyExistsException'; +import { TransactionFailedException } from '../../Blockchain.Abstraction/Exceptions/TransactionFailedException'; +import { TransactionResponse } from '../../Blockchain.Abstraction/Models/ReceiptModels/TransactionResponse'; +import { TransactionExecutionContext } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionExecutionContext'; +import { TransactionRequest } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionRequest'; +import { NetworkType } from '../../Blockchain.Abstraction/Models/Dtos/NetworkDto'; +import { buildProcessorId } from '../../Blockchain.Abstraction/Extensions/StringExtensions'; + +const defaultActivities = proxyActivities({ + startToCloseTimeout: '1 hour', + scheduleToCloseTimeout: '2 days', +}); + +const nonRetryableActivities = proxyActivities({ + startToCloseTimeout: '1 hour', + scheduleToCloseTimeout: '2 days', + retry: { + nonRetryableErrorTypes: [ + InvalidTimelockException.name, + HashlockAlreadySetException.name, + HTLCAlreadyExistsException.name, + AlreadyClaimedExceptions.name, + TransactionFailedException.name, + ], + }, +}); + +export async function AztecTransactionProcessor( + request: TransactionRequest, + context: TransactionExecutionContext +): Promise { + + const nextNonce = await defaultActivities.getNextNonce({ + address: request.fromAddress, + network: request.network + }); + + try { + + await defaultActivities.checkCurrentNonce( + { + address: request.fromAddress, + network: request.network, + currentNonce: nextNonce + } + ) + + const preparedTransaction = await defaultActivities.BuildTransaction({ + fromAddress: request.fromAddress, + network: request.network, + prepareArgs: request.prepareArgs, + type: request.type, + }); + + const token = request.network.tokens.find(t => t.symbol === preparedTransaction.asset); + + const signedRawData = await defaultActivities.signTransaction( + { + signerAgentUrl: request.signerAgentUrl, + networkType: NetworkType[request.network.type], + signRequest: { + address: request.fromAddress, + unsignedTxn: preparedTransaction.data, + nodeUrl: request.network.nodes[0].url, + contractAddress: preparedTransaction.toAddress, + tokenContract: token.contract, + } + } + ); + + // sign transaction + const publishedTransaction = await nonRetryableActivities.publishTransaction({ + network: request.network, + signedTx: signedRawData + }); + + const transactionResponse = await defaultActivities.getTransaction({ + network: request.network, + transactionHash: publishedTransaction, + }); + + transactionResponse.asset = preparedTransaction.callDataAsset; + transactionResponse.amount = preparedTransaction.callDataAmount.toString(); + + await defaultActivities.updateCurrentNonce( + { + address: request.fromAddress, + network: request.network, + currentNonce: nextNonce + } + ) + + return transactionResponse; + + } + catch (error) { + + await defaultActivities.updateCurrentNonce( + { + address: request.fromAddress, + network: request.network, + currentNonce: nextNonce + } + ) + + if ((error instanceof ApplicationFailure && error.type === 'TransactionFailedException')) { + + const processorId = buildProcessorId(uuid4(), request.network.name, request.type); + + await continueAsNew(AztecTransactionProcessor, { + args: [request, context], + workflowId: processorId, + }); + } + else { + throw error; + } + } +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Workflows/index.ts b/js/src/Blockchain/Blockchain.Aztec/Workflows/index.ts new file mode 100644 index 00000000..a76eb88e --- /dev/null +++ b/js/src/Blockchain/Blockchain.Aztec/Workflows/index.ts @@ -0,0 +1 @@ +export { AztecTransactionProcessor } from '../Workflows/AztecTransactionProcessor'; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts index 944005b0..11aebf9d 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts @@ -31,13 +31,11 @@ import { NextNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModel import { buildLockKey as buildLockKey, buildCurrentNonceKey, buildNextNonceKey } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/RedisHelper"; import { TimeSpan } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/TimeSpanConverter"; - @injectable() export class FuelBlockchainActivities implements IFuelBlockchainActivities { constructor( @inject("Redis") private redis: Redis, - @inject("Redlock") private lockFactory: Redlock, - // @inject("TreasuryClient") private treasuryClient: TreasuryClient + @inject("Redlock") private lockFactory: Redlock ) { } diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts index 01f488cd..a8cdb98d 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts @@ -14,7 +14,6 @@ import Redis from "ioredis"; import Redlock from "redlock"; import { validateTransactionStatus } from "./Helper/StarknetTransactionStatusValidator"; import { createLockCallData, createRedeemCallData, createRefundCallData, createAddLockSigCallData, createApproveCallData, createTransferCallData, createCommitCallData } from "./Helper/StarknetTransactionBuilder"; -import { BLOCK_WITH_TX_HASHES } from "starknet-types-07/dist/types/api/components"; import { buildLockKey, buildCurrentNonceKey } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/RedisHelper"; import { TimeSpan } from "../../Blockchain.Abstraction/Infrastructure/RedisHelper/TimeSpanConverter"; import { AllowanceRequest } from "../../Blockchain.Abstraction/Models/AllowanceRequest"; @@ -135,12 +134,18 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const lastBlockNumber = await provider.getBlockNumber(); - const blockData = await provider.getBlockWithTxHashes(lastBlockNumber) as BLOCK_WITH_TX_HASHES; + const blockData = await provider.getBlockWithTxHashes(lastBlockNumber); - return { - blockNumber: lastBlockNumber, - blockHash: blockData.block_hash, - }; + const isConfirmed = "block_hash" in blockData; + if (isConfirmed) { + return { + blockNumber: lastBlockNumber, + blockHash: blockData.block_hash, + }; + } + else { + throw new Error("Block doesn't confirmed") + } } public async GetEvents(request: EventRequest): Promise { @@ -395,8 +400,8 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } const balanceResponse = await this.GetBalance({ - address: feeRequest.fromAddress, - network: feeRequest.network, + address: feeRequest.fromAddress, + network: feeRequest.network, asset: this.FeeSymbol }); diff --git a/js/tsconfig.json b/js/tsconfig.json index e458ae3b..d8bc3493 100644 --- a/js/tsconfig.json +++ b/js/tsconfig.json @@ -1,12 +1,12 @@ { "compilerOptions": { - "module": "commonjs", + "module": "nodenext", "target": "es6", "outDir": "dist", "rootDir": ".", "sourceMap": true, "strict": false, - "moduleResolution": "node", + "moduleResolution": "nodenext", "allowSyntheticDefaultImports": true, "resolveJsonModule": true, "skipLibCheck": true, diff --git a/treasury/package-lock.json b/treasury/package-lock.json index a8593a37..3e4b3e4f 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -8,10 +8,15 @@ "name": "train-treasury", "version": "1.0.0", "dependencies": { + "@aztec/accounts": "1.1.3", + "@aztec/aztec.js": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-contracts.js": "1.1.3", + "@aztec/pxe": "1.1.3", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", - "@nestjs/platform-express": "11.1.2", + "@nestjs/platform-express": "^11.1.6", "class-transformer": "0.5.1", "class-validator": "0.14.2", "ethers": "^6.14.3", @@ -42,7 +47,7 @@ "ts-loader": "9.5.2", "ts-node": "10.9.2", "tsconfig-paths": "4.2.0", - "typescript": "5.7.3", + "typescript": "^5.7.3", "typescript-eslint": "8.33.1" } }, @@ -52,24 +57,12 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "license": "MIT" }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@angular-devkit/core": { "version": "19.2.8", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.8.tgz", "integrity": "sha512-kcxUHKf5Hi98r4gAvMP3ntJV8wuQ3/i6wuU9RcMP0UKUt2Rer5Ryis3MPqT92jvVVwg6lhrLIhXsFuWJMiYjXQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.17.1", "ajv-formats": "3.0.1", @@ -97,6 +90,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -112,13 +106,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@angular-devkit/core/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -128,6 +124,7 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.8.tgz", "integrity": "sha512-QsmFuYdAyeCyg9WF/AJBhFXDUfCwmDFTEbsv5t5KPSP6slhk0GoLNZApniiFytU2siRlSxVNpve2uATyYuAYkQ==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "19.2.8", "jsonc-parser": "3.3.1", @@ -146,6 +143,7 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.8.tgz", "integrity": "sha512-RFnlyu4Ld8I4xvu/eqrhjbQ6kQTr27w79omMiTbQcQZvP3E6oUyZdBjobyih4Np+1VVQrbdEeNz76daP2iUDig==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "19.2.8", "@angular-devkit/schematics": "19.2.8", @@ -168,6 +166,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/checkbox": "^4.1.2", "@inquirer/confirm": "^5.1.6", @@ -197,15 +196,487 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } }, + "node_modules/@aztec/accounts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-1.1.3.tgz", + "integrity": "sha512-Q754MHkDojefx1m5KzsmDYUhir+NbqVzXdthFkI5GRpUOJmpRLD44sG58t33QOMbcs/Smtp35DzIS95coukYXA==", + "dependencies": { + "@aztec/aztec.js": "1.1.3", + "@aztec/entrypoints": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/aztec.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-1.1.3.tgz", + "integrity": "sha512-WjKKL/PUvk2xUj+ZgKP68xZYyHdeuN6xV+PHRaRVSBD0YIMSaWIEDirdhjTBd6kQK1soFYRS8+gy5CLx2oSSiQ==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/entrypoints": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/l1-artifacts": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "axios": "^1.8.2", + "tslib": "^2.4.0", + "viem": "2.23.7" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/bb-prover": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-1.1.3.tgz", + "integrity": "sha512-YsyyIY5dK6QcXfg7dVvRg21Bx+IyTYXWxMTryxqkqqVD6O85dVGSChXUjdt7o2x4GzOErZy4/wlEBt4NriIh9A==", + "dependencies": { + "@aztec/bb.js": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/simulator": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "@aztec/world-state": "1.1.3", + "commander": "^12.1.0", + "pako": "^2.1.0", + "source-map-support": "^0.5.21", + "tslib": "^2.4.0" + }, + "bin": { + "bb-cli": "dest/bb/index.js" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/bb.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-1.1.3.tgz", + "integrity": "sha512-cAR++gmXYvSzC0CyGfo326YMumdmjs5vGTErx2NQKKc96MyYcJdm9aTiyf/G2uBdGSn4tWdMgxOxH2lr/qH1Sw==", + "license": "MIT", + "dependencies": { + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "pino": "^9.5.0", + "tslib": "^2.4.0" + }, + "bin": { + "bb.js": "dest/node/main.js" + } + }, + "node_modules/@aztec/blob-lib": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-1.1.3.tgz", + "integrity": "sha512-+YAGXaW75hKEAmlNtcxd8k7XJaIxbphQ/ddy04MTlYMclQr/43ZfKX/xPErHH/7aV4MAwRmrpUFOxYNO4Bu/yA==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "c-kzg": "4.0.0-alpha.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/builder": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-1.1.3.tgz", + "integrity": "sha512-VHg2S344a5NXHKd8I0Rj1JqC1v9ufm6/xvOIauFDcf3XNf+rYSNt3iLOcVE4ueDBFMgaasfeBzsABvp4kJ1vMw==", + "dependencies": { + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "commander": "^12.1.0" + }, + "bin": { + "aztec-builder": "dest/bin/cli.js" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/constants": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-1.1.3.tgz", + "integrity": "sha512-gAkZJR0Sjll+ftzjrDQjGUzJwUcZyKuRJr414GMRk8UlqyqNs58zllX7k8QZ9AgW/YD3K3Ll2nXXcfctTgj5tw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/entrypoints": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-1.1.3.tgz", + "integrity": "sha512-Q4OqnF04ANVAMHYGSnGsUpRW0XOLc4LI3Qy75XGfv7OXUDNxDsPrAc1+FWcMdbkfayge08jXTdpTN063qZupWw==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/ethereum": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-1.1.3.tgz", + "integrity": "sha512-0QdtWIm0OYg2tqnbr8mOcJrlH5MM/WIZIQlmlYUDjcsyc997dmnVDRQMmGVQV6CvYWrKtuhrK/xvEIvOZIllig==", + "dependencies": { + "@aztec/blob-lib": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/l1-artifacts": "1.1.3", + "@viem/anvil": "^0.0.10", + "dotenv": "^16.0.3", + "lodash.pickby": "^4.5.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/foundation": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-1.1.3.tgz", + "integrity": "sha512-JbLCEJKfjefQiev2yhdWj0VcGA1Q3dgf3IabIorKjzUPQFI/aDtL7ys486vNDLj/wv2Gb42+UiE5GvD92fU3kQ==", + "dependencies": { + "@aztec/bb.js": "1.1.3", + "@koa/cors": "^5.0.0", + "@noble/curves": "^1.2.0", + "bn.js": "^5.2.1", + "colorette": "^2.0.20", + "detect-node": "^2.1.0", + "hash.js": "^1.1.7", + "koa": "^2.16.1", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "pako": "^2.1.0", + "pino": "^9.5.0", + "pino-pretty": "^13.0.0", + "sha3": "^2.1.4", + "undici": "^5.28.5", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/key-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-1.1.3.tgz", + "integrity": "sha512-8z2UioLpktexEXq3AWsLn/qMwJtHVlm2pAR0b8R9phsC7GAin64y4WD1VNRWijT3XnetkNOqrmIGoZRCy9rArA==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/stdlib": "1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/kv-store": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-1.1.3.tgz", + "integrity": "sha512-uqIMe49dd1pDtdEcAN+80heQ7+U8i0XwE3tBrywaAsdXaI7r0uCQJ5dG3KYgjcxMvWwkHo++oLqTR9Ufu/GrhA==", + "dependencies": { + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/native": "1.1.3", + "@aztec/stdlib": "1.1.3", + "idb": "^8.0.0", + "lmdb": "^3.2.0", + "msgpackr": "^1.11.2", + "ohash": "^2.0.11", + "ordered-binary": "^1.5.3" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/l1-artifacts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-1.1.3.tgz", + "integrity": "sha512-9XAotNCjB7FCKYECoiFDmVpAswwoYyZwrYgX+xidxemGxP6Sv2+EZqEgwreMgBRw/XII8cZGz0Rbsk2ZnUNIKQ==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@aztec/merkle-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-1.1.3.tgz", + "integrity": "sha512-hT9JNt3dkc0OUydybxU3xYLx9RTiOQ1Fx9MFvS3xoiU1m3Mg20h0RnaZKkRXEHXYllrwea8IZw/lKoAHWfHERQ==", + "dependencies": { + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/stdlib": "1.1.3", + "sha256": "^0.2.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/native": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-1.1.3.tgz", + "integrity": "sha512-VwfB39EV09WcWduS0vphH42HoSIletkXheqkIaMvU/A3FGWgvR2EQjnueWyHJ8iQw1/SLH3fi7tmZO4ypG1+Zg==", + "dependencies": { + "@aztec/foundation": "1.1.3", + "bindings": "^1.5.0", + "msgpackr": "^1.11.2" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/noir-acvm_js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-1.1.3.tgz", + "integrity": "sha512-rz3uIbG7/1Xq/3US+GddoqBXNQ1gKh6Z81XxbdupiqLNY1CwUXAJzmrYFEidxXc+T+QcKRChemuPI9Pf6+PwcA==", + "license": "MIT" + }, + "node_modules/@aztec/noir-contracts.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-1.1.3.tgz", + "integrity": "sha512-5JpQMOmps0pHKKhV7l6hcODdSBWjxMmheUM2ArArgy0JOT92Oz0WR9kqFBsV6tpzahMLa0+S2XnhIi6DQf8ZFQ==", + "dependencies": { + "@aztec/aztec.js": "1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/noir-noir_codegen": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-1.1.3.tgz", + "integrity": "sha512-HnX/lrDEHoizn6M/bAWDL5WoaZSALFLvBLauGwfG9XdSpFpgwWvZF9UhZADg0+lehqx+vwSny31rP3q2fOSZlw==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@aztec/noir-types": "1.1.3", + "glob": "^11.0.2", + "ts-command-line-args": "^2.5.1" + }, + "bin": { + "noir-codegen": "lib/main.js" + } + }, + "node_modules/@aztec/noir-noirc_abi": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-1.1.3.tgz", + "integrity": "sha512-0bXBVUQrELTzYiKZwJZh8KgqCC6XXD/kR6pvFQKkJs4qBT07wya8yh4VYF0ynDSq+YHgFPgZgDdVPR5FfdYOHQ==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@aztec/noir-types": "1.1.3" + } + }, + "node_modules/@aztec/noir-protocol-circuits-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-1.1.3.tgz", + "integrity": "sha512-Jq08Qyhf+S14cJqGxucKo8aSS/st+1vxAwl0wOvqwVJRUBH3+gSLO1aV19/qeveXv1n0AuPVdWSxEz4nweYvQw==", + "dependencies": { + "@aztec/blob-lib": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-acvm_js": "1.1.3", + "@aztec/noir-noir_codegen": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/stdlib": "1.1.3", + "change-case": "^5.4.4", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/noir-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-1.1.3.tgz", + "integrity": "sha512-8zNJeRecFbI9Kib2uyrKoXdeu5L4lXRgLHNG8YACOXYjuWJtbyJ/h2nCVqEj3vD0AiF7rHZ27oDBxoggwlpYVA==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/@aztec/protocol-contracts": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-1.1.3.tgz", + "integrity": "sha512-fM6ZeO35jAxo7/8d6K6ltXux7e9DsudZGHU+gLjRQeCgYkmYUjoaoGhzSMIo0SS35aD9lSjr2oDUPrm1FBCYIg==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "lodash.chunk": "^4.2.0", + "lodash.omit": "^4.5.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/pxe": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-1.1.3.tgz", + "integrity": "sha512-O2rgeZIlIxkscwW0JoCnKEzDUfIFt3oPRfuBZGmEyl8Utt5TWBdvfsHPa275TAAqCvIeOBHkuNiwRdxX6pZ5og==", + "dependencies": { + "@aztec/bb-prover": "1.1.3", + "@aztec/bb.js": "1.1.3", + "@aztec/builder": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/key-store": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/simulator": "1.1.3", + "@aztec/stdlib": "1.1.3", + "koa": "^2.16.1", + "koa-router": "^12.0.0", + "lodash.omit": "^4.5.0", + "sha3": "^2.1.4", + "tslib": "^2.4.0", + "viem": "2.23.7" + }, + "bin": { + "pxe": "dest/bin/index.js" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/simulator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-1.1.3.tgz", + "integrity": "sha512-ypoTSF2KxAZTbapnoCuxZE++8j5rHNlWiwYSKzhF07VNwS2waDwxOElNfOpbsePam8Rakf4wu3dumyOxh07xtw==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-acvm_js": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@aztec/noir-protocol-circuits-types": "1.1.3", + "@aztec/noir-types": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "@aztec/world-state": "1.1.3", + "lodash.clonedeep": "^4.5.0", + "lodash.merge": "^4.6.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/stdlib": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-1.1.3.tgz", + "integrity": "sha512-jd9Ob8+zv7BvRNFvPeizvbLf2qMvrC6ZVep6fJ+hDZTEnRbOz/dPUaRhf+W7Iyot3Ltan52DBYwfvLYlAQZrVQ==", + "dependencies": { + "@aztec/bb.js": "1.1.3", + "@aztec/blob-lib": "1.1.3", + "@aztec/constants": "1.1.3", + "@aztec/ethereum": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/noir-noirc_abi": "1.1.3", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.9.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/telemetry-client": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-1.1.3.tgz", + "integrity": "sha512-lhukZyoJJbUdNf8LNY+pbNkXFViE+OdSFvFjpY9vWqIfGt7X75KCa8rcuUyLUR4StvmT/b8etLz8bAmQdmmcVg==", + "dependencies": { + "@aztec/foundation": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.55.0", + "@opentelemetry/core": "^1.28.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/host-metrics": "^0.35.4", + "@opentelemetry/otlp-exporter-base": "^0.55.0", + "@opentelemetry/resource-detector-gcp": "^0.32.0", + "@opentelemetry/resources": "^1.28.0", + "@opentelemetry/sdk-logs": "^0.55.0", + "@opentelemetry/sdk-metrics": "^1.28.0", + "@opentelemetry/sdk-trace-node": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "prom-client": "^15.1.3", + "viem": "2.23.7" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/world-state": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-1.1.3.tgz", + "integrity": "sha512-fto3bPUsTYSgu/ETdU+knajh3dQ3/43JFzCug8EPc3LXeo2Cht/sMB+f3s8qPhCl30i42yvZTKDRPIK/2xsB7A==", + "dependencies": { + "@aztec/constants": "1.1.3", + "@aztec/foundation": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/merkle-tree": "1.1.3", + "@aztec/native": "1.1.3", + "@aztec/protocol-contracts": "1.1.3", + "@aztec/stdlib": "1.1.3", + "@aztec/telemetry-client": "1.1.3", + "tslib": "^2.4.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -216,30 +687,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", - "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", - "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, + "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", + "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.4", - "@babel/parser": "^7.27.4", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.4", - "@babel/types": "^7.27.3", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -259,20 +732,22 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", - "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -284,6 +759,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", @@ -300,15 +776,27 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -318,14 +806,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -339,6 +828,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -348,6 +838,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -357,6 +848,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -366,30 +858,33 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.28.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -403,6 +898,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -415,6 +911,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -427,6 +924,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -439,6 +937,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -454,6 +953,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -469,6 +969,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -481,6 +982,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -493,6 +995,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -508,6 +1011,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -520,6 +1024,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -532,6 +1037,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -544,6 +1050,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -556,6 +1063,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -568,6 +1076,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -580,6 +1089,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -595,6 +1105,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -610,6 +1121,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -625,6 +1137,7 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", @@ -635,37 +1148,30 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", - "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.4", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/types": "^7.28.4", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" @@ -678,13 +1184,25 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", + "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -695,6 +1213,7 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -707,6 +1226,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1113,10 +1633,11 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -1135,6 +1656,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1147,15 +1669,17 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", @@ -1166,10 +1690,11 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1179,6 +1704,7 @@ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -1191,6 +1717,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -1214,6 +1741,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -1226,6 +1754,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1238,23 +1767,47 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.2", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@fuel-ts/abi-coder": { "version": "0.101.3", "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", @@ -1381,21 +1934,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -1610,6 +2148,12 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, + "node_modules/@fuel-ts/math/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, "node_modules/@fuel-ts/merkle": { "version": "0.101.3", "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", @@ -1737,6 +2281,63 @@ "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", "license": "Apache-2.0" }, + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "license": "Apache-2.0", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/storage": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.0.tgz", + "integrity": "sha512-5m9GoZqKh52a1UqkxDBu/+WVFDALNtHg5up5gNmNbXQWBcV813tzJKsyDtKjOPrlR1em1TxtD7NSPCrObH7koQ==", + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", @@ -1746,46 +2347,42 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1799,6 +2396,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1808,14 +2406,15 @@ } }, "node_modules/@inquirer/checkbox": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.8.tgz", - "integrity": "sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz", + "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/figures": "^1.0.12", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, @@ -1832,13 +2431,14 @@ } }, "node_modules/@inquirer/confirm": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.12.tgz", - "integrity": "sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==", + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz", + "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7" + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -1853,13 +2453,14 @@ } }, "node_modules/@inquirer/core": { - "version": "10.1.13", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz", - "integrity": "sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz", + "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.12", - "@inquirer/type": "^3.0.7", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", @@ -1880,14 +2481,15 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.13.tgz", - "integrity": "sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==", + "version": "4.2.18", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz", + "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7", - "external-editor": "^3.1.0" + "@inquirer/core": "^10.2.0", + "@inquirer/external-editor": "^1.0.1", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -1902,13 +2504,14 @@ } }, "node_modules/@inquirer/expand": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.15.tgz", - "integrity": "sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz", + "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -1923,23 +2526,47 @@ } } }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz", + "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@inquirer/figures": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.12.tgz", - "integrity": "sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", + "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/input": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.12.tgz", - "integrity": "sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz", + "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7" + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -1954,13 +2581,14 @@ } }, "node_modules/@inquirer/number": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.15.tgz", - "integrity": "sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz", + "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7" + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -1975,13 +2603,14 @@ } }, "node_modules/@inquirer/password": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.15.tgz", - "integrity": "sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz", + "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2" }, "engines": { @@ -2001,6 +2630,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.1.tgz", "integrity": "sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/checkbox": "^4.1.5", "@inquirer/confirm": "^5.1.9", @@ -2026,13 +2656,14 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.3.tgz", - "integrity": "sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz", + "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -2048,14 +2679,15 @@ } }, "node_modules/@inquirer/search": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.15.tgz", - "integrity": "sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz", + "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/figures": "^1.0.12", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -2071,14 +2703,15 @@ } }, "node_modules/@inquirer/select": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.3.tgz", - "integrity": "sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz", + "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.13", - "@inquirer/figures": "^1.0.12", - "@inquirer/type": "^3.0.7", + "@inquirer/core": "^10.2.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, @@ -2095,10 +2728,11 @@ } }, "node_modules/@inquirer/type": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.7.tgz", - "integrity": "sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -2111,10 +2745,32 @@ } } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2131,6 +2787,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -2141,12 +2798,14 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2163,6 +2822,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -2180,6 +2840,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -2196,6 +2857,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } @@ -2205,6 +2867,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -2218,6 +2881,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -2231,6 +2895,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -2243,6 +2908,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -2258,6 +2924,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -2270,6 +2937,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2279,6 +2947,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2288,6 +2957,7 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -2305,6 +2975,7 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -2352,6 +3023,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2361,6 +3033,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2373,6 +3046,7 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -2388,6 +3062,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -2401,6 +3076,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -2413,6 +3089,7 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -2430,6 +3107,7 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -2445,6 +3123,7 @@ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -2488,6 +3167,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2498,6 +3178,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2518,6 +3199,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2530,6 +3212,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -2542,6 +3225,7 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -2556,6 +3240,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -2571,6 +3256,7 @@ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -2586,6 +3272,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -2612,6 +3299,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -2625,17 +3313,25 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "devOptional": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -2643,65 +3339,243 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "devOptional": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "devOptional": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "devOptional": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", "devOptional": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", + "license": "MIT", + "dependencies": { + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", + "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", + "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", + "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", + "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", + "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", + "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", + "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@lukeed/csprng": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@nestjs/cli": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.7.tgz", - "integrity": "sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "19.2.8", - "@angular-devkit/schematics": "19.2.8", - "@angular-devkit/schematics-cli": "19.2.8", - "@inquirer/prompts": "7.4.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "3.17.0", - "chokidar": "4.0.3", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nestjs/cli": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.7.tgz", + "integrity": "sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.8", + "@angular-devkit/schematics": "19.2.8", + "@angular-devkit/schematics-cli": "19.2.8", + "@inquirer/prompts": "7.4.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "3.17.0", + "chokidar": "4.0.3", "cli-table3": "0.6.5", "commander": "4.1.1", "fork-ts-checker-webpack-plugin": "9.1.0", @@ -2739,6 +3613,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2755,6 +3630,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -2772,6 +3648,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -2779,11 +3656,22 @@ "ajv": "^8.8.2" } }, + "node_modules/@nestjs/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/@nestjs/cli/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2797,21 +3685,48 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, + "node_modules/@nestjs/cli/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@nestjs/cli/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2821,6 +3736,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -2828,11 +3744,28 @@ "node": ">= 0.6" } }, + "node_modules/@nestjs/cli/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nestjs/cli/node_modules/schema-utils": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -2847,24 +3780,12 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@nestjs/cli/node_modules/webpack": { "version": "5.99.6", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -2910,6 +3831,7 @@ "version": "11.1.2", "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.2.tgz", "integrity": "sha512-cHh4OPH44PjaHM93D1jgE1HO/B7XTZVRDxy/cPuGgyMEA4p2zXO+qqcOgTMC5FYcp7dX9jLeCjXAU0ToFAnODw==", + "license": "MIT", "dependencies": { "file-type": "21.0.0", "iterare": "1.2.1", @@ -2951,11 +3873,24 @@ "rxjs": "^7.1.0" } }, + "node_modules/@nestjs/config/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/@nestjs/core": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.2.tgz", "integrity": "sha512-QRuyxwu0BjNfmmmunsw1ylX7RSyfDQHt+xD+tKncdtgiMOOzAu+LA1gB4WoZnw4frQkk+qZbhEbM61cIjOxD3w==", "hasInstallScript": true, + "license": "MIT", "dependencies": { "@nuxt/opencollective": "0.4.1", "fast-safe-stringify": "2.1.1", @@ -2992,13 +3927,14 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.2.tgz", - "integrity": "sha512-GlNwOT4htRp8RpZ+TpqGtSHwGKw/abdxxBRse40XE2SWs5ikaoujr9Yd+5sJWDNXB4QTftwb+FplXhyk1Ra+4A==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.6.tgz", + "integrity": "sha512-HErwPmKnk+loTq8qzu1up+k7FC6Kqa8x6lJ4cDw77KnTxLzsCaPt+jBvOq6UfICmfqcqCCf3dKXg+aObQp+kIQ==", + "license": "MIT", "dependencies": { "cors": "2.8.5", "express": "5.1.0", - "multer": "2.0.0", + "multer": "2.0.2", "path-to-regexp": "8.2.0", "tslib": "2.8.1" }, @@ -3016,6 +3952,7 @@ "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz", "integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "19.2.6", "@angular-devkit/schematics": "19.2.6", @@ -3032,6 +3969,7 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz", "integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "8.17.1", "ajv-formats": "3.0.1", @@ -3059,6 +3997,7 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz", "integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==", "dev": true, + "license": "MIT", "dependencies": { "@angular-devkit/core": "19.2.6", "jsonc-parser": "3.3.1", @@ -3077,6 +4016,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -3092,13 +4032,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@nestjs/schematics/node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -3108,6 +4050,7 @@ "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.2.tgz", "integrity": "sha512-BQxVKUVW6gzEbbHAvmg5RgcP3s++pRgTCmsgaDF/DtcLRUeKi8SjAdqzLm14xbkMeibxOf3fNqM2iwqUKj8ffw==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "2.8.1" }, @@ -3131,25 +4074,13 @@ } }, "node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" + "@noble/hashes": "1.8.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -3161,7 +4092,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, + "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -3174,6 +4105,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3187,6 +4119,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -3196,6 +4129,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3208,6 +4142,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", "dependencies": { "consola": "^3.2.3" }, @@ -3219,2915 +4154,5318 @@ "npm": ">=5.10.0" } }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", - "dev": true, - "dependencies": { - "@noble/hashes": "^1.1.5" + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, + "node_modules/@opentelemetry/api-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", + "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, "engines": { "node": ">=14" } }, - "node_modules/@pkgr/core": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", - "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", - "dev": true, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": ">=14" }, - "funding": { - "url": "https://opencollective.com/pkgr" + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "license": "MIT", + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@postman/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", "engines": { - "node": ">= 0.6" + "node": ">=14" } }, - "node_modules/@postman/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", + "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", + "license": "Apache-2.0", "dependencies": { - "mime-db": "1.52.0" + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/sdk-logs": "0.55.0" }, "engines": { - "node": ">= 0.6" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@postman/tough-cookie": { - "version": "4.1.3-postman.1", - "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", - "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", - "license": "BSD-3-Clause", + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { - "node": ">=6" - } + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", + "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz", + "integrity": "sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/host-metrics": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz", + "integrity": "sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g==", + "license": "Apache-2.0", + "dependencies": { + "systeminformation": "5.23.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz", + "integrity": "sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-transformer": "0.55.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz", + "integrity": "sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-logs": "0.55.0", + "@opentelemetry/sdk-metrics": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", + "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", + "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.32.0.tgz", + "integrity": "sha512-+WdWSG4sZAfsk5DvRj/OUmatsHc+7Rdz8xdmxQdr1jpfUWjcKwOkGA4rondIf2ou/qPLOeYCs6hLLexsRdZaUw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", + "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", + "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", + "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.30.1", + "@opentelemetry/core": "1.30.1", + "@opentelemetry/propagator-b3": "1.30.1", + "@opentelemetry/propagator-jaeger": "1.30.1", + "@opentelemetry/sdk-trace-base": "1.30.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@postman/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@postman/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@postman/tough-cookie": { + "version": "4.1.3-postman.1", + "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", + "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@postman/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@postman/tunnel-agent": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", + "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@scure/base": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", + "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.2" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", + "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.7.0", + "@noble/hashes": "~1.6.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet/node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet/node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet/node_modules/@noble/hashes": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tokenizer/inflate": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", + "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "fflate": "^0.8.2", + "token-types": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.2.tgz", + "integrity": "sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", + "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "license": "MIT", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.5.tgz", + "integrity": "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/request/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/request/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", + "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.15.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", + "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", + "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/type-utils": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.33.1", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", + "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", + "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.33.1", + "@typescript-eslint/types": "^8.33.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", + "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", + "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", + "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.33.1", + "@typescript-eslint/utils": "8.33.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", + "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", + "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.33.1", + "@typescript-eslint/tsconfig-utils": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/visitor-keys": "8.33.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.33.1", + "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/typescript-estree": "8.33.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", + "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.33.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@viem/anvil": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@viem/anvil/-/anvil-0.0.10.tgz", + "integrity": "sha512-9PzYXBRikfSUhhm8Bd0avv07agwcbMJ5FaSu2D2vbE0cxkvXGtolL3fW5nz2yefMqOqVQL4XzfM5nwY81x3ytw==", + "license": "MIT", + "dependencies": { + "execa": "^7.1.1", + "get-port": "^6.1.2", + "http-proxy": "^1.18.1", + "ws": "^8.13.0" + } + }, + "node_modules/@vitest/expect": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", + "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/spy": "3.0.9", + "@vitest/utils": "3.0.9", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", + "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/spy": "3.0.9", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } }, - "node_modules/@postman/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "peer": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", - "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", - "license": "Apache-2.0", + "node_modules/@vitest/runner": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", + "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", + "license": "MIT", + "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@vitest/utils": "3.0.9", + "pathe": "^2.0.3" }, - "engines": { - "node": "*" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.3.tgz", - "integrity": "sha512-8oQkCTve4H4B4JpmD2FV7fV2ZPTxJHN//bRhCqPUU8v6c5APlxteAXyc7BFaEb4aGpUzrPLU4PoAcGhwmRzZTA==", - "cpu": [ - "arm" - ], + "node_modules/@vitest/snapshot": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", + "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true + "peer": true, + "dependencies": { + "@vitest/pretty-format": "3.0.9", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.3.tgz", - "integrity": "sha512-StOsmdXHU2hx3UFTTs6yYxCSwSIgLsfjUBICXyWj625M32OOjakXlaZuGKL+jA3Nvv35+hMxrm/64eCoT07SYQ==", - "cpu": [ - "arm64" - ], + "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true + "peer": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.3.tgz", - "integrity": "sha512-6CfLF3eqKhCdhK0GUnR5ZS99OFz+dtOeB/uePznLKxjCsk5QjT/V0eSEBb4vj+o/ri3i35MseSEQHCLLAgClVw==", - "cpu": [ - "arm64" - ], + "node_modules/@vitest/spy": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", + "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true + "peer": true, + "dependencies": { + "tinyspy": "^3.0.2" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.3.tgz", - "integrity": "sha512-QLWyWmAJG9elNTNLdcSXUT/M+J7DhEmvs1XPHYcgYkse3UHf9iWTJ+yTPlKMIetiQnNi+cNp+gY4gvjDpREfKw==", - "cpu": [ - "x64" - ], + "node_modules/@vitest/utils": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", + "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true + "peer": true, + "dependencies": { + "@vitest/pretty-format": "3.0.9", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/@vitest/pretty-format": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", + "license": "MIT", + "peer": true, + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.3.tgz", - "integrity": "sha512-ZOvBq+5nL0yrZIEo1eq6r7MPvkJ8kC1XATS/yHvcq3WbDNKNKBQ1uIF4hicyzDMoJt72G+sn1nKsFXpifZyRDA==", - "cpu": [ - "arm64" - ], + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.3.tgz", - "integrity": "sha512-AYvGR07wecEnyYSovyJ71pTOulbNvsrpRpK6i/IM1b0UGX1vFx51afYuPYPxnvE9aCl5xPnhQicEvdIMxClRgQ==", - "cpu": [ - "x64" - ], + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.3.tgz", - "integrity": "sha512-Yx8Cp38tfRRToVLuIWzBHV25/QPzpUreOPIiUuNV7KahNPurYg2pYQ4l7aYnvpvklO1riX4643bXLvDsYSBIrA==", - "cpu": [ - "arm" - ], + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.3.tgz", - "integrity": "sha512-4dIYRNxlXGDKnO6qgcda6LxnObPO6r1OBU9HG8F9pAnHHLtfbiOqCzDvkeHknx+5mfFVH4tWOl+h+cHylwsPWA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.3.tgz", - "integrity": "sha512-M6uVlWKmhLN7LguLDu6396K1W5IBlAaRonjlHQgc3s4dOGceu0FeBuvbXiUPYvup/6b5Ln7IEX7XNm68DN4vrg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.3.tgz", - "integrity": "sha512-emaYiOTQJUd6fC9a6jcw9zIWtzaUiuBC+vomggaM4In2iOra/lA6IMHlqZqQZr08NYXrOPMVigreLMeSAwv3Uw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/abi-wan-kanabi": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.4.tgz", + "integrity": "sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==", + "license": "ISC", + "dependencies": { + "ansicolors": "^0.3.2", + "cardinal": "^2.1.1", + "fs-extra": "^10.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "generate": "dist/generate.js" + } }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.3.tgz", - "integrity": "sha512-3P77T5AQ4UfVRJSrTKLiUZDJ6XsxeP80027bp6mOFh8sevSD038mYuIYFiUtrSJxxgFb+NgRJFF9oIa0rlUsmg==", - "cpu": [ - "loong64" - ], + "node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.45.3.tgz", - "integrity": "sha512-/VPH3ZVeSlmCBPhZdx/+4dMXDjaGMhDsWOBo9EwSkGbw2+OAqaslL53Ao2OqCxR0GgYjmmssJ+OoG+qYGE7IBg==", - "cpu": [ - "ppc64" - ], + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.3.tgz", - "integrity": "sha512-Hs5if0PjROl1MGMmZX3xMAIfqcGxQE2SJWUr/CpDQsOQn43Wq4IvXXxUMWtiY/BrzdqCCJlRgJ5DKxzS3qWkCw==", - "cpu": [ - "riscv64" - ], + "node_modules/abstract-leveldown": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.0.0", + "is-buffer": "^2.0.5", + "level-concat-iterator": "^3.0.0", + "level-supports": "^2.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.3.tgz", - "integrity": "sha512-Qm0WOwh3Lk388+HJFl1ILGbd2iOoQf6yl4fdGqOjBzEA+5JYbLcwd+sGsZjs5pkt8Cr/1G42EiXmlRp9ZeTvFA==", - "cpu": [ - "riscv64" - ], + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.3.tgz", - "integrity": "sha512-VJdknTaYw+TqXzlh9c7vaVMh/fV2sU8Khfk4a9vAdYXJawpjf6z3U1k7vDWx2IQ9ZOPoOPxgVpDfYOYhxD7QUA==", - "cpu": [ - "s390x" - ], + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "devOptional": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.3.tgz", - "integrity": "sha512-SUDXU5YabLAMl86FpupSQQEWzVG8X0HM+Q/famnJusbPiUgQnTGuSxtxg4UAYgv1ZmRV1nioYYXsgtSokU/7+Q==", - "cpu": [ - "x64" - ], + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "peer": true, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.3.tgz", - "integrity": "sha512-ezmqknOUFgZMN6wW+Avlo4sXF3Frswd+ncrwMz4duyZ5Eqd+dAYgJ+A1MY+12LNZ7XDhCiijJceueYvtnzdviw==", - "cpu": [ - "x64" - ], + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.3.tgz", - "integrity": "sha512-1YfXoUEE++gIW66zNB9Twd0Ua5xCXpfYppFUxVT/Io5ZT3fO6Se+C/Jvmh3usaIHHyi53t3kpfjydO2GAy5eBA==", - "cpu": [ - "arm64" - ], + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.3.tgz", - "integrity": "sha512-Iok2YA3PvC163rVZf2Zy81A0g88IUcSPeU5pOilcbICXre2EP1mxn1Db/l09Z/SK1vdSLtpJXAnwGuMOyf5O9g==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.3.tgz", - "integrity": "sha512-HwHCH5GQTOeGYP5wBEBXFVhfQecwRl24Rugoqhh8YwGarsU09bHhOKuqlyW4ZolZCan3eTUax7UJbGSmKSM51A==", - "cpu": [ - "x64" - ], + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "engines": { + "node": ">= 14" + } }, - "node_modules/@scure/base": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", - "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@scure/starknet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", - "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/curves": "~1.7.0", - "@noble/hashes": "~1.6.0" + "ajv": "^8.0.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@scure/starknet/node_modules/@noble/hashes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", - "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "dependencies": { - "type-detect": "4.0.8" + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/@tokenizer/inflate": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", - "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fflate": "^0.8.2", - "token-types": "^6.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "node_modules/ansi-regex": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", + "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "license": "MIT" }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "license": "ISC", + "engines": { + "node": ">=14" } }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { - "@babel/types": "^7.0.0" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } + "license": "Python-2.0" }, - "node_modules/@types/bn.js": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", - "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "license": "MIT", - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=6" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } + "license": "MIT" }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } + "license": "MIT" }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "safer-buffer": "~2.1.0" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } }, - "node_modules/@types/express": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.2.tgz", - "integrity": "sha512-BtjL3ZwbCQriyb0DGw+Rt12qAXPiBTPs815lsUvtt1Grk0vLRMZNMUZ741d5rjk+UQOxfDiBZ3dxpX00vSkK3g==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "*" + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@types/express-serve-static-core": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", - "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", - "dev": true, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "lodash": "^4.17.14" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "license": "MIT", "dependencies": { - "@types/node": "*" + "retry": "0.13.1" } }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" } }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { - "version": "22.15.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", - "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*", - "form-data": "^4.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@types/supertest": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", - "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@types/validator": { - "version": "13.15.1", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.1.tgz", - "integrity": "sha512-9gG6ogYcoI2mCMLdcO0NYI0AYrbxIjv0MDmy/5Ywo6CpWWrqYayc+mmgxRsCgtcGJm9BSbXkMsmxGah1iGHAAQ==" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", - "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/type-utils": "8.33.1", - "@typescript-eslint/utils": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.33.1", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "@babel/core": "^7.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", "engines": { - "node": ">= 4" + "node": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", - "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/typescript-estree": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", - "debug": "^4.3.4" - }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", - "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", - "dev": true, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", - "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", - "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "engines": { + "node": ">=18" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", - "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.33.1", - "@typescript-eslint/utils": "8.33.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", - "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "node_modules/browserslist": { + "version": "4.25.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", + "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001737", + "electron-to-chromium": "^1.5.211", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", - "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.33.1", - "@typescript-eslint/tsconfig-utils": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "node": ">= 6" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0" + "node-int64": "^0.4.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", - "dev": true, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/typescript-estree": "8.33.1" + "load-tsconfig": "^0.2.3" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "esbuild": ">=0.18" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", - "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", - "dev": true, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { - "@typescript-eslint/types": "8.33.1", - "eslint-visitor-keys": "^4.2.0" + "streamsearch": "^1.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10.16.0" } }, - "node_modules/@vitest/expect": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz", - "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c-kzg": { + "version": "4.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/c-kzg/-/c-kzg-4.0.0-alpha.1.tgz", + "integrity": "sha512-I8S9+c6OEaF6mD5OQJ/PylPk8C3TENQqvMomzV4u+NyOTdVOwF/VFj/z2o5OOPt930qkms0AbzXZ+Qu4qQCYxg==", + "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { - "@vitest/spy": "3.0.9", - "@vitest/utils": "3.0.9", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "bindings": "^1.5.0", + "node-addon-api": "^5.0.0" } }, - "node_modules/@vitest/mocker": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz", - "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "license": "MIT", "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.9", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "mime-types": "^2.1.18", + "ylru": "^1.2.0" }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "node_modules/cache-content-type/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cache-content-type/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "peer": true, "dependencies": { - "tinyrainbow": "^2.0.0" + "mime-db": "1.52.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@vitest/runner": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz", - "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", - "peer": true, "dependencies": { - "@vitest/utils": "3.0.9", - "pathe": "^2.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">= 0.4" } }, - "node_modules/@vitest/snapshot": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz", - "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", - "peer": true, "dependencies": { - "@vitest/pretty-format": "3.0.9", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", - "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001741", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", + "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "license": "MIT", - "peer": true, "dependencies": { - "tinyrainbow": "^2.0.0" + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "bin": { + "cdl": "bin/cdl.js" } }, - "node_modules/@vitest/spy": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz", - "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==", + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "license": "MIT", "peer": true, "dependencies": { - "tinyspy": "^3.0.2" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18" } }, - "node_modules/@vitest/utils": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz", - "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", - "peer": true, "dependencies": { - "@vitest/pretty-format": "3.0.9", - "loupe": "^3.1.3", - "tinyrainbow": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@vitest/utils/node_modules/@vitest/pretty-format": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", - "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "license": "MIT" + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "license": "MIT", "peer": true, + "engines": { + "node": ">= 16" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", "dependencies": { - "tinyrainbow": "^2.0.0" + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "license": "MIT", + "engines": { + "node": ">=6.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "node_modules/class-validator": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", + "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.11.1", + "validator": "^13.9.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, + "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { - "@xtuc/long": "4.2.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "license": "MIT", + "engines": { + "node": ">=0.8" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/co-body": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.2.0.tgz", + "integrity": "sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@hapi/bourne": "^3.0.0", + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, + "node_modules/co-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "node_modules/co-body/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "node_modules/co-body/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/abi-wan-kanabi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.4.tgz", - "integrity": "sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==", - "license": "ISC", + "node_modules/co-body/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "ansicolors": "^0.3.2", - "cardinal": "^2.1.1", - "fs-extra": "^10.0.0", - "yargs": "^17.7.2" + "mime-db": "1.52.0" }, - "bin": { - "generate": "dist/generate.js" + "engines": { + "node": ">= 0.6" } }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "node_modules/co-body/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "devOptional": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/co-body/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.6" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "license": "MIT" }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { - "acorn": "^8.11.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.4.0" + "node": ">=7.0.0" } }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "license": "MIT", + "engines": { + "node": ">=0.1.90" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "delayed-stream": "~1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 0.8" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "node_modules/comlink": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz", + "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==", + "license": "Apache-2.0" }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "license": "MIT", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "license": "MIT", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, - "node_modules/ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", - "dev": true, + "node_modules/command-line-usage/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=0.8.0" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/command-line-usage/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/comment-json": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", - "peer": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "license": "Apache-2.0", + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", "engines": { - "node": "*" + "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">= 0.6" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/convert-hex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-hex/-/convert-hex-0.1.0.tgz", + "integrity": "sha512-w20BOb1PiR/sEJdS6wNrUjF5CSfscZFUp7R9NSlXH8h2wynzXVEPFPJECAnkNylZ+cvf3p7TyRUHggDmrwXT9A==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "license": "MIT" + }, + "node_modules/convert-string": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/convert-string/-/convert-string-0.1.0.tgz", + "integrity": "sha512-1KX9ESmtl8xpT2LN2tFnKSbV4NiarbVi8DVb39ZriijvtTklyrT+4dT1wsGMHKD3CJUjXgvJzstm9qL9ICojGA==" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true, + "license": "MIT" + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "depd": "~2.0.0", + "keygrip": "~1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" + "object-assign": "^4", + "vary": "^1" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">= 0.10" } }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node-fetch": "^2.7.0" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 8" } }, - "node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" + "assert-plus": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">=0.10" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { - "fill-range": "^7.1.1" + "ms": "^2.1.3" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/browserslist": { - "version": "4.25.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", - "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "node_modules/dedent": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", + "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001718", - "electron-to-chromium": "^1.5.160", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "peer": true, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=6" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "license": "MIT" + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=4.0.0" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } + "license": "MIT" }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/bundle-require": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", - "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, "license": "MIT", "dependencies": { - "load-tsconfig": "^0.2.3" + "clone": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "esbuild": ">=0.18" + "node": ">=0.4.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { - "node": ">=10.16.0" + "node": ">= 0.8" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "license": "MIT", - "peer": true, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", "engines": { "node": ">=8" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/call-bound": { + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" + }, + "node_modules/dezalgo": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "asap": "^2.0.0", + "wrappy": "1" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=6" + "node": ">=0.3.1" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001721", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz", - "integrity": "sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" }, - "bin": { - "cdl": "bin/cdl.js" + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "license": "Apache-2.0" - }, - "node_modules/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==", - "license": "MIT", - "peer": true, + "node_modules/dotenv-expand": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz", + "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==", + "license": "BSD-2-Clause", "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" + "dotenv": "^16.4.5" }, "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "license": "MIT", - "peer": true, - "engines": { - "node": ">= 16" + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "readdirp": "^4.0.1" + "jake": "^10.8.5" }, - "engines": { - "node": ">= 14.16.0" + "bin": { + "ejs": "bin/cli.js" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/electron-to-chromium": { + "version": "1.5.214", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz", + "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==", "dev": true, - "engines": { - "node": ">=6.0" - } + "license": "ISC" }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/cjs-module-lexer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", - "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==" + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/class-validator": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", - "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", "dependencies": { - "@types/validator": "^13.11.8", - "libphonenumber-js": "^1.11.1", - "validator": "^13.9.0" + "once": "^1.4.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { - "colors": "1.0.3" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 0.2.0" + "node": ">= 0.4" } }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", + "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" }, "optionalDependencies": { - "@colors/colors": "1.5.0" + "@esbuild/aix-ppc64": "0.25.3", + "@esbuild/android-arm": "0.25.3", + "@esbuild/android-arm64": "0.25.3", + "@esbuild/android-x64": "0.25.3", + "@esbuild/darwin-arm64": "0.25.3", + "@esbuild/darwin-x64": "0.25.3", + "@esbuild/freebsd-arm64": "0.25.3", + "@esbuild/freebsd-x64": "0.25.3", + "@esbuild/linux-arm": "0.25.3", + "@esbuild/linux-arm64": "0.25.3", + "@esbuild/linux-ia32": "0.25.3", + "@esbuild/linux-loong64": "0.25.3", + "@esbuild/linux-mips64el": "0.25.3", + "@esbuild/linux-ppc64": "0.25.3", + "@esbuild/linux-riscv64": "0.25.3", + "@esbuild/linux-s390x": "0.25.3", + "@esbuild/linux-x64": "0.25.3", + "@esbuild/netbsd-arm64": "0.25.3", + "@esbuild/netbsd-x64": "0.25.3", + "@esbuild/openbsd-arm64": "0.25.3", + "@esbuild/openbsd-x64": "0.25.3", + "@esbuild/sunos-x64": "0.25.3", + "@esbuild/win32-arm64": "0.25.3", + "@esbuild/win32-ia32": "0.25.3", + "@esbuild/win32-x64": "0.25.3" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/eslint": { + "version": "9.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", + "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.28.0", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/eslint-plugin-prettier": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz", + "integrity": "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=0.10" } }, - "node_modules/comment-json": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", - "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 6" + "node": ">=4.0" } }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "BSD-2-Clause", "engines": { - "node": "^14.18.0 || >=16.10.0" + "node": ">=4.0" } }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "peer": true, "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "@types/estree": "^1.0.0" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "node_modules/ethers": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", + "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, "engines": { - "node": ">=6.6.0" + "node": ">=14.0.0" } }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "@noble/hashes": "1.3.2" }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=10.0.0" }, "peerDependencies": { - "typescript": ">=4.9.5" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "typescript": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, - "node_modules/cross-fetch": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", - "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" + "engines": { + "node": ">=0.8.x" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, "engines": { - "node": ">=0.10" + "node": ">= 0.8.0" } }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "license": "MIT", - "peer": true, + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, "engines": { - "node": ">=6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { - "clone": "^1.0.2" + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": ">=0.4.0" + "node": ">= 6" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, - "engines": { - "node": ">=0.3.1" + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" } }, - "node_modules/dotenv-expand": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz", - "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=12" + "node": ">=12.0.0" }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "peerDependencies": { + "picomatch": "^3 || ^4" }, - "engines": { - "node": ">= 0.4" + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "license": "MIT", + "node_modules/fetch-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", + "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", + "license": "Unlicense", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "set-cookie-parser": "^2.4.8", + "tough-cookie": "^4.0.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.165", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz", - "integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, + "node_modules/file-type": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", + "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.2.7", + "strtok3": "^10.2.2", + "token-types": "^6.0.0", + "uint8array-extras": "^1.4.0" + }, "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "engines": { - "node": ">= 0.8" + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "is-arrayish": "^0.2.1" + "minimatch": "^5.0.1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/es-set-tostringtag": { + "node_modules/finalhandler": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.8" } }, - "node_modules/esbuild": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", - "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", - "hasInstallScript": true, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" + "dependencies": { + "array-back": "^3.0.1" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.3", - "@esbuild/android-arm": "0.25.3", - "@esbuild/android-arm64": "0.25.3", - "@esbuild/android-x64": "0.25.3", - "@esbuild/darwin-arm64": "0.25.3", - "@esbuild/darwin-x64": "0.25.3", - "@esbuild/freebsd-arm64": "0.25.3", - "@esbuild/freebsd-x64": "0.25.3", - "@esbuild/linux-arm": "0.25.3", - "@esbuild/linux-arm64": "0.25.3", - "@esbuild/linux-ia32": "0.25.3", - "@esbuild/linux-loong64": "0.25.3", - "@esbuild/linux-mips64el": "0.25.3", - "@esbuild/linux-ppc64": "0.25.3", - "@esbuild/linux-riscv64": "0.25.3", - "@esbuild/linux-s390x": "0.25.3", - "@esbuild/linux-x64": "0.25.3", - "@esbuild/netbsd-arm64": "0.25.3", - "@esbuild/netbsd-x64": "0.25.3", - "@esbuild/openbsd-arm64": "0.25.3", - "@esbuild/openbsd-x64": "0.25.3", - "@esbuild/sunos-x64": "0.25.3", - "@esbuild/win32-arm64": "0.25.3", - "@esbuild/win32-ia32": "0.25.3", - "@esbuild/win32-x64": "0.25.3" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "engines": { - "node": ">=6" + "node": ">=4.0.0" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" }, @@ -6135,1202 +9473,1215 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", - "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.28.0", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "node": ">=16" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz", - "integrity": "sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" - }, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" + "node": ">=4.0" }, "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { + "debug": { "optional": true } } - }, - "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=14" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">=0.10" + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=4.0" + "node": ">= 6" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "peer": true, "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "mime-db": "1.52.0" + }, "engines": { "node": ">= 0.6" } }, - "node_modules/ethers": { - "version": "6.14.3", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.14.3.tgz", - "integrity": "sha512-qq7ft/oCJohoTcsNPFaXSQUm457MA5iWqkf1Mb11ujONdg7jBI6sAOrHaTi3j0CBqIGFSCeR/RMc+qwRRub7IA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, "license": "MIT", "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" }, "engines": { "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/ethers/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">= 0.6" } }, - "node_modules/ethers/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "license": "MIT", "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 0.8" } }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/ethers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.8.x" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/fuels": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/fuels/-/fuels-0.101.3.tgz", + "integrity": "sha512-NTCYDT2lZ8ZjVAkA1rfp37r7fMM8V/91Qx0KUGYqXqjHl9ySsmL3ay64NP4W0gczpwipc3K5j/WWxvVZ9fcQ+Q==", + "license": "Apache-2.0", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/abi-typegen": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/contract": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/recipes": "0.101.3", + "@fuel-ts/script": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "bundle-require": "5.1.0", + "chalk": "4", + "chokidar": "3.6.0", + "commander": "13.1.0", + "esbuild": "0.25.3", + "glob": "10.4.5", + "handlebars": "4.7.8", + "joycon": "3.1.1", + "lodash.camelcase": "4.3.0", + "portfinder": "1.0.32", + "toml": "3.0.0", + "uglify-js": "3.19.3", + "yup": "1.6.1" }, - "engines": { - "node": ">=10" + "bin": { + "fuels": "fuels.js" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "node_modules/fuels/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, + "node_modules/fuels/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", - "license": "Apache-2.0", - "peer": true, + "node_modules/fuels/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=18" } }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "node_modules/fuels/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">= 18" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, + "node_modules/fuels/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "node_modules/fuels/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "node_modules/fuels/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, + "node_modules/fuels/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8.6.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/fuels/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "is-glob": "^4.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ] + "node_modules/fuels/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, + "node_modules/fuels/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", "dependencies": { - "bser": "2.1.1" + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" } }, - "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "node_modules/gaxios/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", - "peer": true, - "peerDependencies": { - "picomatch": "^3 || ^4" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fetch-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", - "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", - "license": "Unlicense", - "dependencies": { - "set-cookie-parser": "^2.4.8", - "tough-cookie": "^4.0.0" + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, + "node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "license": "Apache-2.0", "dependencies": { - "flat-cache": "^4.0.0" + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=14" } }, - "node_modules/file-type": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", - "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.7", - "strtok3": "^10.2.2", - "token-types": "^6.0.0", - "uint8array-extras": "^1.4.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=20" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "minimatch": "^5.0.1" + "license": "MIT", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/get-port": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz", + "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=8" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 0.8" + "node": ">=10.13.0" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "license": "ISC", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/globals": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "license": "Apache-2.0", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" }, "engines": { "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=14" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^4.0.1", - "cosmiconfig": "^8.2.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">=14.21.3" + "node": ">= 0.4" }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/form-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", - "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, + "license": "MIT" + }, + "node_modules/graphql": { + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", + "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "@graphql-typed-document-node/core": "^3.2.0", + "cross-fetch": "^3.1.5" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "graphql": "14 - 16" } }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "gaxios": "^6.0.0", + "jws": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=14.0.0" } }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=14.0.0" + "node": ">=0.4.7" }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fuels": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/fuels/-/fuels-0.101.3.tgz", - "integrity": "sha512-NTCYDT2lZ8ZjVAkA1rfp37r7fMM8V/91Qx0KUGYqXqjHl9ySsmL3ay64NP4W0gczpwipc3K5j/WWxvVZ9fcQ+Q==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/abi-typegen": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/contract": "0.101.3", - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/recipes": "0.101.3", - "@fuel-ts/script": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "bundle-require": "5.1.0", - "chalk": "4", - "chokidar": "3.6.0", - "commander": "13.1.0", - "esbuild": "0.25.3", - "glob": "10.4.5", - "handlebars": "4.7.8", - "joycon": "3.1.1", - "lodash.camelcase": "4.3.0", - "portfinder": "1.0.32", - "toml": "3.0.0", - "uglify-js": "3.19.3", - "yup": "1.6.1" - }, - "bin": { - "fuels": "fuels.js" + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fuels/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/fuels/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">= 0.4" + } + }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "engines": { + "node": ">= 0.8" } }, - "node_modules/fuels/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.6" } }, - "node_modules/fuels/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.6" } }, - "node_modules/fuels/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 0.6" } }, - "node_modules/fuels/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "engines": { + "node": ">= 0.8" } }, - "node_modules/fuels/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/fuels/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.0.0" } }, - "node_modules/fuels/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6" } }, - "node_modules/fuels/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "license": "MIT", - "engines": { - "node": ">=8.6" + "dependencies": { + "debug": "4" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/fuels/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 14" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=14.18.0" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, + "node_modules/idb": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/idb/-/idb-8.0.3.tgz", + "integrity": "sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg==", + "license": "ISC" + }, + "node_modules/idb-keyval": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 4" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { - "glob": "dist/esm/bin.mjs" + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "20 || >=22" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">=0.8.19" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "node_modules/inflation": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/glob/node_modules/minimatch": { + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/globals": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", - "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", - "dev": true, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -7338,105 +10689,100 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/graphql-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-6.1.0.tgz", - "integrity": "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.2.0", - "cross-fetch": "^3.1.5" - }, - "peerDependencies": { - "graphql": "14 - 16" + "engines": { + "node": ">=8" } }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.1.0" - }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "node": ">=6" } - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=0.4.7" + "node": ">= 0.4" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -7444,1195 +10790,1527 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" - }, + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/http-signature": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", - "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", - "license": "MIT", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.18.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10" + "node": ">=10" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=10.17.0" + "node": ">=0.10.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/ieee754": { + "node_modules/iterare": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=6" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, "bin": { - "import-local-fixture": "fixtures/cli.js" + "jake": "bin/cli.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jake/node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, - "engines": { - "node": ">=0.8.19" - } + "license": "MIT" }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">= 0.10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-fn": { + "node_modules/jest-changed-files/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "path-key": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=0.12.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "license": "MIT", "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "license": "MIT" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest": { + "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "jest-resolve": "*" }, "peerDependenciesMeta": { - "node-notifier": { + "jest-resolve": { "optional": true } } }, - "node_modules/jest-changed-files": { + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, + "license": "MIT", "dependencies": { - "execa": "^5.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus": { + "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "source-map-support": "0.5.13" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-cli": { + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "engines": { + "node": "*" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-config": { + "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", + "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", + "natural-compare": "^1.4.0", "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } } }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/jest-diff": { + "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", "jest-get-type": "^29.6.3", + "leven": "^3.1.0", "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each": { + "node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", + "emittery": "^0.13.1", "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "string-length": "^4.0.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-node": { + "node_modules/jest-worker": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-deterministic": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz", + "integrity": "sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "engines": { + "node": ">=6" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "universalify": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "tsscmp": "1.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, + "node_modules/koa": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", + "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, + "node_modules/koa-bodyparser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz", + "integrity": "sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==", + "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "co-body": "^6.0.0", + "copy-to": "^2.0.1", + "type-is": "^1.6.18" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, + "node_modules/koa-bodyparser/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, + "node_modules/koa-bodyparser/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "node_modules/koa-bodyparser/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.6" } }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, + "node_modules/koa-bodyparser/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "license": "MIT" + }, + "node_modules/koa-compress": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/koa-compress/-/koa-compress-5.1.1.tgz", + "integrity": "sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg==", + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "bytes": "^3.1.2", + "compressible": "^2.0.18", + "http-errors": "^1.8.1", + "koa-is-json": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "node_modules/koa-compress/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 0.6" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, + "node_modules/koa-compress/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "node_modules/koa-compress/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "co": "^4.6.0", + "koa-compose": "^4.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, + "node_modules/koa-is-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/koa-is-json/-/koa-is-json-1.0.0.tgz", + "integrity": "sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw==", + "license": "MIT" + }, + "node_modules/koa-router": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "deprecated": "Please use @koa/router instead, starting from v9! ", + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.2.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/koa-router/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/koa/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=10" + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "node_modules/koa/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "node_modules/koa/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.6" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "node_modules/koa/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "license": "(AFL-2.1 OR BSD-3-Clause)" + "node_modules/koa/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/koa/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "node_modules/koa/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" + "node_modules/koa/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/level-concat-iterator": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", + "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", + "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "catering": "^2.1.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=10" } }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "engines": [ - "node >=0.6.0" - ], + "node_modules/level-supports": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", + "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "engines": { + "node": ">=10" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, + "node_modules/leveldown": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.1.tgz", + "integrity": "sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A==", + "deprecated": "Superseded by classic-level (https://github.com/Level/community#faq)", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, + "abstract-leveldown": "^7.2.0", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + }, "engines": { - "node": ">=6" + "node": ">=10.12.0" } }, "node_modules/leven": { @@ -8640,6 +12318,7 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -8649,6 +12328,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -8658,15 +12338,49 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.9", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz", - "integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==" + "version": "1.12.15", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.15.tgz", + "integrity": "sha512-TMDCtIhWUDHh91wRC+wFuGlIzKdPzaTUHHVrIZ3vPUEoNaXFLrsIQ1ZpAeZeXApIF6rvDksMTvjrIQlLKaYxqQ==", + "license": "MIT" }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/lmdb": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", + "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.4.2", + "@lmdb/lmdb-darwin-x64": "3.4.2", + "@lmdb/lmdb-linux-arm": "3.4.2", + "@lmdb/lmdb-linux-arm64": "3.4.2", + "@lmdb/lmdb-linux-x64": "3.4.2", + "@lmdb/lmdb-win32-arm64": "3.4.2", + "@lmdb/lmdb-win32-x64": "3.4.2" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "license": "MIT" }, "node_modules/load-esm": { "version": "1.0.2", @@ -8682,6 +12396,7 @@ "url": "https://buymeacoffee.com/borewit" } ], + "license": "MIT", "engines": { "node": ">=13.2.0" } @@ -8700,6 +12415,7 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" } @@ -8709,6 +12425,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -8722,7 +12439,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -8730,23 +12448,69 @@ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, + "node_modules/lodash.chunk": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", + "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "license": "MIT" + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "license": "MIT" + }, + "node_modules/lodash.pickby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", + "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", + "license": "MIT" + }, + "node_modules/lodash.times": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.times/-/lodash.times-4.3.2.tgz", + "integrity": "sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A==", + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -8758,16 +12522,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, "node_modules/lossless-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.1.0.tgz", - "integrity": "sha512-DgoRs42jH/yNubp8iinRqvG0xn5awHKXVY+7lGYjBaByoHGZt/Dz5Jkaf5znP2XHbTnAA+bbkhK3lMIaf3+92A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.2.0.tgz", + "integrity": "sha512-bsHH3x+7acZfqokfn9Ks/ej96yF/z6oGGw1aBmXesq4r3fAjhdG4uYuqzDgZMk5g1CZUd5w3kwwIp9K1LOYUiA==", "license": "MIT" }, "node_modules/loupe": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.0.tgz", - "integrity": "sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "license": "MIT", "peer": true }, @@ -8776,6 +12546,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -8784,6 +12555,7 @@ "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -8793,6 +12565,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -8807,13 +12580,15 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -8822,6 +12597,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -8830,6 +12606,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -8839,6 +12616,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -8850,6 +12628,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -8861,13 +12640,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -8876,7 +12656,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8886,6 +12666,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -8899,6 +12680,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8907,21 +12689,22 @@ } }, "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=10.0.0" } }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8930,6 +12713,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, @@ -8938,19 +12722,29 @@ } }, "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8962,6 +12756,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8970,38 +12765,76 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.5.tgz", + "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } }, "node_modules/multer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.0.tgz", - "integrity": "sha512-bS8rPZurbAuHGAnApbM9d4h1wSoYqrOqkE+6a64KLMK9yWU7gJXBDDVklKQ3TPi9DRb85cRs6yXaC0+cjxRtRg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", + "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "license": "MIT", "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "mkdirp": "^0.5.6", "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" + "type-is": "^1.6.18", + "xtend": "^4.0.2" }, "engines": { "node": ">= 10.16.0" @@ -9011,6 +12844,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9019,6 +12853,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9027,6 +12862,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -9034,10 +12870,23 @@ "node": ">= 0.6" } }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/multer/node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -9060,6 +12909,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, + "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -9083,16 +12933,24 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -9100,19 +12958,28 @@ "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.21" } @@ -9137,17 +13004,44 @@ } } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", + "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "dev": true, + "license": "MIT" }, "node_modules/node-vault": { "version": "0.10.5", @@ -9168,20 +13062,36 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/oauth-sign": { @@ -9197,6 +13107,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9205,6 +13116,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9212,10 +13124,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -9227,30 +13155,37 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -9268,6 +13203,7 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, + "license": "MIT", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -9291,6 +13227,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9300,27 +13237,60 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "license": "MIT" + }, + "node_modules/ox": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ox/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -9336,6 +13306,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -9351,6 +13322,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9358,7 +13330,8 @@ "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" }, "node_modules/pako": { "version": "2.1.0", @@ -9371,6 +13344,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -9383,6 +13357,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9400,6 +13375,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -9409,6 +13385,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9418,6 +13395,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9426,6 +13404,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -9434,12 +13413,14 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -9452,9 +13433,10 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", + "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", + "license": "ISC", "engines": { "node": "20 || >=22" } @@ -9463,6 +13445,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", "engines": { "node": ">=16" } @@ -9472,6 +13455,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9493,27 +13477,17 @@ "node": ">= 14.16" } }, - "node_modules/peek-readable": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-7.0.0.tgz", - "integrity": "sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -9521,11 +13495,85 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pino": { + "version": "9.9.4", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.9.4.tgz", + "integrity": "sha512-d1XorUQ7sSKqVcYdXuEYs2h1LKxejSorMEJ76XoZ0pPDf8VzJMe7GlPXpMBZeQ9gE4ZPIp5uGD+5Nw7scxiigg==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", + "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "secure-json-parse": "^4.0.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^5.0.2" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -9535,6 +13583,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -9547,6 +13596,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -9560,6 +13610,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -9572,6 +13623,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -9587,6 +13639,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -9599,6 +13652,7 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9617,15 +13671,6 @@ "node": ">= 0.12.0" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, "node_modules/portfinder/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -9635,6 +13680,18 @@ "ms": "^2.1.1" } }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -9665,9 +13722,9 @@ } }, "node_modules/postman-request": { - "version": "2.88.1-postman.42", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.42.tgz", - "integrity": "sha512-lepCE8QU0izagxxA31O/MHj8IUguwLlpqeVK7A8vHK401FPvN/PTIzWHm29c/L3j3kTUE7dhZbq8vvbyQ7S2Bw==", + "version": "2.88.1-postman.43", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.43.tgz", + "integrity": "sha512-5ivoZnMvnX47/HA7mk2GQubZsnXptlJGVyO0hLV3MTK/MDgJVnB/q3bUgzU4KhwG8OBxe2L8uqv3ZpK6mp+RdA==", "license": "Apache-2.0", "dependencies": { "@postman/form-data": "~3.1.1", @@ -9687,6 +13744,7 @@ "oauth-sign": "~0.9.0", "qs": "~6.5.3", "safe-buffer": "^5.1.2", + "socks-proxy-agent": "^8.0.5", "stream-length": "^1.0.2", "uuid": "^8.3.2" }, @@ -9729,6 +13787,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -9738,6 +13797,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -9753,6 +13813,7 @@ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -9765,6 +13826,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -9779,6 +13841,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -9786,16 +13849,41 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/prom-client": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.3.tgz", + "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.4.0", + "tdigest": "^0.1.1" + }, + "engines": { + "node": "^16 || ^18 || >=20" + } }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -9810,10 +13898,35 @@ "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "license": "MIT" }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -9822,6 +13935,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", @@ -9834,10 +13953,21 @@ "url": "https://github.com/sponsors/lupomontero" } }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -9856,12 +13986,14 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -9882,7 +14014,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -9896,7 +14027,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" }, "node_modules/ramda": { "version": "0.30.1", @@ -9913,6 +14051,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -9921,54 +14060,69 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", + "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.6.3", + "iconv-lite": "0.7.0", "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.18.0" }, @@ -9977,6 +14131,15 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/redeyed": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", @@ -9986,16 +14149,27 @@ "esprima": "~4.0.0" } }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } @@ -10004,6 +14178,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10013,6 +14188,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10028,6 +14204,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -10048,6 +14225,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -10060,6 +14238,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10069,6 +14248,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -10078,6 +14258,7 @@ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -10087,6 +14268,7 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, + "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -10095,17 +14277,68 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "license": "MIT", + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -10115,6 +14348,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "license": "ISC", "dependencies": { "glob": "^11.0.0", "package-json-from-dist": "^1.0.0" @@ -10130,9 +14364,9 @@ } }, "node_modules/rollup": { - "version": "4.45.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.3.tgz", - "integrity": "sha512-STwyHZF3G+CrmZhB+qDiROq9s8B5PrOCYN6dtmOvwz585XBnyeHk1GTEhHJtUVb355/9uZhOazyVclTt5uahzA==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "license": "MIT", "peer": true, "dependencies": { @@ -10146,26 +14380,27 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.45.3", - "@rollup/rollup-android-arm64": "4.45.3", - "@rollup/rollup-darwin-arm64": "4.45.3", - "@rollup/rollup-darwin-x64": "4.45.3", - "@rollup/rollup-freebsd-arm64": "4.45.3", - "@rollup/rollup-freebsd-x64": "4.45.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.45.3", - "@rollup/rollup-linux-arm-musleabihf": "4.45.3", - "@rollup/rollup-linux-arm64-gnu": "4.45.3", - "@rollup/rollup-linux-arm64-musl": "4.45.3", - "@rollup/rollup-linux-loongarch64-gnu": "4.45.3", - "@rollup/rollup-linux-ppc64-gnu": "4.45.3", - "@rollup/rollup-linux-riscv64-gnu": "4.45.3", - "@rollup/rollup-linux-riscv64-musl": "4.45.3", - "@rollup/rollup-linux-s390x-gnu": "4.45.3", - "@rollup/rollup-linux-x64-gnu": "4.45.3", - "@rollup/rollup-linux-x64-musl": "4.45.3", - "@rollup/rollup-win32-arm64-msvc": "4.45.3", - "@rollup/rollup-win32-ia32-msvc": "4.45.3", - "@rollup/rollup-win32-x64-msvc": "4.45.3", + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", "fsevents": "~2.3.2" } }, @@ -10173,6 +14408,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", @@ -10203,6 +14439,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -10211,6 +14448,7 @@ "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -10232,18 +14470,47 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -10257,11 +14524,27 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/secure-json-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", + "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -10273,6 +14556,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", @@ -10295,6 +14579,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -10303,6 +14588,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", @@ -10322,12 +14608,32 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha256": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sha256/-/sha256-0.2.0.tgz", + "integrity": "sha512-kTWMJUaez5iiT9CcMv8jSq6kMhw3ST0uRdcIWl3D77s6AsLXNXRp3heeqqfu5+Dyfu4hwpQnMzhqHh8iNQxw0w==", + "dependencies": { + "convert-hex": "~0.1.0", + "convert-string": "~0.1.0" + } + }, + "node_modules/sha3": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", + "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", + "license": "MIT", + "dependencies": { + "buffer": "6.0.3" + } }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -10339,6 +14645,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10347,6 +14654,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -10365,6 +14673,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -10380,6 +14689,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -10397,6 +14707,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -10422,6 +14733,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -10433,22 +14745,72 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 8" } @@ -10464,10 +14826,10 @@ } }, "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -10477,16 +14839,26 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sshpk": { "version": "1.18.0", @@ -10518,6 +14890,7 @@ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -10530,6 +14903,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10567,6 +14941,21 @@ "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", "license": "MIT" }, + "node_modules/starknet/node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/starknet/node_modules/@noble/hashes": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", @@ -10580,9 +14969,10 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -10594,6 +14984,15 @@ "license": "MIT", "peer": true }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, "node_modules/stream-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", @@ -10603,6 +15002,12 @@ "bluebird": "^2.6.2" } }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -10612,23 +15017,26 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "license": "WTFPL OR MIT" }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -10642,6 +15050,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10651,6 +15060,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10662,6 +15072,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10676,6 +15087,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10689,6 +15101,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10697,6 +15110,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10708,6 +15122,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10716,6 +15131,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10727,6 +15143,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -10742,6 +15159,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -10753,6 +15171,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -10762,17 +15181,21 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -10780,6 +15203,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -10787,13 +15211,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/strtok3": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.2.2.tgz", - "integrity": "sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==", + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.4.tgz", + "integrity": "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==", + "license": "MIT", "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^7.0.0" + "@tokenizer/token": "^0.3.0" }, "engines": { "node": ">=18" @@ -10803,31 +15239,53 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "license": "MIT" + }, "node_modules/superagent": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.1.tgz", - "integrity": "sha512-O+PCv11lgTNJUzy49teNAWLjBZfc+A1enOwTpLlH6/rsvKcTwcdTT8m9azGkVqM7HBl5jpyZ7KTPhHweokBcdg==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", + "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", "dev": true, + "license": "MIT", "dependencies": { - "component-emitter": "^1.3.0", + "component-emitter": "^1.3.1", "cookiejar": "^2.1.4", - "debug": "^4.3.4", + "debug": "^4.3.7", "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "formidable": "^3.5.4", "methods": "^1.1.2", "mime": "2.6.0", - "qs": "^6.11.0" + "qs": "^6.11.2" }, "engines": { "node": ">=14.18.0" } }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/supertest": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.1.tgz", "integrity": "sha512-aI59HBTlG9e2wTjxGJV+DygfNLgnWbGdZxiA/sgrnNNikIW8lbDvCtF6RnhZoJ82nU7qv7ZLjrvWqCEm52fAmw==", + "deprecated": "Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, + "license": "MIT", "dependencies": { "methods": "^1.1.2", "superagent": "^10.2.1" @@ -10840,6 +15298,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10852,6 +15311,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -10864,17 +15324,19 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/synckit": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", - "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, + "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.4" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -10883,23 +15345,151 @@ "url": "https://opencollective.com/synckit" } }, + "node_modules/systeminformation": { + "version": "5.23.8", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.23.8.tgz", + "integrity": "sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ==", + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "license": "MIT", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "license": "MIT", + "dependencies": { + "bintrees": "1.0.2" + } + }, + "node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "license": "Apache-2.0", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/terser": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.41.0.tgz", - "integrity": "sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -10915,6 +15505,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -10949,6 +15540,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -10965,6 +15557,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -10982,6 +15575,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -10994,6 +15588,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -11007,13 +15602,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -11033,6 +15630,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11047,32 +15645,15 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "devOptional": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } + "license": "MIT" }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -11088,6 +15669,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11103,6 +15685,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", @@ -11124,14 +15715,14 @@ "peer": true }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "license": "MIT", "peer": true, "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -11140,6 +15731,19 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", @@ -11170,28 +15774,18 @@ "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -11203,15 +15797,18 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/token-types": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz", - "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", + "integrity": "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ==", + "license": "MIT", "dependencies": { + "@borewit/text-codec": "^0.1.0", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -11270,6 +15867,7 @@ "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, + "license": "MIT", "bin": { "tree-kill": "cli.js" } @@ -11279,6 +15877,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12" }, @@ -11286,11 +15885,27 @@ "typescript": ">=4.8.4" } }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "license": "ISC", + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, "node_modules/ts-jest": { "version": "29.3.4", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.4.tgz", "integrity": "sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "ejs": "^3.1.10", @@ -11340,6 +15955,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -11352,6 +15968,7 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -11378,6 +15995,7 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -11421,6 +16039,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, + "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -11435,6 +16054,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", @@ -11450,6 +16070,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11457,7 +16078,17 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } }, "node_modules/tv4": { "version": "1.3.0", @@ -11488,6 +16119,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -11500,6 +16132,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11509,6 +16142,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11520,6 +16154,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", @@ -11532,13 +16167,15 @@ "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11552,6 +16189,7 @@ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", "integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.33.1", "@typescript-eslint/parser": "8.33.1", @@ -11569,6 +16207,15 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -11585,6 +16232,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", "dependencies": { "@lukeed/csprng": "^1.0.0" }, @@ -11593,9 +16241,10 @@ } }, "node_modules/uint8array-extras": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", - "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -11603,15 +16252,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -11620,6 +16283,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -11643,6 +16307,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -11659,6 +16324,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -11676,7 +16342,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", @@ -11691,13 +16358,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -11711,6 +16380,7 @@ "version": "13.15.15", "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -11719,6 +16389,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -11743,10 +16414,88 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "license": "MIT" }, + "node_modules/viem": { + "version": "2.23.7", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz", + "integrity": "sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.7", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", + "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "license": "MIT", "peer": true, "dependencies": { @@ -11916,6 +16665,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -11925,6 +16675,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -11938,10 +16689,17 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "license": "MIT" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -11949,22 +16707,24 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.99.9", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", - "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "version": "5.101.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", + "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", + "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -11978,7 +16738,7 @@ "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" @@ -12001,15 +16761,17 @@ "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/webpack-sources": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.2.tgz", - "integrity": "sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -12019,6 +16781,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -12036,6 +16799,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ajv": "^8.0.0" @@ -12054,6 +16818,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" @@ -12067,6 +16832,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -12081,6 +16847,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" @@ -12091,6 +16858,7 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/webpack/node_modules/mime-db": { @@ -12098,6 +16866,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">= 0.6" @@ -12108,6 +16877,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "mime-db": "1.52.0" @@ -12121,6 +16891,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -12156,6 +16927,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12188,6 +16960,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12198,11 +16971,34 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "license": "MIT" }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "license": "MIT", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12217,6 +17013,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12233,6 +17030,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -12241,6 +17039,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12253,6 +17052,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12262,6 +17062,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12272,13 +17073,15 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -12291,12 +17094,13 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -12318,6 +17122,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } @@ -12326,6 +17131,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -12334,12 +17140,14 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -12357,15 +17165,26 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -12374,7 +17193,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12383,10 +17202,11 @@ } }, "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -12417,6 +17237,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/treasury/package.json b/treasury/package.json index 16bb90d2..447a14e2 100644 --- a/treasury/package.json +++ b/treasury/package.json @@ -18,10 +18,15 @@ "test:e2e": "jest --config ./e2e/jest-e2e.json" }, "dependencies": { + "@aztec/accounts": "1.1.3", + "@aztec/aztec.js": "1.1.3", + "@aztec/kv-store": "1.1.3", + "@aztec/noir-contracts.js": "1.1.3", + "@aztec/pxe": "1.1.3", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", - "@nestjs/platform-express": "11.1.2", + "@nestjs/platform-express": "^11.1.6", "class-transformer": "0.5.1", "class-validator": "0.14.2", "ethers": "^6.14.3", @@ -52,7 +57,7 @@ "ts-loader": "9.5.2", "ts-node": "10.9.2", "tsconfig-paths": "4.2.0", - "typescript": "5.7.3", + "typescript": "^5.7.3", "typescript-eslint": "8.33.1" }, "jest": { diff --git a/treasury/src/app/interfaces/treasury.interface.ts b/treasury/src/app/interfaces/treasury.interface.ts index 57b3fc4c..faf8794d 100644 --- a/treasury/src/app/interfaces/treasury.interface.ts +++ b/treasury/src/app/interfaces/treasury.interface.ts @@ -1,7 +1,7 @@ -import { Network } from "src/treasury/shared/networks.types"; import { SignRequest, SignResponse } from "../treasury.types"; -import { PrivateKeyService } from "src/kv/vault.service"; import { GenerateResponse } from "../dto/base.dto"; +import { Network } from "../../treasury/shared/networks.types"; +import { PrivateKeyService } from "../../kv/vault.service"; export abstract class TreasuryService { protected constructor(protected readonly privateKeyService: PrivateKeyService) {} @@ -9,4 +9,3 @@ export abstract class TreasuryService { abstract sign(req: SignRequest): Promise; abstract generate(): Promise; } - \ No newline at end of file diff --git a/treasury/src/app/treasury.types.ts b/treasury/src/app/treasury.types.ts index dbece533..27c9c4cd 100644 --- a/treasury/src/app/treasury.types.ts +++ b/treasury/src/app/treasury.types.ts @@ -2,12 +2,14 @@ import { EVMSignRequest, EVMSignResponse } from "../treasury/evm/evm.dto"; import { BaseSignRequest, BaseSignResponse } from "./dto/base.dto"; import { StarknetSignRequest, StarknetSignResponse } from "../treasury/starknet/starknet.dto"; import { FuelSignRequest } from "../treasury/fuel/fuel.dto"; +import { AztecSignRequest } from "../treasury/aztec/aztec.dto"; export type SignRequest = (EVMSignRequest - | StarknetSignRequest - | FuelSignRequest) & BaseSignRequest; + | StarknetSignRequest + | FuelSignRequest + | AztecSignRequest) & BaseSignRequest; export type SignResponse = (EVMSignResponse - | StarknetSignResponse) & BaseSignResponse; + | StarknetSignResponse) & BaseSignResponse; diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index 0a4bc99a..7685ae81 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -1,16 +1,15 @@ import { promises as fs } from 'fs'; import { PrivateKeyConfigService } from './vault.config'; import { HttpStatus, Inject } from '@nestjs/common'; -import NodeVault = require('node-vault'); import { VaultException } from './vault.exception'; - +import NodeVault from 'node-vault'; export class PrivateKeyService { private pkKey: string = 'private_key'; - private vault: NodeVault.client; + private vault: NodeVault.client; private getTokenAsync!: () => Promise; - constructor(@Inject() private privateKeyConfig: PrivateKeyConfigService) { + constructor(@Inject() private privateKeyConfig: PrivateKeyConfigService) { console.log(privateKeyConfig); this.vault = NodeVault({ endpoint: privateKeyConfig.url @@ -19,22 +18,23 @@ export class PrivateKeyService { this.initLogin(); } - public async getAsync(address: string): Promise { + public async getAsync(address: string, pkKey: string = 'private_key'): Promise { try { await this.getTokenAsync(); - const {data} = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); - return data.data[this.pkKey]; + const { data } = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); + return data.data[this.pkKey]; } - catch (error) { + catch (error) { this.handleVaultError(error); } } - public async setAsync(address: string, privateKey: string): Promise { + public async setAsync(address: string, privateKey: string, pkKey: string = 'private_key'): Promise { try { await this.getTokenAsync(); await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { - data: { [this.pkKey]: privateKey }}); + data: { [this.pkKey]: privateKey } + }); } catch (error) { this.handleVaultError(error); @@ -42,23 +42,24 @@ export class PrivateKeyService { } private initLogin(): void { - this.getTokenAsync = + this.getTokenAsync = this.privateKeyConfig.isK8sAuthEnabled - ? async () => { - const k8sJWT = await fs.readFile(this.privateKeyConfig.k8sTokenPath, 'utf8'); + ? async () => { + const k8sJWT = await fs.readFile(this.privateKeyConfig.k8sTokenPath, 'utf8'); - await this.vault.kubernetesLogin({ - role: this.privateKeyConfig.k8sRoleName, - jwt: k8sJWT, - mount_point: PrivateKeyConfigService.k8sMountPoint}); - } : async () => { - await this.vault - .userpassLogin({ - username: this.privateKeyConfig.username, - password: this.privateKeyConfig.password, - mount_point: PrivateKeyConfigService.userPassMountPoint, - }) - }; + await this.vault.kubernetesLogin({ + role: this.privateKeyConfig.k8sRoleName, + jwt: k8sJWT, + mount_point: PrivateKeyConfigService.k8sMountPoint + }); + } : async () => { + await this.vault + .userpassLogin({ + username: this.privateKeyConfig.username, + password: this.privateKeyConfig.password, + mount_point: PrivateKeyConfigService.userPassMountPoint, + }) + }; } private handleVaultError(error: any): void { @@ -67,7 +68,7 @@ export class PrivateKeyService { [HttpStatus.FORBIDDEN]: 'Failed to access Vault. Access forbidden.', [HttpStatus.NOT_FOUND]: 'Failed to retrieve data from Vault. Address was not found.', }[statusCode] ?? 'Unknown Vault error occurred'; - + throw new VaultException(message, statusCode ?? HttpStatus.INTERNAL_SERVER_ERROR); } } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/ABIs/train.json b/treasury/src/treasury/aztec/ABIs/train.json new file mode 100644 index 00000000..17044063 --- /dev/null +++ b/treasury/src/treasury/aztec/ABIs/train.json @@ -0,0 +1,12975 @@ +{ + "transpiled": true, + "noir_version": "1.0.0-beta.7+0000000000000000000000000000000000000000", + "name": "Train", + "functions": [ + { + "name": "add_lock_private_user", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11091894166229312484": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17476367995570638746": { + "error_kind": "string", + "string": "NoAllowance" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + }, + "18313900523101689315": { + "error_kind": "string", + "string": "Note contract address mismatch." + } + } + }, + "bytecode": "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", + "debug_symbols": "vb3driQ9cp57L3Osg2Iwfhi+FWNDGMtjY4DByBhLBjYE3/uuDJLxRner2Lmq1rdP3I9H34oni5kRmUkyyf/403//y3/79//5z3/9+//41//9p//yX//jT//tH3/929/++j//+W//+i9//re//uvfn//rf/zpcf0/jcaf/kv7p+e/Pv/tj/VvW//S+revf3n9K+tfXf/a+nfF6yser3i84vGKxyser3i84vGKxyser3i84smKJyuerHiy4smKJyuerHiy4smKJyuerni64umKpyuerni64umKpyuerni64tmKZyuerXi24tmKZyuerXi24tmKZyveWPHGijdWvLHijRVvrHhjxRsr3ljxxornz3hy/dvWv7T+7etfXv/K+lfXv7b+Hetfj3/p8Vj/tvXvM55e//b1L69/Zf2r619b/z7j+fXvdXz9Ce2xoW2gDX0Db7h+tV2gG2zD2HBFHk+gx4a24YrcLugbeMMzMl0K0g22YWzwBVfSTGgbaEPfwBt25L4j9x2578h9R+YdmXdk3pF5R+YdmXdk3pF5R+YdmXdk2ZFlR5Yd+coluk7mlUwTZINusA1jgy+4UmpC20AbdmTdkXVH1h1Zd2TdkXVHth3ZdmTbkW1Hth3ZdmTbkW1Hth3ZduSxI48deezIY0ceO/LYkceOPHbksSOPHdl3ZN+RfUf2Hdl3ZN+RfUf2Hdl3ZF+R++OxoW2gDX0Db5ANusE2jA07ctuR247cduQrB2lcwBtkg26wDWODL7hycELbQBt2ZNqRaUemHfnKwd4vGBt8wZWDE9oG2tA38AbZoBt25L4j9x2Zd+QrB7teQBv6Bt4gG3SDbRgbfMGVgxN2ZNmRZUeWHfnKQX5coBtsw9jgC64cnNA20Ia+gTfsyLoj646sO7LuyLYj245sO7LtyLYj245sO7LtyLYj2448duSxI48deezIY0ceO/LYkceOPHbksSP7juw7su/IviP7juw7su/IviP7juwrMj8eG9oG2tA38AbZoBtsw9iwI7cdue3IbUduO3LbkduO3HbktiO3HbntyLQj045MOzLtyLQj045MOzLtyLQj047cd+S+I/cdue/IfUfuO3LfkfuO3HfkviPzjsw7Mu/IvCPzjsw7Mu/IvCPzjsw7suzIsiPLjiw7suzIOwd55yDvHOTIQbrAF0QOBrQNtKFv4A2yQTfYhh1Z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", + "brillig_names": [ + "discover_new_messages", + "get_note_internal", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "directive_integer_quotient", + "directive_invert" + ], + "verification_key": "AAAAAAAEAAAAAAAAAAAAEgAAAAAAAAAQAAAAAAAAVgkAAAAA//////////8AE1j3XpKJuc8X61qY\nEdlwEj4OsG+GP04grHtL+9ph7ekl1ReUNB3Z2PYM7EullRp/o/Q715UptrAcJT5lwufAlxp0/Hl3\naaVYQ8cJVlNRIXlCBO6lAtydLBL67rMaOe86KdzrsAdWO9THgMWXTk1LZjGhAPylN7r0TX9fvZZT\nB78PYqt+JtU0VZZphAlSREytUow85nvhUx9rbkj5ZF3kiC35aLn14Nat+c+7BHdJBPhYKO6igP/T\n/cG1EprCK2qdC6U/EhjytBjGJ2RnuJ+U3ZJ2qPH9IgVrMv0Ta3fcKusRcZlJIUHivH8a4CmfFhnO\nejZBpx4pIT0OPjV/14W6yi6px2pyTD69BP7RkgREY2156EIO3xsviKdW8stAaRi6AGP71ULrUW6U\nNta4CdTvhGkQSdbHGyMFiXNc2xkO7S4hZxoL4c3NhUTKHK1dkmM4Y9iqrwATJw7O0vy6WwUgVB1I\ntEfOgg750xnKObQCv5Ai4i5tWsd9rri2QTuWZfjGEabVvIpfVK1Cmo0sICvRD9kVavxZhNfishhT\njnOjarMEaHGye2msWK1jh5dtDtpyAx4+e0Dduaitynb2eIOYxSmMMxH8kXD5LelAsEKquZDVPGo7\nJjOc2mtz35IIMUFZB7BfQIphKEclkBa5IErkvzdTfrGWsFwdmPpRAWqbrLst8CWHAz0VXpYMloY6\n/JOkSOZLM6roxWUetMggKALNFCCJXMX5D739DN2bMQTaufDZZDw4S50zNZ/kuJ1FXcudK22/a0in\nKzh2y1rKQG121uNZzRbV8Vxr/f8d8DFL8tssqLTwbzyuD/fusxwKJ+5uzA7LDU5Sho9V4UFPJEBa\ncyHrSJuRmKhkLL92LlSOA5ve52T8+85x9jwkt2+sZv9oEf1BtfmTbZMquuTG6TPg05wk6o4uDu5w\nKlMm81nJR8AUoX18ClXS1F7o7fbsFlwRPSgrmEfVYv1BQCIOR+GCrxpw0tC/U/KBmNxua015bsn0\nE4YWuRKVxKct3D6sKlhhEA6w6TM/I1IBWZ5T7qs9+wlkpY2LzWRLDR7POPob91EI2Qn5BO1PI1JY\n6YZdxbaS7WyOtpKipXzm9vbNdfcnBy00jfGmGg/qj6biiIAE1+HsZi7kvsaXS1E1AsTjoDoADxlz\nSHRnBRITU45ufDVlph/7P7tHIA1031/JflIDuh4pVKPM1Z8JJUaKTLaYwqE9tl1yyj9IAFDAuphd\n7SeJsQLkc1Jhd/u+sMaCPdy1YylKZ7L3cpFW/R1VURxDi1emHgoaLructsDDEx2WTO3Vqcxdmp2Y\nUwDCz7U+3mQvXLYYojAXHJsbszp3r+tawZW6yT3K6aeGEu5xPxlT6Ec+MS6nMT8AQwfof5W65At3\n1JeWfGcipsi87UyLhMZ5ajLLLjvUnnOsU64traxchoTXzFfa7+u6xAjftOf5T+tJGzERw67pUxl+\nlTf14H1hPmwPLOO1q4xPXBs7IqvkZssccyHoR9DQp/5FNXgHm0ARpQDk4RcEBbZO2wlCgI7pfmT0\nMFp0FNdS97IpcolDqXiE/qoFldpBbGc0richTJpX4tMALSlRFIKjm+eNAmjSuTmpCnKTl9oOYeAH\nCwDOVpTaphNVXNTKbfK1wxvs3f7GpPK81JMdC8yK1p1thFg1GJUWAlLRscwhn3/EUM8hIzmE5Uq4\nEzQ/RoVNNXy1uyOF7poe/8Ek71hKES6f8CPNzL39K7CQ7jctJLI4ZzJ6QO5H2SfWZg7qSPmCI8i6\ns5PflQywt3mqnseQV/MjmHyN08U0Jwb4NVAG0+ImoRWwKblZfyWJXMSctBpAbOUL/0g2RREkwPJT\ncbnmJGH7Pk7FuwhtNLIkI4AyEGbSnYmXPzBsOwrcicSNdbVxY29bvrSoBvb0WWICMBtq5OsOu+rd\nIDNABm8oE1dI8RljHD/gf6nXAANOPidFTvmStL+EuXuqdHEuJXg1Ud9QwATsfNH03Ys7ZKZvKsSX\nm2XlZWjFoxsU7Rj3bPDO7MtHmN50GuibZOglj4RHfBtiVlpVm6e7OIMuLSmftoZ40BULzFsW3IJS\nNT1D+nDpkjnBwcZ+JxoO6sUV06xaGZq7dJM6TvyYxZsoFO3nzSfa7QDDPBKGC8SwRi041tS6Hkdj\np07NsRyh80aWgMJw5VFRU0RZL1kYj6dlEts56JKCazJhDuCCUeAF/OkXwNXcoBlHfFL2B1MythIA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAACK/zOK1NJxDGnSwOsI0XPv7lXFxWhI4I6Myt45NoNHbgceLfYOaVpt6IGKISLE26P5JYK\nnAO9PK8ZxgikIAaaWADENyb3W2/aDeIs4ODfq2vMegX/lalrKJQkxfczZw2WL5tuC04sAZaN5cMk\ngqp9HQoJ1xeOyTuteFj5bmTwtI0dWKphxkrVIgQ9ecSAIhnlW6GXUa3+bDYyTT+2wtoJiS18GKk8\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "add_lock_public_user", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2722406262643068352": { + "error_kind": "string", + "string": "HashlockAlreadySet" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "16870384257694633552": { + "error_kind": "string", + "string": "Function add_lock_public_user can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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Ui0CAAAtCjAcBCosHAsAKh0LHBwKLgsAJwIdAEgnAiEEKy0IACstCgUsLQodLQAIACEAJQAAGlItAgAALQosHgQqCx4dACocHQsnAhwAaCcCHgQrLQgAKy0KBSwtChwtAAgAHgAlAAAaUi0CAAAtCiwdBCoKHRwAKgscChwKKgsAJwIcAHAnAh4EIS0IACEtCgUiLQocIwAIAB4AJQAAGlItAgAALQoiHQQqCx0FACoKBQstCAEFJwIKBBgACAEKAScDBQQBACIFAgotCgocLQ4LHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcLQ4FCRwKHwUAHAoSCgAcChYLABwKGBIAHAoaFgAcChsYABwKERoAHAoOEQAcCgQOAC0IAQQnAhsEDAAIARsBJwMEBAEAIgQCGy0KGxwtDgYcACIcAhwtDgUcACIcAhwtDiAcACIcAhwtDgocACIcAhwtDgscACIcAhwtDhIcACIcAhwtDhYcACIcAhwtDhgcACIcAhwtDhocACIcAhwtDhEcACIcAhwtDg4cHAoZBQAcCggGABwKDAgAHAoTCgAcChQLABwKFQwAHAoPDgAcCgMPAC0IAQMnAhEEDAAIAREBJwMDBAEAIgMCES0KERItDgcSACISAhItDgUSACISAhItDhASACISAhItDgYSACISAhItDggSACISAhItDgoSACISAhItDgsSACISAhItDgwSACISAhItDg4SACISAhItDg8SACISAhIuDIBKABIuCIBFABcjAAANqw0iABeATgAFJAIABQAAEg4jAAANwC0LCQQtCwQFACIFAgUtDgUELQgBBScCBwQEAAgBBwEnAwUEAQAiBQIHLQoHCS4MgEcACQAiCQIJLgyARwAJACIJAgkuDIBHAAkrAgAHAAAA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", + "debug_symbols": "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", + "brillig_names": [ + "add_lock_public_user" + ] + }, + { + "name": "commit_private_user", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + }, + { + "name": "randomness", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6418028854678020178": { + "error_kind": "string", + "string": "FundsNotSent" + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfM8yj+qh6kSZbkSTWpTYo871SSKImTUoNTg1ODUyPyvAa1SZHnnUoSJXGSJGmSJXlSakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhq1NSoqVFTo6ZGTY2aGjU1amrU1Kip0VKjpUZLjZYaLTVaarTUaKnRUuPO80b/cH/yeyWVpIdGkyBOkiRNsiRPqklt0p3ng0pSapTUKKlRUqOkRkmNkholNSg1KDUoNSg1KDUoNSg1KDUoNSg1ODU4NTg1ODU4NTg1ODU4NTg1ODUkNSQ1JDUkNSQ1JDUkNSQ1JDUkNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1LDUsNSw1LDUsNSw1LDUsNSw1LDU8NTw1PDU8NTw1PDU8NTw1PDU8NWpq1NSoqVFTo6ZGTY2aGjU1amrU1Gip0VKjpUZLjZYaLTVaarTUaKnRpkYUqw0qSZTESZKkSZbkSTUpNTLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLP28xzumae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae03WlRkmNkholNUpqlNQoqVFSo6RGSY2SGpQalBqUGpQalBqUGpQalBqUGpQanBqcGpwanBqcGpwanBqcGpwanBqSGpIakhqSGpIakhqSGpIakhqSGpoamhqaGpoamhqaGpoa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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "notify_created_nullifier_oracle_wrapper", + "notify_created_note_oracle_wrapper", + "random", + "decompose_hint", + "lte_hint", + "field_less_than", + "build_msg_block", + "attach_len_to_msg_block", + "get_random_bytes", + "get_random_bytes", + "get_app_tag_as_sender", + "increment_app_tagging_secret_index_as_sender_wrapper", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "commit_public_user", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3559210201980528457": { + "error_kind": "string", + "string": "Function commit_public_user can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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EwAqGBMUHAoKEwIcChEKAgQqEy8RBCoKORMAKhETCi0IAREAAAECARwKEhMAJwISACAnAh4EPy0IAD8tCgtALQoSQQAIAB4AJQAAI9MtAgAALQpAGAQqOxgSACoTEhgnAhIAQCcCHgQ/LQgAPy0KC0AtChJBAAgAHgAlAAAj0y0CAAAtCkATBCo8ExIAKhgSExwKPhIAJwIYAEgnAh8EOy0IADstCgs8LQoYPQAIAB8AJQAAI9MtAgAALQo8HgQqEh4YACoTGBInAhMAaCcCHgQ7LQgAOy0KCzwtChM9AAgAHgAlAAAj0y0CAAAtCjwYBCoQGBMAKhITEBwKOhIAJwITAHAnAh4EHy0IAB8tCgsgLQoTIQAIAB4AJQAAI9MtAgAALQogGAQqEhgLACoQCxItCAELJwIQBBgACAEQAScDCwQBACILAhAtChATLQ4SEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATLQ4LERwKGgsAHAoXEAAcChkSABwKGxMAHAocFwAcCh0YABwKFRkAHAoUFQAcCgoUAC0IAQonAhoEDAAIARoBJwMKBAEAIgoCGi0KGhstDgwbACIbAhstDgsbACIbAhstDhYbACIbAhstDhAbACIbAhstDhIbACIbAhstDhMbACIbAhstDhcbACIbAhstDhgbACIbAhstDhkbACIbAhstDhUbACIbAhstDhQbHAoJCwAcCgcJAC0IAQcnAgwEDAAIAQwBJwMHBAEAIgcCDC0KDBAtDgYQACIQAhAtDgsQACIQAhAtDggQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAtDgkQACIQAhAuDIBKABAuCIBG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", + "debug_symbols": "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", + "brillig_names": [ + "commit_public_user" + ] + }, + { + "name": "constructor", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "initializer" + ], + "abi": { + "parameters": [], + "return_type": null, + "error_types": { + "2233873454491509486": { + "error_kind": "string", + "string": "Initializer address is not the contract deployer" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17618083556256589634": { + "error_kind": "string", + "string": "Initialization hash does not match" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "constructor" + ] + }, + { + "name": "get_htlc_public", + "is_unconstrained": true, + "custom_attributes": [ + "view", + "utility" + ], + "abi": { + "parameters": [ + { + "name": "key", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "Train::HTLC_Public", + "fields": [ + { + "name": "src_receiver", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "claimed", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + ] + }, + "visibility": "public" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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DWwD28A2sA1sA9vANrANbAPbxDaxTWwT28Q2sU1sE9vENsPmkygXFrCCDeyggAoaOEBsBVvBVrAVbAVbwVawFWwFW8FWsVVsFVvFVrFVbBVbxVaxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGltjZ6OLYwA76TTgnDbKgETQvGuedTKcSVINaUA+SIA2yoBEUjhKOEo4SjrOtzbGDAvomnI4GHpvQb8n77MkLva0vLGAFG9hBARU0EFvF1rA1bN7WPkPAZ08u7KCAChroNt863tYneltf6MO4TjWoBfUgCdIgr3gcLv5iyu6zFnxaZPdJCT4tcqGACvqS+l7wJr1wBnqTXlhAv9Hl1IIOl99S8EmRCxU8XD5m5JMiF85Ab9HzSPIWvfBYs1PhLXphB33NnDTIgkbQXOTdeZJX9M3mP97ndvUf7zYcBzgD/cf7wmNJffKET3Fc2MAOCnjYfPH9t/uk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", + "brillig_names": [ + "get_htlc_public" + ] + }, + { + "name": "is_contract_initialized", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "boolean" + }, + "visibility": "public" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "is_contract_initialized" + ] + }, + { + "name": "lock_private_solver", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "randomness", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6418028854678020178": { + "error_kind": "string", + "string": "FundsNotSent" + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnkfxV/UgTbIkT6pJbVLkeaeSREmclBqcGpwanBqR5zWoTYo871SSKImTJEmTLMmTUkNSQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1PDUsNSw1LDUsNSw1LDUsNSw1LDUsNTw1PDU8NTw1PDU8NTw1PDU8NTo6ZGTY2aGjU1amrU1KipUVOjpkZNjZYaLTVaarTUaKnRUqOlRkuNlhp3njf6h/uT3yupJD00mgRxkiRpkiV5Uk1qk+48H1SSUqOkRkmNkholNUpqlNQoqUGpQalBqUGpQalBqUGpQalBqUGpwanBqcGpwanBqcGpwanBqcGpwakhqSGpIakhqSGpIakhqSGpIakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhqVFTo6ZGTY2aGjU1amrU1KipUVOjpkZLjZYaLTVaarTUaKnRUqOlRkuNNjWiWG1QSaIkTpIkTbIkT6pJqZF53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53mae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae0zXznK4rNUpqlNQoqVFSo6RGSY2SGiU1SmqU1KDUoNSg1KDUoNSg1KDUoNSg1KDU4NTg1ODU4NTg1ODU4NTg1ODU4NSQ1JDUkNSQ1JDUkNSQ1JDUkNSQ1NDU0NTQ1NDU0NTQ1NDU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avSq0atGrxq9aok3ub70qtGrRq9a4k289KrRq0avGr1q9KrRq0avGuerxvmq0atGrxq9apyvGuerRq8avWr0qtGrRq8avWr0qg28g+tLrxq9avSqDbwDL71q9KrRq0avGr1q9KrRqzbxTq4vvWr0qtGrNvEuvPSq0atGrxq9avSq0atGr9rCu+717fSq06tOr/rnevsn4QZ3eMATvuvt9KrTq17wlgon3OAO4y146VWnV51edXrV6VWnV51e9cAbA54w+0yvesVb8dKrTq86ver0qtOrTq86veqJN7m+9KrTq06veuJNvPSq06tOrzq96vSq06tOr3rD27i+9KrTq06vOp8HO58HO73q9KrTq06vOr3q9KrTq97xdq4vver0qtOrzufBPvDSq06vOr3q9KrTq06vOr3qE+/k+tKrTq86vep8HuwTL73q9KrTq06vOr3q9KrTq77wLq4vver0atCrwefB8Qm4wgk3uMMDnvBd7yh4S4EDrnDCeAteejXo1aBXg14NejXo1aBXI/BGgzs84AnjrXjp1aBXg14NejXo1aBXg16NirdyfenVoFeDXg0+D47ES68GvRr0atCrQa8GvRr0ajS8jetLrwa9GvRq8Hlw0KvB+Wpwvhr0avB5cHS83L8a9GrQq0GvBuer8fTqe+/0jH6fe25n9vvlgCuccIM7POAJ3/uEZwj8ZbwT78Q78U68E+/EO/FOvAvvwrvwLrwL78K78C68C++63jMY/nKBA67wvb6T+1eT+1eTXk16NenV5Hw1OV9NejXp1aRXk15NejXp1aRXk15NejXp1Qy8gZdeTXo16dXk8+Dk/tWkV5NeTXo16dWkV5NeTXo1K9464Anfn99JryafByf3rya9mvRq0qtJrya9mvRq0qvZ8LYCs8/0atKryefByf2rSa9mw8v5anK+mvRqcr6anK8mvZrcb5/cb5+dfeZ8Nfk8OLl/Nbl/NbnfPjlfTc5Xk/PV5Hw1OV9N7rfPwfWd7PNknzlfTT4PTu5fTe5fTe63T85Xk/PV5Hw1OV9NzleT++1zcX0X+7zYZ85Xk8+Dk/tXk/tXi/vti/PV4ny1OF8tzleL89WiV+sz4AnffV6crxa9Wty/Wty/WtxvX/Rq0atFrxa9WvRqcb99RYEDrnDCeLl/tejVoleLXi16tejVoleLXi3ut6/aYPaZXi16tfg8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+/cMxDPf/vD2zv2aT68e3t55nnPC6/Lp1dr7cHr18NfbPtu7e/Vywg3um2PzgCe8Nn9f85lv/zkdbS7w8c7NFd7e73+oOc58+8sd3t7v35kQZ7795e39/mfZ48y3v1zg7Y392navXt7e2K9t9+rl7f3+lyHizLe/POHt/f5N53Hm21/e3v3ePvPtLfdr2L16OeHtzf16dq9e3t48zznhdXn3qu33/Jlvf3l79/v5zLe/nPD29v06d69e3t6+93b36uXt7Xvtu1cvb2/fz7l79XKFt3fs59+9enl798/FmW9/ecLbO/d7YPfq5e2d+7XtXr28vWvv7e7Vyw3e3rX3effq5e1d27t71T/7OXev+nlv7169jwdc4YQb3OHBc04eX/fx8bmPD7wD76h8Pd6Bd+AdA558L+udeCfeGffrJ+udyeN4Z+dxvJP1TryLfV54F96Fd+FdeBfrXXgX613Xe+bbXy6/v+bMt7+PVx5PHm883nl8wBPGW/AWvAVvqTDegrfgLYPH8Ra8gTcKfPf5zLe/jyePNx7HG3gDb+CteCveynor3sp6K95631dnvv19HG+9P0dnvv15PPEm3uT6Jt5kn5P1Jt6cfA3rbff9fObb38fZ58Z6G97GehvehrfhpVezs97O+4peTXo16dWkV5NezY634+146dWkV5NeTXo16dWkV3NwfenVpFeTXk16NSfrnXgn3omXXk16NenVnHjp1Vx4F96Fl17NhZdeTXo16dVcvJ/XfT8verXo1aJX61PhhBvc4QFPGC+9WqXAwdfgpVeLXi16tejVoleLXi16tejVCtYb9/quwEuvVnS+hvXG5HG89f78Lnq16NWqeOnVolerst7KeunVqngTL71a9Gol+0yvVuKlVyvxJt7k+jb2mV6threxXnq1GteXXq2Gt+FteOnVoleLXi16tXryNayXXi16tThfLXq1BvtMrxa9WgPvwEuvFuerRa/WwEuv1sTL+Wpxvlqcrxbnq0WvFr1a9Gpxvlr0anG+WpyvFuerRa8WvVqL60uv1uL60qt1e1U/t1f18ylwwJWvTx5vcOdrBo9PHl/38fK5jxe8Be/tVf0UvAVvwVvw3l7VT8EbeANv4A28gTca39t5HG+w3sBb2eeKt+KteGve56mst7LeirfirXiT9SbeDB7Hm6w38SbrTbyJN/E2vA1vw9vwNtbb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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "notify_created_nullifier_oracle_wrapper", + "notify_created_note_oracle_wrapper", + "random", + "decompose_hint", + "lte_hint", + "field_less_than", + "build_msg_block", + "attach_len_to_msg_block", + "get_random_bytes", + "get_random_bytes", + "get_app_tag_as_sender", + "increment_app_tagging_secret_index_as_sender_wrapper", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "AAAAAAAEAAAAAAAAAAAAEgAAAAAAAAAQAAAAAAAAVgkAAAAA//////////8AJo0brSz14UV3dMY4\n8F04kbq5kkpqD001snSvTKLiIKIKeHaViRvCUF71juxRM7VUgxsC/U2LH8+y8ybo8F7/ERoc973N\nV7iaukQyzsgx4xBuZia9jJsUwDMl+Mc5ZBEcB8X5LMQG+eIlL5Tout1luofK3XHDKiVrtIuUYShF\ngKECBf2+LdiSy0uEv1ytNkHfsKruYL0KQhgRpJ9NwOEeABGU1ku1LtYo1zF35V2w4R82h3ALh3Ev\n2tWIVaLJZtjMDBzMXnaimxDSjTYrXRbmp3b/HhRBPSjMnD6TqcXRGD0bLtoVpAVgcYDSn+4wsrz3\nPhDjkkCFat4MYmqfFPdrtCg2wijvmP3VUC82IUBGN3bXZVnEmTq4mKPeBbTPGhUDBwN+8wT36vXd\nIdSHetxxnw7hJcpApj7GdpxBj30kRGQS/g+4Vmey2GJjuPdagF3tW3GHPCiac/dBzeAf2aoIxgWt\nh8dZS7n3uVmmako1bGUTrCOUe33uDx/SBfsFlhFKEabVvIpfVK1Cmo0sICvRD9kVavxZhNfishhT\njnOjarMEaHGye2msWK1jh5dtDtpyAx4+e0Dduaitynb2eIOYxRh/VfVGtLRhV/a+BFuVRaXoytaQ\noB//6iBpJJwKMw7rLrj+HbyrMZ0B+GxjgUpZfwUg5X3FTj7CJv4+zvYKIRkG+SadW++twNlEKHtl\naZGtTPESghG0X2RTbkE/o8tHHxW0kPWdfcen+onf8PUWnQ82y/KXNNwwKxZ7GPRVHn05DU8eLJbD\nM/SF79iPTyhmw/oigQHswj9CrIPktuZd+HIXAKDvRdQ10wK6dGH53CBRYARQ4NnTrnUBQY8W6GlJ\nnB96I4J44CbLcGUqbPF3gYIrtHtc2dALZ18OHjbA653SF8a3h6WDJVqLyibRsYBgNNr8vLQdXghY\neO2tMPNmi/srymGJA934yEhPlQWxaMvG1LFkkoo8SCziPyiv4dgr6gzoSLgDKRC2WBAskfLbk77p\nmxuWvmwv9ro4pu+MSZKlAlrlnB+NLoom/p2jSKRqYr4EDm70EqpL9lLU3HD9dSQvtIcftX0sD4E6\nrvAHhtKljWQ6Go00n4uO4OhElAR7iBKdOT8Pg0eBFV4XwUBf8FyllLjWWuPekwpGMYESKSjaFZfi\nYOHwudc+dkUpD2RqLXtYvmcJD9s0vGjNta6CxpkuQSPsRGWQdeEPYMeW2GjQ6s4cNBVSCz0H4Aa6\nNNSFICKrbIxhLSHCFAqS5/xCbLHPQzpRYHpchgpDSTvIHMv/JSKpN9dSqpQPXNdPA59ab4l2t3IL\nAiibPvlyH1eirXoH3t7c1WiCMKrbgaybg2AmJASYIUPDNhhY62eI1/doXifCQ1aBMgS6yxiPnBvS\nc7TdEq1C92ERWSkMKr0EmT4sE1tG592tg9WErfoRrNylWwP0fHrq5+d8rZPv4U/VK1UJk5zv0lZn\nQ3Ly1lCn9/RF2Noc7g2FMsi7uBGkcIIAfiwrKYSIiL0rHx/ZxaheY4dxq2fFZPq1bcYY99PSXCVz\nGT9JF+lH0cLqRxftWDR00sWVEer3E4tchWpH3UEOPPwupaIoSDSrZC4hR2UgeC1kRFOwi/6JpZ92\nMIZ+S0lQbh8iql6emforzVu8JYvNvCfU+HHL9IBnewZTz1XeurInFbqAe12qtRxqJmNdtiC6wmIX\no2dTGuYHQDJ63DtV8wIFe8kGSi7Qy4+19I5QdT8f0vt2ygANYOnqJJWV1aacthcHyJohE2ZswGbf\nQwEl70FGKxJQytBqZrmEes5tW0qJBIEI/qpmwYZPclDUVnOK3L2e25CyPUHKF8Y5rqOhLPQB1o3e\nrp39lipnVkiwPUg71RLRVvTdLyF6Lp9quAC4RAtaDT7C5fKzBDrVkn917iJOe4uwdsAdnRXmldtJ\nYoR5L0k+SqJepx+Q/5V+KqqeomSYTxXLfqssT2ml2Ailb00MDfwyFqfkTkJc7/GGGfQrfw/rg2SO\nEbH+DYvGtgxvIQt+Bww1reRIgasMq+ppQb4/zeTE4IFhvnl5SCKu+7P2F0xNqsxv6+gtiDGpBETv\nEX32GkvxinRGtU2OzdDlJyENPQ9wXJw7Qm4veGR5CujPFMTyBusHozGX/1z2u6wLrwcDm+cLVXtv\nDU1Z+xKAoZlYPQqQ5tVT5L1kSbWO9QehChGFSw0wrqddreiukl/tbL8F77PitlsEvecaM00v6zMA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAACGvY2L6d3RK8HL4R0WW7VYQI1hvTSVN0eiPnGFPfys18urTPBDHNgj/ZwHhjaE41hGGLI\nWfrR9k0O1WcFP5hKdADENyb3W2/aDeIs4ODfq2vMegX/lalrKJQkxfczZw2WL5tuC04sAZaN5cMk\ngqp9HQoJ1xeOyTuteFj5bmTwtI0dWKphxkrVIgQ9ecSAIhnlW6GXUa3+bDYyTT+2wtoJiS18GKk8\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "lock_public_solver", + "is_unconstrained": true, + "custom_attributes": [ + "internal", + "public" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "ownership_hash", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "token", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + }, + "visibility": "private" + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "15001264570739363109": { + "error_kind": "string", + "string": "Function lock_public_solver can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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AgACgAMuAgANgAQuAgAMgAUlAAAIiy0KCwIoAgADBIB4JwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgADgAMuAgANgAQuAgAMgAUlAAAIiy0KCwMuCICYAAQuCICZAAUuCICaAAYoAgAHBICbJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAHgAMuAgANgAQuAgAMgAUlAAAIiy0KCwcoAgAIBIC5JwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAIgAMuAgANgAQuAgAMgAUlAAAIiy0KCwgoAgAJBIDXJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAJgAMuAgANgAQuAgAMgAUlAAAIiy0KCwkoAgAKBID1JwIMBFotCAELJwINBFsACAENAScDCwQBACILAg0uAgAKgAMuAgANgAQuAgAMgAUlAAAIiy0KCwolAAAI0SUAAAleKAIAAQSBTycCAgQAOw4AAgABAQCAA4AFgAcuAIADgAguAIAEgAkLAIAIgAeACiQAgAoAAAjQLgGACIAGLgSABoAJAQCACAACgAgBAIAJAAKACSMAAAifJigAgEMAAQAoAIBEBAADKACARQEAACgAgEYEAAAoAIBHBgAAKACASAAAACgAgEkBAAEoAIBKBAABKACASwAAASgAgEwEAAIoAIBNBAAEKACATgQABigAgE8EAAcoAIBQBAAIKACAUQQACSgAgFIEAAooAIBTBAALKACAVAQAFygAgFUEAB4oAIBWBAAgJiUAACHQHgIADAAeAgANADMqAAwADQAOJAIADgAACYIlAAAh+R4CAAwBHgIADQAKKgwNDiQCAA4AAAmeJQAAIgsnAgwAAi0IAQ0nAg4EAwAIAQ4BJwMNBAEAIg0CDi0KDg8tDgwPACIPAg8tDgEPJwIPBBAtCAAQLQoNES4IgEwAEi4IgEUAEwAIAA8AJQAAIh0tAgAALQoRDgsiAA6ASAAPCyIAD4BFABAkAgAQAAAKFCUAACPrHgIADwYnAhEEEi0IABIuCIBFABMuCIBIABQtCgwVLQoOFgAIABEAJQAAI/0tAgAALQoTEC0IAQ4AAAECAS0OEA4tCAEQAAABAgEuDIBGABAtCAERJwISBBgACAESAScDEQQBACIRAhInAhMEFwAqExITLQoSFAwq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", + "debug_symbols": "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", + "brillig_names": [ + "lock_public_solver" + ] + }, + { + "name": "process_message", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [ + { + "name": "message_ciphertext", + "type": { + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec", + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 17, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "message_context", + "type": { + "kind": "struct", + "path": "aztec::messages::processing::message_context::MessageContext", + "fields": [ + { + "name": "tx_hash", + "type": { + "kind": "field" + } + }, + { + "name": "unique_note_hashes_in_tx", + "type": { + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec", + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 64, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "first_nullifier_in_tx", + "type": { + "kind": "field" + } + }, + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + } + ] + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "vb3friW5cWf9Ln3ti00yIkjqVQYDQ/ZoBgIEyZDlD/hg+N1nM5jkijrlw8qz9+m5US91V8XKf/ztTJLJ/M/f/tef/uU//s8///mv//tv//7bH/7Hf/72L3//81/+8uf/889/+du//vEff/7bX5//9j9/e4z/SbX+9ofyT89/tt/+oOOf/bc/1Oc/2/M/9/HP9NsfUhqQnzD+Wa5/yvVPff5zVGi2oC5oC/oF/bEgLcgLygJZsCr3Vbmvyn1V7lfl/HgsSAvygrJAFugCW1AXtAWrclqV06qcVuW0KqdVOa3KaVVOq3JaldOqnFflvCrnVTmvynlVzqtyXpXzqpxX5bwql1W5rMplVS6rclmVy6pcVuWyKpdVuazKsirLqiyrsqzKsirLqiyjch1QF7QF/QJ9LEgL8oKyQBboglVZV2UdlduAfoE9FqQFeUFZ8Kyc04Bn5awDbEFd0Bb0C+pjwbNy7gPygrJAFjwrl8cAW1AXjMrjQI3m5zDa34Rn5TIUowFOKAtkgS6wBXVBW9AvGG1wwqrcV+W+KvdVua/KfVXuq3JflftVuTweC9KCvKAskAW6wBbUBW3BqPw8p2W0wQlpQV5QFsgCXWAL6oK2YFXOq3JelfOqnFflvCrnVTmvynlVzqtyXpXLqlxW5bIql1W5rMplVS6rclmVy6pcVmVZlWVVllVZVmVZlWVVllVZVmVZlWVV1lVZV2VdlXVV1lVZV2VdlXVV1lVZV2VblW1VtlXZVmVblW1VtlXZVuXRBuUxoF8w2uCEtCAvKAtkgS6wBXXBqlxX5bYqt6uyjMM7WqWMwytpwPjr/m/agn7BOJgT0oK8oCyQBbrAFqzKuirrqmyrsq3Ktirbqmyrsq3Ktirbqmyrsq3KdVWuq3JdleuqXFfluirXVbmuynVVrqtyW5XbqtxW5bYqt1W5rcptVW6rcluV26rcV+W+KvdVua/KfVXuq3Jflfuq3FflflXWEWhiA9KCvKAskAW64FlZHwPqgragXzACTdOAtOBZWWVAWSALdIEtqAvagn7BCLQJacGqnFflvCrnVXkEmuqAuqAt6BeMQJuQFozKdUBZIAuelW3s6Qi0CXVBW9AvGIE24VnZxvaMQJtQFsiCUXnYR6BNqBeMhqZtwPjr41yMZmX+b55/uI7jPJrVhLagXzCa1YS04FmnjsqjWU2QBbpgVB6u0awmjMp9QL9gNKsJaUFeUBY8K7dx1Y1mNcEW1AXPym0chNGsHEazamMzRrOakBeUBaPyUIxmNcEW1AVtQb9gNKs+pKNZTcgLyoJn5T42YzSrCbZgVB5XwmhWE/oEG21nwvjrOuD5h3sbMG7e8oDnH+7PzbDRUiakBXlBWSALdIEtqAvaglU5r8p5Vc6rcl4b5nfdj8cg21Q3tU19kd96P2RQ2pQ3lU2ySTe5YxwHvwOf1Db1RX4T/hgb6nfhk/Km4UhjW/xGfJJuGg4/xH4vPm7PzW/G09hfvxt38tvxSWlT3lQ2DUcelf2efJJtqpvapr7Ib8wnpU15U9m0HbYdth22HdXrjX2raVPeVDbJJl3kz7Hjt938QXaSVx5npu8t7XtL+9rS6s+c4zmg+kPnpLJJNukm21Q3tU19kT98TtqOtB1pO9J2pO1I25G2wx85sw3yv1sH+d/tg3STbaqb2qa+yK/2SWlT3lQ2bUfZjrIdZTvKdpTtkO2Q7ZDtkO2Q7ZDtkO2Q7ZDtkO3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7bDtsO2w7bDtsO2w7bDtsO2w7bDtqNtRt6NuR92Ouh11O+p21O2o21G3o21H2462HW072na07Wjb0bajbUfbjr4dfTv6dvTt6NvRt6NvR9+Ovh19OdrjsSltypvKJtmkm2xT3dQ2bUfajrQdaTvSdqTtSNuRtiNtR9qOtB15O/J25O3I27HbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO923nc777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO92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", + "brillig_names": [ + "process_message" + ] + }, + { + "name": "public_dispatch", + "is_unconstrained": true, + "custom_attributes": [ + "public" + ], + "abi": { + "parameters": [ + { + "name": "selector", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "516370165797458160": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "772057049813214347": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "2233873454491509486": { + "error_kind": "string", + "string": "Initializer address is not the contract deployer" + }, + "2570651705007895968": { + "error_kind": "string", + "string": "HashlockNotMatch" + }, + "2722406262643068352": { + "error_kind": "string", + "string": "HashlockAlreadySet" + }, + "2830029349304997821": { + "error_kind": "fmtstring", + "length": 27, + "item_types": [ + { + "kind": "field" + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3559210201980528457": { + "error_kind": "string", + "string": "Function commit_public_user can only be called internally" + }, + "3564161243949231814": { + "error_kind": "string", + "string": "Function refund_public can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6012086182631426650": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "9323748002447105156": { + "error_kind": "string", + "string": "NotPassedTimelock" + }, + "10870837545714573535": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "15001264570739363109": { + "error_kind": "string", + "string": "Function lock_public_solver can only be called internally" + }, + "16870384257694633552": { + "error_kind": "string", + "string": "Function add_lock_public_user can only be called internally" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17618083556256589634": { + "error_kind": "string", + "string": "Initialization hash does not match" + }, + "17814817983036354427": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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", + "debug_symbols": "vb3briW5ca77Ln2ti+QhGEG/yoJhyLJsNNCQDFnewIahd1/JPxiHqvZgjZlz1rrp+dXfyRg8JU9BMv/nl3/787/+93/8y69/+fe//tcv//R//ueXf/3br7/99ut//Mtvf/3TH//+61//cqv/88u1/kNj/PJP5Q+/EJP+lVuu6y/p37n/Pe3fE3/H1fff/e+y/11E/9a2/7L+bXX/3f/uZf8d+nfcz7f1V/Qv1/2X9a/sf8t+fsdr7HiNFS/6wy+84oW/on9L23/3v+tEOrmJ/u33/y/XAt5A1cCUYcowhU1hU6QYjA0rhgqiICtuCnPDyrVCC2TDyjcAfp1vGMVgbGBT2BQxRZZluWE2A1GYVzUYG0oxWIVyx2fWajA2tMugG8wN3ZQuG1bW1bqAN6zIK9AGNmVFHiCmiD0j9hPTfmLunyjXVZ2G0UrIJtfq5dTV7E3TqDUnNuquIUEgco38ueG/NvzX2H+Nu5PHWZqTa9PTMXdGlDv6TuRkcS7FNaRNKTR/DmlrIDbq1ck1co1cG64N11BiSsMIzYSSGKGwlOamenUne64Wi1+tS+uL+gpBi5DjSisGYxEqDwj5rCRGyF0lDzGLk+VQuy6n7mQl3YprxXKyec1p1Z9rVm6tsVEvTuQ0jag7uTaa07LCi1YTvMmfEw/rNad5zWnT6l+/ipNr5XJaVmQRXnAlf6552EZOFoPem5PFoJNrZHnQ8VZM0DTi1ajj/67SUhLXPEV9ur1p9shTRJfFijxFVEKzmBK6nJU2QoqU/LnuYa3dusliQFSdPAbDNX/PadW/VkBihK6pgthourZS1FZtHytFm4ZRqU6uVX+uetjmWvPnumur1rX1Hg26nLqTGK0UbRpG6+3e5Np6uxuDbst9pRwdbi8g2sRXc7p/o6+wvFK0iY2qa9W15tpKkVJ3rftzdMevM2gYjcupG7Fr7M+JhxXXpj+32itaaZPVpyitGrZJjFa9og5a2mpVZMV+0zBaNYwERE7TaL0zm9hovTObPAS7FQ7Nray3ZyBWq64prbq2aWyaq63bREarlxwFREarJ9l058aooGm0epJNbLRq3SbXyLVVRkrDtZW2Tcvyysm5WoZNYrTeo0EgNlrt+CZSqtdVnIZRca34c6tlUFoluEmMVgmOAWIjpE2JjMg1pA00XBv+HNLGi9aYUGnVvyGgYYQUTdCt8V0yFf3+JnKaRqv13uTaStEmNmpupbmV5iG6h+gegjwEeQjyEMNDrD6Ky6I18N00jFZrsYmMpmvrLdskm+pVncxKLZdTd/IQ1UNUD9E8RPMQa1jPbRHSq2TprauV3+TacG24hlT2RUibkhit3ooZtLRVqm21hJtcWy260mrReYKGEeKsdOe41EUrzpvEaMVZCMRGq/5tIiN2jf058bDi2vTn1hslK359xV5pvUebptFqGeYFmkarZdjERuvt2UROHoI8BHmI4SGGa+zPsYcVtzc9xLQQGClssucwUtgUmtnDSGGTW2lupXmI5iG6h+gegjwEeQjyEMNDeNqIPQR7CE8liYcQD+HpxQR8k4UYV3OyEGOV4KwgMlqt/GygaYQSVBKj7lp3jVxDuYFQbkrDiP03kDYl/7U1jt3klqdbnmaZV8uwySxzKU7+XPXnqtljTxE3+13u9rtMl5PFjz0d7OnA1H6Ta+JhxcOuOepc7QEjHUqySa7m5FpxrbhWXUNNBK2eadMwQjpASIcSGQ3Xhj83LH6CN4pAbLRaBqVp2kSsVl+GZYDJIDbC+6FERmvEsym0aYSao7SsrLZk4q0Aob4okdHqLzdNo+kh5rbSMALYNIzwxk9Qd5pG1bXqWnOtudZdwxsAQjqU2Gi1u0p4p5WGkbgm/tz0+E0sA11AMSxXcyyhNqwUlYW6UlWB4qirVYrDEWtGG0PlK7AHwlhbKN1xlsBhiI57Y7kCe6AbQ5dtyI4NdjuQHPsVGCqFSqGOUEdSp6OmTVEcdV0OOGsgG7arBvqzrZRA/BoBp2Ptji1UjeQA4gEGTkdugewoNTBULQtFCoSxVff7RY6lBrIjVhUVtQAUI5hGfVXPrvVMURwpVAp1hDpC5VA1bUBNm+Jw1JdhIV1XIDmWUEs8Wzy+6MzLWk1t6M03rkbUMNQeag+VQqVQ8Q5tHI54hzaKI16cjdNxhjr9WXTahvi19Xaj2zYcjjXUGmoLtYXaQ8U7pIh3aGN3xIr2RnFEuW0MVeJZ8fiio74XHRdqATQgHlhvC2sBKA5HvOgbyZFC1UgqiqPGl4DiCJ+FolyBw1ELQNGDiUZ9ANlRC0CRHOsVmNTp2JB4Bk7HPhypBLIjWq6NEUwLQIDiqAWgOBzRKGx0FfN+QyR+vSIT79BGdkQDvVEctbCAPYKtfvFeuQVORzQKG9kRhbUxVDgtNq7Er9XUNlFuG0Odoc6kzo39Qto2hlpCRT+kiOq5kR1RPTeG2kPtYYHC7rgCEbO+EI3Cxh44HSXUlTYCkIG6ru712m5gCqofYG5osIT/CReWItrsjaFSqBTqCHWECo/WRnaEX2njdNQyWVhR3zZCZeB01DIBtu2t6trdK5ERuUauDdfG9mJ1zM03sZEUJzJCHVLaq7e92ZryTeQ0jUpzEqPqWmUjrC4zaBr17dO4iY3Mv9IbuTZcG66xa+yaFKdhNC+n7Uvp3fwrN02j4lrx56rFr7ftc7kn6dvn0tGNb9oelN6ZjORyEqPZnCyErtgroSoIcDpqVVAUR7RCG9mxeSXV7lux18BVmZaXoWMebkiB01FrvCI7cgTjMCahShgzh2Qn80h2MpdkH+aS7MOcL32YS7KP4pq5JG/q6iLp6hdXGuoY6bqwr+Qa7cX+m8hovR6bhhG7xv6ceFhxbfpzM7SpDoAOL/omMSrVaRjVy4mMmmurrVpuhI4J+XIjdEzIl8vgpmm0Xg8ldB3Lb9LV1454qbd9Y6goHkW86/qbaJuAmIMbrvqGqAgGyBvZsYZaQ22hovFS7KH2eBa1EGkUTMQU0YJt7I4cKsezEhYk1BnPYjjTV4rVma+Izn2jOKLXW36Orp17X3VsIkEbhyOaYypACpyO6Eg2siMGyBsjGIcxTmoYExhDJDGeVMScbOPYeM8IrkByxFBteWQI/v6N6Cs39kBxbKG2UNF1bgwVU4KN+ImxEKW5kQKRNl6I3n+jOGIAtzFU7NDY6Gq5auBwRBlvpED8sCzUFCuKI4p7Y6iaYsVQKZ7VFM+FqLQb17PLk0QF49SNUNfOoYKCXY4ewqaAjSjYjcOwrr7CMFQkc2MPdGO6prAxgrUI1iJYi2A9gvUIRhEMI7zRgNMR/cZGdkRrtDFUvLwbKTCMzTA2PVi7SiAFejAMSgwjWI1gmJYsl9bdZ16Bng+6KqHYQ+2hUqgU6gh1hMqhcqgSqoQ6Q52uYsRiGGoUNxwPG2uoNdRIW4+09Uhbj7T1SFuPtPVIW4+09Uhbj7T1SFuPtPVIW4+0UaSNIm067llOQtJlC0V0M4p4TZfHkLBLwVAc0f4u9yHpqsTG6ahRVxRHiWBoaZfbkUhfSMVhONDSbiTHEqqmQlEc8UJyBQ5HLFBsxGB+1cmho37FHiiOFOqIZ0dY4FA5nkWKl6ONsDtwI0oIqGsVGzFnWC0XxjOGwxG9yMYeKI4tgrUI1iNYj2A9glEEowg2ItiIYCOCcQTjCKbzHcVQZxibYWy6MV342OjBsOXBsAdGsBrBagRrEaxFsBbBegTrEYwiGEUwimAjgo0IxhGMIxhHMPSxy2NKOnhSxCLJRswMV5OpiyTSgVBXNZqaeEVxxDhqY6gt1BaqplhxOGJguDF+TUteMX4Yr7Qix09w/IQmU4DDUZOpaOqAl8QwVC1uxVBrPIuGSbHVQHHE+GHjdNTSBI74iZHUeBZtqsy1XRgFsDyXA6set99hIcpiY6g11BoqymKjOPZQe6h4CzeyI9rUjcORQ+VQJSxI2J0RM3QHy0U4sPnRUBzRo28Mterazw1zQ2sGsqGbgrxegBHKAtsAPHT0AZqXk2nYA7nJNY1QxybtErinhTdNI0zoQP1yCs2fIw9Lrg1/briG/YH4NRYjqU7DaF5O3WlPVke3yepNohPOewbddMI5sAayJpcDayBKq3/ahJJFEDThG8mRQqVQR6io4YocKsezupkTcdHdnIriqPs5FV3FWMLQLWAsYRjP6rbtlaWk+7UVxRG77BUJCxMDCHVFksYV2ANhYb2yxC2QHbFMtZECp+OMYNONwQVi6Mb2kskEkqMumij2QHHEdueN64eXa2VghGEojliS2zgcR6gjVGx73hgqFsM24icqUByR4o0rbcsxMjAEMRyO2M+6MdRaAkNt8Sy24m8URyxBbsQPr1eCNcWKwxHFvTFUTbFiqBLPaopXE8SotBvx7KpRgiXAjVBXNYJrpa612BuHIwp2Yw+cji1UTSYQO9k3hjEKYxTBKIKNCDYiGEcwjmAcwQTBJpAdsbt8IxliWGGY1OmIBeaNbmzWEhjBagRrEaxFsB7BegTrEUyPLhSgOEY+wDmzkUPlUCVUCXWGOk1lPZaxMdQSagm1hlpDbaG2UHuoPVQKlUIdoY5QOVQOVUKVUGeokbYSaSuRthJpK5G2EmkrkbYSaSuRthJpK5G2EmkrkbYSadOTGcsHxfDabMRruhFHHnDqCT6DtSjPRQ9CLKxofzeiasyFSNBGdkT1XEuyjCWXjWiNNnbHHmqPZyksUKgjnkWP03A6S30hQD1ioiiOaF5XH89VvSALsf3SkB3R7mykwOlYI1iNYC2CtQjWIliPYD2CUQSjCEYRbESwEcE0xYqhShiTMCZhLPKhTQ+mx0A2UqAH66UFRrAawWoEqxGsRbAWwXoE6xGsRzCKYBTBRgQbEWxEMIw12qp92DRiyI4z1Omq+p82DscSagkVnc9GCpyOWqsVQ+0tMH6YauD6iTW0ZKzUGJIjepyNoa7iJsDYsN3ETNtNzFihAWD5e8H2DjN2cK6u9l5EqE5sRK6Ra8M13n5S1iUVpWmEJSQlNprVabvAmK/mxEbmAruJjMwFxnAYbZpGqGYrVtyLkz9HHtZOVDH2iCjZaR2G50iJXeNhpDsOBNgDpyMWajeaQ5J17WQjnJeruLGl05AdawmkwOnYIlgLYz3UHsbIclHI0iDjcupOlhPCzck1qU7DEzKvQAr0rJhXCxRH9eNOoKdJF0o2euyxa9SQAiNYD2M9VApjdh6Lp5fwtPNYPO3c5U3dyerTFNfsrBlj+LLObQmcS5u6ntYS7CZRKq7ZCTPRk6RKYmTnAW8aRnYe8CbXrPYKVkpWTooOWJT8OfawTE4eAztJKn6SVK7pmp2eEz1JOkHTqOyTd4INpkrVNU+Rnh9VcnueomLvoxRPEU6PbLKYYpvJGo4IHEdKOlwBDSNxDQ08aLpmZ2MFO01gudreDam2d0Oq7d2QameZpdphZqnVNTvrKNh9qpYxalHqThZnrLVsmkbDNU9bZf819l8T/zXxOIvH2bYS3GRas3ZUdByzLLdSnSw3mp0AFpwoUULalFzztGGdZu0AEZwtUaLm5NpwbbjGrrFr2jOD2GgWp70bRfY4ZFG5nELz56rFT8+e9kVo5wjUnfYelLuNHEZSnKYRclfJQhAG8kqWQzo+UCInK2mqrrXLKTR/brXda01LMC5QWv3uJjEarg1/jj0suyb+nLi2cnetcwn8NiAMCjZ1JzGyLRs3sVF1bdWcNeAS+GvWaplgE8oakgg2oWyaRngXOgKjwiiixmwMlUPlUFFrNoY641k0YWvfguiaycbhiFq0MdQaz9aw0EJt8SzeiXW0U+Cg2YjeVVErmyL2SK3sZ3Qwa0vAjeKIBG2EhVVJGS/CRgqchtibYsiOpQS6MQwnDCkQxlZlxnDCUBwxu9w4HDGc2IgfXlmiqyMbhyM6143dUUKVpE7HGSpePSB2rNS1k0BwAcVGTbEiNpytXMepVMMeKI4tVLyDij3UHs9idL5xOGJ0vhE/vCq4Dic29kBxlFC1qQHOUKc9O3VJZLmAJ5wuhni2AaejJrMDodJCTaaiOKJgN7IjharJBKIF3RjGRhjjCMYRTCKYRDCJYDOCTQ9W0Ecvn/bUCyw2Tkd00xvFsYaKl1cR3dnGMNbCWI9gPYJRBKMIRhFsRLARwTDsWr7yqWMTxcgHXVRRnKFOV3WAshHqXKgpBuI93rh+YjnIp45I1kHVCUfPRqRtY6goWEXU33Ue9cbhiEq7cTpi0LhRHFGEjPii0QXqFtmN5Ij6uzGp0xFFuDGMtTCG9lcR7S8PIAVORwxLNorjCFXvzACi3DbC2AROR9TfjcvY8gZPXT7ZyIa6fLIx1NIC3YLuqN0Yz+rNEwScjqieiqiTing3hYEUOB3RhW5kRwx2NkawGepMqhujqwW6MSqhlni2hlrj2VYC/Sf0Xo2NSQ1jFMYojI0wFomnSDxF4ikST5F4isSrw0lxRrDpwcZVAinQg43IBwyVNtYIViNYjWAtgrUIhsnScm/PoVkCxHRpebpvnI6o1RvFkUPlUCVUjLkVUfIbhyFfVyAF+g8z+qGN/hM4y2PoP6HjqI3xbI9ne9ilsDsiDiPiwCUw4ivxE5E2rMUY+g/jHi3DUEsNdAs6eFqe+amDJ0UM5jeG2kPtoVKolNTpiI51ozhq2oCaNkV2nKFOf3ZeJRC/VoHTUcsNWEPVSDYgHujA6aj1TJEd0ftvDBUv2UYKhLHVcuFQDvDu8THKMeZgvFGbtRA2p7B1Brf0vFYyZYx21rHkxSMY/bxx0kfSR9I56Zx0dPHGlHgGoyVRxjldZwkuSS/p+VoT43cZrFVwMwVT0jXOooxnJljjvLknlmB9dTaHXrW8No/g1cW3tZ1g8QjWFaLNEoy9IJtXGTmnsJRsUnoeu0I24+K/dcJ5MQfjAkDjpEvSJekz6TN0DGicR7Cmd7ME1554Brekt/R8b4nxuxWMAxvGI5iTrnFuynimL+4a582UeAZjfdI46VpemzkYN0hdpMzB2L9jPIOxh2ezltHmFFbTMpQpGPdHGSd9Jn2GjpO/zlmfwZrezRKMVYzNrSbm4J70np6nkhi/y8ozGPuWjJPOSeekS9Il6bMlFmccHjLWOrl5BONGMOOkt/R8o8T4XbQbQ+vnZgmmpFPSR9JH0jnp+j4q6/u4eQRjp5Yya/lupuCS9JKeLxF/PUR0oY3CzR2tXMrrmYL3Dgs2zhKMNsSYgyXpiPNm1E9j2MR7Kuop2MzBWF8zlmCU0eaWwiItpSnPYJSRMQdjBdE46auPc0ae4B3HxaDOEow794xnMNpJZQw8nGET7ziOFzn3xBKMNsc46XgfjZEneNewUdZ5BqOP2IzDbcYSzCksbqwrqCcYtDhT4hmsZbrZ9TXgSIw8mWAt381Jr0mvSUcbazyCe9J70tE/GlPiGax1e3PSOemS7EiyP1M8UdZrD1Ap2NDiPILXapxz0pFevdoTYxhjpNd4xR+XeZaC3aG4xLPAX9RwFWfB2KbhisuCxZmGSxoLVmeMkV7jpHPSOemo28YcrDcwbh7OOHnkHHHQ8Y9xTxy/pWMhYwlGPcelljdzsN7QuJmCkQ/GWZ/BaIdxwWSBl8mYk85Jl6Srz0AZ+WAcOq47cR7BqAPGFIyjnsZJb0lvyU5P9nvEE4s7DddWlqZ+EWX1jGzmYE46607om6Q5sdFK6SbTsCMYv6u3oYD0SIridNQjKYqhUqgU6th7IdZtuiVwOMoVSHtLddF7Tp2x9rjQD04v3L7DG0sNHI5+rfGNPXA6tlCbOHbbvrB4BOvZ6c2UeAaPHqw3HUxlSjyDpSXm4FkSR1g9emSc9bA5zL+70FM1ag30LBrtCiTHHqpfAFv09JGmTffJGHPwKIkjj3TnjPGIuEpJnNIjKT2zJY484qskDpvYS+NMifde+htrCxRH27K/MNQez/awQKFSPDtCHduLeCPXwOEoV2APFMfZAl3F5hrcN1swvMKFswWjK9wuW7Cgs3G1PRu16RnKPfEM7knvSaeka2KVR9JHel6b3aksweqo3TyCZ9JnPI8tNc5JLzUxMrSCMR3djG5mM7pY49Ucd8Rz6gXAotwTSzCaWtxtW7AYZIzhozElnsHoZoxT2JlsTtf1slZn2KzKMxjdrbEEY9hhzMENcWjKEowux3gEI0+Mkz6SjmH0Zk46hh3G+C0Co9yNORhOetwHrBe8boZrzLkHl6Sju91ck17T83i1N6M+GHMwhh3L67p4BGs+bO7BI+maD8qcdE7Paz4IGHV+M6ZPy5m7mJzhGWu4g7jqkAs3DuuVr849sQSjVTNOOtJuPIJ7stmTzZ7CUgpLKexIYUcKO1JYTmHR8OFm44qtPs6UeAZj+mEcOjb9OHNwKYkpcQpbU9iawrYUtqWwLYXtKSymnbiHWa+cdY78wbWzzknnpHPSJemS9Jn0GbouexknvSS9JL0mvSa9JT3VDexXdk46JT2lt6f09pTentLbU3p7Sm9P6e0pvT2ll1J6KaWXUnoppZdSeimllzS9pDyDtUyVtUxZeQRrGjejnuBd1ovujXtiCZakaz1Xnkmf8bwudY2pzMGa3s0UjDbQOOszGH2B8bLJaGewEdoY7Z7xssPIN70/x1iC0ddzVZZglOlmlCmjX9CbcRjvC7YwNx7KHKzx2Qw7yHNcb+9MiWfwSDrKxTjr6Xn00SzKEow+2ng449SWc9LRPhv3xLCJPMcFtsaoh8bLjiDPBe+d8QymxBhlGksw2lspyhyMd82YgtEHGWd9OusYzBg2UXbYjOQ8glEPhZUp8QxGuRsnvafnKdmhrKfnkQ8TadfxmPEMxnhjM8p0VmU2bnDLOY9glKlxTyzBNYWtKWxLYVsK21LYnsL2FJZSWEphKYUdKexIYTUfNiddkk1JNiXZnMnmjLA6HjPuiSMsTng5p7A1ha0pbE1hWwrbUtiewvYUtqewlMJSCjtS2JHCjhRW7/Fj5RGsk9LNlHgG4xS7so7HlkO56EW9DcsWehFvg2u26fgHrs1WtSxEuSeewZj8wd3YcHhrsy5FGY9gvI/GSdf839wTy5o7XuD1Pna45RrcdR0ut4YxT4fLrWFZqsM91nBFn/EoiUcwJ52TLknXD6ZsnsErb53jd3H1vnPEAff4OsdvYczjHL/V17vpjN8ayjNY076Zg6kmTrrmw2b8FuoGzrk7J12SLlmfwZoPm0PHcXdnCdaD/Js5GJ+UMU56S3pLdnqyT1dixBP1B4fgnXviGcxJFz2RtYicphE+L6NkGhx8XYmMqmvVteZac6271l0j18i14dpwjV3j0KbRel83uTZdm6bp536U2Aj1VGkYoY4q2a+xpwgrUpvccnfLeCdB5JbJf2245eG/xv4c+3Piz4k/Nz0G02PlacOeok0WA5zu2mSWcRnOJrOMcc8msyxeWliB2uS/5qUlXlpYedrkz7HHgD1W4jEQj9X0GEyLFY6jbyInswxX3iazDDfeJrOMNadNbrkXJyzGoZXFmS1jlJPxCEY9NE5hJemojZsnG3eMaJyTXpKul30o1x7crsQU3JPek04l8Qge6fmRntd0VWVKjKMTDazp2gy9g/GmGYszHHPGpSdGWALrYqgySsqYg/FuGUswJZ3S85gRolfv6oDbjFnRZv0Y2GZyxkqPswTjTTLGbzEYb5MxdAFrWjaPYL09VJnSMxr/CR4tWMtlMwWjfTAewTPpMz2P2QNGQF1XaDbrCEUZow/9ip2OPoyTjg+cGa/fhYNVrwp2nsFoEzYjLcYULEmX9Lzgd1EPscqyGdflGOPdMV55CGdux2cCnZOOls4YcUDasbLiLMGoY8YzWNO1OemcnkdrDidyxzFwY9Q9Y3HGBucON1rXEcTmknRNozJWU7CZRG8eNtZNGptncKdgddxvznp6HjO5zVpGrEzBM+loB4yx8Qb5rAe7NqO+GY/gWhNzcEt6S89jFrIZ745+ExLHwp2TjpGvMdmmRL1Z2FmCdfPh5unMunN3c9JLS8zBGCvYtyRncE+61jdlHILBrKXr0fDNuv1Yma/EI1jTsjnpMz2Pgz7KelirK1LgiuX+viV6IOOko3XejBZhM0ZzxhI83G3csTZizEnHVaSbkRJSZEc9lqU4DXWTsSIOeWxMajyLzeGK6Djh0dc7g40p6YTkV2VEG8nR++426yVrm0ewXrO2mYNn0qc/vy8K3owK1IG1BJJlKOlwwDjp6CqNJRhDgM2jJ56W6fvqX+OkS0tspaG3/yrqqamN5FhK4HCsodZ4tk5H9Cpw1xKOQjknHaMYYyQH0YO/x5mD0foaS/BsiUPHFmNn/C7ihjUFY/Qwm7U4NqM4Blgr2easz2D0MPAd69W9xhh1bkbrZczBmq7NSZ/peYwC2mqNCJfnOUswZj6bMfeBH5dwNNu4JV3TuHlVFYwKqekXUZT1mzSbORhtgbEEc9I5PY91n80oIzjXSdcdjJOun2/dvF4wzP+p69ecNs9g3P25Wb/itJmCKemUntcPCSljRAO/Puk6gnHWZzA2UFybpzPpp5uU9dtNmzlY07I56S09r99GUsboDL52whEm45F01LfN+LTZUByO+LzfRnFcrbLhNESfb+jP4jj3RrzxeMP0DNJG71hoRMdCuAvGmKK906UC42jvsJvFGBVI2y+9XnfzTPqkxN4WcbRmWCYw9EaQvUPRG3Y3tlBbPNu95dO5OvY73Iw6gXdJ5+vGElyTXpPeko62BvsUbpZglP3mkZ5Bu2k8g7E+hH0KeietMwejfSFNC9oXZZ2xGye9JL0kHW0ofP400YYa9+CenkHfsBl9gzF0tF9T07V5BmNkDn8j4aiQMdJonPSZ9On6wB6QDp/zwBEhZzzTwUiXMXQBow01HsE96T3pGICw2kH7shnti3F6Bn3bZvRtxqFj66zzCC5X4p44ha0pLNK1GekyjnjCV+CcbPZkk1riZHMkmyPFUz+TTcoULEnXPNkswShT4+Gss37jnngGl6SXsIn9Hc4crHmymRInmz2F7Sks1cRJH8nmSPFPeYIT1M4pnpJsSgqb8gTbaze3qybG8wNcSmJKPIM1TzZzcEthW7LZk96TTYyT4BMeTd8FZfRbxrA/wagPgvdRVxXg/xzq0xBNC2asxuKs4wmZykuHP0qv3xV0JQNjCGcObklvSe9J70mnpK+2yxifRTam4NV2Oc/gVc+dkz7T8zPij5UEweRmYJVAMLnRi3YF42m9adeYSuIZPHriFJZr4mRHSvyuUGLYRBlhHOEcOvZZGJcavLwOzhLckEZSluCedC0LZU1jVebg0RPPYKZguRJnPT2vZQHGxlfprDyD1zzbOekt6S3pPek96astdZbg9b4Yr7bCeQSjjIyTPtPzM8UfZYT9mAOXwThLMMoL45MBH4Pp+knwS3nlOaE+4BYX56Trp8Gr8giWpGt88FvYE2Gsea6MOrMZ9UTDzp6eR33QuE2NmzLqg/EMRn3YjPpgnPX0POoDmLEPVPNTr4w17jVx0inplPSR9JF0LolHsFyJJXj2xF6vGPsLnON5HBl2ZitfxiTfeQQ3z38ufYbOnm9cND8LWPNzc9anlR3D5+8cei1eplwrBWueb5ZgKhF2pOejrLlGWXOVmpiDU/lij8Bm7JF0jufRnxo3b59v5uBerH1j9InGxMGoA2jT9HZWY066tslIY4u2S29oNZ5Jn6H360rcE3v7z5hvG9eSeAa3njiFxZgH+zL0rtWOFVTuK12EeSzDb0+X/i6O0ijj0IlUZbQ5WOFnfITPef0Wppl6C6ozB6MOGI/gkXTUDeMZzMkmJ5uSwkoKi3w27okjnrhm3jlsYhXdOeKpfaJxTxzx1P4R81DGdNsYbc5mSvrEbw3l4Ywjsc49sQRrWWxOYWvSMY7a3JK+6vw9OlIewWstxrknluBVZ5xTWE42OemSbGoZoU3Tfg1eA7001bgkHe0MVu9ZNF2bRzDaPeOeWIJ7CttTWK2Tm5Ou9RCMufbgzTN4zVmck16TXpPekt6Svt4XZwle76zxWltwHsHIc+OkS3pePP56qenA3knB6vfAPkfBPr6Bsb1gHj3Wp3CKXlo6MIYX9JsDY369uNTCIp7GM3j16cZ8JaZgSbqk51e/uRlz53vEotwTz+A1Jxrr6zFFryo1bklvSUfdxnxE0CcOOAcEfeLA3EQwz3VeYeHZ0UtHN2M+67zig2UuwXzWOemIJ9phvWzUeQT3nngGUworkS6sRztP54a4bYZN7CHVCz53ejHvMx4l8QhefZwzB0vSJT0/L2esFw/sH79fwSsxBaOMjFfcsD4j2INvjHhuRvtjvOKD/d2CfffOI1iSLkmfSZ+hY9+9MwWjHhr34FoTS7Cma3PSe3q+R/yxXjywD12wGjyw31ywHDywr1xwTYRz6PiyrHEpiWfw6guMG36rKXNwTzryfzP6BY0PPo1iPFpiCeaeeAZL0iU9P6sza7uK9wV9mfMIbukZ5C3WNIS1Ld2cdLw7+3nUc2MK5vQM6vkOi3punPQZccMVEM7dnxHtL5RL0rVc9HktF2W0CfsZtAmbe9J75APOKTpHemW0xElPacT8zpniGby/xqHPlEacTTQukT/4cIlxTXpKI276dkY+4N3H/ZzOSU9pnKMmRj6gHdj94GbXJ+ZrhB0vE/M1Z0q89l9iHKvXWTpLMA6PGw9nOGede+KwiT7LOWxivZcwDpyYxxm3kpgSz+DegwlxGMo98QweSR9J56Rz0iXpmg/Kq/1xZmec2zMuJfEIrtBZeQS3K3FPLME96T3p1BInHfMaY/zWBGOOY0yJV9qxjjexP91ZglEHjEPH3NM56aUmHsGrH3SmxIgD6iSuk3KW4F4TJx35YJz0kZ5HPmBeOfGhVmc8jzqpFycYQ+9glDvmubNp2sH9qolHMOqAcdI17Zt74mSzJZsthe0pbE9hewpLKSylsCOFxbuA/QF6naYxt8QcLDVx0mdJTInDJl0tcYSlUhJT4hS2prA1hW0prLYPl/IM1vdlswQjf4w5eJTEyaa+L5uTTU42UWeMk82ZbGqbCdYvlRj3xBF/XOjgHDZHrYmTzZZspjwZKU+wRu0c8R8pTzC2MU55MlKejJFspjwZKU9w7ZVzin/KE7jFN3PKE055gvm+ccoTTnnCtSSO+HPKE27JZsoTTnmCz8IZpzzhlCe4s9M5xT/lCcZRzin+KU+wBm6c8oRznsywKSlPJOUJ1sCdI/6S8gRXQhinPMFaAWG/iN7teS9cKVMw+tbelaGjDcH9Dc7rd7HfYOIac2fo6IMwRiKsx06MkQjrnxNjJOekow3EuuXEV90Ia7MT1447r/zBmurErnhn6Ig/rrQi6srQ7zjfHlnkp3HSMVZZfv/F0BmMtnr5+qtey2mMPFzn+BcnO6hXW8e7tpmSjn5qnfu/eY1XkfbFHPqaezonHXVp7RlYDL2DUS4D8ceOdBqsLMGSdNQ941UnGfZxDZQz2mekC3cSOCe9Jr0mvSW9Jb0nvSedkk5JH0kfSeekc9Il6ZL0mfQZOvauOSc9pbel9LaU3pbS21J6W0pvS+ltKb0tpbel9LaU3pbS21J6W0pvS+ltKb0tpbel9PaU3p7Si4+Q0JjKPbEE4501HsEthW0pbEthewrbU1hKYSmFpRR2pLAjheUUllNYTmElhZUUdqawM4WdERafRSHuyiMYYxgmZeh477Bz3jnpyB/jpPeko25spqQjT4xX3BjvLHbRE4sydI0z3n3jpCMfjJM+k472XHlcNfEIRj2RS3nFWdAWwUdAax11MfQGRtqNsz6De9J70pF246Qj7cYrzoJyGWgzhZShI990TGKcdLSBxqHjsinnEVySrmnfjLihXOBzJxFl6Mg3HYfMS3kG96Sjv9hMSaekI+3GSUfajVecJ8oF/neaVRk68g3+d2dyxnqOc9JL0tE+GEswxu3GM7il53uy05N9KokjnvDdO3Mwp9/iFAdJvyUpDimNM6UR31wxLiVx/JaOVYzjt+Drd47fmj3igI3/zikOI/3WSHHg9Fuc4iDptyTFYabfmh6HckXZlSvKruDb9sa1JObgVhNLcG+J029RDx7ptzDfXBtzq17RacxJ56RL0iXpM+maxvWuFV13Wv7cxdAnGPMFYwmuSa9Jb0nHmHNzL4lHsJbpZkqc4qBp35x+i9NvcfottFHG6bdmisOM36rXlbgnjjjUlA815UOtNXHEQf0yy/e9eAT3pPekU9Ip6SPpWKu8UB9w3mCss/iLoRMYvidjCp5Jn6FjzObcE0vwSrszB2Nt1jji0DTtm9Nv9fRbPf0W1mk3U/otSnEY6bdGigOn30r50FI+tJQPuC/BeEYccO35uPBeYAw2LlbGmKEpSzDeX+MVn3VKd12FJsFYJzdOz2DN3HgEz6SjjIynM9aCnMMmxlHOERZ3eTr3xBFP9TEZJ5s92ewRT4ypnJNNSvGE76BUZQ6GH3CzhI4jCKMgP7Fu48zB8DUbU+IZ3FLYlmz2pPdkE+9dGcoUDF+5cdI56Zx0SbpkfQajvhmLM8ZFxvCDGHNwTXpNz7eIv+7BKKi3rHmO9lz3VJSpPILhkzKewRpPsPqkjClxPI8ziKOi3LFHgnjzCNZx+OaeWIJHCjtSWE5hOYXlFFZSWElhZwo7U9gZYXW9xTjC4kyEc0+cwtYUtqawLYVFG1hRz3GocdSmDB1tOMY2zllf+VxRvviI3Khor3AmYlRW5uCZdPijwVX3bKA+1Evrm7K+a5slWNuKzTO4Jb2l5+Hz3axxVsb+DeOko21cfpOqd14aa7o2j2D0X8Y9cYTFuQlnDi5JL2FT93Usv0nV+yzH8nFUvc/SmJKOcjGewXjXNnN6Bm3C8o9UvcPSGP53Y3HWfSDGM7gkHWW0fCs3ox3YjHbAeAajn13+l8UzmJKOfnYzxhibOT0D/zv6xLrHFcqob8bsDH+WswSXpJf0fMM+xqE8g7GPejNhf6M+Tz3xDNZ97Khj8CtJm8ocOvbm9Ut5BNek6x5vZd3jraz7fpURH2PsR0W5w0/knHXYRDlijcUZe1xRXl2w97UrS/CMtJDu89zcnbF3gtYNGzdj7mPMwZJ0SfpM+gwdH0h1HsGY3xlTMOYFxjMY4yjjpPf0fI/469wc/VrFNc+Efq2inyJtZ9BPOYeOPYGEvqnirmdjjacy1ljUJvYBGmP+YizBvSeewZR0Ss+jL1OeWleLsgQPOyuxXp0rsQSLnYlYLMEz6dPORNyv2lUSj+CS9JL0mvRKiW0/8HqVObjXYH0fN1PiFBZ7bpePYzEHY2/2ZrQbWNtpmGNi39fNus+tKnOw7nlryjMY47rN2E+49sst5uCR9GH75VZT1BPPYPStm9HWGUdYzB9l+WsWU3BJOsbkWNdqey8f0oh1fuNWE3Mwxq7GkT97L9/m9LzvwbubUszBMWds2KPuPILhp8NcsuEuXmOsq2zWvdxIr65vY67UcFsLoQ1vuK3FuKdn8O6sT+1UvQeOrqnMwSPpGPsVxB/78cwm1uI2S9LRJmxGm2Aszuof1/irfxzzFL3XjTAH0XvdnJOOfMN8oWEeRAV5gr3ozknHeoXxDMZ6hTI+h63tgN6/5mxnB27uHKzvlzL6F7z7ev+aMSedu7/LQ9sTZWmJkz6TPkNn7UM3D3+vsb/OOd533Su+udXEKay2G5dyTzyDR9JH0jnpnHRJuqZL2c/ZLWZnzGWMS0k8gmvSa3q+Rfyx7rrLDnOWnVfC0TYKS7Dmv/IsiSN/5nUl7onDzvRzgos5uNo5lMUjuCU91bGp4ytlqsHjShx1bKY6pueqjGdwqmPTz9ndPD1/euqn9KY141ITJ72m56Of6pef2ax6o5rzCB5JH0nnpHPSJelCwfNK7PWtF31HNktwaYmTXtPzNeJftG8t4OF52Mvwd6rr2avNciWW4NkSR9h6lcRhR/sp/d1aemIfh3TsOXdOehvBfgZq8Qz2M1DrCnU767SYgznpWhbKfgaq6i1qxtFe9RrtVW9+7mnxDC5JL+n5GvVN97lh/Nl1n9tmLomTLkmXpGPNwTh03D3vzMGlJpbgGEv3HmPp3mMs3bWfNaZgSr9FSR/pefi+McbuffoYuJPGU5RHcEl6jKX77k+VKwe3GjZjLK23nBnTlTjFAWMP46Rzep578Iz3d1xX4nh/R0l6SXpNek16S3rriWdwj3d8pPZnn1NWHjVx0lP7M1L7o+e59B3k1B6yn927ufbEMzjG6p1jrN65p7Axbu+7/90843dHSxzvL3NNnHSh4HkljrZCrmgrdp9LyvG+7z53MyWOd1latP96Jss4+guhljjed0ntqp5f3szRv+h5K/jI+tRxuLKOwzdLsJ5/2Zz0kZ7XM0GoqxNrPvC1ET4L6Jz0knSdE03wqnu87p9eU38OXn23c9JX32283h1nCV5tl/Gqe7zOci4eztij7twTS3CpiTm4Jr0mmy3ZbMlmSzZXnhsPPF+Ve+IZzEnnpEvSJekz6VOc69USc3Ch4FoSj+AObmC6ElNixKGDBwczBUtLjLgReLbEoeM+EMZ8h5rGWbkkvSRdywV1rGlZbJZgTYsyIb1TeQSPpK+2mjFvIuwPd57BkvQ1p3ZmZ+ynMl7vgvOKG+ZihP6R0ZcR9n4bo/6jXyPMK41R/40lWOOANGJtzVmCywhGuaOPI+xNMm5JX+Mihk+EsBeasf5PmAM6S7AkHe+g8XDGPmdjlKnxSi98CoS9zc5JbxSMd2oz8gq+BkI/5Zx01MnNqx1j+CD0qi5j1EljcWaN8+YZXJKOMoWPg7A2aKzx3JyeQVtnjDigPmNfsTMFc9I56ZJ0SfoMHeeIGT4LEs1nlC/6JmO8O8YSrHFTHumZkcKi7dqsdWNzsrPWyhh9McG3ZYx6YkyJpzPmj87LJvo4wvzROek16XinMDYgnKVi9N2EOzcY/TJhbmiM+G+WkngEo70FD9y27QybA4y6bZx0vHdY5x84a2zcko73Dmvy9+vSE89gSjrqvDEHo55sxrtpvPIE6/l6fxdj3V7v3WKs1eu9W8Z47zajPm9GHmL9c2CuZ4y6akzByE/jETyTPtPzqANYe9T7spyTjrzdrPFXRn52VqZgvHdr//nNKGvstR5V47Z5BM+ka3zATeOjjLLeXK/E63cJea59EzVlSjyDUdbGSaekU9JH0lGmhHLBPhDG/vOh/Q72rg/cXG2MvMLe9YG9u8bIN+Ok96T3pFPSKeloK4wp8QxmDkb9NJbgmfQZz2MvrnP8Ls4mO1Ni/C7KBeeJnCW4Jb0lvSe9J52SjvHD5jUPYuzPH9hDy9ifP7CHduvYQ8vrTr+b1zzCOemoS6Mpr7RgP//AnM65J57BPek96ZR0SjojbqgbmLvxQL5h7rbjjzkaYy+03hnlnHSM5zfjXcPZgYFvUxiPpGOstRnthrEES3pG46bxSXmLczHOMxh1YLPm5+asp+dRBzZj3MubER+Ui2iclTE+3Iw+zhjpRdnhjIxz6PiUPGMP+cB9GsYYV2zGe2rMwWhDNqN+GiOeePfxpQnnpGv+o9yn5vlmCsb7aCzBGMuBGWdnnBF/Bmv8Nycd7x32qLP2d8YjGPXWeAZr/VFGe7JZ4z+VKViSjrE69qUz9pEy9oozfHaMveKM9U/GXnHGvgvjknTUH+P1W/CFMfZgMPZ4s8774Adk7SuNk452cjPaDezNZp0Dwj/IOgeEH5B1DrhZko56ZYw4r3eEsUbqPINLekbbf1KWYO2blPuVeARrm7856SM9r32TMvpW+CsZ+y6M0bYrt6skXjbhl2TtW41ncO3BaA+NKbgnvSeblHTse8GaBus+TOMRjLqENRDWfnazxn9z6F3jr4y23XgG413e3JBGVuZg9LnGlHgG4x03luCR9JFscrLJySYnm1rHNiebM8UT7YAyXSUxbIryDEabYJz0mvSa9Jb0lnT0L5tRD5VxZmRgHM5D9wgp6x6hzUkfSR9Jx54u46RLeh77uIzjd3FOZGCcz7jT2Rj3pRgnvSa9Zn0Gt6T39Lzu71Km9LvwoW/GPoHN8PtjfsH4puXAPiLWOzo2Y4+ZMQdjz6ox4oO2S+/fwJyCRe/L2twTS7Del6XM6XlOz+C+F8xNGOc1jBFnZfSbzhyM+BsnHfHHPqV9D9Vm7APcjL1/xhxMKSz2zhknO9gvjTkUY/7ozMHYL21MiWfwTGGn2xRdXzXm4FISU2LY7GCU12bszTDmYKwJb9b0biYrl32f1WasCRsnHe8I5m773irMxeTSsgNj3dV5BmOtGHM00f0zm7Fn2HgEY3+7cU+cwvZksyedkk1KNkeyOZLNkcJyCsspLPZ8Yl4p+OrTZvgEB+ZlomccNqM+GK+ywFlj0b2IxqGjf3QewSXpJek16TXp2Gu0GfsqN+P9NU7Pow5jzig4NzownxKcG9067mkcmPuInkHAHEcw3zTWe66U9T6ozRKs91wp6z1Xm2GzgFEuxknHe4d5k2BddGDeJJhXDpyJFvRlY6B+7nuukEa950rTRZq3ymi3N+uYYSr3xDN4JH0knZPOSZekaz+rrOOKzew8tG9V1nHF5hFck17T8+1KvPxl8JUI7nwQ+CZE9+QYUzD2vxkvPxR8BIKvGwp8AaI+PuOkw/+1Gb45+AJE/XGb4bcyHsHwm8MvIOqb2zyTPkPHPn/Bfi1RHxx8BKJ+t82admX43Yw5GPsu4C8Q9altxj4Q+AgEe+8F+7sEe++dORh7J7BHS3RPi/EMRnw2Iz6b4e+Dv0B0Xwr8BaL7Uow5GPkAnugvnMXiPDEvM9b82TyCsd/JmIN70nt6Hn7YzShT7A2buK/AOekox80oR/g7Ju4wFPgyJr4V7Jx0xGez5pUy4mAswfCTwrc+0YYbc9KxHwM+kVn0rtRLeT0P38esKT/xtT7jknQt380jGP73zToGQF7BzzWwNjh3e66sbc5mSowxIeKMe++dJbglvSW9J70nnZJOyf5Iup4LUMb8yJgSp7CSwuoYQNOr/Rrys2saN3dPI+ZHxjXpSONmjGHW/R6LObgnHf0I1kUn1iedKXH6rRH53Lkm5mCkyzjFZyZ9xvO7T9lMieN3qaidf/zjD7/89tc//fHvv/71L//y97/9+c+//NP/uPBfv/zT//mfX/7zj3/781/+/ss//eW/f/vtD7/8f3/87b/x0H/95x//gr9//+Pf7v97W/3zX/7t/nsb/Pdff/vzon/8IUJfr4PefXjboe/pa3cD97rIuybWt2u3ibVt8pGJvlbP1MS9MvvIBC5vtVi0lyb6axP3uHQt7MBGKbcnx43wtzbaaxv3ZNaicU/Jilug8o2FccrONTrZCZGUF/PbQuVDoWKxWQv17kBfmpBDOtDXazruAdSrnJiHdLTVimo67tGnW7g97u9m5j1pKFY7y7r+41V2rr7zs/m5+tzPZmhpn87R0j+fpYfXZJ3M2SbWQYCXr0kZp2Ihj8fN4+V7copHW3Mgjcfd5j9546t45VhzoNdJOVRSjBhgIlu4O7P3LVzdLfSXFuqhgt5jSkvHPYyMluuejn1r45AXuPkKJm7n1OtYnCysNXO1INczC2tlFRZuj/UjC+ij1cKYj/JybRD3anXV9IbUt20UHFnV2n2v8LmNexL0vg2JN+Setz+Lxzc2+JGNdYGG5UcpX2Cj0ksbp7Zvyoz3LLc68+2+oOGGM82OdvujHhlZh7HMSG2pYH5nhA4V/WLrDdZexJejhEMTeq9D2EjjXm54MtBY0R+RlLuteJmUQzffxePR73ncy3icGsDuw7+1kvMsKblUSJ4UbWPv2O61K3o1Uuj1VMWiht3zk4gFfxuLfkqLeKHMSEfr9X0LZBZqbsC+t0Cnt+0yE/cySeoO7mb5GxunUah3KL1Emdb79X87N7u/8+sGjte5eaieg713vT2LyUb5LjcO9XPd9+lFMq+XY7d369bkV3WLjqNQH6zc05PXI0g65Oi9tGwv6/ru2qs3jdpprFG93bnXV1+a+ILxNNHpLWnRtfXr5UD2ZOPdMTnxaUxeYkyeJo3fZwd/elhPp5lS7TZyamuQ8TI3vmC2dbbRp9vg9qxUsManpXJ3ci9LZbSfa6OM6B1vl0Ckpc0P2JheS7nWZzZmiQ4hD56e2miP40FuI79xH7IhxbumNFj4iI16leje+uu0HFsg+CS0nko9rJDUY36I5wel6co90H63V4jJY7vdCK96haMFHy20PPP7zgLTp/sEHp/uE95NRymfzYlaH1jobfqIpacpxncW5Pr8+E/KZ8d/Rwtvjf+kfX78J/2z479jbr45/pPx+fGf8E8d/31Tt/rLuYXM08JEr77uxvNRLPBJOOsWr1exmOW0TCS+TJRekfq2Afa8ZH5kYBZra2Za9fuIAbK2fzI/MuBleS8U1icWysXhJmgPTQzvfi5+lBG3t9Rbq0rlmQn2WLTrWSxa8be89UdVovQrmt1n1bI0X3u8rT3LC1x4t5urtKjzERO4j9MWDp/FAtuitgkej0xwzK1YHppwJ9b6+uwjE9EHrQ83PTMRJTKflci6Oz9Gm+2ZCY5BLz8zEfO7ddnXIxOp+3hYwdd9St4DtWex6D7JXCfin5koYaI8K1S6bOJfH3ZjtU830efLbuTYGV8xR60vB//l5O4QMRPzmi/9gW9aKPLMgvdDs5bXFg45MdkXQCa/XkM5eRh69Yllr3M+8TCsy3y9zaKRRu+/K5HTqmfsIZD0ql8fSIl3AbdXczzyt6y7X8xGa+1JbhC+6rYHeika3+dFuz49syyt/Myp5Tcpof5gYviNhUFPLAxfu719UNfr3KTPzy3LyWv03uTybOKt2WU5+YzenV6Wk9fovfnlOUvfnGCWXj4/wyxHV8fnp5jf1LHDRpfeP+9jKP3zC0qlf35F6QeJeXPbzsl/9K6f4Wjk7c0/dH3a0/ADG+/tIDr5kN71NZyNvOkoOGfrm6v85SvcDUcj7/oKfmDkPWfB2cib3oL3jbTnMXnLX/ADI+85DI5G3vUYnFuTN10GZfSf6jOg4TlCfD0ajOACj21Bnqy1U+wrWle7PLEQlYNmfzIoG/jcnPYydOju+AuW6wt/er3+bOK9IRV/wYp94U8v2Z+z9N0hFX/Bon3hn7tq/00dSyOI39Wxn7tsP9inc4Pryxe2nHxC61ppa746v1xxPtugmNyO14u9Zxv4+se20Z/a8J2/6zboB2svY4gXLF+vC1bGZ9deTn6lxhQD1LSE//00/WxEiL1fShvfPmYkfCJtjpOR9zLksJR0tPDWUtKsn19KOq1aXD57aa83Qr97gKO/9COX+RWT/fn5yf78/GR/fsVkf35+sj+/YLJfry+Y7NfrCyb74/MT9Xr1T0/UsSD5yYk6f36GLZ+eGn/BBrov2PvGn5+L1tNppS8x8u6E9gdG3pvQno28OaF930h7HpO3JrQ/MPLehPZo5N0J7fj8dLaeusovmM4yuR+NDz6Xk4URO0rGfDkZrScP1LstYe0/01PBON1rKXmyhU2aj67XvRyv84I/P/SoVT479DibeGvoUU8OqHeHHrWVzw49zln67tCjtS8YerT+UyfF39QxfukZrCcf0hdMiu9XzExIf31ap578UG/NWM4W3pmx1H59esby/hnn1+7F+hVHl+rnzy7Vzx9eql9xeql+/vhS/YrzS/UrDjDVrzjBVL7g/FE9bbx/t6M9+Y7e9Q3Wz885zqfx3/PH9c/POs4n+t/0pNUvmDKQ/GQjb887zkbenHccjbw773jbSHsek/fmHWcjb847TkbedqR9wdGbOvinTjzunlLSFRTlyXD7Dkf5GouXC8mVP79NqvJP3Sb1XVqYP58frz0mRxu4I3TbGOOZDY591Bf3Jx7Ku39tXsdKfb3tq/JXTKb485Mp/vxkSr5iMiWfn0zxV0ym5CsmU/JzJ1Pf1bL50rlX5edOp0qRK46kSD1ERE6bE5oZufHl3uyzDYmbaLJD60M25rS6Oq6rPbIxLr+VYlw0Htrwrf+jvN50f7YR7+6o5amN7l1MoYf5EfP+ke89+ZgNCueaPI3HFO8u67P6sT4a4o799tQGd4+HPMyPWPG7kR/a8FWMweVhPPAtqm2D6JkN3F2qNmQ8teGDwxsf5scM3/6c9ZGNe/jgK7HXw3Lh4sN2LvVhPErEo9BDG616V9cetqccx3b4aV3nHvPlw7mds404uMOHgzs/iEd4HA4nd34QD7/rjJ/2c0zDbdDrg3rHPpu9GVv998u12Fb4rUXQ1/tY3rXwehn1bOGdZdRWf+4yahGKoZjw6wlhPS1OxR1jQvx6b9LRxhC/D4uv+swG+xsr3B/aEN+2LiLyzMb0YeW6sfphPLzHv831R28KPrxrZUuvJ7d1fvZNedPC4U05WnjrTWn1p74pbdQ49T3o9SbkoyvqzalxO57geWtqfDbx1tS4Nf781LidXEnvTY3PWfrm1LidHFLvTo1bLz93avxtLTssSPX2ea9F65/fKNX65zdK/SAx751oav0L9lsdjbx7oqmdvFJvelB+YOOtE03teBvUm26Ys5E3/TDnbH3Th4Krj3+qkXcdMT8w8p4j5mzkTUfM+0ba85i85Yj5gZH3HDFHI+86Ys6tyZuemPaDW+E+7Ylpw1fryt1eP1rxb2mA1+Rwqmmc9p9TNNHpDoHZ3jcxJW7lKQcbp6TEDUfrVpryKDtm3A7Ur2dZ2i8fGd0DtEdHzdbAroWN8cip1KvX05v7s3jUNNhs17N4tBjT9N5e71U83bb3ZhU7mfiCKtZ7XNvU6fVdd0cbFLdH9XuV/ZENfP/NbMxnRcupaHk+el3uNeAeA+fD/YPyBTuomnx6B9XZxHsTGvmCHVRNPr2D6pyl705o5At2UDX5uXdAf1fL2utG6N17nE6+vuMtNb150eR27CMWZlxgfz2yQHEKubdnFqYfi0zrMfSBAhnRlN6Lda+bsHkas8dXK+5m8KV/7mxj+NJjH699Fmcb7Pdi9byu8zEb8c4yP7Qhwz8IIMLPbET70/OY/2PxyB8maE9WDWlEi37XlZcvbD+fkHpj1fBdC69XDc8W3lk17Jd8etXw9J2w5t9m6S23oN9/XqucNqH4ZD8Ko7cPNBm+bEGpJ/hQo8Nx9UF9aMHjIPOZBT//THlI/ZHm2/dpdXpoYURL0R5a8DjIsy6k+7pNz47N6wNOuJrGBvWhQ7F4g3ebe7ZBg9vlh5ja9TAe1d1G3B5uBODq8zWu/NA5GsMczi/6x2x45bhtPNz0wt6pjm/uOfnQJg9fLB2d+jMbxevYKPV1np7W5Etsm0lD+u8/Mna+JyDuR789cWl98kP3BHDcEyCvbyw4DmCL7zWphZ5dAXpJ+p7Uo+uTa/VdEbW2Z7GIdYnbxLMbVYsPMGqe733oUlbf6npH4lksqsSUojy7jXr4hohycFmfb2D2see9CkiPTFw1tv32l9l5vBHoqnEbdZH8WcHvPjp0PsQUK5qj5A9rje+M9HcHsC8/i9WPXqf3Pq11TkzakD2kHhJzaDlqj0uQqaaPq47vY3LcCO295O3EPxl5OybjYOTtPJmv8+TkMuIRV+FHPPpHosG+J7Nw6q5/H42TH6D6ZfS3E+t6nSFHj0SJNqT2Q9G8H5P2sGhynnzzAn+fJ/xTi0ZiaVPo0AScvqdEseRMbb78yF8fpybt3W+tnmPS/e7ve91XHtrwgdBt4/Vc+ORvGv7tBU47gep3c8AflMyIkpHyumTG6QuOJHHb6mFef3Q3FR8oS+2vv1nYj0eh3i7ec57E9xPl9NKM0w0ol/sCW+kHI6fTUFKYPFPSYOR3nx48HYd6+/uFpw88vfkBw9OtfPegLoaIqZZ8zEj1RfB7sFcfGuHwGHMa7/7OyLmW+Ijk9qK3w0jg6DH29dJ7AH14/U7nmaj59xSppe0J339h9xiTGic86vXN+/edkdOxqDc/5dpPp6Le/JbrDxLjL1+96Dok5nQTv7uOZpp0fyhT7+LtEY/XxXschKevubb8uaTftYxyXGfz6f91qGby9hry6+Hzafr/7hD8+BWrOFrRDgPweR3dA2nBjl9G4/jho4jHHP3JR9vXB5NihnZKSvt8qcz+6VI5JsXdT6WUwxTgdL/e20nhn5uU2Pl+nWZ4pyv6bg/a//rtou8/Y3qddvGTfyh8EpVPJiUvDX2g+ZHYofFqTfkUgRIbzelJeB9nl/YkfPVXNI+ePhDe1z/quJ6Ejz61Pcm/WID+5pNkj8LPJ/nvvpUy2pPwsfGKx+fCS38U/7RE8iD8u5fSnky8eSXtycSbF9Jen1/wvj6/3H2qjrESWEc5fOv6eM/eux+7rscBwJtfuz4dxXn3c9dnG+9977p+wc05ZyPvfvG6fsH9O+eyeXPLNlX5yUbe3ff9AyPv7fs+G3lz3/f7RtrzmLy17/sHRt7b93008u6+71ODNHp08Fxe15LTgScaaR/FqS1pn7+1l04fgeLhm57W7ZkvbfTziI1iJN9fL7Oes4T97bsHwoeG/nRjXO1Rvj1tR/hdJTkbofhA4qyPjcQnEk/V9WgkvqhXiZ7GhEb0oFd/bIT+t274Y0aGLzrVfFvDB424j6PmTw981Eis5qUdXR8zwpGcXGM/aMS3ZFW5HsckXHJS6KER8f3oNTsHP2jEHS41bxr8qBHPk1mevjsz3p359N1ptcYwqT/M2NbcGdaaPHwBW/dl0pZ3DH+k5+JL/rcl7N+1sOMQjzePctLJB/XmUc5jUnz3XM1fWP59Us7fxvKW5Gr51aO34zEpqvshHkcTPsG5nRP9kJTjNbq+lib8TfPM3xk5btF/7yjaacJXfFzTCh+q2Mn5NKKFH9wPOXJyPs3Y8zuTn/POm29NnJZJL98tcePhvT0a6R6RTqee5mgkrkvpJPzUiN8tdo/Xyhck5zQ2OhoZse90nHqas5ErtvwTfz4549SFn2PiC7e3k2A8NMI1Vhfq85j08FHUz+dJ3qn+weRI5Ml8bMSnWrcR+YLkzPnQiPi8oufNKB80EgtIMuRxTDxjhdvn80T4ccvmo7Tb3tP2ZIaRKYfSmcebUOLIzDq8nMZp37f3xw8cUUvHy/j1StT5w1PhoGvJAfEhI8OdWvlCut+bOOYJpds/sje6faQPpMs3g9HVXxfyuK6vKJ9xlc+Xz9nIm+VzNPJe+fwgT76ofHxefuPDhomKR4XKaZZzGnCVK0onX/dZf1fEX/Cts3F9+ltnoxydgO/tOzobqS2M9PrQyJv7js4jaqa4nlJer1mO00X50ny7vuSN8t/N2kaho9vBPQbZvfi7SnI2ImEkeds/aGTGVtlrPDTSeszs6RSTU77G1QqSXTHf52s93i0d33CaqUP/iA25fCIq5RoPbXjRPLdRfGAvpfDDeHiHc9uQ1zZOPXmhcCWXwx7VH1SRK9xbad/+76vIeU+ALzPkV++DzdF72yB/0N/4ySG6no7r75B+y3Up/amR+I73NZ8aKf6BYso7bj9oJPZSlkMffNoE6ZtG6NDGnwzMdD/1EwPfbCwbz0wU37pyl6o8M+HreiVvv/iIiTbT7T/PYkE+F/9moPkhEyMu3pD5LCFXnKSqzxLS4oqZRo8S8u7447gjJ84LDH6WEI7bQ3jWRyZmZOesj0xwjwuYxxMDs1trM+lRPsRlsLM+i8GIWwjok0l4ZuB2Qvjp5iu7vuVtC8WvpOSSt/N+16PSqXOv8WbUUR/FgmISmIayH7Hg1/Ly0zj4et+96n89sRBncG/kZ6mYYUE+a6E8ikONL4bnw8gPyyL5gj4SBx9KcKVnqWj9c/WhzKjVM+0+bXI9MpG2t3zAxHKmuV8t7aP6kIkRrrm8QPkRExLHZObDhMw4Jp+3GnzIRBxQvx7mRR1xMqXm3Hi/ZnS5Ytk47Sv+3QLc6eK8e3Dmo7Nx2O93NtKjH+6VnhmJe/u/8Qt8Z+LYlUv6IMOTkxgcW+1vnI8sTE8FzUcW4hQ1j/7MQnzc4qmFt3aQjeOHoN7dQXYd12Le2kd6nAP5Hov7dU8Tue/uCRmnI0/iZ3Sl9ZcmjrHo6YhPe2YinUdJNxx9LCE+8Je8OeJ7E6fzTuG2JrmemXjv5paziStMtIcmfJvHGPNJifTm73rPH2/5/tLRkwnyNenb9z0emZjeM/dJj0x84xDKFfwjJkas3Bwucb2O6zZes/Ixj4+YaBJrLumWpY+YiK6MenlmIk4VUr5e/0MmfKBD3+wg/IiJ2I4s9XV28jVOU6oZd9i0K1+d+kEzsez6CTPtik9p3gv8z83Ukcy012ZOa6/lHrZ5bOrdZR7MHD2glO5zzWOGD5uJBa589fBHExVn7e5EnWJz/uhGup9aSn1sJjq9LiyPCzwumW35BOTvY3P8yGZJw9xvnKofNDOSGSmPzcTLcJs5JOp4jOr9kvqBmdgOcJcUPzbzNQVekiM+X6j2oQY0LuNl4kcmpq8n0ZRHPcGIKe/InrOPmCjF7wQu9XpmIn0r89BgHk24l+l20R2ap3Yywj5bHdxfLkwdbZRB6Z4qOvUiPzDjG/Rvlsdm4lOV90r6xU/NcNzRNvJS9kfNxF3r45t5+MfMyBXuASnlcWxSFh/bptOZqg901G1+SUf9IzNvdtQ/SNS7HXWvX9L8/8DMu+32DwqcUvUbz6ufb4u+mR6/UzPqzZijPzYTXeOYPB+auWcVXm9uH8l4bCYdxs8Ohg+b4TAzD2Po021/FNfz3u7y8bI9p/qT+4TbSeGt8M30NFdq3DSwrh5+1FHW+B50lUPdpfGTjRQZ0cbc3J+a4TgrLEzlqRmJ4bfIYW7+AzPp5LLM9jw2Pcx8c7buE2ZOg5Efmelhhg/1d/TPv46nE1jvvo4/KKO4v0+yW/yjuRLXEcm8nteYHJv23EzsppXZ++M2pkUDnq8V/aiZkZqq571S8929N9f62ExPZuhx+9taNvO4j2wxRLv5ed5wMjMfd7U99U29Pi7wuGl0mXle/eL72twPy5ssx4l+K/HhsGO9+YEZ99DffOpa5GuGrz+IDaUvqp0WFj+QqE+Y4fhWXb4p9/dmxv+LvJmRqH71r0jUJ8z0+J5g7+2QxfP6f5A3vaVEdfqSRPXHjejl+woWP15KmPNKZuoj59bwPYJ9CD8z0eJMqTzz0sV3fjo/84+N4ftox2iPHDprVccHVvxoasFXiX167ZGv8C7V+UkTfPli4r3e9Sgv7poXn1Opz2IRjSy3Z8u735gY9ZkJCRPzUe1cfbmZOLVkJxPiroS7L3hmovuywo2PHMA8fGLGoz4rEYqNqDSflQjHDh559qZ+k5CnJuKy/cHP6gXHNlAu/Vks4lAkF3oWC4qvBlD/dImU17VTyvyKrvr4nvj+mad1o8bplG++9POR7fulxf7DtCr5IRPvnYU8mXjzJOTJxPBpVh1pCfFDsfBdDrXys+x88yDWMRbvHcM6uQr9gCvRo/1h7+3LOjsrbXhxPdrk9ukNVe/tCzs6S9/ZFXYwIPEN6BufHAAQ8vWQG/mRhbi6mh5tW5fhA3gZpT6Kg3c/t/vkmYX4qDelrZsPLcjDOERZyLOy6J+0EPun8p1F31+WO0Q+a+K4dTS+bH7lQebbBkqsFZa8D/d9A3GALx9J+YCB+CpxybnwgRjMiMF4YUD6YQhxOw6sjb5XhFMu3OuM//jn+59//NOvf/uX3/76pz/+/de//uW/7pD/WMb+9usf//W3P+9//vt//+VP6f/+/f//T/s///q3X3/77df/+Jf//Ntf//Tnf/vvv/15WVr/75dr/+f/9FUbOw3+5z/8Uu5/34Pd+ge63/b73239/3VWuI+6/l1WgFbviev9HwRAiHH3dfd/6J//saL8fwE=", + "brillig_names": [ + "public_dispatch" + ] + }, + { + "name": "redeem_private", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_key_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + }, + { + "name": "ownership_key_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "1186437190978851533": { + "error_kind": "string", + "string": "Non-zero hint for zero hash" + }, + "1589673740894288059": { + "error_kind": "string", + "string": "Hint values do not match hash" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7764445047318889914": { + "error_kind": "string", + "string": "Public data tree index doesn't match witness" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9199403315589104763": { + "error_kind": "string", + "string": "Proving public value inclusion failed" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "storage_read", + "get_public_data_witness", + "field_less_than", + "decompose_hint", + "lte_hint", + "store_in_execution_cache_oracle_wrapper", + "call_private_function_internal", + "load", + "store_in_execution_cache_oracle_wrapper", + "directive_integer_quotient", + "directive_invert", + "directive_to_radix" + ], + "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "redeem_public", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "internal" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + }, + { + "name": "secret", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + }, + { + "name": "ownership_key", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "772057049813214347": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "2570651705007895968": { + "error_kind": "string", + "string": "HashlockNotMatch" + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6012086182631426650": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17814817983036354427": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "redeem_public" + ] + }, + { + "name": "refund_private", + "is_unconstrained": false, + "custom_attributes": [ + "private" + ], + "abi": { + "parameters": [ + { + "name": "inputs", + "type": { + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + }, + "visibility": "private" + }, + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": { + "abi_type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "min_revertible_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "is_fee_payer", + "type": { + "kind": "boolean" + } + }, + { + "name": "include_by_timestamp", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", + "fields": [ + { + "name": "_opt", + "type": { + "kind": "struct", + "path": "std::option::Option", + "fields": [ + { + "name": "_is_some", + "type": { + "kind": "boolean" + } + }, + { + "name": "_value", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ] + } + } + ] + } + }, + { + "name": "note_hash_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifier_read_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "key_validation_requests_and_generators", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", + "fields": [ + { + "name": "request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "fields": [ + { + "name": "pk_m", + "type": { + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "sk_app", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "sk_app_generator", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "note_hashes", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "nullifiers", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] + } + } + }, + { + "name": "private_call_requests", + "type": { + "kind": "array", + "length": 5, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", + "fields": [ + { + "name": "call_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + } + ] + } + }, + { + "name": "args_hash", + "type": { + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_call_requests", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "public_teardown_call_request", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "fields": [ + { + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "l2_to_l1_msgs", + "type": { + "kind": "array", + "length": 2, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "fields": [ + { + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "private_logs", + "type": { + "kind": "array", + "length": 16, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", + "fields": [ + { + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "contract_class_logs_hashes", + "type": { + "kind": "array", + "length": 1, + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", + "fields": [ + { + "name": "inner", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "historical_header", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::block_header::BlockHeader", + "fields": [ + { + "name": "last_archive", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "content_commitment", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::content_commitment::ContentCommitment", + "fields": [ + { + "name": "blobs_hash", + "type": { + "kind": "field" + } + }, + { + "name": "in_hash", + "type": { + "kind": "field" + } + }, + { + "name": "out_hash", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "state", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::state_reference::StateReference", + "fields": [ + { + "name": "l1_to_l2_message_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "partial", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "fields": [ + { + "name": "note_hash_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "nullifier_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "public_data_tree", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", + "fields": [ + { + "name": "root", + "type": { + "kind": "field" + } + }, + { + "name": "next_available_leaf_index", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + } + ] + } + } + ] + } + }, + { + "name": "global_variables", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "block_number", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "slot_number", + "type": { + "kind": "field" + } + }, + { + "name": "timestamp", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "coinbase", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "fee_recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "gas_fees", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + }, + { + "name": "total_fees", + "type": { + "kind": "field" + } + }, + { + "name": "total_mana_used", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "tx_context", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "fields": [ + { + "name": "chain_id", + "type": { + "kind": "field" + } + }, + { + "name": "version", + "type": { + "kind": "field" + } + }, + { + "name": "gas_settings", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings", + "fields": [ + { + "name": "gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "teardown_gas_limits", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas", + "fields": [ + { + "name": "da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "max_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + }, + { + "name": "max_priority_fees_per_gas", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees", + "fields": [ + { + "name": "fee_per_da_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "fee_per_l2_gas", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ] + } + } + ] + } + } + ] + } + } + ] + }, + "visibility": "databus" + }, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "1186437190978851533": { + "error_kind": "string", + "string": "Non-zero hint for zero hash" + }, + "1589673740894288059": { + "error_kind": "string", + "string": "Hint values do not match hash" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7764445047318889914": { + "error_kind": "string", + "string": "Public data tree index doesn't match witness" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9199403315589104763": { + "error_kind": "string", + "string": "Proving public value inclusion failed" + }, + "11091894166229312484": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + }, + "18313900523101689315": { + "error_kind": "string", + "string": "Note contract address mismatch." + } + } + }, + "bytecode": "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", + "debug_symbols": "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bUe2HXnnYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg23nYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYRw7aNaBu4A2yQTfYhrahLxg5OKFs2JFlR5YdWXbkkYNWBtiGtqEvGDk4oWygDXUDb5ANO7LuyLoj645sO7LtyLYj245sO7LtyLYj245sO7LtyG1Hbjty25Hbjtx25LYjtx257chtR247ct+R+47cd+S+I/cdue/IfUfuO3LfkfuKXK7rCipBFFSDOEiCNMiCWlBolNAooVFCo4RGCY2RkyZOGmRBQ6M59U0jMReVIAqqQRwkQRpkQaFBoVFDo4ZGDY0aGjU0amjU0KihUUOjhgaHBocGhwaHBocGhwaHBocGhwaHhoSGhIaEhoSGhIaEhoSGhIaEhoSGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhoWGhYaFhoWGhYaFhoWGhYaFRguNFhotNFpotNBoodFCo4VGC40WGj00emj00Oih0UOjh0YPjR4aPTT61ijXFVSCKKgGcZAEaZAFtaDQKKFRQqOERgmNEholNEpolNCIPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkee+hKhdTjWIgyRIgyyoBfVNI88XlaDQ6KHRQ6OHRg+NHho9NPrW8EVFi0oQBdUgDpIgDbKgFhQaJTRKaJTQKKFRQqOERgmNEholNEpoUGhQaFBoUGhQaFBoUGhQaFBoUGjU0KihUUOjhkYNjRoaNTRqaNTQqKHBocGhwaHBocGhwaHBocGhwaHBoSGhIaEhoSGhIaEhoSGhIaEhoSGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhoWGhYaEx8rwVJw6SIA2yoBbUN408X1SCKCg0Wmi00Gih0UKjhUYLjR4aPTR6aPTQ6KHRQ6OHRg+NHhp9a/jCpUUliIJqEAdJkAZZUAsKjRIaJTRKaJTQKKFRQqOERgmNEholNCg0KDQoNCg0KDQoNCg0KDQoNCg0amjU0KihUUOjhkYNjRoaNTRqaNTQ4NDg0ODQ4NDg0ODQ4NDg0PA8F6e+yfN80tBoThRUgzhIgjTIglpQ3+R5Pik0NDQ0NDQ0NDQ0NDQ0NDQ0NCw0LDQsNCw0LDQsNCw0LDQsNCw0Wmi00Gih0UKjhUYLjRYaLTRaaLTQ6KHRQ6OHRg+NHho9NHpo9NDoodG3hi+OWlSCKKgGcZAEaZAFtaDQKKFRQqOERgmNEholNEpolNAooVFCg0KDQoNCg0KDQoNCg0KDQoNCg0KjhkYNjRoaNTRqaNTQqKFRQ6OGRg0NDg0ODQ4NDg0ODQ4NDg0ODQ4NDg0JjchziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzXxDWi5MEaZAFtaC+aeT5ohJEQTUoNCQ0JDQkNEaed3Lqm0aeLypBFFSDOEiCNMiCQkNDw0LDQsNCw0LDQsNCw0LDQsNCw0KjhUYLjRYaLTRaaLTQaKHRQqOFRguNHho9NHpo9NDoodFDo4dGD40eGn1r+EKyRSWIgmoQB0mQBllQCwqNEholNEpolNAooVFCo4RGCY0SGiPPuw4aeb6oBA2N5lSDOEiCNMiCWlDfNPJ8UQkKjRoaNTRqaNTQqKFRQ6OGBocGhwaHBocGhwaHBocGhwaHBoeGhIaEhoSGhIaEhoSGhIaEhoSGhIaGhoaGhoaGhoaGhoaGhoaGhoaGhoWGhYaFhoWGhYaFhoWGhYaFhoVGC40WGi00Wmi00Gih0UKjhUYLjRYaPTR6aPTQ6KHRQ6OHRg+NHho9NPrW8MVqi0oQBdUgDpIgDbKgFhQaJTRKaJTQKKFRQqOERgmNEholNEpoUGhQaESe98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HmPPO+R5z3yvEee98jzHnneI8975HnfeU7XznO6dp7TtfOcrp3ndO08p2vnOV07z+naeU7XznO6rtAooVFCo4RGCY0SGiU0SmiU0CihUUKDQoNCg0KDQoNCg0KDQoNCg0KDQqOGRg2NGho1NGpo1NCooVFDo4ZGDQ0ODQ4NDg0ODQ4NDg0ODQ4NDg0ODQkNCQ0JDQkNCQ0JDQkNCQ0JDQkNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0LDQsNCw0LDQsNCw0LDQsNCw0LjRYaLTRaaLTQaKHRQqOFRguNFhotNHpo+N43V3EkYAUyUIAKNGAD9o2+MG5jAY5bMqcaxEESpEEW1IL6Jk/5SSUoNEpolNAooVFCo4RGCY0SGhQaFBoUGhQaFBoUGhQaFBoUGhQaNTRqaNTQqKFRQ6OGRg2NGho1NGpocGhwaHBocGhwaHBocGhwaHBocGhIaEhoSGjI1vDFQnNXId9u6yJHr3/syEABKtCADdgDfduthQVIQKgx1BhqDDWGGkONoSZQE6gJ1ARqAjWBmkBNoCZQE6gp1BRqCjWFmkJNoaZQU6gp1BRqBjWDmkHNoGZQM6gZ1AxqBjWDWoNag1qDWoNag1qDmm8Adnk18z3AFjZgD/TNwBYW4FCb1dM9cSEDBTjUitdf98SFQ62IY9/oi4s2FiABK5CBAlSgARsQagVqBWq+m1hRxwpkoAAVaEBXa4490HcXWzjUqDgSsAIZKEAFDjXf7ckXHm3sge4aC13Nr8y36ltYgX7p3dGDjWfsy4keBuw4/qySYwUyUIAKNOCIW13NTWGim8LCAnQ1vwY3hYVDbWybQr64aKMCDdiAPdBNgdmxAAlYga7mxeemsNDV/CLdFBY2YA90UxAXdlNYSMAKZKAAh5r45bgpLGzAHuimIH6RbgoLCej35rXPTWGhAHug57z4XXh2i1cCT+n1r+PK1C/SU3phA/aNvo5o47iy8a08+UqijRXIQAEq0NWaYwP2QE/pha7WHQlYgUPN/Mo8pRcqcKgZOQ41m/vsDbXxPRDx3DBwYgESsAIZONSaS3hKLzRgA/ZAT+mFBUjACmQg1CrUKtQq1Dznm9+x5/zCCmSgADXQE7LNzQYN6BL+CBWXrrh0xaV7ijQvKE+RhQwUoAIN2IA90FNkYQFCrUGtQa1BrUGtQa1Bzd+QTR09gjl6BK9ynjgLDdiAfaMvzNlYgASsQAYKUIEGbECoFagVqBWoFagVqBWoFagVqBWoFagR1AhqBDWCGkGNoEZQI6gR1AhqFWoVahVqFWoVahVqFWoVahVqFWoMNYYaQ42hxlBjqDHUGGoMNYaaQE2gJlATqAnUBGoCNYGaQE2gplBTqCnUFGoKNYWaQk2hplBTqBnUDGoGNYOaQc2gZlAzqBnUDGoNag1qDWoNag1qDWoNag1qDWoNah1qHWodah1qHWrwEoGXCLxE4CUCL1F4icJLFF6i8BKFlyi8ROElCi9ReInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKFlyi8ROElCi9ReInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKFlyi8ROElCi9ReInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKFlyi8ROElCi9ReInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CUGLzF4icFLDF5i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CUGLzF4icFLDF5i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CUGLzF4icFLDF5i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CUGLzF4icFLDF5i8BKDlxi8xOAlBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8JIGL2nwkgYvafCSBi9p8BJfRVTGYkLyZUQbCTgup1dHBgpQgQZswB7oCbmwAAkINYOaJ6RPt/iqoo0GbMAe6Am58KFGPnHna4s2ViADZSA5KtCAbaBfmR8OMNGPB1joauxIwApkoKuJo8dVx77R1xVtLECP2xw9bnccccvlKEAFGnCo+ci/LzBa6AcGLCzAoeancvjSIvIBeF9bRD6S7ouLyMfMfXUR0fyzBuyBfnLAwgIkYAUONSJHAQ41HxL3dUYbG7AH+okeCwtwqFUvh3mux0QGCnCoVb+ceb7HxAYcaj583ucpHxML0NXY0dX8GuZpHxMFqEADNqCrjVrd58kfEwuQgBXIQAEq0IANCDWFmkJNoaZQ81NBqtdJPxdkoQL9uXmN8tNBFvZAPyFkYQEScKixl6+fFLJQgAo0YAP2QD81ZGEBEhBqDWoNag1qbgrsF+mmsLAACViBDBSgAg3YgFut+tKkjQVIwApkoAAVaMAGhFqBWoFagVqBWoFagVqBWoFagVqBGkGNoEZQI6gR1AhqBDWCGkGNoFahVqFWoVahVqFWoVahVqFWoVahxlBjqDHUGGoMNYYaQ42hxlBjqAnUBGoCNYGaQE2gJlATqAnUBGoKNYWaQk2hplBTqCnUFGoKNYWaQc2gZlAzqBnUDGoGNYOaQc2g1qDWoNag1qDWoNag1qDWoNag1qDWodah1qHWodah1qHWodah1qEGLynTS9ixAAlYgQwUoEtcjg3YA6eBTCxAAlYgAwWoQKgVqBWoEdQIagQ1ghpBjaBGUCOoEdQIahVqFWoVahVqFWoVahVqFWoVahVqDDWGGkONocZQY6gx1BhqDDWGmkBNoCZQE6gJ1ARqAjWBmkBNoKZQU6gp1BRqCjWFmkJNoaZQU6gZ1AxqBjWDmkHNoGZQM6gZ1AxqDWoNag1qDWoNag1qDWoNag1qDWodah1qHWodah1qHWodah1qHWo91Oi6gAVIwApkoAAVaMAGhNr0EnMsQAK6WnNkoAAVaMAGHGriau4lCwvQ1bpjBTJQgAo04FAb51bUeSThRPeShQVIwApkoAAVaECoVagx1Bhq7iVCjhXIQAEq0ICuJo490L1koaupIwErkIEe1x/sPKTQn9A8pnAiAUcE9Sfk/rBQgON6x8EUdR5ZuLABe6D7g/oNuT8sJGAFelwvPs/5sTSmzgMKFxagX69LzGMKJzJQgAo0YAP2QM959fL1nF9IwApkoAAVaMAG7BvnQYYLC5CAFchAAbqaOvZAz+6FBUjACmSgABHXs3thA0KNoEZQI6gR1AhqBDWCGkGNoEZQq1CrUKtQq1CrUKtQq1CrUKtQq1BjqDHUGGoMNYYaQ42hxlBjqDHUBGoCNYGaQE2gJlATqAnUBGoCNYWaQk2hplBTqCnUFGoKNYWaQs2gZlAzqBnUDGoGNYOaQc2gZlBrUGtQa1BrUGtQa1BrUGtQa1BrUOtQ61DrUOtQ61DrUOtQ61DrUOuhxtcFLEACViADBahAAzYg1OAlDC9heAnDSxhewvAShpcwvIThJQwvYXgJw0sYXsLwEoaXMLyE4SUML2F4CcNLGF7C8BKGlzC8hOElDC9heAnDSxhewvAShpcwvIThJQwvYXgJw0sYXsLwEoaXMLyE4SUML2F4CcNLGF7C8BKGlzC8hOElDC9heAnDSxhewvAShpcwvIThJQwvYXgJw0sYXsLwEoaXMLyE4SUML2F4CcNLGF7C8BKGlzC8hOElDC9heAnDSxhewvAShpcwvIThJQwvYXgJw0sYXsLwEoaXMLyE4SUMLxF4icBLBF4i8BKBlwi8ROAlAi8ReInAS2R6SXMsQAJWIAMFqEADNmAPJKgR1AhqBDWCGkGNoEZQI6gR1KaBmCMBK5CBAlSgARuwB04DmQg1hhpDjaHGUGOoMdQYagw1gZpATaAmUBOoCdQEagI1gZpATaGmUFOoKdQUago1hZpCTaGmUDOoGdQMagY1g5pBzaBmUDOoGdQa1BrUGtQa1BrUGtQa1BrUGtQa1DrUOtQ61DrUOtQ61DrUOtQ61Hqo6XUBC5CAFchAASrQgA0ItQK1ArUCtQK1ArUCtQK1ArUCtQI1ghpBjaBGUCOoEdQIagQ1ghpBrUINXqLwEoWXKLxE4SU6vaQ7DrXxiUf1FZgbe6B7ycICJGAFMlCACoQaQ42hJlATqAnU3EvGdyjVV2BuFKACDdiArjYGKHwFJrWJBUjACmSgABVowAbsgQY1g5pBzaBmUDOoGdQMagY1g1qDWoNag1qDWoOau8bYILf6qkoydixAjyCOFchAASrQgH69XvvcHxx9VeXGAhxq/XKsQAYOtbGipvqqyo0GHGpjz6XqqyoXuj8sLEBXq44elx0VaMAG9Lij4eLrJ2ksjam+fpLGx/TV108+xnAc60C/suEE9XLh4QQbFWjANtCvbDjBwuEEGwvQ1cTRJfxyqkv45VSX8PId6V+LX85I/8cgj2MPHOm/sQAJWIEMHGrFr2Gk/8a2K5evlFzoOb+wAAlYgQwUoAINCDWBmvoNeZFoARLQb8gLShkoQAUasAF7oF3AAiQg1AxqI+cr+fWOnN9owAbsgSPnNw418lIfOb+xAhnoal5/mwIN6Gp+ZS0cxldKbixAAlYgAwWoQAM2YKi16wIWIAErkIECVKABGxBqBWoFagVqBWoFagVqBWoFagVqBWoENYIaQY2gRlAjqBHUCGoENYJahVqFWoVahZobyPgGuvpKyY2jltT5CwZswB7oBlKrYwESsAIZKEAFGtDV2LEHzvaDOHoryH939jometz5Cwo0YAP2QHeNhQXod2GOFchAV2uOCjSgq6ljD3TXWBhTGW32OiZWIAMFqEADNmBMnDRMnMyFmz79MxduLvS78Cfv/rDQgA3YA/sFLMBRZlwcK5CBQ20s+Kq+RdxGAw41n5305ZwTfTnnxpiumss5F1YgAwWoQAM2YA8sF9DvojoyUIAK9LtgxwbsgXQBfV2xORKwAhkoQAUasAF74NwNYaLfhd+Q5/xCASrQgA047sKnJH215sYCJOBQ8wlQX625UYBDTbwcPOcXNqCrjRTx1ZrVa6qv1qzja/3qqzU3ViADBajAoebTl75ac2MPdCdYWIAErEAGClCBUFOoKdQMagY1bz/4XKiv1tzIQFfz0vH2w0IDNmAP9PbDwqHmvSRfrbmxAhk41MbxodVXa2404FDz3pev4Xy0kAa6PywsQAJWIAMFqEADuprXB/eHgexrOOs4dYp9DedGAlbgUBvNRfY1nBsVaMAG7IHDHzYW4FAb2wSwr+Hc6GrVUYAKNGAL9M8rLo9ALsGOBKxABgrQJbx0vKuxsAF7oHc1FhbgUOt+b24gCxkowKHW/XrdQBY24FDrfm9uIAsL0NXE0dXU0dX8ctxAFirQgA3YA+fCbqcaxEESpEG2aWQwj64d+8rJjT1wZPDGAiRgBTJQgAqEmkHNoNag1qDWoNag1qDWoNag1qDWoNag1qHWodah1qHWodah1qHWodah1kPNV05uLEACViADBahAAzYg1ArUCtQK1ArUCtQK1ArUCtQK1ArUCGoENYIaQY2gRlAjqBHUCGoEtQq1CrUKtQq1CrUKtQq1CrUKtQo1hhpDjaHGUGOoMdQYagw1hhpDTaAmUBOoCdQEagI1gZpATaAmUFOoKdQUago1hZpCTaEGLynwkgIvKfCSAi8p8JICLynwkgIvKfCSAi8p8JICLynwkgIvKfCSAi8p8JICLynwkgIvKfCSAi8p8JICLynwkgIvKfCSAi8p8JICLynwkgIvIXgJwUsIXkLwEoKXELyE4CUELyF4CcFLCF5C8BKClxC8hOAlBC8heAnBSwheQvASgpcQvITgJQQvIXgJwUsIXkLwEoKXELyE4CUELyF4CcFLCF5C8BKClxC8hOAlBC8heAnBSwheQvASgpcQvITgJQQvIXgJwUsIXkLwEoKXELyE4CUELyF4CcFLCF5C8BKClxC8hOAlBC8heAnBSwheQvASgpcQvITgJQQvIXgJwUsIXkLwEoKXELyE4CUELyF4CcFLCF5C8BKClxC8hOAlBC8heAnBSwheQvASgpcQvITgJQQvIXgJwUsIXkLwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8JIKL6nwkgovqfCSCi+p8BKGlzC8hOElDC9heAnDSxhewvAShpcwvIThJQwvYXgJw0sYXsLwEoaXMLyE4SUML2F4Cc9EJ8cCJKAP1jpxkARpkAW1oL5pfnLhVIIoKDQ4NDg0ODQ4NDg0ODQkNGZasyMBK9CLUB0F6EXYHQ3YgD1wpvXEAiRgBTJQgFBTqCnUFGqe1sUfmKf1QgJWIAMFONTG9DL76smNDejTUoPmegWnEkRBNYiDPKJXF0/SsY8C+1pILl7enqQLK5CBfqX+FDxJFxqwAfvGtRbSqQS5ljlWIANdqzsq0IBDa0zesq+EXOgpOnZnYF8JuZGAPvHkxEESpEEW1Db5K50mjisldhxX6lXa1zVuNGAD+pX6DXpOLyxAAlagD1U7SZAG+Yi/Uwvqm+bkglMJoiAXaY4MFGAL9IQlL3xP2IU+E+LEQRI0SqT6o/FsXdiAo0Rm8Xq2LhxSM4Jn68JxsfO6PVvn7Xu2Vi8nz9YxqcW+VHFjA/ZAz9aFBUjAChxq7Nfr2cpelTxb2a/XX7fsF+mvW/aL9NftQgJWIAMFqIGeqOy36Ym6kIAVyEAB6kZfPMjjK0T2xYMbGShA/7Pm6CXZHb0yOPVNM+OcShAF1SAOkiANsqDQKKFBoUGhQaFBoUGhQaFBoUGhQaFBoVFDo4aGt5THR5Wss6XsZEEtqG+arWSnEkRBNYiDJCg0ODQ4NDg0JDQkNCQ0JDQkNCQ0JDQkNCQ0JDQ818RLwXNtoQBHIPHK4rk2JiLZl/KxeL3xrBKvN54p48NF9oV4rP67/l5b2AM9f9QrrOfPQgJWIAMFqEADuho79kBPsIVDzfzePJXML8dTaeGIa/N3DdiAfaMvz5t/5svzNhKwAhkoQAU2oF/6IM+7SSWIgmoQB3lwcVSgBXqaLfTL8z/zpPJJQV93t1GBBmzAHuiptdALozkSsAJdrTsKUIFDzecHfQnexh7oGbiwAAlYgQwUoAKhxlBjqAnUBGoCNYGa56NPYvpqvI0K9Lj+oP0N6POOvqxuo1+OPyHPtOZPyN9qE/2tttAjeKn7W23huByfYfRFcexThb54jbtLeJ4s7IGeJwtHXJ9W9MVrGyuQgQJUoMcdF+nL1DYWoMc1xwpkoAAVaMAG7IFe7ccaU/ZFZhsbsAd6MiwsQL+y7liBDBSgAg34UBPv1vkis4UjRTYWIA0sjjKQHHVgdTRgA/ZAvoAFSMA6kB0ZKEBXE0cDNqCreenIBSxAAlYgAwWoQFfzMhsvKPEekC8cE+/F+MKxjQJU4Lgy7+b4ErGNBUjACmSgABU4rsy7RL5EbGMPbBewAF3Cy6wx0IN5te9+OV5Tuwt7OXQX9nLoBhzCHmBkk5Ov6VpUgiioBnGQBGnQEKHLsQF74HjzbCxAAlYgAwXoccfz9GVb4l0zX7Y1liixr9paxEESpEEW5BGrYw/0rFpYgASswBHVe3S+NEu8w+ZLszZ6n8SJgmoQB0mQBnmZmmMD9kDPnIUFSEAvveboEbrjiOA0Ok+LStD4c/8Tz5pJHCRBGmRBQ8S7aL6+aqGn0cIKHH9f/Rl6aixswBHBb8MzY1IJoqAaxEHjMr1X6KulNhqwAXtgv4AFSMAKZCDUOtQ877zj6aulNvaF4qulZPRBxVdLbXS15uhq3XGojc6k+GqpjQocaqPeiK+W2jjURhdTfLWUsAuPBFT/q5F/i2oQB0mQBnlEHeipx37RnnvsV+rJt1CA7hSXowEbsAd6Ai50+3FhT7XRixBf2iTiN+gvsIU90BNwYQESsAIZKEBX84LzNFzYgK7mxelpuLAACehqXmb+AlsowFG8Hna8vxa1oIeU+lWNfF1UgiioBnGQi/gz8oRdaMAW6O+4hX6ZXgn9bbbQI/jz9JRd2IDjSj3ASNlFJYiCahAHSZAGWVALCo0eGj00emj00Oih0UOjh0YPjR4afWv4eqhFJchfOZdjBTLQ3zrkqEADjiLzh+uroRZ6hk4Jf0UuJGAFMtDVmqMCXa07DjXzK/PsHetFxVdDbSxAt1W/SM/phQx8qM1YI6UXWVAL6ptGOi/yiNVxXKn5bXs2jw6k+NqmjT3Qs3mhX6nftmfzwgpkoADHpfr9eTKbF4snc5v/2gM9mZtf40jb9Y+Pv+9++37krcf0I28nlSB/d6pjBTJQgAo0YAP2QH+DLixAqBnUDGoGNU/d5hfpqbuwAXugv24XFmDdZeCH306SoFFCruSH305qQR7c66W/YhcWIAErkIHjVrrXIn/FLvRb8afpr9iFfSPt866F9nnXQvu8a6F93rXQPu9aaJ93LbTPuxba510L7fOuhfZ510IlNEpolNAooVFCo4RGCY0SGiU0SmhQaHiujq64+GqjjRU4Cs0fiq822qhAA45CG5158dVGMvrqss6C9WC+y/tCArqaODJQgAo0YAP2QM/uhQVIQKgx1Bhq84TYy9GADdgD5wmxEwuQgBXIQAFCTaDmzWuv7DSb146zfT2xAAlYgQwUoAIN6Grm2APdJRZWoEfwbBiZr/N6R+Zv7IH+1l44Xnfzcft7e2EFMlCACjRgA/ZAf38vhFqHWodah1qHWoeav8Yvr9X+Hl/oaqNW+wqijQXoauJYgQwUoAIN2IA9sLiaOhYgASvQ1ZqjABVowAYcamNsQXwF0cYCJGAFMtDb9+aoQAM2oKu5cL2ABTjURk9dfAWRkksMf9goQAUasAF74PCHjQVIQKgx1BhqDDWGGkONoSZQE6gJ1ARqAjWBmkBNoCZQE6gp1BRqCjWFmkJNoaZQU6gp1BRqBjWDmkHNoGZQM6gZ1AxqBjWDWoNag1qDWoNag1qDWoNag1qDWoNah1qHWodah1qHWodah1qHWoeae8kY6xFfQbTR1cSRgBXIQFdrjgo0YAP2QPeShQVIQFfrjgzU/Q7wZUMbG9D7lcM9fdnQRu9ZVkcCVqB3Lv3m3UAWKnDckA9x+E5vG3ugG8jCAiRgBTJQgAqE2rAKb7D7UqRFFDSa8/P3OEiCPKI6GrABe6CbxMIC9Ov3knWTWMjAIeYPbHjEIgtqQX3T8IdFJYiCahAHhYaGhoaGhoaGhoWGhYaFhoWGhYaFhoWG20Gd2IA9cI7hecWcg3gTvRM3f6ECGSi7O+b7tm30UZLLsQGHmo+G+VqljQU4WuWTahAHSZAG2SJfj6Rjgl987ZH6+JqvPVIfX/O1RxsVaEC/UnXsgZ7cCwuQgEPNR8N88dFGASrQgA041HzUyndh21iABHQ1cWSgAF3NHIeaj3j4aqWNPdDzfGEBErACGShABUKtQq1CjaHGUGOoMdQYagw1hhpDjaHGUBOoCdQEagI1gZpATaAmUBOoCdQUago1hZpCTaGmUFOoKdQUago1g5pBzaBmUDOoGdQMagY1g5pBrUGtQa1BrUGtQa1BrUHNncFHqn1Dto2u5snrzrCwAAnoal7XvaGwUIAKNGAD9o2+IdtGV1NHArqEOQpQgQZ0iebYA91AFhYgbY/y1VQbGShABRqwAXugG8jCugbVfAXVIgkaQ25+4z46OKkF+fWPV4BOk5hYgASsQAYOJXLSIAvyodzLsQe6Qyx8SPkbxtdZLapBHCRBGmRBLahvGsawKDQkNCQ0JDQkNCQ0JDQkNCQ0NDQ0NNwMZtm7GSxkoA9++6NzM1jow9/+UNwMFvZANwPzyupmsJCAFchAASrQgK7mFXtOGzjOeYOJBehq/tzn1MFEBgpQgUOt+fN2M1jYA4cZLCpBFFSDOEiCNMiCWlBf5Iu6FpUgCqpBHCRBGmRBLchvZDxbX9elY7WP+MKujQSsQAYKUIEGbMAeSFAjqBHUCGreivAmti8E26hAAzZgD3SD8PFKXwi2kYAVyEABKtCADdgDGWoMNYYaQ42hxlBjqDHUGGoMNYGaQE2gJlATqHl7wcdtfcmX9/d8e7VF/kfmyEABKtCADeizN1617AIWIAGHpflwm++utlGAPlHkV2sGbEBX8+rSLmABEtDVvGI0j6uOBmzAHtg9bnP0uF5QI9eteDJ1f5v59XZ/nfmVdX+fuXBXoAEbcKiN5TniC9Q2FiABXc0cXaI7+pvscvRXWXEcEj4E4avSbHwLIb552sYCJGAFMlCArubXUAzoEn45dAELcEhUv0hvASxkoAAVaMAG7IE+TbiwAKFWoVZdzYvE2wELFWjABuyB7Gp+x94UWEjACnS15ihABQ4174M2pHlDmjekeUOaN6R5Q5o3pLkvcduoQANCTaCmUFOoKdQUago1hZpCTaGmUFOoGdQMagY1g5pBzaBmUDOoGdQMag1qDWoNag1qDWoNag1qDWoNag1qHWodah1q7ho+uOC7q20ctYTnLyjQgA046qQvy/GVeBsLkIAVyEABKtDV1LEB/bU6arUvvTOeWIEMFKDHbY4GbMAeONcVsGMBErACGShABVqg+4MvJvJleRsJWIEMFKB3P0aa+rI883VFvi7PfF2RL8zbyMARwVcF+dq8jd6r8SvzXsDCHuj9AB8z8cV5GwlYgQwUoAJdzR+h9wcW9kDvESwsQAL6GiR/QqpRDmpAlI6//X2Mx9fubSxAAlag34VL+Nt/oQINONS8y+7r/Bb623/hUPMeuS/121iBQ80XOflqv40KdDV/8t4m8EU2vtrPvEfuq/3Mu+G+2m8jAT2u35vn8UIDNqDHfdyb+go+r1zqK/g2MlCAFujLfxYWIAH9EZIjAwWoQAM2YA/0NF1YgF6o3VGACjTguPnRm1ZfvLfQ03RhAe6lgjqX9C1koAAVaMAG7IG+eGDhXlqqc0nfwnEXNlGBBmxAvwsvB0/ehQVIwApkoC8EnahAAzZgD/RlAgsLkIAVyEC/i+rYgD3Qk3eh3wU7ErACGeirhv0Z++KBhQZswB7oI/wLC5CA/izEUYEGbEC/Cx3oabqwAAlYgQwUoAJdzSuMJ+/CvtEX/G10teZIwApkoJeZOCrQgA3YA8sFLEACVqDHLY5+F92xAXugN93HKIH64j4b0ybqi/s2ViADBahAAzagj0aNCuObmlnzi/Q8Hivz1Rfz2Vh9pr6Yb6E3vBcWoEfwUp+jcBMZKEAFGrABe1zDXCE/sQAJWIEMxF14Hi+0wDkA509+jsB5qfvrdmEFMnDcRffH4i/hhQYcd9H9GXseT/Q8XliABKxABrqaX6+/hBca0NX8afpLeKK/hBcWIAErkIGu5vXBs3uhAV3Na4ln90TP7oUFSMAKZKCred3x7F5oQFfzJzTH4kb50hyMK44+GkeOBKxABvqIHDv6kJw4+picOjZgDywX0NWao6t1R19h6lc23ugbBahAvzdzbMAe6Dm/0L8fcjVveC+sQAYKUIEGbMAeWH1e3UuyViADBeh34SU53ugbG7AHzjn8iQVIwApkoMetjg3YA8Xj+iOUAiRgBTLQ4/rj9sn44k/TZ+MXErACGSjr60udW4ctNGAD9sD5TebEAiRgBXr5+pM3AzZgD2x+F/4Imz8hr4hNgQYcEchr38jYhT5ovnDcsb+SfIFeIy9qHyMnLz4fJJ/l4KPkCxuwb/QFehsL0OOKowAVaMC2vj/WuZnXRP/meWEBErACGShABY64Y9WNzm27FhbgqA9jKE190d1Gv4vuKEAFjrsYg1vqi+429sDRrm7e7vNFdxsJWIEMHGrVS8ezcKEBG7AHehYuLEACelwvkrnZh9+FZ1b1O/bMWliBfmVeUL4aZqFf2YxgwAYcV8ZeDp6FCwuQgBXIQAEOtTFQo75kbmMD9kBfHLOwACnu2NfCsBe1Z+FCAzagxx0p4ovjNhYgAUed9Bya22stFKACDdiAPdC/w17opTORgQJUoN+FP27P2IV9oy+D2zgywJ12bqS1sAIZKEAFGrAFzt3zvZHoq8KCObEk1sSWuCXu4FHRg0vipMtJl5MuJ12Z/96dJbEmtsQtcQfrlbgkpsQ1cdLVpKtJV5OuJl1NupZ0Lela0rWka0nXkq4lXUu6lnQt6bak25JuS7ot6bak25JuS7ot6bak25JuT7o96fak25NuT7o96fak25NuT7odur6MLLgkpsQ1MSeWxJrYErfESbck3ZJ0S9ItSbck3ZJ0R3517/L6gqyNDdgD+QIWIAErkIEChBpDjaHGUBOoCdQEagI1gZpAzb/y8q6/L8ja2IA9cH79NbEACViBDBQg1BRqCjWFmkHNoGZQM6gZ1AxqBjWDmkHNoNag1qDWoNag1qDWoNag1qDWoNag1qHWodah1qHWodah1qHWodah1kPNF2RtLEACViADBahAAzYg1ArUCtQK1ArUCtQK1ArUCtQK1ArUCGoENYIaQY2gRlAjqBHUCGoEtQq1CrUKtQq1CrUKtQq1CrUKtQo1hhpDjaHGUGOoMdQYagw1hhpDTaAmUBOoCdQEagI1eInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKFlyi8ROElCi9ReInCSxReovAShZcovEThJQovUXiJwksUXqLwEoWXKLxE4SUKL1F4icJLFF6i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CUGLzF4icFLDF5i8BKDlxi8xOAlBi8xeInBSwxeYvASg5cYvMTgJQYvMXiJwUsMXmLwEoOXGLzE4CU2vaQ7DrWxz5b6Eq+NCjRgA/ZA95KFBUjACoSaQE2gJlATqAnUFGoKNfcSH7b3tWEbGShABRrQ1cSxB7qXLHQ1LzP3koUVyEABKtCAQ80HsX1tWPfhal8btrEACViBDBSgAg3YgFDrUOtQ61DrUOtQ61DrUOtQ61DroeYrxjYWIAErkIECVKABGxBqBWoFagVqBWoFagVqBWoFagVqBWoENYIaQY2gRlAjqBHUCGoENYJahVqFWoVahVqFWoVahVqFWoVahRpDjaHGUGOoMdQYagw1hhpDjaEmUBOoCdQEagI1gZpATaAmUBOoKdQUago1hZpCTaGmUFOoKdQUagY1g5pBzaBmUDOoGdQMagY1eEmDlzR4SYOXNHhJg5c0eEmDlzR4SYOXNHhJg5c0eEmDlzR4SYOXNHhJg5c0eEmDlzR4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJh5d0eEmHl3R4SYeXdHhJn17CjgVIwApkoABdzRwN2Hx7keLcwT52ubkkpsQ1MSeWxJrYnC/nlrhvNt+vLrgkpsQ18dStzpJYE1vilriDy5V46qozJa6JXXfMC5uvjgvWxK47pqfNF8gFd/A8/HNM/pqvkQumxP5o569P2eYsiTWxJW6JO3htvzO5JHZZci2fCtnMiSWxJrbELXEH+1TIRX5bPhWymRJPXb8e5sSS2HXHVgB2zf14FrfEHTy35FlcElPimth1qz/quS/PYk1siVviDtYrcUk8df1etCbmxJJYE1vilriD7UpcEiddS7o+1XKxp5RPtWzWxJa4Je5gn2rZXBK7UU2sQAYKUIEGbMAeOBs9EwsQah1qHWodah1qHWodaj3UynUBC5CAFchAASrQgA0ItQK1ArUCtQK1ArUCtQK1ArUCtQI1ghpBjaBGUCOoEdQIagQ1ghpBrUKtQq1CrUKtQq1CrUKtQq1CrUKNocZQY6gx1BhqDDWGGkONocZQE6gJ1ARqAjWBmkBNoCZQE6gJ1BRqCjWFmkJNoaZQU6gp1BRqCjWDmkHNoGZQM6gZ1AxqBjWDmkGtQa1BDV5S4CUFXlLgJQVeUuAlBV5S4CUFXlLgJQVeUuAlBV5S4CUFXlLgJQVeUuAlBC8heAnBS2i2csZKDaPZylksiac9q7MlbomnPQ+bp9nKWVwS+2thrHE3mq2cxZzYdcWvbbZyFlti1x3L/I1mK2fybOUsdt3xtYHRbOUsroldd3zjYjSbOYs1MZo5lJo5lJo5a5dBb3qsbQYXU+IaTQ9azZzJklij6UGrmTO5JZ732wfPZs7ikth11XVnM2cxJ3Zd9ec7mzmLLbHrql/bbOZMns2cxT4WOtFHPb3U5ojuxB44R3QnFiABK5CBAlQg1BRqCjWDmkHNoGZQM6gZ1AxqBjWDmkGtQa1BrUGtQa1BrUGtQa1BrUGtQa1DrUOtQ61DrUOtQ61DrUOtQ62HWr0uYAESsAIZKEAFGrABoVagVqBWoFagVqBWoFagVqBWoFagRlAjqBHUCGoENYIaQY2gRlAjqFWoVahVqFWoVahVqFWoVahVqFWoMdQYagw1hhpDjaHGUGOoMdQYagI1gZpAbfZ8xvdoVmfPZ3x9ZXX2fBZrYkvcEnfw7PksLokpcU2cdDXpatLVpDt7PuPLL6uz5zN59nwWl8SUuCaeuuYsiRXc9hSU1WkhEwlYgQwUoEcbH3CZL6UMbonnXQyDr3P4ZXFJPO/Cn9ocflnMiSWxJrbELXEP5jn8srgk3tNtxlcFMnCKirMmtsQtcQfPVsnikpgSz5ttzpxYEmtiS9wSd/BslSwu4NlqML+v2WpYTIn34J5xDMoax6CscQzKGsegrHEMyhrHoKxxDMoax6CscQzKGjPUGGoMNYYaQ42hxlATqAnUBGoCNYGaQE2gJlATqAnanHO16eaSGG3Oudp0Myf2pzu+MbO52nSzJW6JO3gaweKSmBLPNudkTiyJp25xtsQtcQfPIZDFJTElrold1414rjbdrIktcUvcwdMyFpfElHjqetlOy1gsiTWxJW6Je/Bcbbq5JJ5te3KuiTnxLOfirIkt8dRtzh08XWNxSUyJa2JOLInRp5DVl5ncEk/dkfkyXWNxSUyJa2JOLIk1set67sjsyyzu4OlKi0tiSlwTc2JJ7Lrd72v2TcbXbiazb7K4JubEklgTW+KWuIMFQ84iJTElnrrqzIklsSa2xC1xB0//WTzv18t8+s/impgTS2JNbIlb4g52//HN7M0X1AZT4pqYnf0Zuf9s1sSWuCXu4HYlLokpMYb2pXFiSTx1q7Mlbok7uF+JS2JKXBPP+/Xn0iWxJrbELXEP9tW2wSUxJZ7xRx3z9bIP7s4lMSWuiTmxJNbElrglnlMfo/4rXYlLYtcd31+aL54N5sSSWBNb4pa4g903yvjSxXwRbTAlrok5sSTWxJa4JZ66fl98JS6JKfHU9WfEnFgSa2JL3BJ3sFyJS+I55uN1QGpiTjx1zVkTW+KWuIP1SlwSU2K/X/Ln4j6zWRJrYkvcEnfw9JnFJfGMT86SWBNb4pa4g6efkD/f6SeL/b7GF1/mC2yDp64/3yaJp64/i+kni6eul8/0k8nTT+ZzmX6yeOp6fk0/Wey61e99+sli1x07dZhOP1nsutXvcfqJs00/GTt4mU0/Wey6Pj3oi26Dp644S+Kpq86WeOqacwdPX/LpOJu+tHjqduea2HXHx4Jm05fYr3/6ko8P2/Ql9uucvrS4g92XNpfElLgm5sSSWBMnXUq6lHRr0q1JtybdmnRr0q1JtybdmnRr0q1Jl5MuJ11Oupx0Oely0uWkO9s/PsZrs/2zGGPCNn2JvW5MX1pMiWtiTiyJNbElnvfrdWb60uTpS4tLYkpcE3NiSayJp67f1/SlxR08fWlxSUyJa2JOLInnQIzX89n/WtwSu67312z61eKSmBLXxJxYEmtiv1/xnJp+tbiDp18tLokpcU3MiSXx1HVPmH61eOp6+U+/8nrVZv/L5wXa7H8tpsQ1MSeWxJrYErfEHVySbkm606/8ubTpV4s5sSTWxJa4Je7g6VeLS+KpS841MSeWxJrYwNNnfDC0TZ9ZrIktcUvcwdNnfACxTZ9ZPH+/OXfw9IfF/vs+LNimPyyuiTmxJNbElrgl7uDpD4uT7vQHH31r0x8Wc2JJrIktcUvcwdMfFk9dv/fpD+ZlOP1hMSeWxJrYErfEHTz9YfGst34Nc3xmcU08dT3Xpj8s1sSWuCXu4OkPi0tiv9/mZT79YTEnlsSa2BK3xD24z/bM4jn6OXR7uRKXxDEQiFW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW1hlW11musl7ReO5ivxFi32JkS18Tz6VZnSayJLXFL3MHTNRaXxFN3ck3MiacuO2tiS9wSd/B0jcUlMSWetdmcObEk1sSWuCXu4Okai0viqduca2JOLIk1sSVuiTt4usZirA/tjRLXxFPXM2q6xmJNbIlb4g6errG4JPb7nXVyusZiTiyJNbElbon75jbX4W6OUd221uEurok5sSTWxJa4Je7g6UrFdacrLabErjvWz7a9DneyJJ73W50tcUs871cGz1bF4pJ4lrM618SceJZzd9bElrgl7uDZC1pcElPimnjo0vCQNhfibtbElrgl7uC5J8nikpgSz3L2cpijwIsl8dT1MmdL3BJ3sFyJS2JKXBPP+2VnSayJLXFL3MFzz5PFJTElnqPAk2MUu62FtZPnrNLikpgS18ScWBJr4ljJ1NbC2sUd3GIUu62FtYspcU3MiSWxJrbEMYrdrtbBc1ZpcUlMiWtiTiyJNfEcLfXnu0Z1J/fgcl2JYxS7lYsS18ScWBJrYkvcEndwiRVjrZSSmBLHKHYra3R4siTWxJa4Je5guhLHKHYrRIlrYk4siTWxJW6JO3j6zBgZb6XGKHYrtSXuYL4Sl8SUuCbmxJJ4rqgTZ0vcEscoditrVHdySUyJa2JOLIk1cYxityItcQfrlbgkpsQ1MSeWxFPX72u2cxa3xB1sMYrdipXElLgm5sSSWBNb4pZ4zlJ4HZg+s7gkjlHsVuboyWJOLIk1sSVuiTu4xyh2K70kpsQ1MSeWxJrYEsfoeaO5J5LXf5p7Ii2uiTmxJNbE871jzi3xfO+McpsrbjdP3e5MiV3X6+RccbvZdb09M1fcbnZdbwvNFbebXdfr21xxu9l1x16Tba643Tx1xZkTT12/R9LEU9fvkVriqev3WK/EU9fvce6xtth157OY7ZnFruseO1fcbnZd8nuc7ZnFrkt+j7M9s9h13UPmilsiv/65xxr5Nc891rxuzxW3mzWxJW6JO3i2ZxaXxJS4Jk66knQl6UrSlaQrSVeTriZdTbqadDXpatLVpKtJV5OuJl1LupZ0Lela0p3tn+r1bbZ/Fmviqet1Y+7htriD5x5ui0tiSlwTc2K/3+p1Zu7httgSt8QdPPdwW1wSU+Ka2HWr18O5h9tiTWyJW+IeXOcebotLYko8P+BSZ04siacuO1vilriDp18tLokpcU0879ecJbEmtsQtcQdPv1pcElNi1x0zXq1Ov1rsumP2q9XpV+zlQ/GhXKvUEndwvRKXxJS4JubEklgTJ92adKdfjdmaVqdfLS6JKXFNzIklsSa2xC3x1PX6MP1qcUlMiWtiBk+fGTMibS7j3VwTc2JJrIn9OsWf3fSZyXOPR/HnOPd4XGyJ5+/79Ux/mDz9YXFJTIlrYk4siTWxJU660x/G7EubC3U3l8SUuCbmxJJYE1ti11W/9+kP4+iSNhfqbi6JKXFNzIklsSa2xPMLoskdvL4gmjx1qzMlrok5sSTWxJa4JZ73O8p8rtXdXBJT4pqYE0tiTWzg2T4Zsy9t7QG7mBNLYk1siVviDp75vrgkTrqcdDnpctLlpMtJl5MuJ11JupJ0JenOfB/L6tvaY3axJNbElrgl7uDZPllcEs9Vv/58tSbmxK5rXsembyy2xC1xB8/2yeKSmBL7/ZprzT1mF0tiTWyJW+IOnv6zuCSeuuxcE3NiSayJLXFL3MHTfxbP1dVen+f4zOKaeOqKsyTWxJa4Je7Ba4/ZxSXxvN/mXBNzYkmsiS1xS9zBs32yeOp2Z48/VlS3vZfsZI8/Zr/aXN27uSX2+GPepM3VvZtLYkpcE3NiSayJLXFLnHRr0q1JtybdmnRr0q1JtybdmnRr0q1Jl5MuJ11OumtvanbmxJJYE1viBp7fIY1qOBeCVu+izYWgmyWxOpuzJW6Je/BcCLq5JKbENTEnlsSa2BJDdy4Qrd7FmQtBq3c15uLP/e9+bWMRWpuLP+tYeNbm4s/NlLgm5sSSWBP7tXm3Yy7+3NzBdepW56nLzlNXnKeuOjPupUridI9eZaoPRcyFnZspcU3MiSWxJrbELXEHy9T1+5Kp6/cllLgm5sRT1+9dNLElbok7WK/EJTElnvG9PHXG8fK0+bdeZ2z+rdcNo8Q1MSc2cJtxvPxbSTzrttexNp+Xl1WfueBl1UtiSjzrsJfPysHJklgTz1zw+105OLnH79jKwcklMSWuUT5z8eRmSayJe5TDXCQ5730uktxM4GmNY3ujNhcKUve/nda42BK3xB08rdGnLOaCwOrTYnNB4GZJrIktcUvcwbM++xTHXBC4mRLXxJxYEmviqUvOLXEHz/q8uCSmxDUxJ55a/hzVErfEHTzr/+KSmBLXxJxYEiddS7o2ddm5g2e+LC6JKXFNnJ5pS8+0pWfa0jOduTOOaGpzwV71IeG5YG9zS9yD54K96kPFc8HeZkpcE3NiSayJLXFL3MEl6ZakW5JuSbol6c53nN/vXKRXfUh7LsbbXHCP8722uCbmxPNeurMmtsTTSy/nDp7vtcVJtybdmnRr0p3vtcWa2BK3xOnZzXff4qTLSWs2f7pf22z+LO7g2S1b7M2usb9Xm4v9NtfEnHh6GjlrYkvcEnfw7JYtLokpcU3MiZOuJl1Nupp0Nela0rWkO7tfvhxjLt4jn36fC/bIp8fngr3NJTElrok5sSSe1+zPaHatFrfEHTy7VvN65tDOYkpcE3NiSayJ0z3OrpXz3PaSJ/ZA33DBx/DmtpcLCViBYxGb9/HmAr2FCjRgA/ZAX6C3sAAJWIFQ8/V343PdNtffjRXiba6/Gwu421x/t5CAFchAASrQgA3YAxlqDDWGGkONocZQY6gx1BhqDDWBmkDNP6D2Ac65q+VCBlqg76zig55zT8qFDBSgAg3YgD3Qd1ZZWIAuQY4MFKACDdiAPdD3QlhYgAR0ierowbwq+24pC3ug75YiXn99t5SFBKxABgpQgQZswL6w+zq2jbKSrPsKtY0jwlgZ3K+5P/7EvpKsX5GQ/So7RfpVCFiBDBSgAg3YgD0wErJfBDXCpRMu3RfELmzAHjgTcmIBErACGQi1CrUKtQq1CjWGGkONoTYPzZiIm59nYnj5SomiFgJWIAMFqEADJgmUr6J8FeWreJqKp6l4moqn6ak3vK/7wjD3vu7rwtwUui8L21iBDBSgAg3YgD2wXUCoNag1qDWoNag1qDWoNag1qHWodah1qPVteH3usrhQgG3j3CNxGFOfeyQuFKACDdiAPbBcwAIk4Da8PjdGXKhAAzZgD6QLWIAErEBZ3tfnvofD5frc93CiZ+HCcKO57+HCCmSgABVowAYMw5v7Hi6ExOynjinVPpdJbZbE+XcscUvcwbNPubgkpsQ1cdLVpKtJV5OuJl1NupZ0Lela0rWka0nXkq4lXUu6lnQt6bak25JuS7ot6bak25JuS7ot6bak25JuT7o96fak25NuT7o96fak25NuT7odunRdiUtiSlwTc2JJrIktcUucdEvSLUm3JN2SdEvSLUm3JN2SdEvSLUmXki4lXUq6lHQp6VLSpaRLSZeSLiXdmnRr0q1JtybdmnRr0q1JtybdmnRr0uWky0mXky4nXU66nHSTt8zlU5uTLiddSbqSdCXpStJNfkXJryj5FSW/ouRXlPyKkl9R8itKfkXJryj5FSW/ouRXlPyKkl9R8itKfkXJryj5FSW/ouRXlPyKkl9R8itKfkXJryj5FSW/ouRXlPyKkl9R8itKfkXJryj5FSW/ouRXlPyKkl9R8itKfkXJryj5FSW/ouRXlPyqJr+qya9q8qua/Komv6rJr2ryq5r8qia/qsmv6vKr7lwSU+KamBNLYk1siVviDqakS0mXki4lXUq6lHQp6VLSpaRLSXf6zFgO0ufmg966n5sPTpQLWIAErEAGClCBBoSaQE2hplBTqCnUFGoKNYXaPNDO0aJTUOd5deIY/Y5qCjRgA0Yvcm4nuLAAIdEqkIECVKABGzB6Ob76aPZRfPHR7KP42qPZePelRxsN2IDRE/BlRxsLkIAVyEABKtCADQi1ArUCtQK1ArUCtQK1ArWyh186lwbsgUTA6HcwNWD0O7hewAIkYAUyUIAKjH7H3BRwIl/AAiRgBTJQgAo0YN99lLnnn/dG5p5/CxkY/Y65599CAzZg9Dt88c/GAiRgBTIQEhaVli0qLaOzzOgsMzrLjM4yo7PM6CwzOsuMzjKjs8zoLDM6y4zOMqOzzOgsMzrLjM4yo7PM6Cxzh1qHGhKSkZDcUWnRheYeldbX22yMSivoLAs6y4LOsqCzLOgs+3Z5GxkoQAVGpRV0lgWdZUFnWdBZFnSWfenMRgEq0IBRaaVGpZVagQyMSivoLAs6y4LOsqCzLOgsz5OkFxKwAhkICX9JjCWifZ6VvJCBAlSgARuwB84h14kFCDWvv2OXkD7PSl4oQAUasAF74ByTnViABIRah1oPtXnS8diopM+TjsdK1j5POl4oQAUacFzZWIja55nGY4ePPs80XliBDBSgAg3occmxB3qlXViABKxABrpadVSgARuwB/qrY2EBEtAl2FGACjRgA/ZAr8oLC5CAFQg1hprX6rH/RZ8HGS9swB7oLbyFBYiHJXhYgocleFgSBjLPKR5Lcvs8p3ghASvQg3mV8wbcQgUasAF7oA/aLixAAlYg1AxqBjWDmkHNoOZ5rJ4XnscLPYJX+3nKsFf7ecrwxAIkYI0km1k4UYAKNGAD9o3zlOGFBUjACmSgABVowL7vbR0tXBwrkPcNrUOEJyrQgD4lQ449cB4iPNELqjoSsAKhRlAjqBHU5iHCE+OxrEOEJxYgASsQavPk4Ov//P3fPf7of//dSLQ2WjcjzSbYhrahOzz+hMafFP9PffxnHf/peT+WSHjWD/CcdygbaEPdwBtkg26wDTsy78iyI8uO7Lk9FuV5ZjvwBtmgG2xD29AXeLI7lA07su7IuiPrjqw7su7IuiPrjmw7su3ItiPbjmw7su3Insy+k6VtaBv6Ak/i+U3vBtpQN/AG2bAjtx257chtR+47sif8WOfo6e5QN/AG2aAbPM7DveeBVGMt4pxrmcRBEqRBFtSC+iZP3UklKDRKaJTQKKFRQqOERgmNEhoUGhQansRjDeCcYpnEQRKkmzw9J/lf2CD/izZIgjTIglpQ3+RJNakEUVANCg0ODQ4NDg0ODQ4NCQ0JDQkNCQ0JDQkNCQ0JDQkNCQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQsNCw0LDQsNCw0LDQsNCw0LDQuNFhotNFpotNBoodFCo4VGC40WGi00emj00Oih0UPDU3GsvJ0nQE3SIAtqQX3RPPxpUgmioBrEQRKkQRbUgkKjhEYJjRIaM/MemUJ0BZUgCqpBfi1lkAW1oL7Jc3CS69ZBFFSDPB4PkiANsqAW1Dd5Xk4qQRRUg1xDBsnyA5p56WRBLahvmnnpVIIoqAZxUGhIaEhoSGhIaGhoaGhoaGhoaGhoaGhoaGhoaGhoWGhYaFhoWGhYaFhoWGhYaFhoWGi00Gih0SKyZx45WZA/1T6ob/LMmzSijC8n5slJk0a88VXDPDdp0rjS8XXDPDVp0tAYXznMM5MmDY3xtcM8MWlSCXING1SDOEiCXKMNsqAW1Dd55k0qQRRUgzjIB3+uQRrkA01lUAvqm+baIBpUgiioBnGQBGmQBbWgvqmGRg2NGho1NGpo1NCooVFDo4ZGDQ0ODQ4NDg0ODQ4NDg0ODQ4NDg0OjTkFUQeVRYwJIsZcDmMqhzHzzJh4Zsw7M6adGbPOjElnxpwzY8qZMePMmHBmzDczppsZs82MyWbGXDNjqpkx08yYaGbMMzOmmRmzzIxJZsYcM2OKmTHDzJhgZswvM6aXGbPLjMllxtwyY2qZMbPMmFhmzCszppUZs8qMSWXGnDJjSpkxo8yYUGbMJzOmkxmzyYzJZMZcMmMqmTGTzJhIZswjM6aRGbPIjElkxhwyYwqZMYPMmEBmzB8zpo8Zs8eMyWPG3DFj6pgxc8yYOGbMGzOmjRmzxoxJY8acMWPKmDFjzJgwZswXM6aLGbPFjMlixlwxY6qYMVPMmChmzBMzpokZs8SMSWLGHDFjipgxQ8yYIBakv2B6WDA7LJgcFswNC6aGBTPDgolhgZcIvETgJQIvEXiJwEsEXiLwEoGXCLxE4CUCLxF4icBLBF4i8BKBlwi8ROAlAi8ReInASwReIvASgZcIvETgJQIvEXiJwEsEXiLwEoGXCLxE4CUCLxF4icBLBF4i8BKBlwi8ROAlAi8ReInASwReIvASgZcIvETgJQIvEXiJwEsEXiLwEoGXCLxE4CUCLxF4icBLBF4i8BKBlwi8ROAlYrFYQEyBBmzAWCgg7QIWIAErkIFQa1BrUGtQa1DrUOtQ61DrUOuhtj4a5jFMx2OQbTzoNgYyx2OewBtkg26wDWMET9cwl8N4sBPKAJrDXBPqBt4gG3SDbWgb+gK7NuzI5pHrHOaawBtkg26wDW1DX9CuDR6Z5zDXBI8sc5hrgkfWOczVxmB3sw1tQ1/Qrw1lA22oG3iDbNiR+47cd+S+I/umkYtKEAV59LYGwxZJkAZZUAvqm8oVVIIoKDRKaJTQKKFRQqOERgmN4eBtjBz7YFgbQ+U+GLZoaIwRbx8MWzQ0xiC3D4a1sWjFt39s5gNpLahvqq7hQ2WuMUqoUpBrtDV8tsg1+ho+a+MEPR8+a2OnBR8+W9Q3DbduY48FHz5rYzcBHz5rYz8AHz5bNDTGQZk+fLZIg1xD1/DZor5JXMPWYE7rtgZzJnllm1SCxhX0PZiziIMkSIPGFYwPgX0wZ1Ff5IM5i0oQBdUgDpIgDbKgFhQaJTRKaJTQKKHhXcXxieoczLnKHsIZn+/OIZxJEqRBFtSC+ibvDF51D+tcMaxzxbDOFcM6ruudwUkaZEEtqG+acxhlD+tMoiCPwnvgZlIL6pvmfIXugZtJFFTj9zhIgkLDB27mX7SgvskHbvz3fOBmEgXV+D0OkqDQ0LgPjfvQ0LC4D4v7sNCwuA+L+7DQ8IGbSXEfFhoWZdXiPlpotCirFvfRQqNFWbW4jxYaLcqqxX300OhRVj3uw4d1xkfGc1hnkgSFRo+y8mGd8cnxHNa52h7WudrjzS3jze2G1/xXFrjdOZQNtMF9aPyt+kybG09//KfFf46PNN2yHTw/hzN5eo5b9Owck3MNf3LtX6DHv3e/Kp/2G2mqG2xD29AX+AU7jAseK3z8gh3qBt4gG3SDbRiRx9y62/IAd2WHsoE21A28QTZ45LqmKh3aBo/Mc6ZwQtlAG+oG3iAbdIE3dBzahh3ZdmTbkW1H9obOWIDjDR0H2eCRdTV0HNqGvsAbOg4eeTzEYbaPpzX+e6w78zevQ93AG2SDP9FRh8qvZ3gff/S3f/3Hf/j3f/7Xf/kv//5v//RP4+/3P/zPv/tP//l//93/+Id/+6d/+fe/+0//8r/+9re//7v/5x/+9r/8l/7n//iHf/Gf//4P//b4fx8P+5/+5b89fj4C/t///Ld/GvR//h5/fT3/08cQKK+/foyBagR4tHFuh6i2L+AxlFdSCP4jBD0P4QfAeITHWzMCPC7ojwD1eYB27btotT8NwM8D+O5EHqD31wLovoJHY5SeRjiVo7R4FFra03K05yHI90qcBfkYpkWIan+EaKenKfsiuiCA3a9Rihql1Z7eRjnEeHRi91U8OrG4D/2zMMfM/dMqxaNZNB/Io+P+NASdKtWuEw87xn1Iux9B9m08GtzPIxyqFfnZvfOJPnoqEYPpzxByuIjR+p5Vu9Dzi9DDRdS+QzxaaqlyK732POz58zjVCuP9QB6jEfw0RD/ciZS4k8fox7MQdL37TOlQFOTnPq5nKuXZM6VDxfI97pZrPw3wQ1kWlGV7WhDvO94pRPUFzMtt+uHVoaeKZXEdj6cbMR49rD9jHHxTr/3+UdIUQW7fyWNaaefpY87nuXlTP70FJVKkUTLf0v98Dx6e62N8ISrX4+8KsuQxovBnlPJ+mVZ6t0yP9/KQ24U6dsCX5/dyclA/1W5lW+vpSv7M2Hqw0EePLGIYJfP6xb3UrnEvnLL+272c3u8qO8ijM4nyeDjKnzFOL3g/TXfm3OPNmGJ8uY5+bPLtSvYYQK3PY5yuw/eonjEefcunMfhQTx/TPfs6HhM7/fl1HJ+MXpF2j6erT58M11OpRg15zK0fYpxqqvYStaxez2OcaqqfqDBjPEZaXovBzPG6788dhE+Oyrs4VNEGHHXljwjt1CJv8Xop/XmIQzXV0uBBcj2NIafqYX5657wQK6myf4tyqKiPKbT9WB5TaKl6/OlBcvJToyhS4/YsxLE8SCzKoz1/LHKopGVsGxpvKa38/MmcqrpFK+qBz9PlmLi1RqE+Bqv1ecKInV6YPpKxXpjNrifmLu0vfT3wFa30x5C5PH/V6fWXvnJZo4o8uD9/TempdVrRn8+9yEdn5s8Y9d0yPV4Fl7BC5uvpVZyaZOTHXq/Gg5WnTTLVU4c4ek/V0ujEo3lzOwbX6Ity/aOmf4nR3m/UaX+7oXws0ei6jHfV0xI9xqCKGIenYm8POdnbY0729qDTuSRaZMlj3OV5SZw6ULXHm5bzi+XLm8Xs1CCkqOO12fMYx45cvBMeqXaIcSoP35V59e9Zn8Y4lqly+Ib+cS+/qKEaZfqYpdGnMdrbNbS9XUPbX1tDLV4oj7mf5/neTuNPl2HApOaO8Z/O1Q411DRuxfKAx29ijB3cd4Fq7sJ9jdHfd+F+/aUu3Gt0JLvpa3W8t+gEXtSexuj13Tre+d063uWvrOOP3+3R+av0vCTs2A2NXmj9o47b/Rj+hf4qzsbPY5zqp1YNG9bacol8HcA/jZLGnFBLL+j6pRF5HqG8MEKZRr719oQK1yiOx3tNDzMR9ThBFkOt5Y/pDP1FED8f8j+qIF+DyPszGpe+PaVxDHFvTuNq709qXP3tWY1TDbs9rXH7qZzmNY6DRzHgUunwXvETZd8zwlLeftufQ9ybFDgXh4QVVj0Wx+l9b1FBHshPp0LPQVrMZdofCfMtSP/ATOT1/lTk2/NW5TjrdDNvqb6dt6e5lvvTkf39vD1XD4061vqLdWycXByJmy7kWxA69e2lRt5pemd/nbc/512P1QP1MbD+PO/OI0j3avtp+ulmbT+GuFfba32/tp8mn27W9uPc093afvupvPqW6jFy85jt1EP1aB+oHv396tHfX5hR3q8eTG9Xj9PE0/3q0f7q6hHu8age7bWGMl8lxjkvPtSx09zT3dVD/IF6yu/XU36/nsoH6qm8X0/lE/WUP1BPj7Xj/X6l0e7NsVl/3q88zTspxQiMcj289k8TT/3CHGmq6N/e+ufyIJQH2Ytlem9llp7qKWNI6jEB/TwGvZ+1Wt/O2mOIe1mr8n7WniaN7i78sw9k7e2ncsjac+2IVSuP2qGvxRAMj4k+fy9YOQ29XntgS6/CL8WQbv1OjPO93FrIWIzfrunHEPdquun7Nf00/XSzpls7rdCgsDBKs8Xfavpx+unWssxjadxbG+qTqG9exaEw2DdUnW+4njLle2HcDtJeCyJXrHqR6/hYjkE0nu2VlyP9LkiMjsljRPDFICVGDKT0Q5B2agWN04W2oY6zfxCmtFct5OkS4HKaiTIMgNihC3RuOtxZiFw6faDXcAxSw9kf7bFD/6Uf1zUp1jXZ81dM/8A4f39/nL+/P87fPzDO398e56frE+P8/QPj/OfagfJohxf/KcZjKglzjYfm+g8xrrdjcIm3DKd5/V/FwMqTR7inMXzy7M0G2THG3QbZuTxM4156ezuGXPRimUbn9DH9+fTZ0umzpccQciysND40qI4XYmiGWK/PL4Tff7inGB95uHhJ1Xa6jtPk/NWxzjSv7v5VoWJC6jE1//yzndPMB8dcNNPBUem49LbHGgG+njftztdR432bP5j5VhzHd3bMFHLNEzBf3tl0mpG6OfBApympm+9sInn3nX0Oce/btNOnUDff2XSajbr5zj4uLrr5zr7/VOzwVOrbAw/nGPcGHug0G3XTxn64jntfP9b3a2n9QC29fSfPffA06XGv73K0H45PmFjTWr5v9sPXu+s26DQVdXPdxvlWCtZKHXo/5+u4ufjjeCG+L+ruZtPhQuT9MtV3y/Qc4gPFIQXDUoVPxdH/ypouHC9akf68h01y/loPtxIh6Pri6KeJqHtfhdD5U6wYb0iL3b9fxelj3xL9Fqbcxr4fYszXVMzdyPVaECz4fLCWF4OgtV/yxP5vCjUWeUs7Pdr+l4Yol6FderXy/Fb6J55M/8ST6e8/mXPmaqwMkp5XBv1mbExL3I3++XX7r4JE/j+u6dBYP01IxcBnWp/Ev/BT5VhxrnK9WhzVagSx5wsUyd5/79vb7/1ziA+8o1TiOlTLqThONiS+sftqrHd5mrt2eO+rxud6j6n9w9vyNAXzsPRoClF/PjNPdl6KH/M4V33e9ThOoNzrqJ8mpEq7sO1Aezzip1MFPz2cq+LhpKbuL7LGarTZ7THc9/zhNHp7gJ1On0Xd7ay3t+dOzyHudYPa+3On1N6eO6XThNTtzvrtp3LorJ9rx60B9mOMmwPsP8W43o5xb4D9HOPmAPtp4iMNPEjv9lKMu+O4N6/jGONcpvhQK+/B8u06+gfKo//V93JrwuF2jMOEww917NaEQ734/QmH84Xcm3Cop4+bbj7cY4yblf3udbxeQe5NWtTTJ1J3Jy3OF3Jv0qIWerctVE8fSN2dtDhfx61Jix9bupxauk/3CzltyXe3uXwMcnMc49jOtdiRqpgeKtn7H0jV9z+Qqu9/IFU/8IFUff8DqfqJD6TqBz6Q+qEXFL0Pyt8EfHuy70/On3tSN7P2NC/mX4GuR0v1peKgEiNLj5nR/rQ4Th823TTC0858t43weB33ivSH8a30drnSmrrfDJI9/rAjCD01wqrvj7Qdg3xkVPhuifAHSoSvD5TIKci9EvlhwWSJb3kKvbr+s1yYU6LyPMjxY0+8cB+jzPZ0WKiet9a7tdagsr7/ujyturz5ujyGuPe6PM1L3X1dnvbnu/m6PH4hdfd1efup2OGpyNtrDc4x7q01qPJ+d/0Y4+Zr+4d7ubVeoZ4+kbpZ048hbtb023fyvCF0Wq99bxb3bGGxK4vl3u03C9P6fotf318uVfXthSjnEPcerL6/XKrq28ulqn5gudT9p3KwsGPtuNniP23Nd9c6ztdxa/6lGr/d1D5NSN1rJZ+v4l6I416a9/ouP8S413ext1ee+q6ub/dd7P2Vp+ddO2JLulba85M2zjtc3fvytr/fnmzvf29S29vfm5xD3DPj9v73JrW9/b1J7R/43uT+Uzl9b/J2c/J8Xsa91mR/fxH/McbdQaC3Rwjp/Z0Uan//XX/coe/+53+3T0J5+qLm690W6fH8D4vlJw/DzpuD8perOG6uh0nOmuvGL0LgO4I/tq/9GkLeHv05FYb2mDRulxwK49ixv3UQ1nXceP/WUVjHEDePhtF3H8nxUJfYVC9vIvdtl9RTBMUhBu15hOM0TQxfjS26Ugy9H4NjHu8RQ57G4NMhUKVTnC724P6sQOvbw3nn02lUY8eSx6RvcsCvZ0uU9nbGH0Pcy3h6vzhOLxTDvsaWPfjL7Mi7dfwY4VYdPx4WdLOOnw8culnHj4lyt46fps4ohor/2J7+22lBpxiCDcRFDjGOp9JQdFIerM8PYuBTmJuZcgxxL1NOdewDxvGlOPrT4jgfn4QGsdZ8bFF9MYa9HyMtd/nVMU6XRmvh0udHH/Fx3zc/V3yWamv1EOTUY4r1Py2t6vxdiNg6rom9GILjKtIuEq+G0PpagZLgZIrcl/5lELwWtMiLj7aX6D/203MppxZp9FZq3lX0V0d01XjBPK63vhYDx3xxb8+f7u0jy04x7h6/Zs/zluXdTtPxKgyb5rerHq7i0OMxicw3yV9OfzlNSo5bDTS8GfJ0gn2JcZoY6Wmzovy539cYepzwjtPGHpzOxSvtfqk26lGq+aX9G19v0e95oD6PcXzTCccSgIcTPH/T8ekoqI4hgisPNJh8KdfTiC9KpMjhKLnT3m8tpgN6eV6oxxBpSUSeUfge4zR+dO/8NT7NFt09gO24Fd4Vx/OVvJ3V95s5rqpCJ6r3gwGcJp3uGoD29w3g9BnUXQM4fcR02wDOz6biCLba6bXK+meQfjDnUx8Erxlqh5b/MQbGKh+dgNdiVMXkwnU4B/I4dx5tqvbaIY6M0fRHJ7G9FENKrPuX0g5HFp6mnlSjC/LA8loQqzFAZzUtzfplkCYRpLcXgzDONuBaXwzSYn7AcqP5Vw+HY7ma5I9UfhXDokSkXeXFGNGjkkanSnJqdtcrPth/8KlIjqdEERbvP1hPd3RqTIhgFZ/odb18Nfgk+nE1p0Q+7gPbBCfNNWuvFjFOMH6wvFpj8r6D9loMLDKQno4w/tUZtVfUXC3ltevQEj1XLYcqd1pHd7N1czwqVyVs9sHp+9tfHbiraJk8uL0aRTEWqHbZi1GMcEf5IL9fRokplQcfDPscpcU86oNLefVaUum2cipd/YQ/yWm2avhTWnvQ++th7tncTzd10+bk+M3U441ZYHOnIv4hzE23/OF5S6p7+nLdi22JHyyvZlNHpdGu/GoUHMit3fprUYzipNDB8moUHB5tjz7m8yinBRIfOZbbMAvTTMqLURo+HWitXC9G6ela+qmpfNwsFQcF22mm8BSjYeFbS++A38UQDAzp817QeVCnI39q/q7j21HldPyy9M65n+cQtyYMzyFuzRj+cOZ6+rikX892x5FTmfZiGFp6Oi91DkGxm1Qnaq/MS1XBgE7N62h+d5I9jgsu1crzKFL53cm+c4hbk33y/mdQvygOer1QkXNWX8zccWQ7osjzkRTht+dhzyHuPRr+a+dh/yyO0zzsD48GnWSz62mU0xD3PSs7Rri39uHYSKs1HZ5+GCST0yjZvYUgxxAPN6w4Pl35xSCW2jO5tv8uSExQPbjpK/VsHNgb5Sr1+ev/fPCMRsvqwb28FOUxlBoNkZoaEXT112KkHsGvYkjsNvoYIC4vxahYOlrziVHfYry/reUpBF8lJnRLHmyg636MEiPtD1/jpzHk9E3VTV8+hrjny6dvK+758rEwqOLTij8ay18L47SEtUe/9TGOp4cgp51LsDVe6j58HUU6X4biMtIWX7+8F2w2+sfh9L8MgnNj5OVSjS9WHqMP1/O6ft6/IA44qacY/e3XZX/3danHY2rvLRU8xri5VFDsA0sFjxunSXTHmtDz3Z/F3l7Keg5xz4Da20tZz4WhaQnX87OD5bxt2p3COG0bXym+Iqo1f2NW+pfLOO7td2cNvZy+3rm3hv4c4t5rtn8gxLGrjq4Y/XG0kn25lcNT6TGo1NPuC/ZnhPMnL/fS9RhDfVemNW5I6WuTx5TsL6JgF8sHpzfLb6MQojA9jVJOBxthq/S8AVT90rb94ULwPaX+8UHlr26HGdMknGcDfhVFUtFK+iDyaxQ5fWH1oTB04fuoKw9hfu3XHYNg9/bHcLO8GITCWonseZB+PMcz5o7oYfZP01iv93fo/CEGklBKfd4COAa524w4X8m9doQeZ57uGtPp2TAqifR2eDbHRRSxClv+2Nf6y/fIepxyure1g5Zys5I8/5pYT5vs3ftU8xzi1tfEejo46ubnnnr67Ore55562qTv7tfE95/KIXWPtePe1g5a3t/49IfruLW1g9Lbu6jpaa+/+1trn6/k1l4ExwK5ub3DDzFube+gpO8X6slPb27vcL6OW0X6Q4MmrdjgtGD4axtC3//6St//+kor/aUh7vUPfyhRrEh/lK48LdFTz+xmh+bUUX0MasfaSS3PT7I5dnax3qpV4hc7uzcfS3+723765EljC5KWh4W+3kl/ex6mvz0Pc1yheLNFeIxxt0HIH/jO+rirv8Q4LOWFxl8fivL7G/PqcSbnZlvutDbxZlvuGOJeW07e37pDT2dP3WzLnb66ut2Wu/1UDm05fn9jXpX39yj/4TruteXk7WNSVD5yTMr5Su615fj9bYZ/iHGvLXeckrpXqMft5O625Y7Xca8td1zYHOurm7z2eooVs9qeL7uy99stp72jK8X2s49B7jzb0O7HsHhV1/7HDjP3Y/AVMfjKy2G+Joq9PdB/voxooHM5Xsb7Gx7+EOPmgNb5SICbA1rnK7nZfrH2fvvleOgUC1aiFHtezU7bU2E1C6nqazEkFrPQo+Se15FG704G6elko3uTQecQNw3kWKJpPe2lh9L4wLET2o4fsMezrdcfk3Rfr+T0rr15Spsem/w3mx+nt8PNN2UvH2l+/PBwbp3SRsejTVt0KXPb4esmZNqPS7dvHdKm/f1dKX0h4Zt9j/72rpTa39+VUvvbu1La9YFdKe8/lcMb81w7bh3Sdoxx85C2n2Jcb8e4d0jbOca9Q9rsundIyuncqmOMm/t03r2OY5/wXKa3Dmmz03zH3fK4GeONe7l1SNvtGIdD2n6oY7cOabPjkVM3D2k7X8i9Q9rstHff7Yfb3q/sN6/j9Qpy75A2O85E3Tyk7Xwh9w5pM3p7w3QjeX/Q4Hwd98Zhfmro3jmkzai931o+Brm5OPjYzL03Fmz1/Xl9q2/P659D3GqPWX1/Xt87KW+2x+oH5vXvP5VDe+zcCbo1Fmz1A/P6x47Uzazt74+enmPcGj01fnv01PgDo6fn67hXpP3d0dNzhDujp+cPX6JP+sC0p9JvPp5RfICjvb4Wo8VmBZSHT3/3AQ4aYhc9vxeR496f977iOQZ5PM+Yt2329BPcY4ge6aad7LUQmD3Op6rp/adi8aImy1uq/ebJ/hGDX4xBiFGfPxST/vbA+DHErXUF9v4nTccQN1stx/LU//CbyN89kzTm2V90jnwdr8ZAs2VsJ/BiDKZbMd6eC9O358J++Oo+Jjs60Ysf7sc2uw98+pXqcReDW0XxQ4g7ZXHeWwLbBf/RJP7V/hQF28EevpU/x4j2LOV9+n4XA3nS+vNPun/Yf4Sxc0iTw1ZW96Oc9qH6IQojij3fIcZN5mnL+N7Oo3aag7q7N9d5TxbCVt/9sPPgD2WC/sbjIb+8P0y+lvpyFPTQW+cXdxMywgf8jzd4fTWKpn2AXt6TCJ95Ppjo1SicosirOxvVmqPoq1HSmGFtL5eLpSj9ejEKpx2fmF590nzlKC/XOmwT++jBHbzl+HEep4/R+FRhfgqDrSMeF1MOYY7T/nc3LPvpaqJj8uDDdoa/uak3whg2osjbAn8N084fG32qbNKoQN5u5I2beiMMF2yvcdpDth2/ofpU2eAsxAezfOSm+FX7vC6sgcnHp/9yq7t+pSjPK98PO/3GfuEP7C8G0YJ182QvBpFYXPTow756OxYDp9Ze3oc5387rQXCWg9qr+zBbrPY2K/zqlcR2F48g8uqVCI6mEP7A0ykHS6AP7RR83J266K2actwEvWIjdTlsInY8VCqOdKC8dvPrgVDteCDeraGh9v6Zeo3aXxri5i5kp/Ks2Amp2vMDttpp6uTWRjXHq2AMLuW5/e9XUd/uHrbThdzsHp6PLCOcBkry9F7OMfJZsc/Lg+m4ZvPe2WnHIPeGts8hbg1t/xDiztD28Wy+W2NU5wh3hqiOZ2DeuoZzhDvXcJoYjNkOzR/bSb8bAIdySZ401nI3gMb5ZJpHtn4RIJY0/XGyq9jdADidqOUM/0WAaHm1vKzzS4Amx+PAYtluWk09DvV6JUSat/oa4jjyG2up0+F7vygHwqtD7ZUrIGzV2F+6BQ1zytvSF/v6JI5fP8THD7lC2+1SwDebluaWv1/DacqfYlDmMVafmpz1z7xsp+kESof/lGcrMY4RiqLXp7mX/5vLKJgdfgzN0ItBerQ2Syf5QJD6+pVE57OnKdFfBkHz5o8O7K+e71WwtoQPt3OsaZViB71qpzLpx7xPrbXXg6B1ciyTcxOH0MR59UoEZzNpHsD5ZRCYYT5a6VdB/GPVFSSfDPC7IGkD3OvlK4lRrcdkfHkxiOF2TF69EjPM1V4vX4lhcrDIi0EwiUV/zKf9Lkj0lahfrweJMunl1dzpyJ3+au48BsqjFUL8YsE+OsIVHeEXE7ByvEOrXM+N+tS2RVcnLzVTvRvg9uF5p8ZljPn80bi83Rzp8Q7PHaUvf996+YvvIk4DaHn3269XUe80qzR/ovubCA2dpfZihCuadvWFZ1HQbS097TX7mMl7KUTqf/8ixNhzDw2H/loILEi4/uiw/CJEHM5FV3/xRmK0i0p+s/0qBCPEi2VBMQfw4Fwa9/ODcZoKt9qehvChk+dNbUo7X6ab+dKZPgfBkYGFc1P7N0EspmD/OJLrfqf+YUiwvTQiW/gXvfL4ALVf+QTVLyH6ae8u1tgwW/JR8I+uzP0gglXxUlKRfg9yXCsXFkq5H6W/uI4SY+VSknf86mYeg1Zho6byapCOoa/8wfSvgrToMegfpwd9CXI86CZWHPSSd6y6X83+CJG3qv5WzY6bpKT1NmkQin9VHITiqK8+GJwepH+2N74EOU0x3X0wxyA390U730y8pbT/8cL+TfKiRfsYvT8kzfsTTP39Cab+/gRTf3+C6YcCjS/pHwV6qKfHj3OEsKvHHx88/SqIpW/67cUgfwySXZ8Ioq8GwaFMltvI34K8vfD2fB0NK2D6Hx+z/irtFGlnp1rS3xwCPUa4N911DnFruuuHEHemu06lifV58sfyvPvNXJF4RT36xS+GiOXUj2ivNfkL9q7JxxM/TPoXIdDkT2+nX4XAF0+Ueg2/CYFl9kQpSX4TAt3RP7+7+kUIwxiy1deKk+JobyJ7LUSNN8KjVMprV4Hvx+r1UnFKTAPKayUhHSdFyysByoX+Wx5m+U2IEp8llnz6069CKEZ72mtXUdPxgP21q0iHPwrbayEUH/C2/tqNoDOcD6T4VQgM2FR57UY0UqzktXC/CWFo6lh/KT8Kjhp5zMG9FMJiHDGf9/2LAD1mmLu8VA49vh7O32n8JkAkRzd58xZeCyASM9QPtNdexOjTZLP7TQiOCiWcD5L/xVCmSTrLMG+Z+KWxafbusMi5Whtaq/r0Ko430sIx86Yp326kHUfI72yG10/fQ93bDO8c4t5meMe2UVwFUdq26XthnD5AUsNTUXve0fwhSM3ns9enQc4bRuNkyLxG9dvtnBa+tyhW+rNYvxzhc9qVrxUsdCpihyB6nLNM+wPW57dz3LS1VLR00qKBcpVfBNEYjHz0ePuLQTDx+Uff6nuQ+naX93wdmvp47XAd8oE5gK4fmAM43k6PYrXrOj2b404K0RQdmyqg+12+nlt1Ot6sxOYnvaRZu69BynUd22BCOPW659mmb2V7vJhYydtJjhdDH8jjY+FSfOZZKY06/QeXctwbt8VSl8cIWJdTHPnELZ0bh/GdRctO+6XSPS7luDd/wWc9eWNaqV+jnLYfwxAlX6cY/f36/7i/6xMJcDyj6HYC/HBPt6tdqZ+pdqdTpO5Wu/Ozhuu2fCLut2d9PEhKMPxglxyupNhffj/4/PVKgyn/wQ0dd2pitOJKO1wKXR+5ITu+0qLjae10R3TcHSi6TTWvN/gPotRPPGj6SMU93lGJpUGV2E53pB950vZXvwF69IGs6+kNcPo2hLH9JF+pTfjdW07boIy1D7EMIi0E7/o1yGlJfokR2sfDSm3L9i3KeV+r2JIqj+k9ZhK/RqmfqHPHOyLssVXT6+g/uCP5y6+FCzazTUMQ/8G1nLbVxTJquXIW6W/qHJLo0YrRU53rf3EP71FFos7R9bz/XS4un/A5pr/6hqjC5vJu9N9viD9hc/yRhu6p7Y4lnTXvrVLK13w+Hu/ziz7N6WKwuySX/M3M94vpn0joY+vydsHI/x9t3dslIx+xXTp+EBTDYY+hWz1di3zgnSb6iXfa6Sur++80aZ8o3OMd3X6n6fWXX8vtd9ppP7uPvNNE4yRG+aNn9K3O6QeausdvVK9Yc2S1vzJCz0r4qo/t8A5Re3eI/hGjvTtG/0OMe4P0Pw2O40gjNXm20d/D+cr7Q+znKDcXlbXzYeGYxZGXR9jDH1vJm7n8Lkh81d2o0MEHTI9dodheo+dvi75HOblsfFvN5fls53koGENhKunDr98NBWN/zdq1vNzIuPd4fopy9/mctg28/3xOR0994PmYtrSxDB36zO3QMsBGLDV9tFXoa4jTkZVYSiRmedD0+lUT8G5NOTe67taUc5S7NeWHQY2bNeX0Dda9mvLDoHa8NqS3w2jRaa6MsZCZK/XDUz4Ol2JEj5TLy8Old5/yOcrtp2wfecrtr33K2P+z58XVX59yuY4fisR+21L+WEl8/WIMWQoqHP0xEn39agz57lM+R7n5lMtpvuz2Uy6n2bK7T/k09ktYjEV5KdR/8JzPB45GNl+dT0+ofiKbz2Pit58zf+I5n6bL7j/n0xdbn3jOtcSS6Vr0MMZfThNl3KKtz63J6TnrR/L5I65N9pHn3D7ynPv7z/k4NFMrVsymOa6vQzOFTv2oWNjO+SFr+0UMieOMRF+Ogd1r0nbNv4wR3+Vq/nLr5RjtxRga5aEvl4dGeejL5aEduwrVD8R4tTxw3JW9XB4W5WEvl4fFvbSXyyPHeLU88H1Q01evo8X343k7zl/GiKHz/nJ55BivXkcPX+4nD/phcBhbmV15w/evg8M+1fW8TyvYRSRvbP67KH9sI9JejYJjlqrmAwJ+F8ViAHKcbfh/Xh00v905/sQwl8+7vf8CZvvAC/j4eS1OrK1pK8TfTgLcLVv9SGdFPtKIFfqLy5ajcfOY1CjPy7acDqWoJebAHlNG8nRSoxzbWWnU+8/dC74GOX0je2crmh9C3NmL5qcQNzajOc8TcY/RHLmkPy/SU21lNLNY82rJ14PU5zNW9yfPDlOTRY/nCeDTA67tcD+nfYN9DHq1PfupUE6VtWDa98F5Tew7YQ7zgefZ46vdmj0+TipytDFE+DCpXk57e83Rq3VDf2zf9jWKnepcTBlxfpnS9TXGcYUXnI1OMU7XUcJi80k732PUT5i98QdGLE5PWCw8RfMI8bcnfJr/qvFpGKeN7r/1hs+TX/9RiDGI8pvZ69vv848MSrVPTCSU9vZEwg+fQcTq7U7XaYHl+TOIu0V7jnK7aOUjRasfGL0/fpGRJrIf78RyKl35SOnKJ0r3IzNg5RMzYOePKe7W3HOUm58Blf6JNeA/RLn5nH+Icvs520ee8wfmwM4fmNzPovIR+y+fKF26PrHigK76fukel8bfHKumk7XcHKs+xrg5Vn2OcW+s+hzj3lj17RjtxRg3x6rPMe6NVZ9j3Burvh3j1fK4OVZ9jnFvrPoc495Y9e0Yr5bHzbHqc4x7Y9XnGPfGqm/HePU67o5Vnz/OuTlWTadp69tj1ecod8eqz1HujlWfo9weq64fWchVP7GQi+onmrFUP9CMPca4PVZdP9JFqPKRspWPlK3+xWV7d6zazzZ+d6yaTp+D3R2rptOc0b2x6nOIW2PVP4S4NVZ9+k7v7lg1nb4CuztW/Ysgh7Hq+x8vHsaq6fgR2M2xauL2/lg1cf/EWPWvwhzGqs9f735grJqvGC14hDts4ECnVcS3x6rpNPl1c6yaTgP4N8eqz9dxb6ya5BPjBCQfGCc4f7Yble0xRnz4bJf0PLl/Y6yatLw/Vl0/8nlE/cTnEaSfWChL+vZC2fv7XfHz/a4eF3Lcv+vW9uw/fFJ9e5ksf2TYnD8xbE72iRUGZB9YYXB6Jd9fmsofaRHzR1rEH/kAjD7wAVg7L4yJfVNq3v++/CIIX1iAfOnhG346zYB9Jsq9Lb1/iHFrT++fYry5qTdhGz4q8nR/88dVnM7gvrNF+ukicLYJlXSSx/eLOK3mjm/Yesn7xX8dzDl9dzn28cQunLm99otjeKTgaIK0YfD983RTAL5eCaDRcM1jL78JkDp85aUAscOt/nHS9P0At441PgZ491TjWx8UH/sPhkOQ0o6ulW6fYPTIyOi9S+WXQljsWVLyV+u/CdGwB3ZLuzX8JkSPT1BKz9tS/iKEYqdftdduRDs2sL5eu5Er7YzWXrsKis/3C+Xv938RAocblkf/47WriM+2yh8nLf/mKuKz7lKLvlsWL4eQjhtJhlt+cxWGJ0Lvh9CXQtTYhfqB7bUQilnVtN3Gb0Jky+HXyqJ2GF/a9+nlEK891LxRTToo5FchsGc+q74YAjeST7b4TYhogBdurz1UjtHGks8x/V29wEEI9NJD5TjS54/ByvsBUDWFnpdDqacPEOew7LaL1FC8375jHINjL92GReuKX3oWIlgdyS8FiL3mpdfXAsSKh87vBcjLHX5ViBhvfskrNUYh8xbXr13Ba4+xXtgz6uL2dMDhFKJEZfxjL91vYxb1NNOEjbrTcrb7m/VbzPU++qr9ldt4DBdHL1Rz7+3qX27jODhWcQx2TRsC27cgp5EkIpyyl3qz34Oc146VdCocHVbm1fOGg7HlFOUpwK/No0cUeb/B+UOUm23OH+6IomdI+Ui2XzT4Hg3XgspST5XlvNtmTMCVhtuxX7RRsBnKo3DyQZffruS812DstjFCpij6NQqdOiZp6OK60lFF9vX5nGaaqChO83oMiMorBcOoto9WWF4Wc90+N11xpv2j1wZLkG93c3zZ44S0B6exDOVfhamYUKSaDrv5HuY022RY5tPSzNc3a5H+GWvR6xPWcppzum8txyi3reV4Rzet5cdnHXvfjvUZ9vxZH6edDFscpfFu/eWl4Ag0ynOl3y/luK1dOiOp50OSvjnDacPA287w09XgdGC6rlqfhzl979RFMMOfm073DaZHd8Sui58bzGne6XGvjJqbTyn+mtN2bC5EweatGL8Of1f7xGxptfe3FaqnWae7xyg+ohy3Jr53al7xTHtaTW4d1fbD/dw837LUdhyHvXd43lgNf7ifW2fXnWPcPSHyh/u5eZLfD/nDDaMK+eC0b/nTzuvNY6E35ZOPv24+WNvZbsNTKO+C2MpLnpLmDL55ymkS6tF+jpWZed3R1+t4RDkdvtGjZB/DtOkV9OVI+XOUihM0q+S12r+LolEsDw+7DlH6cUPiW+fp1NPWg7f3464f+dSp9k+sV639/fWq9fTR1X3HPn10dffM1x+i3PV9Pm0+eNMnjzHu++SxbG8esPy4lvqRUuEPlMq9GPZymdx9o/L5lK6bb1Q+bnV5t0zaB2rK+X5uv1GPLnlvg1Y+bTp4e4PW45XcPBOLT5893j5ChMsnVlNx+cRqKi7v7zPEpy0H7+dP6Z/IH/qA09InnPZ8Px/Jn5tb3zIdVxLe3Pr2nD83z2Djj5zMxR/ZKZPpEztlMr2/UybX6xMJdPr84n4CnT7+u5tAlT6RQMf7uZ1Ax8Y+FhzVP07a+9rY59NnWL3Fx4y92dPh+cKnz30+MZhtV0xN2WXPh4n4+BXW3WEi5uvtYSLmTyy3Zn5/uTWf5shudzr4NJ90v2F8mtu6OUx0vp/bnsIfadTyBxq1/JFGLX+iUXvOn7vDRHyaIrs9TMTHb7E6nlDPX7r16yVPSYvFvnnK6UssQ5lYXmj89ToeUU4+K4Wjqhzu5hHlZLRYd/bHPAV9PSztHAUHAxP/sZLvW5TTzlItbqifruS4kyBHEM4H1tTafxNFanSjJE9I/TZKfF8m/eVryXeUfOWXUTSymf/4/Oi3UaJcNO9a9PIdqbSXryVatmx5Aepvo8S1WKUP3JGlibFfRjG5Ikp7+RlZfM/L1tsn7ihPD/8uSitYOCj6epR40nlA4vU7aqk5+MsoPdZqcG+ncjlPkbW03DefyfDtkEo+TZKNTwvwdk35+HW2+hylor1Qq7wYRWPG2/JCgG8xTqUrV+ytJtfRpRp9pnRb/UTpHqPcLt1TlLule1yAcuF+LtHDG7Z94vttbu9/v83HibLb/ZDT/oS3Jz/OUW73ZvoHRhT6R0YUbl7JabLg/Hxu96tO02T3+1WniYvbJWvvl8kpxi+ejn6ib3ZstQs+SRd5ue3PPdr+kmv+1yhymibrsTtFyd/29vI1xicmd+X6xOSuXO9P7sr1iclduT4xuXu+lru5LOUTS2mkvL+U5hjjdh6e7+duHh7rfqGWViPbofKfgqRJh57W8n8Lcp4ow6a0OX++xTjW2ljl+hgWsJejVCwJ5dejlBSlvRxF0vLU8olrsddL1zArlL/off1a+rF0TyNQYSy96YsxGr7Tu3Lj+FsQ+sT8rtD787tymii7b9nUP9CYlPr+/O4xxn2bPJbK3ZU0UutHSoU/UCrvr6Q5P+Pbr2X6xHoCOX1Fdv+1fBrqv12y/RP1rba//LWcvClvIv7tjXqaWzLMF6TtNOrXHcbkOFN278PX84VgD6v8Act/cCGnGPEVTEvfXf0uRsfQzJU+0vsPgpzOsr6iwj7aZ6eW/ulDsvuvDbnef22cPiS7/9o4fkh221KO13LbUk47Bd63lNNM2V1LOR5cdNtSjvfzIUuJGne2lFMQEsZXlGlLgG9B9LihSo0r0bwfZPsW5XgcaOzVY/lz8m/OdDqGrFasd6+pMfp1f1g5Hdv1xxfZtb4YpAiOW877vf8uSCzBrFROV3Ja/KWYUNXj7Rxn8PEJZef2WhC6Lnz0RacrOZ0KhS9C0+j191pyvA4sh7v08Gys/LXXUTBhXhq/WKhFyweCRG19I0h+89Chjpy+syr4fL/UNNH9uyDYXLYwfSSIvBqEsPML88tBsAex9A/czutB0m5mrb0fJB8u8LsgeSea9NL5FqTJ2zl8vg7FTkmnzDnNg931kqPLCzbPOHla6x9w+eNUzV2X7++76/k6brr86VOxT1zHXZf/IUj5QJCbLn97pvTk8ufvu266/DHIXZe/H0ReDXLT5X8Ics/lb9/O60FuuvzdIEeXPwa56fJ6ve+u5+u45/K+Mu6vdHmLr5MpDwJ9u47jfNXN5DsHuZl8vwgirwa5l3w/BbmVfPdv5/Ug95LvdpBT8p2D3E0+ut6t9D9cx83kI3o/+U69cTJss9YOj/f0Vdjd3riSvN9OOwa5205Tettbf7iOe+00pf7XXsfNdtpPQcoHgtxrp52D3GynaeUPvCqOQe6+Ku4HkVeD3HxV/BDk3qvi9u28HuTmq+JukOOr4hjk7quC3+5r/XAdN18VLO97Cb/fG1f+wJjrMchtl+f33ZU/MOaqUv7a67jr8vyBMdcfgtx0ef7AmKvKB8Zcz0Huurx8YMz1hyA3XV4+MOZ6/3ZeD3LT5eUDY67nIHddXt93V/nAmKuq/bUuf7c3rv0DyXcMcjf57geRV4PcTL4fgtxLvtu383qQm8l3N8gx+Y5B7ibf6cOqm5X+fB03k6+9PSpwXrqgOLPKrufrH/T4edfdpQt6+qDq7tIFbfz+0gU9TWjdXbpwDnJz6cIPQe4tXdDWPjBY8olJLf3EpJa+P6mln5jU0vcntfQTk1r6iUkt/cSkln5iUks/Mamln5jU0k9MauknJrX0E5Na+olJLf3EpJZ+YlJLPzGpZe9PauknJrXs/UmtH1z+3mCJHScJbrr8Mchdl7fytrv+cB33XN6K/LXXcdPlfwpSPhDknsufg9x0eTtuU3jT5c9Bbrr8L4LIq0HuufxPQW65/P3beT3IPZe/HeTk8ucgd13+/WmtH67jpsvX8te6/M3BEjt/t3Uz+Y5B7ibf/SDyapCbyfdDkHvJd/t2Xg9yM/nuBjkm3zHI3eTjt5cM/HAdN5PveCT9zeST95cu+K6d7/bG7ROTWvaJSS17f1LLPjGpZe9PatknJrXsE5Na9olJLfvEpJZ9YlLLPjGpZZ+Y1LJPTGrZJya17BOTWvaJSS37xKSWfWJSy96f1LJPTGrZ+5NaP7j8zd64fmDM9Rjktsu//5nWD9dx0+Wt/rXXcdfl9QNjrj8Eueny+oExV7MPjLmeg9x1efvAmOsPQW66vH1gzPX+7bwe5KbL2wfGXM9B7rr8+59p/XAdN12+9b/W5e/2xvsHPiQ4B7mbfPeDyKtBbiZf/8CHBPdv5/UgN5PvbpBj8vUPfEjQrreXDPxwHfeSr13vf0hwXLpghOSzw/5qxyANOy62tKPFL4NcOLVdXr2SrrFy4aLnGy7+sIFknJVLks7b/eUGkorNyPIQxS+jYDOXcW/Po7TThn41NhwZJ2FHEPka4lBhH484NtGrlLbJqd+inGoslV20Qozb+XpkyA9B4lKkptv5HuS02VXkX8+HqPymRGqs+mlVjyWinygR/USJtDdL5HgCRJM4ZqpJ2vHx29kN7fiZVos+jrTOh3I9RTGcfPrw8uvlKNwQpbwY5eFsEaXkpV2/jBI7GLXyxykF36Ic9w1qgu2ym5andZ+OFa5eqLX0YoxOUWmvF2ucRtux/TFC8L3GHRqxLHHALUvLZwvYL6KISiShdnkxyuPR1njKf5yW8LsocGuqr19L7Fb6qFPXIcrxQ5jbNa7K+zXuHONOjTvZQYkWteUjr76ek9NO2/ip7jTWfBrZJb+IwX6o8Kyxmgz/e5Tj+V0l9rguj+GkiKL8NUg5zedEmdSaLPLrSUjtNL81duCI/pv0P/bX/XYxp/ZfIZyvlo5Xq/T1CZ13JmyxFJfyKSG/i1I1bonz6QbfoxxPJdO0v+7zO7pba1ND5VutPZ6+xS0OI5fKh7pyMJRqOMY1VX391YUIilXTidnfLuQ00TW+/kMUTe2ur+f5ncNYi9bbg5+f5/fDLZlgV8F0qPn3WzpUN4vD+Cy9wqz+IkSLSdWWzjT7HuI0mNNjv+56pVfGNzeQ4+me0Sl9NHv7wQvk9IEBzjkR4bQPZrt+dS03d99vemxH3tyTs532Jby5J2c7bUt4e0/Odtp/4PaenOdrubsnZztNeN3ek7OdtjO5uSfnMcbtPTnP93N3T85zLpfr51w+1Vjs3v8Yn31+zGiz40rYFtNEufv0tZly8zo4HQDw/TqORxEQJgEf5VieW+w5TI1zOR+cauz3MKcVMBYbDte8a/E3jzxv9taig/vgdnLJ45ldGvNnjzk9O7RSjnMJt1tM5xm0uy2mc8ncb0u28om25PGzrtslczdKzacC/i7K7fI9lsvNFumPuRSd7ge3Q0PuNA92t0X5w6V0pHWebvl+KceFBoZU6maHxuDpyK3bZ0T/dDUNpxNc+QO871dzOjBLotVf8sS49LsGrnTFLAWVNCj4MPP/8389/vMf/vGf/+2//O1f//Ef/v2f//Vf/uf4S7pGXR3LsqgEUVAN4kFjF3OSIHV6vDPIgprT406o7yyoV1AJoiDXGO/66hpjVqFKkGuMF191jdHkrS3INUal5SvINcZjZwpyjdED56HBY6aHJUhnkj7IgprTQ4P7JrmChgaPFohQUHV63Lm4xmgRiwS5xhhnEAtyjVGS0jepa4yS1BLkGqPCaw3iIAnSIAtqQX2TXUElKDQsNCw0LDQsNCw0LDQsNFpotNBoodFCo4VGC40WGs01+qMMWgvqm/oVVIIoqAZxkARpUGj00OihUa4LWIAErEAGClCBBmxAqBWoFagVqBWolaEmY/K0FAEqcKjJqK+PjgOwB3ryy/iaqHj2LyTHNrACGehqY3K3uAUsNKCrjR5ucReY6Daw0NVG1hQ3AhmHdhZ3goUMdLUx21HcDKT6n7kae7AGnGoPFyhuCDJ6GsUdYSEBK5CBAlSgARuwBwrUBGoCNYGaQE2gJlATqAnUBGoKNYWaQk2hplBTqCnUFGoKNYWaQc2gZlAzqBnUDGoGNYOaQc2g1qDWoNam2niwrQJdTRwFqEADNmAPdAtZWIAErECodah1qHWodaj1UKPrAhYgASuQgQJUoAEbEGoFagVqBWoFagVqBWoFagVqBWoFagQ1ghpBjaBGUCOoEdQIagQ1glqFWoVahVqFWoVahVqFWoVahVqFGkONocZQY6gx1BhqDDWGGkONoSZQE6gJ1ARqAjWBmkBNoCZQE6gp1BRqCjWFmkJNoaZQU6gp1BRqBjWDmkHNoGZQM6gZ1AxqBjWDWoNag1qDWoMavITgJQQvIXgJwUsIXkLwEoKXELyE4CUELyF4CcFLCF5C8BKCl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZdUeEmFl1R4SYWXVHhJhZfU5SWjozq9RHkgAwWoQFcbQ5N1eslEV9M2+rWuZtfAAiSgqxkNZKCrjQHROr1kogFdbQxS1uklA3l6yRj24uklEwnoamNlDU8vmehq3r+eXjJGN3h6yURXG50Vnl7iOL1kDAPx9JKJBHS1saqCp5dMHGo6Fi6ye8lCAw419c67e8lE9xJfH8juJQuHmn/YyO4lCxnoaqMDwu4lC11tjFWye4mO2V52L5noXrLQ1aqPPhDQ1caEKLuXLBSgq42lFexestDVxhQ4u5dMdC9Z6GpjNRe7lyx0tTEfyu4lOoYY2L1koauNuS52L1noamMQh91LJrqXLHS1kQHsXrLQ1cZIDruXLBSgq40Kzu4lC11t1Gp2L5noXqJjGTK7lywkoKuN0VN2L1noal5p3UsWGrABXc3HjNxLFrqa12r3EvWq7F6ykIGu5rXavWShq3lVdi9Z2APdS9RrdSvAoWZeld1LFjJwqNkcnVKgOY7LcS+xsRST3Usmupf49B+7lyx0tdFdZ/eShQx0NU8G95KFruZV2b1kYd8o7iU2+ujiXrLQ1XwgzL1koauxD60JUIGuNnqA4l6y0NVGrRb3EvMhNPeShQR0tVGrxb1koauNqizuJQsN6GqjVot7yUT3EhtVWdxLFhLQ1UatFveSha42arW4l5j5wKEBXW18qy3uJRPdS2wYtLiXLCSgq41kEPeSha42DFrcSxYa0NVGBRf3konuJTZqtbiXLBxq7SoDK5CB4jgelnvJQnP0sdDmOErHvaSNaT1xL1lYHMeVCQErkIFTbdymKNCAMRQp7iVtjGiJe8nCAiRgBcaApLiXtJEM4l6y0IAN2ANtqo1CtQIkYAUyUIAKNGAD9sAGtQa1BrUGtQa1BrUGtQa1BrUGtQ61DrUOtQ61DrUOtQ61DjX3El8TI+4ljupesrAAMRzuXtLGOKK6lyx0tfHCVveShRgTvzAofk01H2+/gAVIwKlmAxkoQAUasAF7IE21cQ1UgASsQAYKcErowAbsgfUC4oYqbqhWIOYTKiYU3EDa8HV1A1nYgD3QDaSNuX91A1lIwApkoN/QeEnoNJCJU208t2kgE3vgNJCJU23c5jSQiRXIwKk2HsA0kIkGbMAeOA1k4pSQgRXIQAFqXKTihqZr+M1P1xhNNZ2u4VNA0zXGi0qna0x0tbF6TadrTHS18c7S6Rrq0z+uZh7M1ZpjD5yuMdHVxopDna4x0dWazyC52pg80+kaE13Nj2L/f/7h3/75H/7r3/7pfz4mFMec4//6l3/c84uP//z3//d/7P/nv/7bP//tb//83//L//i3f/3Hf/pv/+vf/mnMRfo05LX+5z+Pjxn+vj3c5/96DJ0+/ruP85f74x8f/139/3/c9uOX6vj/xx88Klv5+8f/6PiH8RePGd//ry8zSKIYBGHohVhUCvq9/8X+C1PsrpsuwkRSdHAiYXymBp5D64rHqQpvTg7LCrvCBdFZvKC7leAZDUP15MXbGo6zV9CsE+fbOWUq6Anix+HTizDzzaDRGbvTDN5DjNcPMbI1MsLIcTS65VJ4Ho3cLl451is7zLeg3wstu13QPhDaZ576UN+ijKsT++ZPO3FcFlnxz+JpoPwH", + "brillig_names": [ + "discover_new_messages", + "store_in_execution_cache_oracle_wrapper", + "notify_enqueued_public_function_call_wrapper", + "get_note_internal", + "storage_read", + "get_public_data_witness", + "field_less_than", + "decompose_hint", + "lte_hint", + "call_private_function_internal", + "load", + "store_in_execution_cache_oracle_wrapper", + "directive_invert", + "directive_to_radix", + "directive_integer_quotient" + ], + "verification_key": "AAAAAAAEAAAAAAAAAAAAEgAAAAAAAAAQAAAAAAAAVgkAAAAA//////////8AB70rtDnO94ue2T9F\nyOm67r3jnL6ZGrojVCLAhbgu7nsv1/siYZzp6nAj4VY9/TVMAwMegS0WksYKkkpLw43BMxHQ227I\nS4tkPwcmAlNMeENg36Pfk2vshns9oDT19BZmAloNaaJEBPPwvfHIFZzoxNr5lvoWv/ZuAeAyJRdM\nDIMvFagqe/ZO6j6TeM515YPBVDm6//uKAKCBJtKvkvT1JiBZrIbA/Cv1edyEd90X7EdxI5AWqoKd\nwaYAecYVP0WzFRpWWZefz1U0QgISFqpbmm1sX8QOGw4P4KkLr4DaP2wLLzF/yF7ZTYtJOJ9RM0Ul\nPvAlDn8BNTHISYkEcGKvGipLn5a7kOSnf/yI/+/4cbpsPoGUyj+XrrkC/vR3PHxFAthutgl6uh14\nDI/xtXAaXyesZKerNcHehQ85b/DAumIHjBOvpc5mhKIBFVCOSPuc2cbdA5Wia6U6WKdh67C5Pg6Z\nM6ZffsIw/ZZS8SIs7X17A/hY2ld3YDO8QwUvURipEabVvIpfVK1Cmo0sICvRD9kVavxZhNfishhT\njnOjarMEaHGye2msWK1jh5dtDtpyAx4+e0Dduaitynb2eIOYxSmMMxH8kXD5LelAsEKquZDVPGo7\nJjOc2mtz35IIMUFZB7BfQIphKEclkBa5IErkvzdTfrGWsFwdmPpRAWqbrLsDeAxwyvHbU8CfPzsc\nGXPrf45yxlXbCvaT8msivddfUhOz5RQLlGMmdlFSSdWGJ7tCBDuNWRoklQVqFp+l6MX7AV26lqcq\n1lcMpKV+R/gfqq2hM/Ue57CeusxnPKIkS28ZqkCubdhMJVsfmbG34VLgihpziGrNz6ECqBxM/S8k\nZiHrSJuRmKhkLL92LlSOA5ve52T8+85x9jwkt2+sZv9oEf1BtfmTbZMquuTG6TPg05wk6o4uDu5w\nKlMm81nJR8AUoX18ClXS1F7o7fbsFlwRPSgrmEfVYv1BQCIOR+GCrxpw0tC/U/KBmNxua015bsn0\nE4YWuRKVxKct3D6sKlhhHc+lNxxjmcLZQIUEVHTN7llBiJDUrv9RcXDGIqilvNITCKYolMrZNOxm\nvuP0tYGGRJGhu4Ws9gCZFqaEsRX+ASy1cd0Q5tIH7XtO+HEitcpkoyg9zeW26f64cFDuI9WEBYEA\njZ22Z6PHSl5273DJ+qqjS4BsxQSzJ9QD8kMEdOka17iG32HO8PGVerB5Z2kkYLENGXpSuzNeqgMU\nNBTCkwwQEMH/KWqjVZH3F2uAajw34lC5JX83oQlWBUxfFrtGKgqRxuXLoEHRHtBnDJT65tCe7Ybd\np7lzkh9uVbXYNJwWTAF/ifLeqO1fhd0Bll+IYVUJG34uy7QFa1VsYP7j7hYKW/qDTTD0wfN23fbH\now7eBX/SSLJH9YazmwcilTVeGSaWQAKxytqjSCDiQd5prGNRI7dRoHsHHPt0KaTHTBkZISyotIDR\n27Yw50Th8QhA5hSF4ZiPmc9aPk/rCSm13yh9wQpiNkbVxqwqjDz8cOmHEJomrIGP0beS6kVUFELj\nG3AGdsi1p1yt9W1vD08Wir+YHwiD/EDS2DIDMrhEUkEoT4EYk64jU9g/o/iF0jPuv2ol7iGxyMb9\nYoDEmpvogQQfa56S8AIwWF310r5MkW1d5frwdrfneuRL9M+5GJoIJ46MrETheyqyyDqkIUh3qLha\nbPGqmT4G12YdgZGG/ccn86kY3/7Wrqgu9HUW/p/FFu9jgbOHZnHsGftvsFpvIAZOMjEEyhx0mEIE\nsja6leJKWcSojkBP5jDEWBVdM8HTGaNaOCySHIx9wN5tDUYiL2PYhwnpESmmYv0kDrfPeR4kDzH3\njs4hakmfx4QpvNjEuWlGfRdFjmEEsee505hZyArcicSNdbVxY29bvrSoBvb0WWICMBtq5OsOu+rd\nIDNABm8oE1dI8RljHD/gf6nXAANOPidFTvmStL+EuXuqdHEuJXg1Ud9QwATsfNH03Ys7ZKZvKsSX\nm2XlZWjFoxsU7Rj3bPDO7MtHmN50GuibZOglj4RHfBtiVlpVm6e7OIMuLSmftoZ40BULzFsW3IJS\nNT1D+nDpkjnBwcZ+JxoO6sUV06xaGZq7dJM6TvyYxZsoFO3nzSfa7QDDPBKGC8SwRi041tS6Hkdj\np07NsRyh80aWgMJw5VFRU0RZL1kYj6dlEts56JKCazJhDuCCUeAF/OkXwNXcoBlHfFL2B1MythIA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAACIMIfxdEIRSBLCpqcVoLxHBa3qMtB5DgsopAwl0t3Pe0eLEnJdOnci/1/+MPnDjw16AMc\nJA1kWHSm24PgImD7oQDENyb3W2/aDeIs4ODfq2vMegX/lalrKJQkxfczZw2WL5tuC04sAZaN5cMk\ngqp9HQoJ1xeOyTuteFj5bmTwtI0dWKphxkrVIgQ9ecSAIhnlW6GXUa3+bDYyTT+2wtoJiS18GKk8\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + }, + { + "name": "refund_public", + "is_unconstrained": true, + "custom_attributes": [ + "public", + "internal" + ], + "abi": { + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": null, + "error_types": { + "206160798890201757": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3564161243949231814": { + "error_kind": "string", + "string": "Function refund_public can only be called internally" + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "6144404149669079610": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "9323748002447105156": { + "error_kind": "string", + "string": "NotPassedTimelock" + }, + "13699457482007836410": { + "error_kind": "string", + "string": "Not initialized" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "17595253152434889169": { + "error_kind": "string", + "string": "offset too large" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + } + } + }, + "bytecode": "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ABwKCxkAHAoKCwAcCgIKAC0IAQInAhoEDAAIARoBJwMCBAEAIgICGi0KGhstDgQbACIbAhstDggbACIbAhstDh4bACIbAhstDgkbACIbAhstDhQbACIbAhstDhUbACIbAhstDhYbACIbAhstDhgbACIbAhstDhkbACIbAhstDgsbACIbAhstDgobHAoXBAAcCg8IABwKEAkAHAoRCgAcChILABwKEw8AHAoNEAAcCgwNAC0IAQwnAhEEDAAIAREBJwMMBAEAIgwCES0KERItDgUSACISAhItDgQSACISAhItDg4SACISAhItDggSACISAhItDgkSACISAhItDgoSACISAhItDgsSACISAhItDg8SACISAhItDhASACISAhItDg0SACISAhItDgMSLgiARQAqIwAAC8MNIgAqgEwAAyQCAAMAAA75IwAAC9gtCwcDLQsDBAAiBAIELQ4EAy0IAQQnAgUEBAAIAQUBJwMEBAEAIgQCBS0KBQcuDIBGAAcAIgcCBy4MgEYABwAiBwIHLgyARgAHKwIABQAAAAAAAAAAFwAAAAAAAAAALQgBBycCCAQFAAgBCAEnAwcEAQAiBwIILQoICS4MgEYACQAiCQIJLgyARgAJACIJAgkuDIBGAAkAIgkCCS0OBQktCAEFAAABAgEtDgQFLQgBBAAAAQIBLQ4HBC0IAQcAAAECAS4MgEUABy0IAQgAAAECAS4MgEQACC0LAwkAIgkCCS0OCQMuCIBFAAIjAAAMxw0iAAKATQAJJAIACQAADq8jAAAM3CcCCgQLLQgACy0KBQwtCgQNLQoHDi0KCA8ACAAKACUAABcoLQIAAC0KDAktCAEEJwIFBBkACAEFAScDBAQBACIEAgUnAgcEGAAqBwUHLQoFCAwqCAcKFgoKCiQCAAoAAA1OLgyARgAIACIIAggjAAANLS0IAQUAAAECAS0OBAUuCIBFAAIjAAANZg0iAAKATQAEJAIABAAADmIjAAANey0LBQMnAgQEGC4CAAOAAygAgAQEABklAAAXnC4IgAUABwAqBwQILQ4JCC0OBwUuCIBFAAIjAAANtAwqAgQDJAIAAwAADjMjAAANxikCAAIALRfGuCcCBAQCJwIGBAMAKgQGBS0IAQMACAEFAScDAwQBACIDAgUtDgQFACIFAgUtDgQFJwIFBAMAKgMFBC0KBAUtDgIF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", + "debug_symbols": "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", + "brillig_names": [ + "refund_public" + ] + }, + { + "name": "sync_private_state", + "is_unconstrained": true, + "custom_attributes": [ + "utility" + ], + "abi": { + "parameters": [], + "return_type": null, + "error_types": { + "576755928210959028": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "2709101749560550278": { + "error_kind": "string", + "string": "Cannot serialize point at infinity as bytes." + }, + "2896122431943215824": { + "error_kind": "fmtstring", + "length": 144, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3095323350861740601": { + "error_kind": "fmtstring", + "length": 132, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "3305101268118424981": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "3367683922240523006": { + "error_kind": "fmtstring", + "length": 58, + "item_types": [ + { + "kind": "field" + } + ] + }, + "5019202896831570965": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "5727012404371710682": { + "error_kind": "string", + "string": "push out of bounds" + }, + "5870202753060865374": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "6336853191198150230": { + "error_kind": "fmtstring", + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "11418088424205762236": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [] + }, + "12099279057757775880": { + "error_kind": "string", + "string": "DST_LEN too large for offset" + }, + "12822839658937144934": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, + "13649294680379557736": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "14225679739041873922": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "14514982005979867414": { + "error_kind": "string", + "string": "attempt to bit-shift with overflow" + }, + "14657895983200220173": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "15366650908120444287": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, + "16218014537381711836": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "16446004518090376065": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "16954218183513903507": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" + }, + "17879506016437779469": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "18194595712952743247": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] + } + } + }, + "bytecode": "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", + "debug_symbols": "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", + "brillig_names": [ + "sync_private_state" + ] + } + ], + "outputs": { + "globals": { + "notes": [ + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "string", + "value": "UintNote" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "value", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + }, + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "kind": "string", + "value": "UintNote" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "value", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + }, + { + "fields": [ + { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + }, + { + "kind": "string", + "value": "HTLC_Private" + }, + { + "fields": [ + { + "name": "owner", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + }, + { + "name": "randomness", + "value": { + "fields": [ + { + "name": "index", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + }, + { + "name": "nullable", + "value": { + "kind": "boolean", + "value": false + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ], + "kind": "tuple" + } + ], + "storage": [ + { + "fields": [ + { + "name": "contract_name", + "value": { + "kind": "string", + "value": "Token" + } + }, + { + "name": "fields", + "value": { + "fields": [ + { + "name": "admin", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + } + ], + "kind": "struct" + } + }, + { + "name": "minters", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ], + "kind": "struct" + } + }, + { + "name": "balances", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ], + "kind": "struct" + } + }, + { + "name": "total_supply", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ], + "kind": "struct" + } + }, + { + "name": "public_balances", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ], + "kind": "struct" + } + }, + { + "name": "symbol", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000006" + } + } + ], + "kind": "struct" + } + }, + { + "name": "name", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000008" + } + } + ], + "kind": "struct" + } + }, + { + "name": "decimals", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "000000000000000000000000000000000000000000000000000000000000000a" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + }, + { + "fields": [ + { + "name": "contract_name", + "value": { + "kind": "string", + "value": "Train" + } + }, + { + "name": "fields", + "value": { + "fields": [ + { + "name": "contracts_private", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000001" + } + } + ], + "kind": "struct" + } + }, + { + "name": "contracts_public", + "value": { + "fields": [ + { + "name": "slot", + "value": { + "kind": "integer", + "sign": false, + "value": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + } + ], + "kind": "struct" + } + ] + }, + "structs": { + "functions": [ + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ], + "kind": "struct", + "path": "Train::add_lock_private_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::add_lock_private_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + } + ], + "kind": "struct", + "path": "Train::add_lock_public_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::add_lock_public_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + }, + { + "name": "randomness", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::commit_private_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::commit_private_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + }, + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ], + "kind": "struct", + "path": "Train::commit_public_user_parameters" + } + } + ], + "kind": "struct", + "path": "Train::commit_public_user_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [], + "kind": "struct", + "path": "Train::constructor_parameters" + } + } + ], + "kind": "struct", + "path": "Train::constructor_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "key", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::get_htlc_public_parameters" + } + }, + { + "name": "return_type", + "type": { + "fields": [ + { + "name": "src_receiver", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "claimed", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + ], + "kind": "struct", + "path": "Train::HTLC_Public" + } + } + ], + "kind": "struct", + "path": "Train::get_htlc_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::is_contract_initialized_parameters" + } + }, + { + "name": "return_type", + "type": { + "kind": "boolean" + } + } + ], + "kind": "struct", + "path": "Train::is_contract_initialized_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "hashlock_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_hash_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "randomness", + "type": { + "kind": "field" + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + } + ], + "kind": "struct", + "path": "Train::lock_private_solver_parameters" + } + } + ], + "kind": "struct", + "path": "Train::lock_private_solver_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "ownership_hash", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "amount", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "token", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + } + }, + { + "name": "src_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_chain", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_asset", + "type": { + "kind": "string", + "length": 30 + } + }, + { + "name": "dst_address", + "type": { + "kind": "string", + "length": 90 + } + } + ], + "kind": "struct", + "path": "Train::lock_public_solver_parameters" + } + } + ], + "kind": "struct", + "path": "Train::lock_public_solver_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "message_ciphertext", + "type": { + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 17, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" + } + }, + { + "name": "message_context", + "type": { + "fields": [ + { + "name": "tx_hash", + "type": { + "kind": "field" + } + }, + { + "name": "unique_note_hashes_in_tx", + "type": { + "fields": [ + { + "name": "storage", + "type": { + "kind": "array", + "length": 64, + "type": { + "kind": "field" + } + } + }, + { + "name": "len", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" + } + }, + { + "name": "first_nullifier_in_tx", + "type": { + "kind": "field" + } + }, + { + "name": "recipient", + "type": { + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" + } + } + ], + "kind": "struct", + "path": "aztec::messages::processing::message_context::MessageContext" + } + } + ], + "kind": "struct", + "path": "Train::process_message_parameters" + } + } + ], + "kind": "struct", + "path": "Train::process_message_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "secret_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "secret_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_key_high", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + }, + { + "name": "ownership_key_low", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 128 + } + } + ], + "kind": "struct", + "path": "Train::redeem_private_parameters" + } + } + ], + "kind": "struct", + "path": "Train::redeem_private_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + }, + { + "name": "secret", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + }, + { + "name": "ownership_key", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + } + } + ], + "kind": "struct", + "path": "Train::redeem_public_parameters" + } + } + ], + "kind": "struct", + "path": "Train::redeem_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::refund_private_parameters" + } + } + ], + "kind": "struct", + "path": "Train::refund_private_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [ + { + "name": "Id", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "Train::refund_public_parameters" + } + } + ], + "kind": "struct", + "path": "Train::refund_public_abi" + }, + { + "fields": [ + { + "name": "parameters", + "type": { + "fields": [], + "kind": "struct", + "path": "Train::sync_private_state_parameters" + } + } + ], + "kind": "struct", + "path": "Train::sync_private_state_abi" + } + ] + } + }, + "file_map": { + "101": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", + "source": "use crate::{\n macros::{\n authwits::AUTHWIT_TYPES,\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::{generate_note_export, NOTES},\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n },\n messages::discovery::private_notes::MAX_NOTE_PACKED_LEN,\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n let contract_library_method_compute_note_hash_and_nullifier =\n generate_contract_library_method_compute_note_hash_and_nullifier();\n let note_exports = generate_note_exports();\n let public_dispatch = generate_public_dispatch(m);\n let sync_private_state = generate_sync_private_state();\n let process_message = generate_process_message();\n generate_authwit_exports();\n\n quote {\n $note_exports\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n let notes = NOTES.entries();\n\n if notes.len() > 0 {\n let max_note_packed_len = notes.fold(\n 0,\n |acc, (_, (_, len, _, _)): (Type, (TypeDefinition, u32, Field, [(Quoted, u32, bool)]))| {\n if len > acc {\n len\n } else {\n acc\n }\n },\n );\n\n if max_note_packed_len > MAX_NOTE_PACKED_LEN {\n panic(\n f\"One of the notes has packed len {max_note_packed_len} but the maximum is {MAX_NOTE_PACKED_LEN}\",\n );\n }\n\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..notes.len() {\n let (typ, (_, packed_note_length, _, _)) = notes[i];\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable<_> },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret it's raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = $packed_note_length;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_authwit_exports() {\n let authwits = AUTHWIT_TYPES.values();\n authwits.for_each(|(s): TypeDefinition| { s.add_attribute(\"abi(authwits)\"); });\n}\n\ncomptime fn generate_note_exports() -> Quoted {\n let notes = NOTES.values();\n // Second value in each tuple is `note_packed_len` and that is ignored here because it's only used when\n // generating partial note helper functions.\n notes\n .map(|(s, _, note_type_id, fields): (TypeDefinition, u32, Field, [(Quoted, u32, bool)])| {\n generate_note_export(s, note_type_id, fields)\n })\n .join(quote {})\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" + }, + "102": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", + "source": "use super::utils::{compute_fn_selector, size_in_fields};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let mut parameters_size = 0;\n for param in parameters {\n parameters_size += size_in_fields(param.1);\n }\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $parameters_size] = dep::aztec::context::public_context::calldata_copy(1, $parameters_size);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[public]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" + }, + "105": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", + "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n size_in_fields,\n};\nuse std::meta::{type_of, unquote};\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n let is_void = f.return_type() == type_of(());\n\n if is_fn_private(f) {\n if is_static_call {\n if is_void {\n create_private_static_void_stub(f)\n } else {\n create_private_static_stub(f)\n }\n } else {\n if is_void {\n create_private_void_stub(f)\n } else {\n create_private_stub(f)\n }\n }\n } else if is_fn_public(f) {\n if is_static_call {\n if is_void {\n create_public_static_void_stub(f)\n } else {\n create_public_static_stub(f)\n }\n } else {\n if is_void {\n create_public_void_stub(f)\n } else {\n create_public_stub(f)\n }\n }\n } else {\n if is_void {\n create_utility_void_stub(f)\n } else {\n create_utility_stub(f)\n }\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_private_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" + }, + "106": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" + }, + "109": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", + "source": "use crate::macros::{\n functions::{abi_export::create_fn_abi_export, call_interface_stubs::stub_fn, stub_registry},\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_noinitcheck, get_fn_visibility, is_fn_contract_library_method,\n is_fn_initializer, is_fn_internal, is_fn_private, is_fn_public, is_fn_test, is_fn_utility,\n is_fn_view, modify_fn_body, module_has_initializer, module_has_storage,\n },\n};\nuse protocol_types::meta::generate_serialize_to_fields;\nuse std::meta::type_of;\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[private] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n let to_prepend = quote {\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n\n fn_abi\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[public] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n let args_len = original_params\n .map(|(name, typ): (Quoted, Type)| {\n generate_serialize_to_fields(name, typ, false).0.len()\n })\n .fold(0, |acc: u32, val: u32| acc + val);\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len] = dep::aztec::context::public_context::calldata_copy(1, $args_len);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n\n fn_abi\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Check if function is marked as unconstrained\n if !f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[utility] but not marked as unconstrained, add unconstrained keyword\",\n );\n }\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // Inject context creation, storage initialization, and message discovery call at the beginning of the function\n // body.\n let to_prepend = quote {\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n\n fn_abi\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call == true, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + }, + "111": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", + "source": "use crate::{macros::utils::AsStrQuote, note::note_getter_options::PropertySelector};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse protocol_types::meta::{derive_packable_and_get_packed_len, generate_serialize_to_fields};\nuse std::{\n collections::umap::UHashMap,\n hash::{BuildHasherDefault, Hash, Hasher},\n meta::{type_of, unquote},\n};\n\n/// A map from note type to (note_struct_definition, note_packed_len, note_type_id, fields).\n/// `fields` is an array of tuples where each tuple contains the name of the field/struct member (e.g. `amount`\n/// in `TokenNote`), the index of where the packed member starts in the packed note and a flag indicating\n/// whether the field is nullable or not.\npub comptime mut global NOTES: UHashMap> =\n UHashMap::default();\n\npub comptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < 128 as u32,\n \"A contract can contain at most 128 different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates a quote that implements `Packable` for a given struct `s`.\n/// If the note struct already implements `Packable`, we return an empty quote.\ncomptime fn derive_packable_if_not_implemented_and_get_len(s: TypeDefinition) -> (Quoted, u32) {\n // We try to get the packed length of the note struct. If it does not implement `Packable`, we get Option::none()\n let packed_len_typ = std::meta::typ::fresh_type_variable();\n // We don't care about the result of the implements check. We just want the get the packed length.\n let _ = s.as_type().implements(\n quote { crate::protocol_types::traits::Packable<$packed_len_typ> }.as_trait_constraint(),\n );\n let maybe_packed_length = packed_len_typ.as_constant();\n\n if maybe_packed_length.is_some() {\n // We got some packed length meaning that the note struct implements `Packable`. For this reason we return\n // an empty quote for the implementation and the packed length.\n (quote {}, maybe_packed_length.unwrap())\n } else {\n // We didn't manage to get the packed length which means the note struct doesn't implement `Packable`\n // so we derive it and return it along with the packed length.\n derive_packable_and_get_packed_len(s)\n }\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_interface(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::utils::arrays::array_concat(aztec::protocol_types::traits::Packable::pack(self), [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::prelude::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates note export for a given note struct `s`. The export is a global variable that contains note type id,\n/// note name and information about note fields (field name, index and whether the field is nullable or not).\n///\n/// Example:\n/// ```\n/// struct TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField,\n/// owner: aztec::note::note_field::NoteField\n/// }\n///\n/// #[abi(notes)]\n/// global TokenNote_EXPORTS_5695262104: (Field, str<8>, TokenNoteFields_5695262104) = (\n/// 0,\n/// \"TokenNote\",\n/// TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField { index: 0, nullable: false },\n/// owner: aztec::note::note_field::NoteField { index: 1, nullable: false }\n/// }\n/// );\n///\n/// Randomly looking value at the end of the export name is generated by hashing the note struct type and is included\n/// to prevent naming collisions in case there are multiple notes with the same name imported in a contract.\npub(crate) comptime fn generate_note_export(\n s: TypeDefinition,\n note_type_id: Field,\n fields: [(Quoted, u32, bool)],\n) -> Quoted {\n let name = s.name();\n let mut hasher = Poseidon2Hasher::default();\n s.as_type().hash(&mut hasher);\n let hash = hasher.finish() as u32;\n let global_export_name = f\"{name}_EXPORTS_{hash}\".quoted_contents();\n let note_fields_name = f\"{name}Fields_{hash}\".quoted_contents();\n let (note_name_as_str, _) = name.as_str_quote();\n let note_name_str_len = unquote!(quote { $note_name_as_str.as_bytes().len() });\n\n let mut note_fields = &[];\n let mut note_field_constructors = &[];\n for field in fields {\n let (name, index, nullable) = field;\n note_fields = note_fields.push_back(quote { $name: aztec::note::note_field::NoteField });\n note_field_constructors = note_field_constructors.push_back(\n quote { $name: aztec::note::note_field::NoteField { index: $index, nullable: $nullable }},\n );\n }\n\n let note_fields = note_fields.join(quote {,});\n let note_field_constructors = note_field_constructors.join(quote {,});\n\n quote {\n pub struct $note_fields_name {\n pub $note_fields\n }\n\n #[abi(notes)]\n global $global_export_name: (Field, str<$note_name_str_len>, $note_fields_name) = ($note_type_id, $note_name_as_str, $note_fields_name { $note_field_constructors });\n }\n}\n\n/// Registers a note struct `note` with the given `note_packed_len`, `note_type_id`, `fixed_fields` and\n/// `nullable_fields` in the global `NOTES` map.\ncomptime fn register_note(\n note: TypeDefinition,\n note_packed_len: u32,\n note_type_id: Field,\n fixed_fields: [(Quoted, Type, u32)],\n nullable_fields: [(Quoted, Type, u32)],\n) {\n let mut fields = &[];\n for field in fixed_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, false));\n }\n for field in nullable_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, true));\n }\n\n NOTES.insert(note.as_type(), (note, note_packed_len, note_type_id, fields));\n}\n\n/// Separates note struct members into fixed and nullable ones. It also stores the index of where each struct member\n/// starts in the serialized note. Note that each struct member can occupy multiple fields (as in Field type).\ncomptime fn index_note_fields(\n s: TypeDefinition,\n nullable_fields: [Quoted],\n) -> ([(Quoted, Type, u32)], [(Quoted, Type, u32)]) {\n let mut indexed_fixed_fields: [(Quoted, Type, u32)] = &[];\n let mut indexed_nullable_fields = &[];\n let mut counter: u32 = 0;\n for field in s.fields_as_written() {\n let (name, typ, _) = field;\n if nullable_fields.all(|field| field != name) {\n indexed_fixed_fields = indexed_fixed_fields.push_back((name, typ, counter));\n } else {\n indexed_nullable_fields = indexed_nullable_fields.push_back((name, typ, counter));\n }\n let (serialization_fields, _) = generate_serialize_to_fields(name, typ, true);\n // Each struct member can occupy multiple fields so we need to increment the counter accordingly\n counter += serialization_fields.len();\n }\n (indexed_fixed_fields, indexed_nullable_fields)\n}\n\n/// Generates the following:\n/// - NoteTypeProperties\n/// - NoteType trait implementation\n/// - NoteHash trait implementation\n/// - Packable implementation\n///\n/// Registers the note in the global `NOTES` map.\n///\n/// For more details on the generated code, see the individual functions.\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_interface_impl = generate_note_interface(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n quote {\n $note_properties\n $note_interface_impl\n $note_hash_impl\n $packable_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - Packable implementation: Enables serialization/deserialization of the note\n///\n/// # Registration\n/// Registers the note in the global `NOTES` map with:\n/// - Note type ID\n/// - Packed length\n/// - Field indices and nullability\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n let note_type_id = get_next_note_type_id();\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n let note_properties = generate_note_properties(s);\n let note_interface_impl = generate_note_interface(s, note_type_id);\n\n quote {\n $note_properties\n $note_interface_impl\n $packable_impl\n }\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n assert(\n has_owner,\n \"Note must have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" + }, + "112": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", + "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields =\n storage_layout_fields.push_back(quote { pub $name: dep::aztec::prelude::Storable });\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::prelude::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" + }, + "114": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", + "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" + }, + "115": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", + "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" + }, + "116": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", + "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" + }, + "117": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", + "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n prelude::AztecAddress,\n utils::array,\n};\nuse protocol_types::{\n constants::GENERATOR_INDEX__EVENT_COMMITMENT, hash::poseidon2_hash_with_separator_bounded_vec,\n traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private_log` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" + }, + "118": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", + "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" + }, + "119": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", + "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" + }, + "12": { + "path": "std/convert.nr", + "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n quote { Field },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n impls.join(quote {})\n}\n" + }, + "120": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", + "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" + }, + "121": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", + "source": "use dep::protocol_types::{\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n prelude::AztecAddress,\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign, point_to_bytes},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> [u8; 32] {\n let rand1: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY,\n );\n let rand2: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY_2,\n );\n let rand1_bytes: [u8; 16] = rand1.to_le_bytes();\n let rand2_bytes: [u8; 16] = rand2.to_le_bytes();\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n bytes[i] = rand1_bytes[i];\n bytes[i + 1] = rand2_bytes[i];\n }\n bytes\n}\n\n// TODO(#10537): Consider nuking this function.\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> [u8; 32] {\n let shared_secret_bytes: [u8; 32] = point_to_bytes(shared_secret);\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret_bytes.len() {\n shared_secret_bytes_with_separator[i] = shared_secret_bytes[i];\n }\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256::digest(shared_secret_bytes_with_separator)\n}\n\nfn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret: Point,\n randomness_extraction_fn: fn(Point) -> [u8; 32],\n) -> ([u8; 16], [u8; 16]) {\n let random_256_bits = randomness_extraction_fn(shared_secret);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n (sym_key, iv)\n}\n\n// TODO(#10537): Consider nuking this function.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256,\n )\n}\n\n// TODO(#10537): This function is currently unused. Consider using it instead of the sha256 one.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2,\n )\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PLAINTEXT_LEN],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, iv, sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PLAINTEXT_LEN * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n // TODO: consider nuking the header altogether and just have a fixed-size ciphertext by padding the plaintext.\n // This would be more costly constraint-wise but cheaper DA-wise.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // TODO: this is insecure and wasteful:\n // \"Insecure\", because the esk shouldn't be used twice (once for the header,\n // and again for the proper ciphertext) (at least, I never got the\n // \"go ahead\" that this would be safe, unfortunately).\n // \"Wasteful\", because the exact same computation is happening further down.\n // I'm leaving that 2nd computation where it is, because this 1st computation\n // will be imminently deleted, when the header logic is deleted.\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, iv, sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret and symmetric key\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext = aes128_decrypt_oracle(header_ciphertext_bvec, iv, sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, iv, sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let mut env = TestEnvironment::new();\n // Advance 1 block so we can read historic state from private\n env.advance_block_by(1);\n\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"getSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(decrypted, plaintext_bvec, \"Decrypted bytes should match original plaintext\");\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n }\n}\n" + }, + "128": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", + "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PRIVATE_NOTE_MSG_TYPE_ID,\n )\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content: [Field; N + 1] = std::mem::zeroed();\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, sender, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient, sender);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" + }, + "129": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", + "source": "use crate::{\n oracle::notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n prelude::AztecAddress,\n};\n\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(indexed_tagging_secret);\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, sender, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" + }, + "137": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", + "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" + }, + "142": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", + "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" + }, + "144": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", + "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" + }, + "147": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" + }, + "150": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", + "source": "use protocol_types::traits::Serialize;\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" + }, + "152": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr", + "source": "use crate::{note::note_metadata::NoteMetadata, utils::array::subarray::subarray};\nuse protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n};\n\n// Number of fields a RetrievedNote adds to the packed or serialized representation of a note\n// +1 for the contract address\n// +2 for the note metadata\npub global RETRIEVED_NOTE_OVERHEAD: u32 = 1 + 2;\n\n/// A container of a note and the metadata required to prove its existence, regardless of whether the note is\n/// pending (created in the current transaction) or settled (created in a previous transaction).\n#[derive(Eq)]\npub struct RetrievedNote {\n pub note: NOTE,\n pub contract_address: AztecAddress,\n pub metadata: NoteMetadata,\n}\n\nimpl Serialize for RetrievedNote\nwhere\n NOTE: Serialize,\n{\n fn serialize(self) -> [Field; N + RETRIEVED_NOTE_OVERHEAD] {\n array_concat(\n array_concat(self.note.serialize(), [self.contract_address.to_field()]),\n self.metadata.serialize(),\n )\n }\n}\n\n// This function is not part of the Packable trait implementation because in the case of the retrieved note, the pack\n// functionality resides in TS (oracle.ts and txe_service.ts).\npub fn unpack_retrieved_note(\n packed_retrieved_note: [Field; N + RETRIEVED_NOTE_OVERHEAD],\n) -> RetrievedNote\nwhere\n NOTE: Packable,\n{\n let contract_address = AztecAddress::from_field(packed_retrieved_note[0]);\n let note_nonce = packed_retrieved_note[1];\n let nonzero_note_hash_counter = (packed_retrieved_note[2] as u1) != 0;\n\n let packed_note = subarray(packed_retrieved_note, RETRIEVED_NOTE_OVERHEAD);\n let note = NOTE::unpack(packed_note);\n\n RetrievedNote {\n note,\n contract_address,\n metadata: NoteMetadata::from_raw_data(nonzero_note_hash_counter, note_nonce),\n }\n}\n" + }, + "153": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullify(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullify_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullify`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullify_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify = compute_note_hash_for_nullify(retrieved_note, storage_slot);\n let inner_nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" + }, + "157": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + }, + "158": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", + "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle::(contract_address, slot, N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(storeCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(loadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(deleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(copyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n unconstrained fn setup() -> AztecAddress {\n let env = TestEnvironment::new();\n env.contract_address()\n }\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let contract_address = setup();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let contract_address = setup();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let contract_address = setup();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let contract_address = setup();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let contract_address = setup();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let contract_address = setup();\n\n copy(contract_address, SLOT, SLOT, 1);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n }\n}\n" + }, + "159": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(notifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" + }, + "16": { + "path": "std/embedded_curve_ops.nr", + "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2)[0]\n}\n" + }, + "160": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" + }, + "161": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", + "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(storeInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(loadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" + }, + "162": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", + "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" + }, + "166": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", + "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" + }, + "167": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", + "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" + }, + "168": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" + }, + "17": { + "path": "std/field/bn254.nr", + "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n" + }, + "170": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", + "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(fetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(validateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(bulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" + }, + "172": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", + "source": "use crate::note::{\n note_interface::NoteType,\n retrieved_note::{RETRIEVED_NOTE_OVERHEAD, RetrievedNote, unpack_retrieved_note},\n};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(notifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> {}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MAX_NOTES]\nwhere\n Note: NoteType + Packable,\n{\n // N + 3 because of the contract address, note nonce, and note_hash_counter that are stored out of the packed note.\n let packed_retrieved_notes: BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> = get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MAX_NOTES,\n NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD,\n );\n\n let mut notes = BoundedVec::<_, MAX_NOTES>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = unpack_retrieved_note(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MAX_NOTES];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n" + }, + "174": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", + "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" + }, + "175": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", + "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(getSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" + }, + "177": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", + "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" + }, + "179": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", + "source": "use crate::state_vars::storage::Storage;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because nothing is stored at said slot: it is only\n// used to derive the storage slots of nested state variables, which is expected to never result in collisions or slots\n// being close to one another due to these being hashes. This mirrors the strategy adopted by Solidity mappings.\nimpl Storage<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" + }, + "18": { + "path": "std/field/mod.nr", + "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" + }, + "181": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", + "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl Storage<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" + }, + "190": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable.nr", + "source": "use dep::protocol_types::{\n shared_mutable::{\n ScheduledDelayChange,\n ScheduledValueChange,\n shared_mutable_values::{unpack_delay_change, unpack_value_change},\n SharedMutableValues,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::Storage,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct SharedMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl Storage for SharedMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// SharedMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl SharedMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(\n self,\n new_value: T,\n ) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`SharedMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private shared mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(SharedMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let timestamp_horizon =\n value_change.get_timestamp_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the timestamp horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(timestamp_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: SharedMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let smv: SharedMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n smv.svc.get_current_at(current_timestamp)\n }\n}\n" + }, + "202": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", + "source": "/// Appends two `BoundedVec`s together, returning one that contains all of the elements of the first one followed by all\n/// of the elements of the second one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" + }, + "205": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", + "source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(\n src: [T; SRC_LEN],\n offset: u32,\n) -> [T; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"DST_LEN too large for offset\");\n\n let mut dst: [T; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + }, + "206": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", + "source": "use crate::utils::array;\n\n/// Returns `DST_MAX_LEN` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DST_LEN` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DST_LEN` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" + }, + "208": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", + "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" + }, + "209": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", + "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" + }, + "211": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", + "source": "use std::option::Option;\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\npub unconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\n// Returns (false, 0) if there is no square root.\n// Returns (true, sqrt) if there is a square root.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nfn test_sqrt() {\n let x = 9;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_some());\n let sqrt = maybe_sqrt.unwrap_unchecked();\n assert((sqrt == 3) | (sqrt == -3));\n}\n\n#[test]\nfn test_non_square() {\n let x = 5;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_none());\n}\n\n#[test]\nunconstrained fn test_known_non_residue_is_actually_a_non_residue_in_the_field() {\n assert(!is_square(KNOWN_NON_RESIDUE));\n}\n\n#[test]\nfn test_sqrt_0() {\n let x = 0;\n let sqrt = sqrt(x).unwrap();\n assert(sqrt == 0);\n}\n\n#[test]\nfn test_sqrt_1() {\n let x = 1;\n let sqrt = sqrt(x).unwrap();\n assert((sqrt == 1) | (sqrt == -1));\n}\n\n#[test(should_fail_with = \"The claimed_sqrt 0x04 is not the sqrt of x 0x09\")]\nfn test_bad_sqrt_hint_fails() {\n validate_sqrt_hint(9, 4);\n}\n\n#[test(should_fail_with = \"The hint 0x04 does not demonstrate that 0x0a is not a square\")]\nfn test_bad_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(10, 4);\n}\n\n#[test(should_fail_with = \"0 has a square root; you cannot claim it is not square\")]\nfn test_0_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test]\nunconstrained fn test_is_square() {\n assert(is_square(25));\n}\n\n#[test]\nunconstrained fn test_is_not_square() {\n assert(!is_square(10));\n}\n" + }, + "213": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", + "source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\n/// Uses the x coordinate and sign flag (+/-) to reconstruct the point.\n/// The y coordinate can be derived from the x coordinate and the \"sign\" flag by solving the grumpkin curve\n/// equation for y.\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n\n // If y > MOD_DIV_2 and we want positive sign (or vice versa), negate y\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n\n Point { x, y: final_y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign);\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2);\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n}\n" + }, + "214": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", + "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" + }, + "218": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", + "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `N` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `N`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; N],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + N as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n for i in 0..N {\n result[i] = self.packed[i];\n }\n result[N] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; N + 1]) -> Self {\n let mut value_packed: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_packed[i] = packed[i];\n }\n let hash = packed[N];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n oracle::random::random,\n test::{\n helpers::{cheatcodes, test_environment::TestEnvironment},\n mocks::mock_struct::MockStruct,\n },\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::{mem, test::OracleMock};\n\n global storage_slot: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n let result = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n\n // We should get zeroed value\n let expected: MockStruct = mem::zeroed();\n assert_eq(result, expected);\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n // We write the value with hash to storage\n cheatcodes::direct_storage_write(\n env.contract_address(),\n storage_slot,\n value_with_hash.pack(),\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let result = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n\n assert_eq(result, value);\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn test_bad_hint_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n env.advance_block_to(6);\n\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let _ = OracleMock::mock(\"storageRead\")\n .with_params((\n address.to_field(), storage_slot, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should revert because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn test_bad_hint_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value_packed = MockStruct { a: 5, b: 3 }.pack();\n\n // We write the value to storage\n cheatcodes::direct_storage_write(env.contract_address(), storage_slot, value_packed);\n\n // Now we write incorrect hash to the hash storage slot\n let incorrect_hash = random();\n let hash_storage_slot = storage_slot + (value_packed.len() as Field);\n cheatcodes::direct_storage_write(\n env.contract_address(),\n hash_storage_slot,\n [incorrect_hash],\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let _ = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n }\n}\n" + }, + "225": { + "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", + "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" + }, + "243": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", + "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\n\npub struct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n pub inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" + }, + "286": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", + "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n" + }, + "3": { + "path": "std/array/mod.nr", + "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" + }, + "301": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", + "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Empty, Hash},\n};\n\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Eq for PublicDataTreeLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.slot == other.slot)\n & (self.value == other.value)\n & (self.next_slot == other.next_slot)\n & (self.next_index == other.next_index)\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: u32) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" + }, + "303": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", + "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" + }, + "304": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", + "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::{arrays::array_concat, field::{field_from_bytes, field_from_bytes_32_trunc}},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a u128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" + }, + "305": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", + "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" + }, + "314": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", + "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" + }, + "318": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", + "source": "use super::traits::{Deserialize, Packable, Serialize};\n\n/// Returns the typed expression of a trait method implementation.\n///\n/// This helper function is preferred over directly inlining with `$typ::target_method()` in a quote,\n/// as direct inlining would result in missing import warnings in the generated code (specifically,\n/// warnings that the trait implementation is not in scope).\n///\n/// # Note\n/// A copy of this function exists in `aztec-nr/aztec/src/macros/utils.nr`. We maintain separate copies\n/// because importing it there from here would cause the `target_trait` to be interpreted in the context\n/// of this crate, making it impossible to compile code for traits from that crate (e.g. NoteType).\ncomptime fn get_trait_impl_method(\n typ: Type,\n target_trait: Quoted,\n target_method: Quoted,\n) -> TypedExpr {\n let trait_constraint = target_trait.as_trait_constraint();\n typ\n .get_trait_impl(trait_constraint)\n .expect(f\"Could not find impl for {target_trait} for type {typ}\")\n .methods()\n .filter(|m| m.name() == target_method)[0]\n .as_typed_expr()\n}\n\n/// Generates code that deserializes a struct, primitive type, array or string from a field array.\n///\n/// # Parameters\n/// - `name`: The name of the current field being processed, used to identify fields for replacement.\n/// - `typ`: The type of the struct or field being deserialized (e.g., a custom struct, array, or primitive).\n/// - `field_array_name`: The name of the field array containing serialized field data (e.g., `\"values\"`).\n/// - `num_already_consumed`: The number of fields already processed in previous recursion calls.\n/// - `should_unpack`: A boolean indicating whether the type should be unpacked (see description of `Packable`\n/// and `Serialize` trait for more information about the difference between packing and serialization).\n///\n/// # Returns\n/// A tuple containing:\n/// - `Quoted`: A code that deserializes a given struct, primitive type, array, or string from the field array.\n/// - `u32`: The total number of fields consumed during deserialization (used for recursion).\n///\n/// # Nested Struct Example\n/// Given the following setup:\n/// ```\n/// struct UintNote {\n/// value: u128,\n/// owner: AztecAddress,\n/// randomness: Field,\n/// }\n///\n/// struct AztecAddress {\n/// inner: Field,\n/// }\n/// ```\n///\n/// If `UintNote` is the input type, the function will generate the following deserialization code:\n/// ```\n/// UintNote {\n/// value: fields[0] as u128,\n/// owner: AztecAddress {\n/// inner: fields[1],\n/// },\n/// randomness: fields[2],\n/// }\n/// ```\n/// # Nested Struct Example with Unpacking\n/// - given the same setup as above and given that u128, AztecAddress and Field implement the `Packable` trait\n/// the result we get is:\n/// ```\n/// UintNote {\n/// value: aztec::protocol_types::traits::Packable::unpack([fields[0]]),\n/// owner: aztec::protocol_types::traits::Packable::unpack([fields[1]]),\n/// randomness: aztec::protocol_types::traits::Packable::unpack([fields[2]]),\n/// }\n/// ```\n///\n/// # Panics\n/// - If the deserialization logic encounters a type it does not support.\n/// - If an incorrect number of fields are consumed when deserializing a string.\npub comptime fn generate_deserialize_from_fields(\n name: Quoted,\n typ: Type,\n field_array_name: Quoted,\n num_already_consumed: u32,\n should_unpack: bool,\n) -> (Quoted, u32) {\n let mut result = quote {};\n // Counter for the number of fields consumed\n let mut consumed_counter: u32 = 0;\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint = quote { Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_unpack & typ.implements(packable_constraint)) {\n // Unpacking is enabled and the given type implements the `Packable` trait so we call the `unpack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We copy the packed fields into a new array and pass that to the unpack function in a quote\n let mut packed_fields_quotes = &[];\n for i in 0..packed_len {\n let index_in_field_array = i + num_already_consumed;\n packed_fields_quotes =\n packed_fields_quotes.push_back(quote { $field_array_name[$index_in_field_array] });\n }\n let packed_fields = packed_fields_quotes.join(quote {,});\n\n // Now we call unpack on the type\n let unpack_method = get_trait_impl_method(typ, quote { Packable<_> }, quote { unpack });\n result = quote { $unpack_method([ $packed_fields ]) };\n\n consumed_counter = packed_len;\n } else if typ.is_bool() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] != 0 };\n consumed_counter = 1;\n } else if typ.is_field() | typ.as_integer().is_some() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] as $typ };\n consumed_counter = 1;\n } else if typ.as_data_type().is_some() {\n // The field is a struct so we iterate over each struct field and recursively call\n // `generate_deserialize_from_fields`\n let (nested_def, generics) = typ.as_data_type().unwrap();\n let nested_name = nested_def.name();\n let mut deserialized_fields_list = &[];\n\n // Iterate over each field in the struct\n for field in nested_def.fields(generics) {\n let (field_name, field_type, _) = field;\n // Recursively call `generate_deserialize_from_fields` for each field in the struct\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n field_name,\n field_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `value: u128 { lo: fields[0], hi: fields[1] }`\n deserialized_fields_list =\n deserialized_fields_list.push_back(quote { $field_name: $deserialized_field });\n }\n\n // We can construct the struct from the deserialized fields\n let deserialized_fields = deserialized_fields_list.join(quote {,});\n result = quote {\n $nested_name {\n $deserialized_fields\n }\n };\n } else if typ.as_array().is_some() {\n // The field is an array so we iterate over each element and recursively call\n // `generate_deserialize_from_fields`\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n let mut array_fields_list = &[];\n\n // Iterate over each element in the array\n for _ in 0..array_len {\n // Recursively call `generate_deserialize_from_fields` for each element in the array\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n element_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n array_fields_list = array_fields_list.push_back(deserialized_field);\n }\n\n // We can construct the array from the deserialized fields\n let array_fields = array_fields_list.join(quote {,});\n result = quote { [ $array_fields ] };\n } else if typ.as_str().is_some() {\n // The field is a string and we expect each byte of the string to be represented as 1 field in the field\n // array. So we iterate over the string length and deserialize each character as u8 in the recursive call\n // to `generate_deserialize_from_fields`.\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let mut byte_list = &[];\n\n // Iterate over each character in the string\n for _ in 0..str_len {\n // Recursively call `generate_deserialize_from_fields` for each character in the string\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n quote {u8}.as_type(),\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n\n // We should consume just one field in the recursion so we sanity check that\n assert_eq(\n num_consumed_in_recursion,\n 1,\n \"Incorrect number of fields consumed in string deserialization\",\n );\n\n // We increment the consumed counter by 1 as we have consumed one field\n consumed_counter += 1;\n\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `fields[6] as u8`\n byte_list = byte_list.push_back(deserialized_field);\n }\n\n // We construct the string from the deserialized fields\n let bytes = byte_list.join(quote {,});\n result = quote { [ $bytes ].as_str_unchecked() };\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (result, consumed_counter)\n}\n\n/// Generates code that serializes a type into an array of fields. Also generates auxiliary variables if necessary\n/// for serialization. If `should_pack` is true, we check if the type implements the `Packable` trait and pack it\n/// if it does.\n///\n/// # Parameters\n/// - `name`: The base identifier (e.g., `self`, `some_var`).\n/// - `typ`: The type being serialized (e.g., a custom struct, array, or primitive type).\n/// - `should_pack`: A boolean indicating whether the type should be packed.\n///\n/// # Returns\n/// A tuple containing:\n/// - A flattened array of `Quoted` field references representing the serialized fields.\n/// - An array of `Quoted` auxiliary variables needed for serialization, such as byte arrays for strings.\n///\n/// # Examples\n///\n/// ## Struct\n/// Given the following struct:\n/// ```rust\n/// struct MockStruct {\n/// a: Field,\n/// b: Field,\n/// }\n/// ```\n///\n/// Serializing the struct:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_mock_struct }, MockStruct, false)\n/// // Returns:\n/// // ([`my_mock_struct.a`, `my_mock_struct.b`], [])\n/// ```\n///\n/// ## Nested Struct\n/// For a more complex struct:\n/// ```rust\n/// struct NestedStruct {\n/// m1: MockStruct,\n/// m2: MockStruct,\n/// }\n/// ```\n///\n/// Serialization output:\n/// ```rust\n/// generate_serialize_to_fields(quote { self }, NestedStruct, false)\n/// // Returns:\n/// // ([`self.m1.a`, `self.m1.b`, `self.m2.a`, `self.m2.b`], [])\n/// ```\n///\n/// ## Array\n/// For an array type:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_array }, [Field; 3], false)\n/// // Returns:\n/// // ([`my_array[0]`, `my_array[1]`, `my_array[2]`], [])\n/// ```\n///\n/// ## String\n/// For a string field, where each character is serialized as a `Field`:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_string }, StringType, false)\n/// // Returns:\n/// // ([`my_string_as_bytes[0] as Field`, `my_string_as_bytes[1] as Field`, ...],\n/// // [`let my_string_as_bytes = my_string.as_bytes()`])\n/// ```\n///\n/// ## Nested Struct with packing enabled\n/// - u128 has a `Packable` implementation hence it will be packed.\n///\n/// For a more complex struct:\n/// ```rust\n/// struct MyStruct {\n/// value: u128,\n/// value2: Field,\n/// }\n/// ```\n///\n/// # Panics\n/// - If the type is unsupported for serialization.\n/// - If the provided `typ` contains invalid constants or incompatible structures.\npub comptime fn generate_serialize_to_fields(\n name: Quoted,\n typ: Type,\n should_pack: bool,\n) -> ([Quoted], [Quoted]) {\n let mut fields = &[];\n let mut aux_vars = &[];\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint =\n quote { crate::traits::Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_pack & typ.implements(packable_constraint)) {\n // Packing is enabled and the given type implements the `Packable` trait so we call the `pack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We collapse the name to a one that gets tokenized as a single token (e.g. \"self.value\" -> \"self_value\").\n let name_at_one_token = collapse_to_one_token(name);\n let packed_struct_name = f\"{name_at_one_token}_aux_var\".quoted_contents();\n\n // We add the individual fields to the fields array\n let pack_method = get_trait_impl_method(\n typ,\n quote { crate::traits::Packable<$packed_len> },\n quote { pack },\n );\n let packed_struct = quote { let $packed_struct_name = $pack_method($name) };\n for i in 0..packed_len {\n fields = fields.push_back(quote { $packed_struct_name[$i] });\n }\n\n // We add the new auxiliary variable to the aux_vars array\n aux_vars = aux_vars.push_back(packed_struct);\n } else if typ.is_field() {\n // For field we just add the value to fields\n fields = fields.push_back(name);\n } else if typ.as_integer().is_some() | typ.is_bool() {\n // For integer and bool we just cast to Field and add the value to fields\n fields = fields.push_back(quote { $name as Field });\n } else if typ.as_data_type().is_some() {\n // For struct we pref\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n let struct_flattened = params.map(|(param_name, param_type, _)| {\n let maybe_prefixed_name = if name == quote {} {\n // Triggered when the param name is of a value available in the current scope (e.g. a function\n // argument) --> then we don't prefix the name with anything.\n param_name\n } else {\n // Triggered when we want to prefix the param name with the `name` from function input. This\n // can typically be `self` when implementing a method on a struct.\n quote { $name.$param_name }\n };\n generate_serialize_to_fields(quote {$maybe_prefixed_name}, param_type, should_pack)\n });\n let struct_flattened_fields = struct_flattened.fold(\n &[],\n |acc: [Quoted], (fields, _): (_, [Quoted])| acc.append(fields),\n );\n let struct_flattened_aux_vars = struct_flattened.fold(\n &[],\n |acc: [Quoted], (_, aux_vars): ([Quoted], _)| acc.append(aux_vars),\n );\n fields = fields.append(struct_flattened_fields);\n aux_vars = aux_vars.append(struct_flattened_aux_vars);\n } else if typ.as_array().is_some() {\n // For array we recursively call `generate_serialize_to_fields(...)` for each element\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n for i in 0..array_len {\n let (element_fields, element_aux_vars) =\n generate_serialize_to_fields(quote { $name[$i] }, element_type, should_pack);\n fields = fields.append(element_fields);\n aux_vars = aux_vars.append(element_aux_vars);\n }\n } else if typ.as_str().is_some() {\n // For string we convert the value to bytes, we store the `as_bytes` in an auxiliary variables and\n // then we add each byte to fields as a Field\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let as_member = name.as_expr().unwrap().as_member_access();\n let var_name = if as_member.is_some() {\n as_member.unwrap().1\n } else {\n name\n };\n let as_bytes_name = f\"{var_name}_as_bytes\".quoted_contents();\n let as_bytes = quote { let $as_bytes_name = $name.as_bytes() };\n for i in 0..str_len {\n fields = fields.push_back(quote { $as_bytes_name[$i] as Field });\n }\n aux_vars = aux_vars.push_back(as_bytes);\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (fields, aux_vars)\n}\n\n/// From a quote that gets tokenized to a multiple tokens we collapse it to a single token by replacing all `.` with `_`.\n/// E.g. \"self.values[0]\" -> \"self_values_0_\"\ncomptime fn collapse_to_one_token(q: Quoted) -> Quoted {\n let tokens = q.tokens();\n\n let mut single_token = quote {};\n for token in tokens {\n let new_token = if ((token == quote {.}) | (token == quote {[}) | (token == quote {]})) {\n quote {_}\n } else {\n token\n };\n single_token = f\"{single_token}{new_token}\".quoted_contents();\n }\n single_token\n}\n\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, false);\n let aux_vars_for_serialization = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let field_serializations = fields.join(quote {,});\n let serialized_len = fields.len();\n let serialize_trait: TraitConstraint =\n quote { Serialize<$serialized_len> }.as_trait_constraint();\n quote {\n impl $serialize_trait for $typ {\n #[inline_always]\n fn serialize(self) -> [Field; $serialized_len] {\n $aux_vars_for_serialization\n [ $field_serializations ]\n }\n }\n }\n}\n\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, _) = generate_serialize_to_fields(quote { self }, typ, false);\n let serialized_len = fields.len();\n let (deserialized, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { serialized }, 0, false);\n quote {\n impl Deserialize<$serialized_len> for $typ {\n #[inline_always]\n fn deserialize(serialized: [Field; $serialized_len]) -> Self {\n $deserialized\n }\n }\n }\n}\n\n/// Generates `Packable` implementation for a given struct and returns the packed length.\n///\n/// Note: We are having this function separate from `derive_packable` because we use this in the note macros to get\n/// the packed length of a note as well as the `Packable` implementation. We need the length to be able to register\n/// the note in the global `NOTES` map. There the length is used to generate partial note helper functions.\npub comptime fn derive_packable_and_get_packed_len(s: TypeDefinition) -> (Quoted, u32) {\n let packing_enabled = true;\n\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, packing_enabled);\n let aux_vars_for_packing = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let (unpacked, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { packed }, 0, packing_enabled);\n\n let field_packings = fields.join(quote {,});\n let packed_len = fields.len();\n let packable_trait: TraitConstraint = quote { Packable<$packed_len> }.as_trait_constraint();\n (\n quote {\n impl $packable_trait for $typ {\n fn pack(self) -> [Field; $packed_len] {\n $aux_vars_for_packing\n [ $field_packings ]\n }\n\n fn unpack(packed: [Field; $packed_len]) -> Self {\n $unpacked\n }\n }\n },\n packed_len,\n )\n}\n\npub(crate) comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let (packable_impl, _) = derive_packable_and_get_packed_len(s);\n packable_impl\n}\n\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct Smol {\n a: Field,\n b: Field,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct HasArray {\n a: [Field; 2],\n b: bool,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n}\n\nfn main() {\n assert(false);\n}\n\n#[test]\nfn smol_test() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n}\n\n#[test]\nfn has_array_test() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n}\n\n#[test]\nfn fancier_test() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n}\n" + }, + "320": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", + "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n fn pack(self) -> [Field; POINT_LENGTH] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; POINT_LENGTH]) -> Self {\n Self::deserialize(packed)\n }\n}\n" + }, + "321": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", + "source": "use crate::constants::TWO_POW_64;\n\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" + }, + "331": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", + "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] != 0,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] != 0,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] != 0,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] != 0,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n" + }, + "335": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_delay_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_timestamp_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading mutable shared state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" + }, + "337": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_value_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'timestamp horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the timestamp horizon (see `get_timestamp_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the timestamp horizon\n /// computed using the same historical timestamp.\n pub fn get_timestamp_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The timestamp horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the timestamp horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the timestamp horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our timestamp horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp timestamp horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the timestamp horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp timestamp horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical timestamp horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" + }, + "339": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr", + "source": "use crate::{\n hash::poseidon2_hash,\n shared_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// SharedMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct SharedMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl SharedMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n SharedMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * N + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, N + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable<2 * N + 1> for SharedMutableValues\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; 2 * N + 1] {\n let mut result = [0; 2 * N + 1];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; 2 * N + 1]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for SharedMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" + }, + "342": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", + "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" + }, + "356": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", + "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n}\n\nimpl Empty for Option {\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Type Parameters\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// fn serialize(self) -> [Field; N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n #[inline_always]\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// T = type of item in BoundedVec\n// M = max length of BoundedVec\n// O = field length of T\n// O * M + 1 = total serialized length of BoundedVec (the +1 is for length of the BoundedVec)\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n #[inline_always]\n fn deserialize(fields: [Field; O * M + 1]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[O * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; O];\n for j in 0..O {\n nested_fields[j] = fields[i * O + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize<0> for () {\n fn deserialize(_fields: [Field; 0]) -> Self {\n ()\n }\n}\n\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n #[inline_always]\n fn serialize(self) -> [Field; O * M + 1] {\n let mut fields = [0; O * M + 1];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..O {\n fields[i * O + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[O * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Type Parameters\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// fn deserialize(fields: [Field; N]) -> Self {\n/// str::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n #[inline_always]\n fn deserialize(fields: [Field; N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Type Parameters\n/// * `N` - The length of the Field array, known at compile time.\n#[derive_via(derive_packable)]\npub trait Packable {\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" + }, + "361": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", + "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n fn pack(self) -> [Field; BOOL_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; BOOL_PACKED_LEN]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n fn pack(self) -> [Field; U8_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U8_PACKED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n fn pack(self) -> [Field; U16_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U16_PACKED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n fn pack(self) -> [Field; U32_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U32_PACKED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n fn pack(self) -> [Field; U64_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U64_PACKED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n fn pack(self) -> [Field; U128_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U128_PACKED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n fn pack(self) -> [Field; FIELD_PACKED_LEN] {\n [self]\n }\n\n fn unpack(fields: [Field; FIELD_PACKED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n fn pack(self) -> [Field; I8_PACKED_LEN] {\n [self as u8 as Field]\n }\n\n fn unpack(fields: [Field; I8_PACKED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n fn pack(self) -> [Field; I16_PACKED_LEN] {\n [self as u16 as Field]\n }\n\n fn unpack(fields: [Field; I16_PACKED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n fn pack(self) -> [Field; I32_PACKED_LEN] {\n [self as u32 as Field]\n }\n\n fn unpack(fields: [Field; I32_PACKED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n fn pack(self) -> [Field; I64_PACKED_LEN] {\n [self as u64 as Field]\n }\n\n fn unpack(fields: [Field; I64_PACKED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; N]\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].pack();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n\n fn unpack(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" + }, + "362": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", + "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U8_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n fn serialize(self) -> [Field; U16_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n fn deserialize(fields: [Field; U16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n fn serialize(self) -> [Field; U128_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; FIELD_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n fn serialize(self) -> [Field; I8_SERIALIZED_LEN] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n fn deserialize(fields: [Field; I8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n fn serialize(self) -> [Field; I16_SERIALIZED_LEN] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n fn deserialize(fields: [Field; I16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n fn serialize(self) -> [Field; I32_SERIALIZED_LEN] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n fn deserialize(fields: [Field; I32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n fn serialize(self) -> [Field; I64_SERIALIZED_LEN] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n fn deserialize(fields: [Field; I64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; N]\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].serialize();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; N]\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N + 1]) -> Self {\n if fields[0] == 1 {\n let mut value_serialized: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_serialized[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_serialized))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" + }, + "380": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", + "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate. If the element\n// is not found, the function returns N as the index.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays where validate_array(array) returns true,\n// which ensures that:\n// 1. All elements before the first empty element are non-empty\n// 2. All elements after and including the first empty element are empty\n// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn array_concat(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to find the index of the last element in an array, allowing empty elements.\n// e.g. useful for removing trailing 0s from [1, 0, 2, 0, 0, 0] -> [1, 0, 2]\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn find_last_value_index(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut index = N;\n for i in 0..N {\n let j = N - i - 1;\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & !is_empty(array[j]) {\n index = j;\n }\n }\n index\n}\n\n// Routine which returns the length of an array right padded by empty elements\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\n// See smoke_validate_array_trailing for examples.\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn unsafe_padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let index = find_last_value_index(array);\n if index == N {\n 0\n } else {\n index + 1\n }\n}\n\n// Routine which validates that zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\npub fn padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // Safety: this value is constrained in the below loop.\n let length = unsafe { unsafe_padded_array_length(array) };\n // Check the elt just before length is non-zero:\n if length != 0 {\n assert(!is_empty(array[length - 1]), \"invalid right padded array\");\n }\n // Check all beyond length are zero:\n let mut check_zero = false;\n for i in 0..N {\n check_zero |= i == length;\n if check_zero {\n assert(is_empty(array[i]), \"invalid right padded array\");\n }\n }\n length\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test]\nfn smoke_validate_array_trailing() {\n let valid_array: [Field; 0] = [];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [0];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [3];\n assert(padded_array_length(valid_array) == 1);\n\n let valid_array = [1, 0, 3];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 0, 3, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [0, 0, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concatenated = array_concat(array0, array1);\n assert_eq(concatenated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" + }, + "381": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", + "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimised to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" + }, + "383": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", + "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n" + }, + "393": { + "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.1.2/src/sha256.nr", + "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\nmod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n let num_blocks = N / BLOCK_SIZE;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n }\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let (msg_block, _) = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let (new_msg_block, new_msg_byte_ptr) = build_msg_block(msg, message_size, msg_start);\n\n (new_msg_block, new_msg_byte_ptr)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" + }, + "414": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", + "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[custom_note]\n#[derive(Eq, Serialize)]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` from `sender` so that they can\n /// discover the note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n sender: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient, sender);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n array_concat(self.pack(), [storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n array_concat(note_completion_log, padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable},\n utils::arrays::array_concat,\n },\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n let partial_note = PartialUintNote { commitment };\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(\n array_concat(private_log_without_public_tag, public_log_without_tag),\n note.pack(),\n );\n }\n}\n" + }, + "42": { + "path": "std/option.nr", + "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" + }, + "43": { + "path": "std/panic.nr", + "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" + }, + "5": { + "path": "std/cmp.nr", + "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n}\n" + }, + "50": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", + "source": "pub fn bytes_to_u128_limbs(bytes: [u8; 32]) -> (u128, u128) {\n let mut high: u128 = 0;\n let mut low: u128 = 0;\n for i in 0..16 {\n high = (high << 8) + (bytes[i] as u128);\n }\n for i in 16..32 {\n low = (low << 8) + (bytes[i] as u128);\n }\n (high, low)\n}\n\npub fn u128_limbs_to_bytes(high: u128, low: u128) -> [u8; 32] {\n let mut bytes: [u8; 32] = [0; 32];\n\n let mut temp = high;\n for i in 0..16 {\n bytes[15 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n temp = low;\n for i in 0..16 {\n bytes[31 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n bytes\n}\n" + }, + "51": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", + "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n use dep::aztec::messages::logs::note::encode_and_encrypt_note;\n use dep::aztec::protocol_types::traits::{Deserialize, Packable, Serialize};\n use dep::aztec::state_vars::{private_immutable::PrivateImmutable, SharedMutable};\n use dep::sha256;\n use dep::token::Token;\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n use aztec::prelude::{AztecAddress, Map};\n use std::meta::derive;\n\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner, htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(\n htlc_public.src_receiver,\n htlc_public.src_receiver,\n )\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender(), context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(Id: Field) -> bool {\n storage.contracts_private.at(Id).is_initialized()\n }\n\n #[view]\n #[utility]\n unconstrained fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" + }, + "52": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", + "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::prelude::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenCommitted {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable<5> for TokenLockAdded {\n fn pack(self) -> [Field; 5] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; 5]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable<2> for TokenRefunded {\n fn pack(self) -> [Field; 2] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; 2]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable<6> for TokenRedeemed {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenLockedFirst {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable<6> for TokenLockedSecond {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" + }, + "6": { + "path": "std/collections/bounded_vec.nr", + "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n}\n" + }, + "63": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", + "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n use protocol_types::address::AztecAddress;\n\n global SLOT: Field = 1230;\n\n unconstrained fn setup() -> AztecAddress {\n TestEnvironment::new().utility().this_address()\n }\n\n #[test]\n unconstrained fn empty_array() {\n let contract_address = setup();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n }\n\n #[test]\n unconstrained fn array_push() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n }\n\n // TODO: uncomment this test once OracleMock::count is implemented in the stdlib.\n // #[test]\n // unconstrained fn for_each_remove_all_no_copy() {\n // let contract_address = setup();\n // let array = CapsuleArray::at(contract_address, SLOT);\n\n // array.push(4);\n // array.push(5);\n // array.push(6);\n\n // // We test that the copyCapsule was never called, which is the expensive operation we want to avoid.\n // let mock = OracleMock::mock(\"copyCapsule\");\n\n // array.for_each(|index, _| {\n // array.remove(index);\n // });\n\n // assert_eq(mock.count(), 0);\n // }\n}\n" + }, + "64": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{\n gas::GasOpts, private_context::PrivateContext, public_context::PublicContext,\n returns_hash::ReturnsHash,\n};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\nuse crate::test::helpers::cheatcodes;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateVoidCallInterface\n\npub struct PrivateVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticVoidCallInterface\n\npub struct PrivateStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicVoidCallInterface\n\npub struct PublicVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticVoidCallInterface\n\npub struct PublicStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\n// UtilityVoidCallInterface\n\npub struct UtilityVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\npub trait TXEPublicCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPublicCallInterface for PublicCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEPrivateCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPrivateCallInterface for PrivateCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEUtilityCallInterface {\n unconstrained fn call_with_txe(self) -> T;\n}\n\nimpl TXEUtilityCallInterface for UtilityCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n returns\n }\n}\n\nimpl TXEUtilityCallInterface for UtilityVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n returns\n }\n}\n" + }, + "71": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", + "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n include_by_timestamp::IncludeByTimestamp,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::array_concat,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: IncludeByTimestamp,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp =\n IncludeByTimestamp::min_with_u64(self.include_by_timestamp, include_by_timestamp);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n ReturnsHash::new(returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" + }, + "72": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", + "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl PublicContext {\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index) } == 1\n }\n\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n pub fn fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_l2_gas()\n }\n }\n pub fn fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_da_gas()\n }\n }\n\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> u128 {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> u128 {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> Field {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" + }, + "73": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", + "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.hash, 0);\n }\n\n pub fn raw(self) -> Field {\n self.hash\n }\n\n /// This is only used during private execution, since in public it is the VM itself that keeps track of return\n /// values.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n\n Deserialize::deserialize(preimage)\n }\n\n pub fn get_preimage_and_assert_empty(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n assert_eq(self.hash, 0);\n\n Deserialize::deserialize(preimage)\n }\n}\n" + }, + "74": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", + "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" + }, + "77": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", + "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n // TODO(#2707): Consider making this a u64 as we already cast this to that when encoding the message. This would decrease\n // the likelihood of collisions without any extra cost.\n inner: u32,\n}\n\nimpl Eq for EventSelector {\n fn eq(self, other: EventSelector) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl Serialize<1> for EventSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for EventSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" + }, + "79": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/hash.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n" + }, + "91": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", + "source": "use dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n hash::poseidon2_hash_with_separator, utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" + }, + "94": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", + "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ecdh shared secret using the address public key of the given address:\n/// [ephemeral_secret] * recipient_address_public_key = shared_secret.\n/// The intention is that the _creator_ of a shared secret would call this function,\n/// given the address of their intended recipient.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Point {\n derive_ecdh_shared_secret(ephemeral_secret, recipient_address.to_address_point().inner)\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n" + }, + "95": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", + "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" + }, + "96": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", + "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n" + } + } +} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/FPC.ts b/treasury/src/treasury/aztec/FPC.ts new file mode 100644 index 00000000..ff873643 --- /dev/null +++ b/treasury/src/treasury/aztec/FPC.ts @@ -0,0 +1,30 @@ +import { + type ContractInstanceWithAddress, + Fr, + type PXE, + getContractInstanceFromDeployParams, +} from '@aztec/aztec.js'; +import { SPONSORED_FPC_SALT } from '@aztec/constants'; +import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; + +export async function getSponsoredFPCInstance(): Promise { + return await getContractInstanceFromDeployParams( + SponsoredFPCContract.artifact, + { + salt: new Fr(SPONSORED_FPC_SALT), + }, + ); +} + +export async function getSponsoredFPCAddress() { + return (await getSponsoredFPCInstance()).address; +} + +export async function getDeployedSponsoredFPCAddress(pxe: PXE) { + const fpc = await getSponsoredFPCAddress(); + const contracts = await pxe.getContracts(); + if (!contracts.find((c) => c.equals(fpc))) { + throw new Error('SponsoredFPC not deployed.'); + } + return fpc; +} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/Train.ts b/treasury/src/treasury/aztec/Train.ts new file mode 100644 index 00000000..9bbd6ed3 --- /dev/null +++ b/treasury/src/treasury/aztec/Train.ts @@ -0,0 +1,220 @@ +/* Autogenerated file, do not edit! */ + +/* eslint-disable */ +import { + AztecAddress, + type AztecAddressLike, + Contract, + type ContractArtifact, + ContractBase, + ContractFunctionInteraction, + type ContractInstanceWithAddress, + type ContractMethod, + type ContractStorageLayout, + type ContractNotes, + DeployMethod, + type FieldLike, + Fr, + loadContractArtifact, + loadContractArtifactForPublic, + type NoirCompiledContract, + NoteSelector, + PublicKeys, + type Wallet, +} from '@aztec/aztec.js'; +import TrainContractArtifactJson from "./ABIs/train.json"; +export const TrainContractArtifact = loadContractArtifact( + TrainContractArtifactJson as NoirCompiledContract, +); + +/** + * Type-safe interface for contract Train; + */ +export class TrainContract extends ContractBase { + private constructor(instance: ContractInstanceWithAddress, wallet: Wallet) { + super(instance, TrainContractArtifact, wallet); + } + + /** + * Creates a contract instance. + * @param address - The deployed contract's address. + * @param wallet - The wallet to use when interacting with the contract. + * @returns A promise that resolves to a new Contract instance. + */ + public static async at(address: AztecAddress, wallet: Wallet) { + return Contract.at( + address, + TrainContract.artifact, + wallet, + ) as Promise; + } + + /** + * Creates a tx to deploy a new instance of this contract. + */ + public static deploy(wallet: Wallet) { + return new DeployMethod( + PublicKeys.default(), + wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(1), + ); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. + */ + public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet) { + return new DeployMethod( + publicKeys, + wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(2), + ); + } + + /** + * Creates a tx to deploy a new instance of this contract using the specified constructor method. + */ + public static deployWithOpts( + opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet }, + ...args: Parameters + ) { + return new DeployMethod( + opts.publicKeys ?? PublicKeys.default(), + opts.wallet, + TrainContractArtifact, + TrainContract.at, + Array.from(arguments).slice(1), + opts.method ?? 'constructor', + ); + } + + /** + * Returns this contract's artifact. + */ + public static get artifact(): ContractArtifact { + return TrainContractArtifact; + } + + /** + * Returns this contract's artifact with public bytecode. + */ + public static get artifactForPublic(): ContractArtifact { + return loadContractArtifactForPublic( + TrainContractArtifactJson as NoirCompiledContract, + ); + } + + public static get storage(): ContractStorageLayout< + 'contracts_private' | 'contracts_public' + > { + return { + contracts_private: { + slot: new Fr(1), + }, + contracts_public: { + slot: new Fr(2), + }, + } as ContractStorageLayout<'contracts_private' | 'contracts_public'>; + } + + public static get notes(): ContractNotes<'UintNote' | 'HTLC_Private'> { + return { + UintNote: { + id: new NoteSelector(0), + }, + HTLC_Private: { + id: new NoteSelector(1), + }, + } as ContractNotes<'UintNote' | 'HTLC_Private'>; + } + + /** Type-safe wrappers for the public methods exposed by the contract. */ + declare public methods: { + /** add_lock_private_user(Id: field, hashlock: array, timelock: integer) */ + add_lock_private_user: (( + Id: FieldLike, + hashlock: (bigint | number)[], + timelock: bigint | number, + ) => ContractFunctionInteraction) & + Pick; + + /** commit_private_user(Id: field, src_receiver: struct, timelock: integer, token: struct, amount: integer, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: field) */ + commit_private_user: (( + Id: FieldLike, + src_receiver: AztecAddressLike, + timelock: bigint | number, + token: AztecAddressLike, + amount: bigint | number, + src_asset: string, + dst_chain: string, + dst_asset: string, + dst_address: string, + randomness: FieldLike, + ) => ContractFunctionInteraction) & + Pick; + + /** constructor() */ + constructor: (() => ContractFunctionInteraction) & + Pick; + + /** get_htlc_public(key: field) */ + get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** is_contract_initialized(Id: field) */ + is_contract_initialized: ((Id: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** lock_private_solver(Id: field, hashlock: array, amount: integer, ownership_hash: array, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ + lock_private_solver: (( + Id: FieldLike, + hashlock: (bigint | number)[], + amount: bigint | number, + ownership_hash: (bigint | number)[], + timelock: bigint | number, + token: AztecAddressLike, + randomness: FieldLike, + src_asset: string, + dst_chain: string, + dst_asset: string, + dst_address: string, + ) => ContractFunctionInteraction) & + Pick; + + /** process_message(message_ciphertext: struct, message_context: struct) */ + process_message: (( + message_ciphertext: FieldLike[], + message_context: { + tx_hash: FieldLike; + unique_note_hashes_in_tx: FieldLike[]; + first_nullifier_in_tx: FieldLike; + recipient: AztecAddressLike; + }, + ) => ContractFunctionInteraction) & + Pick; + + /** public_dispatch(selector: field) */ + public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** redeem_private(Id: field, secret: array, ownership_key: array) */ + redeem_private: (( + Id: FieldLike, + secret: (bigint | number)[], + ownership_key: (bigint | number)[], + ) => ContractFunctionInteraction) & + Pick; + + /** refund_private(Id: field) */ + refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & + Pick; + + /** sync_private_state() */ + sync_private_state: (() => ContractFunctionInteraction) & + Pick; + }; +} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.dto.ts b/treasury/src/treasury/aztec/aztec.dto.ts new file mode 100644 index 00000000..8358b79d --- /dev/null +++ b/treasury/src/treasury/aztec/aztec.dto.ts @@ -0,0 +1,7 @@ +import { BaseSignRequest } from "../../app/dto/base.dto"; + +export class AztecSignRequest extends BaseSignRequest { + nodeUrl: string; + tokenContract: string; + contractAddress: string +} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts new file mode 100644 index 00000000..a4f656cf --- /dev/null +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -0,0 +1,213 @@ +import { BadRequestException, Injectable } from '@nestjs/common'; +import { Network } from "../shared/networks.types"; +import { AztecSignRequest } from "./aztec.dto"; +import { AuthWitness, AztecAddress, ContractArtifact, ContractFunctionInteraction, createAztecNodeClient, Fr, FunctionAbi, getAllFunctionAbis, Logger, SponsoredFeePaymentMethod, Tx, waitForPXE } from "@aztec/aztec.js"; +import { createPXEService } from "@aztec/pxe/server"; +import { createStore } from "@aztec/kv-store/lmdb"; +import { deriveSigningKey } from '@aztec/stdlib/keys'; +import { TokenContract } from '@aztec/noir-contracts.js/Token'; +import { getSponsoredFPCInstance } from "./FPC"; +import { getSchnorrAccount, getSchnorrAccountContractAddress } from "@aztec/accounts/schnorr"; +import { getPXEServiceConfig } from "@aztec/pxe/config"; +import { TrainContract } from "./Train"; +import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; +import { TreasuryService } from '../../app/interfaces/treasury.interface'; +import { PrivateKeyService } from '../../kv/vault.service'; +import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; +import { PrivateKernelProver } from '@aztec/stdlib/interfaces/client'; +import { AztecAsyncKVStore } from '@aztec/kv-store'; + +@Injectable() +export class AztecTreasuryService extends TreasuryService { + + readonly network: Network = 'aztec'; + + constructor(privateKeyService: PrivateKeyService) { + super(privateKeyService); + } + + async sign(request: AztecSignRequest): Promise { + + try { + + let signedTxn: string; + + const privateKey = await this.privateKeyService.getAsync(request.address); + const privateSalt = await this.privateKeyService.getAsync(request.address, "private_salt"); + const TrainContractArtifact = TrainContract.artifact; + const TokenContractArtifact = TokenContract.artifact; + + // Define the type locally + type PXECreationOptions = { + loggers?: { store?: Logger; pxe?: Logger; prover?: Logger }; + useLogSuffix?: boolean | string; + prover?: PrivateKernelProver; + store?: AztecAsyncKVStore; + }; + + const provider = createAztecNodeClient(request.nodeUrl); + + const fullConfig = { + ...getPXEServiceConfig(), + l1Contracts: await provider.getL1ContractAddresses(), + }; + + const store = await createStore('store', { + dataDirectory: 'store', + dataStoreMapSizeKB: 1e6, + }); + + const options: PXECreationOptions = { + loggers: {}, + store, + }; + + const pxe = await createPXEService(provider, fullConfig, options); + await waitForPXE(pxe); + + const sponsoredFPC = await getSponsoredFPCInstance(); + const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); + await pxe.registerContract({ + instance: sponsoredFPC, + artifact: SponsoredFPCContract.artifact, + }); + + const schnorrAccount = await getSchnorrAccount( + pxe, + Fr.fromString(privateKey), + deriveSigningKey(Fr.fromString(privateKey)), + Fr.fromString(privateSalt) + ); + + await schnorrAccount.register(); + + const schnorrWallet = await schnorrAccount.getWallet(); + const tokenContractInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); + await pxe.registerContract({ + instance: tokenContractInstance, + artifact: TokenContractArtifact, + }); + + const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)) + await pxe.registerContract({ + instance: contractInstanceWithAddress, + artifact: TrainContractArtifact, + }) + + const contractFunctionInteraction: FunctionInteraction = JSON.parse(request.unsignedTxn); + let authWitnesses: AuthWitness[] = []; + + if (contractFunctionInteraction.authwiths) { + + for (let i = 0; i < contractFunctionInteraction.authwiths.length; i++) { + const authWith = contractFunctionInteraction.authwiths[i]; + + const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) + const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true) + + if (!contractClassMetadata.artifact) { + throw new BadRequestException(`Artifact not registered`); + } + + const functionAbi = getFunctionAbi(contractClassMetadata.artifact, authWith.functionName); + + if (!functionAbi) { + + } + + let functionInteraction: ContractFunctionInteraction; + authWith.args.unshift(schnorrWallet.getAddress()); + + functionInteraction = new ContractFunctionInteraction( + schnorrWallet, + AztecAddress.fromString(authWith.interactionAddress), + functionAbi, + [ + ...authWith.args + ], + ); + + const witness = await schnorrWallet.createAuthWit({ + caller: AztecAddress.fromString(authWith.callerAddress), + action: functionInteraction, + }); + + authWitnesses.push(witness); + } + } + + const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) + const contractClassMetadata = await pxe.getContractClassMetadata(requestcontractClass.currentContractClassId, true) + + if (!contractClassMetadata.artifact) { + throw new BadRequestException(`Artifact not registered`); + } + + const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); + let functionInteraction: ContractFunctionInteraction; + + functionInteraction = new ContractFunctionInteraction( + schnorrWallet, + AztecAddress.fromString(contractFunctionInteraction.interactionAddress), + functionAbi, + [ + ...contractFunctionInteraction.args + ], + [...authWitnesses] + ); + + const provenTx = await functionInteraction.prove({ + fee: + { paymentMethod }, + }); + + const tx = new Tx( + provenTx.data, + provenTx.clientIvcProof, + provenTx.contractClassLogFields, + provenTx.publicFunctionCalldata, + ); + + const signedTxHex = tx.toBuffer().toString("hex"); + + signedTxn = JSON.stringify({ signedTx: signedTxHex }); + return { signedTxn }; + + } + catch (error) { + throw new BadRequestException(`Invalid unsigned transaction: ${error.message}`); + } + } + + async generate(): Promise { + + const prKey = Fr.random(); + const salt = Fr.random(); + const addressResponse = await getSchnorrAccountContractAddress(prKey, salt); + + await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); + await this.privateKeyService.setAsync(addressResponse.toString(), salt.toString(), "private_salt"); + + const address = addressResponse.toString() + + return { address }; + } +} + +interface FunctionInteraction { + interactionAddress: string, + functionName: string, + args: any[], + callerAddress?: string, + senderAddress?: string, + authwiths?: FunctionInteraction[], +} + +function getFunctionAbi( + artifact: ContractArtifact, + fnName: string, +): FunctionAbi | undefined { + const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName); + if (!fn) { } + return fn; +} \ No newline at end of file diff --git a/treasury/src/treasury/evm/evm.dto.ts b/treasury/src/treasury/evm/evm.dto.ts index ed973c36..c5338364 100644 --- a/treasury/src/treasury/evm/evm.dto.ts +++ b/treasury/src/treasury/evm/evm.dto.ts @@ -1,4 +1,4 @@ -import { BaseSignRequest, BaseSignResponse } from "src/app/dto/base.dto"; +import { BaseSignRequest, BaseSignResponse } from "../../app/dto/base.dto"; export class EVMSignRequest extends BaseSignRequest { } diff --git a/treasury/src/treasury/fuel/fuel.dto.ts b/treasury/src/treasury/fuel/fuel.dto.ts index 6c125767..a96a9b0c 100644 --- a/treasury/src/treasury/fuel/fuel.dto.ts +++ b/treasury/src/treasury/fuel/fuel.dto.ts @@ -1,4 +1,4 @@ -import { BaseSignRequest } from "src/app/dto/base.dto"; +import { BaseSignRequest } from "../../app/dto/base.dto"; export class FuelSignRequest extends BaseSignRequest { nodeUrl: string; diff --git a/treasury/src/treasury/fuel/fuel.service.ts b/treasury/src/treasury/fuel/fuel.service.ts index 53341d8b..339df60b 100644 --- a/treasury/src/treasury/fuel/fuel.service.ts +++ b/treasury/src/treasury/fuel/fuel.service.ts @@ -1,10 +1,10 @@ -import { TreasuryService } from "src/app/interfaces/treasury.interface"; import { BadRequestException, Injectable } from '@nestjs/common'; import { Network } from "../shared/networks.types"; -import { PrivateKeyService } from "src/kv/vault.service"; import { Address, isTransactionTypeScript, Provider, ScriptTransactionRequest, transactionRequestify, Wallet } from 'fuels'; -import { BaseSignResponse, GenerateResponse } from "src/app/dto/base.dto"; import { FuelSignRequest } from "./fuel.dto"; +import { TreasuryService } from '../../app/interfaces/treasury.interface'; +import { PrivateKeyService } from '../../kv/vault.service'; +import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; @Injectable() export class FuelTreasuryService extends TreasuryService { diff --git a/treasury/src/treasury/shared/networks.types.ts b/treasury/src/treasury/shared/networks.types.ts index d0afc9b6..796f5379 100644 --- a/treasury/src/treasury/shared/networks.types.ts +++ b/treasury/src/treasury/shared/networks.types.ts @@ -1 +1 @@ -export type Network = 'evm' | 'starknet' | 'solana' | 'fuel'; \ No newline at end of file +export type Network = 'evm' | 'starknet' | 'solana' | 'fuel' | 'aztec'; \ No newline at end of file diff --git a/treasury/src/treasury/starknet/starknet.dto.ts b/treasury/src/treasury/starknet/starknet.dto.ts index 93f3ea9c..af06f899 100644 --- a/treasury/src/treasury/starknet/starknet.dto.ts +++ b/treasury/src/treasury/starknet/starknet.dto.ts @@ -1,4 +1,4 @@ -import { BaseSignRequest, BaseSignResponse } from "src/app/dto/base.dto"; +import { BaseSignRequest, BaseSignResponse } from "../../app/dto/base.dto"; export class StarknetSignRequest extends BaseSignRequest { } diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index 99a755a3..11c12058 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -2,8 +2,8 @@ import { Injectable } from '@nestjs/common'; import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { Network } from '../shared/networks.types'; import { StarknetSignRequest, StarknetSignResponse } from './starknet.dto'; -import { PrivateKeyService } from 'src/kv/vault.service'; import { GenerateResponse } from '../../app/dto/base.dto'; +import { PrivateKeyService } from '../../kv/vault.service'; @Injectable() export class StarknetTreasuryService extends TreasuryService { diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index 952f00bb..7dc33c87 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -2,8 +2,9 @@ import { Module } from '@nestjs/common'; import { EvmTreasuryService as EvmTreasuryService } from './evm/evm.service'; import { TREASURIES } from './shared/constants.treasury'; import { StarknetTreasuryService as StarknetTreasuryService } from './starknet/starknet.service'; -import { VaultModule } from 'src/kv/vault.module'; import { FuelTreasuryService } from './fuel/fuel.service'; +import { VaultModule } from '../kv/vault.module'; +import { AztecTreasuryService } from './aztec/aztec.service'; @Module({ imports: [VaultModule], @@ -11,12 +12,13 @@ import { FuelTreasuryService } from './fuel/fuel.service'; EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, + AztecTreasuryService, { provide: TREASURIES, - useFactory: (evm, starknet, fuel) => [evm, starknet, fuel], - inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService], + useFactory: (evm, starknet, fuel, aztec) => [evm, starknet, fuel, aztec], + inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, AztecTreasuryService], }, ], exports: [TREASURIES], - }) -export class TreasuryModule {} \ No newline at end of file +}) +export class TreasuryModule { } \ No newline at end of file diff --git a/treasury/tsconfig.json b/treasury/tsconfig.json index d9c82ca9..d8bc3493 100644 --- a/treasury/tsconfig.json +++ b/treasury/tsconfig.json @@ -1,17 +1,21 @@ { "compilerOptions": { - "module": "commonjs", - "declaration": true, - "removeComments": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "target": "ES2021", + "module": "nodenext", + "target": "es6", + "outDir": "dist", + "rootDir": ".", "sourceMap": true, - "outDir": "./dist", - "baseUrl": "./", - "incremental": true, - "skipLibCheck": true + "strict": false, + "moduleResolution": "nodenext", + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "useDefineForClassFields": false, + "allowJs": true }, - "include": ["src/**/*"] -} + "include": ["src/**/*.ts", "src/**/*.js"], + "exclude": ["node_modules"] +} \ No newline at end of file From 072f3d40cab6397d5e97376dd4ae518b42398282 Mon Sep 17 00:00:00 2001 From: artyom Date: Tue, 9 Sep 2025 19:54:02 +0400 Subject: [PATCH 02/69] Add environment variable for aztec stores. --- treasury/.env | 3 ++- treasury/package-lock.json | 24 ++++++++++---------- treasury/src/treasury/aztec/aztec.config.ts | 11 +++++++++ treasury/src/treasury/aztec/aztec.service.ts | 14 +++++++++--- treasury/src/treasury/treasury.module.ts | 2 ++ 5 files changed, 38 insertions(+), 16 deletions(-) create mode 100644 treasury/src/treasury/aztec/aztec.config.ts diff --git a/treasury/.env b/treasury/.env index 0e43b4e3..9902f080 100644 --- a/treasury/.env +++ b/treasury/.env @@ -1,3 +1,4 @@ VAULT_URL={KV_URL_HERE} VAULT_USERNAME={USERNAME} -VAULT_PASSWORD={PASSWORD} \ No newline at end of file +VAULT_PASSWORD={PASSWORD} +AZTEC_STORE_PATH={AZTEC_STORE_PATH} \ No newline at end of file diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 3e4b3e4f..1d09598f 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -2784,9 +2784,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { "node": ">=12" @@ -6669,9 +6669,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { "node": ">=12" @@ -8533,9 +8533,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.214", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz", - "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==", + "version": "1.5.215", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", + "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", "dev": true, "license": "ISC" }, @@ -15140,9 +15140,9 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" diff --git a/treasury/src/treasury/aztec/aztec.config.ts b/treasury/src/treasury/aztec/aztec.config.ts new file mode 100644 index 00000000..be9cc1ca --- /dev/null +++ b/treasury/src/treasury/aztec/aztec.config.ts @@ -0,0 +1,11 @@ +import { Injectable } from "@nestjs/common"; +import { ConfigService } from "@nestjs/config"; + +@Injectable() +export class AztecConfigService { + constructor(private configService: ConfigService) {} + + get storePath(): string { + return this.configService.get('AZTEC_STORE_PATH'); + } +} diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index a4f656cf..60f654ad 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -16,14 +16,17 @@ import { PrivateKeyService } from '../../kv/vault.service'; import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; import { PrivateKernelProver } from '@aztec/stdlib/interfaces/client'; import { AztecAsyncKVStore } from '@aztec/kv-store'; +import { AztecConfigService } from './aztec.config'; @Injectable() export class AztecTreasuryService extends TreasuryService { readonly network: Network = 'aztec'; + readonly configService: AztecConfigService; - constructor(privateKeyService: PrivateKeyService) { + constructor(privateKeyService: PrivateKeyService, configService: AztecConfigService) { super(privateKeyService); + this.configService = configService; } async sign(request: AztecSignRequest): Promise { @@ -52,8 +55,8 @@ export class AztecTreasuryService extends TreasuryService { l1Contracts: await provider.getL1ContractAddresses(), }; - const store = await createStore('store', { - dataDirectory: 'store', + const store = await createStore(request.address, { + dataDirectory: this.configService.storePath, dataStoreMapSizeKB: 1e6, }); @@ -190,6 +193,11 @@ export class AztecTreasuryService extends TreasuryService { const address = addressResponse.toString() + await createStore(address, { + dataDirectory: this.configService.storePath, + dataStoreMapSizeKB: 1e6, + }); + return { address }; } } diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index 7dc33c87..bae4e137 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -5,6 +5,7 @@ import { StarknetTreasuryService as StarknetTreasuryService } from './starknet/s import { FuelTreasuryService } from './fuel/fuel.service'; import { VaultModule } from '../kv/vault.module'; import { AztecTreasuryService } from './aztec/aztec.service'; +import { AztecConfigService } from './aztec/aztec.config'; @Module({ imports: [VaultModule], @@ -13,6 +14,7 @@ import { AztecTreasuryService } from './aztec/aztec.service'; StarknetTreasuryService, FuelTreasuryService, AztecTreasuryService, + AztecConfigService, { provide: TREASURIES, useFactory: (evm, starknet, fuel, aztec) => [evm, starknet, fuel, aztec], From 37794cf5d35761b37790a13eec0d811fd7a85281 Mon Sep 17 00:00:00 2001 From: Ruben Date: Thu, 18 Sep 2025 14:09:49 +0400 Subject: [PATCH 03/69] Fix get swaps pagination --- csharp/src/Data.Npgsql/EFSwapRepository.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Data.Npgsql/EFSwapRepository.cs b/csharp/src/Data.Npgsql/EFSwapRepository.cs index 83d9db69..34784ed6 100644 --- a/csharp/src/Data.Npgsql/EFSwapRepository.cs +++ b/csharp/src/Data.Npgsql/EFSwapRepository.cs @@ -57,7 +57,7 @@ public async Task> GetAllAsync(uint page = 1, uint size = 15) { return await GetBaseQuery() .OrderByDescending(x => x.CreatedDate) - .Skip((int)(page * size)) + .Skip((int)((page - 1) * size)) .Take((int)size) .ToListAsync(); } From 48962c861f4896a3fb4b815874965ac6501eb6dd Mon Sep 17 00:00:00 2001 From: Ruben Date: Thu, 18 Sep 2025 15:20:20 +0400 Subject: [PATCH 04/69] Add repository dtos for create and update --- csharp/src/AdminAPI/Endpoints/FeeEndpoints.cs | 7 +- .../AdminAPI/Endpoints/NetworkEndpoints.cs | 31 ++----- .../src/AdminAPI/Endpoints/RouteEndpoints.cs | 23 +---- .../Endpoints/SignerAgentEndpoints.cs | 7 +- .../AdminAPI/Endpoints/SwapMetricEndpoints.cs | 16 ---- .../AdminAPI/Endpoints/TokenPriceEndpoints.cs | 4 +- .../Endpoints/TrustedWalletEndpoints.cs | 8 +- .../src/AdminAPI/Endpoints/WalletEndpoints.cs | 7 +- .../src/AdminAPI/Models/TotalSwapMetrics.cs | 8 -- .../Models/CreateNetworkRequest.cs | 2 +- .../Models/CreateNodeRequest.cs | 2 +- .../Models/CreateRouteRequest.cs | 2 +- .../Models/CreateServiceFeeRequest.cs | 2 +- .../Models/CreateSignerAgentRequest.cs | 2 +- .../Models/CreateTokenPriceRequest.cs | 2 +- .../Models/CreateTokenRequest.cs | 2 +- .../Models/CreateTrustedWalletRequest.cs | 2 +- .../Models/CreateWalletRequest.cs | 2 +- .../Models/UpdateNetworkRequest.cs | 2 +- .../Models/UpdateRouteRequest.cs | 2 +- .../Models/UpdateServiceFeeRequest.cs | 2 +- .../Models/UpdateTrustedWalletRequest.cs | 2 +- .../Models/UpdateWalletRequest.cs | 2 +- .../Repositories/IFeeRepository.cs | 11 +-- .../Repositories/INetworkRepository.cs | 36 ++------ .../Repositories/IRouteRepository.cs | 26 +----- .../Repositories/ISignerAgentRepository.cs | 3 +- .../Repositories/ISwapMetricRepository.cs | 3 - .../Repositories/ITokenPriceRepository.cs | 3 +- .../Repositories/ITrustedWalletRepository.cs | 5 +- .../Repositories/IWalletRepository.cs | 5 +- csharp/src/Data.Npgsql/EFFeeRepository.cs | 19 ++-- csharp/src/Data.Npgsql/EFNetworkRepository.cs | 87 +++++++------------ csharp/src/Data.Npgsql/EFRouteRepository.cs | 85 ++++++------------ .../Data.Npgsql/EFSignerAgentRepository.cs | 11 +-- .../src/Data.Npgsql/EFSwapMetricRepository.cs | 14 --- csharp/src/Data.Npgsql/EFSwapRepository.cs | 3 +- .../src/Data.Npgsql/EFTokenPriceRepository.cs | 7 +- .../Data.Npgsql/EFTrustedWalletRepository.cs | 15 ++-- csharp/src/Data.Npgsql/EFWalletRepository.cs | 17 ++-- .../Infrastructure/Services/QuoteService.cs | 10 +-- .../Helpers/EVMTransactionBuilder.cs | 1 + .../Models/AllowanceRequest.cs | 4 +- .../Models/ApprovePrepareRequest.cs | 2 +- .../Models/EstimateFeeRequest.cs | 3 +- .../Models/GetBatchTransactionRequest.cs | 4 +- .../Models/NextNonceRequest.cs | 4 +- .../Workflow.Swap/Workflows/SwapWorkflow.cs | 3 +- 48 files changed, 175 insertions(+), 345 deletions(-) delete mode 100644 csharp/src/AdminAPI/Models/TotalSwapMetrics.cs rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateNetworkRequest.cs (94%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateNodeRequest.cs (72%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateRouteRequest.cs (94%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateServiceFeeRequest.cs (76%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateSignerAgentRequest.cs (82%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateTokenPriceRequest.cs (73%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateTokenRequest.cs (81%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateTrustedWalletRequest.cs (82%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/CreateWalletRequest.cs (81%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/UpdateNetworkRequest.cs (88%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/UpdateRouteRequest.cs (88%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/UpdateServiceFeeRequest.cs (71%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/UpdateTrustedWalletRequest.cs (64%) rename csharp/src/{AdminAPI => Data.Abstractions}/Models/UpdateWalletRequest.cs (62%) rename csharp/src/{Workflow.Abstractions => Workflow.EVM}/Models/AllowanceRequest.cs (60%) rename csharp/src/{Workflow.Abstractions => Workflow.EVM}/Models/ApprovePrepareRequest.cs (76%) rename csharp/src/{Workflow.Abstractions => Workflow.EVM}/Models/EstimateFeeRequest.cs (79%) rename csharp/src/{Workflow.Abstractions => Workflow.EVM}/Models/GetBatchTransactionRequest.cs (55%) rename csharp/src/{Workflow.Abstractions => Workflow.EVM}/Models/NextNonceRequest.cs (52%) diff --git a/csharp/src/AdminAPI/Endpoints/FeeEndpoints.cs b/csharp/src/AdminAPI/Endpoints/FeeEndpoints.cs index 9aa16d22..dc1b138c 100644 --- a/csharp/src/AdminAPI/Endpoints/FeeEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/FeeEndpoints.cs @@ -1,6 +1,5 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; -using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -35,7 +34,7 @@ private static async Task CreateServiceFeeAsync( IFeeRepository repository, [FromBody] CreateServiceFeeRequest request) { - var fee = await repository.CreateServiceFeeAsync(request.Name, request.FeeInUsd, request.PercentageFee); + var fee = await repository.CreateServiceFeeAsync(request); return fee is null ? Results.BadRequest("Failed to create service fee") : Results.Ok(); @@ -46,7 +45,7 @@ private static async Task UpdateServiceFeeAsync( string name, [FromBody] UpdateServiceFeeRequest request) { - var fee = await repository.UpdateServiceFeeAsync(name, request.FeeInUsd, request.PercentageFee); + var fee = await repository.UpdateServiceFeeAsync(name, request); return fee is null ? Results.BadRequest("Failed to create service fee") diff --git a/csharp/src/AdminAPI/Endpoints/NetworkEndpoints.cs b/csharp/src/AdminAPI/Endpoints/NetworkEndpoints.cs index ef945912..50360502 100644 --- a/csharp/src/AdminAPI/Endpoints/NetworkEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/NetworkEndpoints.cs @@ -1,10 +1,10 @@ using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Xml.Linq; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Common.Extensions; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -66,21 +66,7 @@ private static async Task CreateAsync( INetworkRepository repository, [FromBody] CreateNetworkRequest request) { - var network = await repository.CreateAsync( - request.NetworkName, - request.DisplayName, - request.Type, - request.FeeType, - request.ChainId, - request.FeePercentageIncrease, - request.HtlcNativeContractAddress, - request.HtlcTokenContractAddress, - request.NativeTokenSymbol, - request.NativeTokenPriceSymbol, - request.NativeTokenContract, - request.NativeTokenDecimals, - request.NodeUrl, - request.NodeProvider); + var network = await repository.CreateAsync(request); return network is null ? Results.BadRequest("Failed to create network") @@ -94,11 +80,7 @@ private static async Task UpdateAsync( { var network = await repository.UpdateAsync( networkName, - request.DisplayName, - request.FeeType, - request.FeePercentageIncrease, - request.HtlcNativeContractAddress, - request.HtlcTokenContractAddress); + request); return network is null ? Results.BadRequest("Failed to update network") @@ -111,7 +93,7 @@ private static async Task CreateNodeAsync( [FromBody] CreateNodeRequest request) { var node = await repository.CreateNodeAsync( - networkName, request.ProviderName, request.Url); + networkName, request); return node is null ? Results.BadRequest("Failed to create node") @@ -134,10 +116,7 @@ private static async Task CreateTokenAsync( { var token = await repository.CreateTokenAsync( networkName, - request.Symbol, - request.PriceSymbol, - request.Contract, - request.Decimals); + request); return token is null ? Results.BadRequest("Failed to create token") diff --git a/csharp/src/AdminAPI/Endpoints/RouteEndpoints.cs b/csharp/src/AdminAPI/Endpoints/RouteEndpoints.cs index 889d9c2e..46a8b3f7 100644 --- a/csharp/src/AdminAPI/Endpoints/RouteEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/RouteEndpoints.cs @@ -1,8 +1,8 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Common.Extensions; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -40,19 +40,7 @@ private static async Task CreateRouteAsync( [FromBody] CreateRouteRequest request) { var route = await repository.CreateAsync( - request.SourceNetworkName, - request.SourceToken, - request.SourceWalletAddress, - request.SourceWalletType, - request.DestinationNetworkName, - request.DestinationToken, - request.DestinationWalletAddress, - request.DestinationWalletType, - request.RateProvider, - request.MinAmount, - request.MaxAmount, - request.IgnoreExpenseFee, - request.ServiceFee); + request); return route is null ? Results.BadRequest("Failed to create route") @@ -72,12 +60,7 @@ private static async Task UpdateRouteAsync( sourceToken, destinationNetwork, destinationToken, - request.RateProvider, - request.MinAmount, - request.MaxAmount, - request.Status, - request.IgnoreExpenseFee, - request.ServiceFee); + request); return route is null ? Results.BadRequest("Failed to update route") diff --git a/csharp/src/AdminAPI/Endpoints/SignerAgentEndpoints.cs b/csharp/src/AdminAPI/Endpoints/SignerAgentEndpoints.cs index 17b75697..d6626937 100644 --- a/csharp/src/AdminAPI/Endpoints/SignerAgentEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/SignerAgentEndpoints.cs @@ -1,8 +1,8 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Common.Extensions; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -34,10 +34,7 @@ private static async Task CreateAsync( ISignerAgentRepository repository, [FromBody] CreateSignerAgentRequest request) { - var signerAgent = await repository.CreateAsync( - request.Name, - request.Url, - request.SupportedTypes); + var signerAgent = await repository.CreateAsync(request); return signerAgent is null ? Results.BadRequest("Failed to create signer wallet") diff --git a/csharp/src/AdminAPI/Endpoints/SwapMetricEndpoints.cs b/csharp/src/AdminAPI/Endpoints/SwapMetricEndpoints.cs index 9d20dfcf..667359c8 100644 --- a/csharp/src/AdminAPI/Endpoints/SwapMetricEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/SwapMetricEndpoints.cs @@ -8,9 +8,6 @@ public static class SwapMetricEndpoints { public static RouteGroupBuilder MapSwapMetricEndpoints(this RouteGroupBuilder group) { - group.MapGet("/swap-metrics/totals", GetTotalVolumeAndProfitAsync) - .Produces(); - group.MapGet("/swap-metrics/daily-volume", GetDailyVolumeAsync) .Produces>>(); @@ -23,19 +20,6 @@ public static RouteGroupBuilder MapSwapMetricEndpoints(this RouteGroupBuilder gr return group; } - private static async Task GetTotalVolumeAndProfitAsync( - ISwapMetricRepository repository, - [FromQuery] DateTime? startFrom) - { - var (volume, profit, count) = await repository.GetTotalVolumeAndProfitAsync(startFrom ?? DateTime.UtcNow.AddDays(-30)); - return Results.Ok(new TotalSwapMetrics - { - TotalVolumeInUsd = volume, - TotalProfitInUsd = profit, - TotalCount = count - }); - } - private static async Task GetDailyVolumeAsync( ISwapMetricRepository repository, [FromQuery] DateTime? startFrom) diff --git a/csharp/src/AdminAPI/Endpoints/TokenPriceEndpoints.cs b/csharp/src/AdminAPI/Endpoints/TokenPriceEndpoints.cs index dde4adf0..1f8b7a29 100644 --- a/csharp/src/AdminAPI/Endpoints/TokenPriceEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/TokenPriceEndpoints.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -31,7 +31,7 @@ private static async Task CreateTokenPriceAsync( ITokenPriceRepository repository, CreateTokenPriceRequest request) { - var tokenPrice = await repository.CreateAsync(request.Symbol, request.ExternalId); + var tokenPrice = await repository.CreateAsync(request); return tokenPrice is null ? Results.BadRequest("Failed to create token price") diff --git a/csharp/src/AdminAPI/Endpoints/TrustedWalletEndpoints.cs b/csharp/src/AdminAPI/Endpoints/TrustedWalletEndpoints.cs index f823bc01..9cf3faa5 100644 --- a/csharp/src/AdminAPI/Endpoints/TrustedWalletEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/TrustedWalletEndpoints.cs @@ -1,8 +1,8 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Common.Extensions; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Infrastructure.Extensions; @@ -43,9 +43,7 @@ private static async Task CreateAsync( [FromBody] CreateTrustedWalletRequest request) { var wallet = await repository.CreateAsync( - request.NetworkType, - request.Address, - request.Name); + request); return wallet is null ? Results.BadRequest("Failed to create trusted wallet") @@ -61,7 +59,7 @@ private static async Task UpdateAsync( var wallet = await repository.UpdateAsync( networkType, address, - request.Name); + request); return wallet is null ? Results.NotFound($"Trusted wallet '{address}' not found on network '{networkType}'") diff --git a/csharp/src/AdminAPI/Endpoints/WalletEndpoints.cs b/csharp/src/AdminAPI/Endpoints/WalletEndpoints.cs index 783d233c..9a74b475 100644 --- a/csharp/src/AdminAPI/Endpoints/WalletEndpoints.cs +++ b/csharp/src/AdminAPI/Endpoints/WalletEndpoints.cs @@ -1,8 +1,7 @@ using Microsoft.AspNetCore.Mvc; -using Train.Solver.AdminAPI.Models; using Train.Solver.Common.Enums; using Train.Solver.Common.Extensions; -using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions; using Train.Solver.Infrastructure.Abstractions.Models; @@ -56,7 +55,7 @@ private static async Task CreateAsync( var generatedAddress = await privateKeyProvider.GenerateAsync(signerAgent.Url, request.NetworkType); - var wallet = await repository.CreateAsync(request.SignerAgent, request.NetworkType, generatedAddress, request.Name); + var wallet = await repository.CreateAsync(generatedAddress, request); return wallet is null ? Results.BadRequest("Could not create wallet") : Results.Ok(); @@ -71,7 +70,7 @@ private static async Task UpdateAsync( var wallet = await repository.UpdateAsync( networkType, address, - request.Name); + request); return wallet is null ? Results.NotFound($"Trusted wallet '{address}' not found on network '{networkType}'") diff --git a/csharp/src/AdminAPI/Models/TotalSwapMetrics.cs b/csharp/src/AdminAPI/Models/TotalSwapMetrics.cs deleted file mode 100644 index 23937b1f..00000000 --- a/csharp/src/AdminAPI/Models/TotalSwapMetrics.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Train.Solver.AdminAPI.Models; - -public class TotalSwapMetrics -{ - public decimal TotalVolumeInUsd { get; set; } - public decimal TotalProfitInUsd { get; set; } - public decimal TotalCount { get; set; } -} diff --git a/csharp/src/AdminAPI/Models/CreateNetworkRequest.cs b/csharp/src/Data.Abstractions/Models/CreateNetworkRequest.cs similarity index 94% rename from csharp/src/AdminAPI/Models/CreateNetworkRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateNetworkRequest.cs index 3e2f9203..110fcd44 100644 --- a/csharp/src/AdminAPI/Models/CreateNetworkRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateNetworkRequest.cs @@ -1,6 +1,6 @@ using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateNetworkRequest { diff --git a/csharp/src/AdminAPI/Models/CreateNodeRequest.cs b/csharp/src/Data.Abstractions/Models/CreateNodeRequest.cs similarity index 72% rename from csharp/src/AdminAPI/Models/CreateNodeRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateNodeRequest.cs index 41a20b23..b3fbc002 100644 --- a/csharp/src/AdminAPI/Models/CreateNodeRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateNodeRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateNodeRequest { diff --git a/csharp/src/AdminAPI/Models/CreateRouteRequest.cs b/csharp/src/Data.Abstractions/Models/CreateRouteRequest.cs similarity index 94% rename from csharp/src/AdminAPI/Models/CreateRouteRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateRouteRequest.cs index 10167817..9781729f 100644 --- a/csharp/src/AdminAPI/Models/CreateRouteRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateRouteRequest.cs @@ -1,7 +1,7 @@ using System.Numerics; using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateRouteRequest { diff --git a/csharp/src/AdminAPI/Models/CreateServiceFeeRequest.cs b/csharp/src/Data.Abstractions/Models/CreateServiceFeeRequest.cs similarity index 76% rename from csharp/src/AdminAPI/Models/CreateServiceFeeRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateServiceFeeRequest.cs index b910c4b4..2a7d5776 100644 --- a/csharp/src/AdminAPI/Models/CreateServiceFeeRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateServiceFeeRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateServiceFeeRequest { diff --git a/csharp/src/AdminAPI/Models/CreateSignerAgentRequest.cs b/csharp/src/Data.Abstractions/Models/CreateSignerAgentRequest.cs similarity index 82% rename from csharp/src/AdminAPI/Models/CreateSignerAgentRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateSignerAgentRequest.cs index eddd910b..8f260ea3 100644 --- a/csharp/src/AdminAPI/Models/CreateSignerAgentRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateSignerAgentRequest.cs @@ -1,6 +1,6 @@ using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateSignerAgentRequest { diff --git a/csharp/src/AdminAPI/Models/CreateTokenPriceRequest.cs b/csharp/src/Data.Abstractions/Models/CreateTokenPriceRequest.cs similarity index 73% rename from csharp/src/AdminAPI/Models/CreateTokenPriceRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateTokenPriceRequest.cs index 10f02b00..61f48abb 100644 --- a/csharp/src/AdminAPI/Models/CreateTokenPriceRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateTokenPriceRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateTokenPriceRequest { diff --git a/csharp/src/AdminAPI/Models/CreateTokenRequest.cs b/csharp/src/Data.Abstractions/Models/CreateTokenRequest.cs similarity index 81% rename from csharp/src/AdminAPI/Models/CreateTokenRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateTokenRequest.cs index 28dc44be..1fa06392 100644 --- a/csharp/src/AdminAPI/Models/CreateTokenRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateTokenRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateTokenRequest { diff --git a/csharp/src/AdminAPI/Models/CreateTrustedWalletRequest.cs b/csharp/src/Data.Abstractions/Models/CreateTrustedWalletRequest.cs similarity index 82% rename from csharp/src/AdminAPI/Models/CreateTrustedWalletRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateTrustedWalletRequest.cs index e0de232f..f9e72c5d 100644 --- a/csharp/src/AdminAPI/Models/CreateTrustedWalletRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateTrustedWalletRequest.cs @@ -1,6 +1,6 @@ using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateTrustedWalletRequest { diff --git a/csharp/src/AdminAPI/Models/CreateWalletRequest.cs b/csharp/src/Data.Abstractions/Models/CreateWalletRequest.cs similarity index 81% rename from csharp/src/AdminAPI/Models/CreateWalletRequest.cs rename to csharp/src/Data.Abstractions/Models/CreateWalletRequest.cs index 2e03f56b..25ff8d5f 100644 --- a/csharp/src/AdminAPI/Models/CreateWalletRequest.cs +++ b/csharp/src/Data.Abstractions/Models/CreateWalletRequest.cs @@ -1,6 +1,6 @@ using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class CreateWalletRequest { diff --git a/csharp/src/AdminAPI/Models/UpdateNetworkRequest.cs b/csharp/src/Data.Abstractions/Models/UpdateNetworkRequest.cs similarity index 88% rename from csharp/src/AdminAPI/Models/UpdateNetworkRequest.cs rename to csharp/src/Data.Abstractions/Models/UpdateNetworkRequest.cs index 23327c7c..9bee4c3f 100644 --- a/csharp/src/AdminAPI/Models/UpdateNetworkRequest.cs +++ b/csharp/src/Data.Abstractions/Models/UpdateNetworkRequest.cs @@ -1,6 +1,6 @@ using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class UpdateNetworkRequest { diff --git a/csharp/src/AdminAPI/Models/UpdateRouteRequest.cs b/csharp/src/Data.Abstractions/Models/UpdateRouteRequest.cs similarity index 88% rename from csharp/src/AdminAPI/Models/UpdateRouteRequest.cs rename to csharp/src/Data.Abstractions/Models/UpdateRouteRequest.cs index e8253577..a1a620d4 100644 --- a/csharp/src/AdminAPI/Models/UpdateRouteRequest.cs +++ b/csharp/src/Data.Abstractions/Models/UpdateRouteRequest.cs @@ -1,7 +1,7 @@ using System.Numerics; using Train.Solver.Common.Enums; -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class UpdateRouteRequest { diff --git a/csharp/src/AdminAPI/Models/UpdateServiceFeeRequest.cs b/csharp/src/Data.Abstractions/Models/UpdateServiceFeeRequest.cs similarity index 71% rename from csharp/src/AdminAPI/Models/UpdateServiceFeeRequest.cs rename to csharp/src/Data.Abstractions/Models/UpdateServiceFeeRequest.cs index 76814f77..568c6e83 100644 --- a/csharp/src/AdminAPI/Models/UpdateServiceFeeRequest.cs +++ b/csharp/src/Data.Abstractions/Models/UpdateServiceFeeRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class UpdateServiceFeeRequest { diff --git a/csharp/src/AdminAPI/Models/UpdateTrustedWalletRequest.cs b/csharp/src/Data.Abstractions/Models/UpdateTrustedWalletRequest.cs similarity index 64% rename from csharp/src/AdminAPI/Models/UpdateTrustedWalletRequest.cs rename to csharp/src/Data.Abstractions/Models/UpdateTrustedWalletRequest.cs index a3dc09cf..0d7612f5 100644 --- a/csharp/src/AdminAPI/Models/UpdateTrustedWalletRequest.cs +++ b/csharp/src/Data.Abstractions/Models/UpdateTrustedWalletRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class UpdateTrustedWalletRequest { diff --git a/csharp/src/AdminAPI/Models/UpdateWalletRequest.cs b/csharp/src/Data.Abstractions/Models/UpdateWalletRequest.cs similarity index 62% rename from csharp/src/AdminAPI/Models/UpdateWalletRequest.cs rename to csharp/src/Data.Abstractions/Models/UpdateWalletRequest.cs index 76d11a90..51daa2c1 100644 --- a/csharp/src/AdminAPI/Models/UpdateWalletRequest.cs +++ b/csharp/src/Data.Abstractions/Models/UpdateWalletRequest.cs @@ -1,4 +1,4 @@ -namespace Train.Solver.AdminAPI.Models; +namespace Train.Solver.Data.Abstractions.Models; public class UpdateWalletRequest { diff --git a/csharp/src/Data.Abstractions/Repositories/IFeeRepository.cs b/csharp/src/Data.Abstractions/Repositories/IFeeRepository.cs index 8dcdd3f2..ba34a9cb 100644 --- a/csharp/src/Data.Abstractions/Repositories/IFeeRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/IFeeRepository.cs @@ -1,5 +1,6 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -11,15 +12,9 @@ public interface IFeeRepository Task GetServiceFeeAsync(string name); - Task CreateServiceFeeAsync( - string name, - decimal feeInUsd, - decimal percentageFee); + Task CreateServiceFeeAsync(CreateServiceFeeRequest request); - Task UpdateServiceFeeAsync( - string name, - decimal feeInUsd, - decimal percentageFee); + Task UpdateServiceFeeAsync(string name, UpdateServiceFeeRequest request); Task UpdateExpenseAsync( string networkName, diff --git a/csharp/src/Data.Abstractions/Repositories/INetworkRepository.cs b/csharp/src/Data.Abstractions/Repositories/INetworkRepository.cs index 2c39fef7..9830f5a3 100644 --- a/csharp/src/Data.Abstractions/Repositories/INetworkRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/INetworkRepository.cs @@ -1,5 +1,6 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -11,36 +12,15 @@ public interface INetworkRepository Task> GetAllAsync(NetworkType[]? types); - Task CreateAsync( - string networkName, - string displayName, - NetworkType type, - TransactionFeeType feeType, - string chainId, - int feePercentageIncrease, - string htlcNativeContractAddress, - string htlcTokenContractAddress, - string nativeTokenSymbol, - string nativeTokenPriceSymbol, - string? nativeTokenContract, - int nativeTokenDecimals, - string nodeUrl, - string nodeProvider); - - Task CreateNodeAsync( - string networkName, - string providerName, - string url); - - Task CreateTokenAsync( - string networkName, - string symbol, - string priceSymbol, - string? contract, - int decimals); + Task CreateAsync(CreateNetworkRequest request); + + Task CreateNodeAsync(string networkName, CreateNodeRequest request); + + Task CreateTokenAsync(string networkName, CreateTokenRequest request); Task DeleteTokenAsync(string networkName, string symbol); Task DeleteNodeAsync(string networkName, string providerName); - Task UpdateAsync(string networkName, string displayName, TransactionFeeType feeType, int feePercentageIncrease, string htlcNativeContractAddress, string htlcTokenContractAddress); + + Task UpdateAsync(string networkName, UpdateNetworkRequest request); } \ No newline at end of file diff --git a/csharp/src/Data.Abstractions/Repositories/IRouteRepository.cs b/csharp/src/Data.Abstractions/Repositories/IRouteRepository.cs index a96605a0..c842b2ba 100644 --- a/csharp/src/Data.Abstractions/Repositories/IRouteRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/IRouteRepository.cs @@ -1,6 +1,7 @@ using System.Numerics; using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -12,23 +13,9 @@ public interface IRouteRepository string sourceNetworkName, string sourceToken, string destinationNetworkName, - string destinationToken, - BigInteger? maxAmount); + string destinationToken); - Task CreateAsync( - string sourceNetworkName, - string sourceToken, - string sourceWalletAddress, - NetworkType sourceWalletType, - string destinationNetworkName, - string destinationToken, - string destinationWalletAddress, - NetworkType destinationWalletType, - string rateProvider, - BigInteger minAmount, - BigInteger maxAmount, - bool ignoreExpenseFee, - string serviceFee); + Task CreateAsync(CreateRouteRequest request); Task UpdateRoutesStatusAsync(int[] ids, RouteStatus status); @@ -39,10 +26,5 @@ public interface IRouteRepository string sourceToken, string destinationNetworkName, string destinationToken, - string rateProviderName, - BigInteger minAmount, - BigInteger maxAmount, - RouteStatus status, - bool ignoreExpenseFee, - string serviceFeeName); + UpdateRouteRequest request); } diff --git a/csharp/src/Data.Abstractions/Repositories/ISignerAgentRepository.cs b/csharp/src/Data.Abstractions/Repositories/ISignerAgentRepository.cs index f96c64bd..68679c96 100644 --- a/csharp/src/Data.Abstractions/Repositories/ISignerAgentRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/ISignerAgentRepository.cs @@ -1,5 +1,6 @@ using Train.Solver.Common.Enums; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -9,7 +10,7 @@ public interface ISignerAgentRepository public Task> GetAllAsync(); - public Task CreateAsync(string name, string url, NetworkType[] supportedTypes); + public Task CreateAsync(CreateSignerAgentRequest request); public Task DeleteAsync(string name); } diff --git a/csharp/src/Data.Abstractions/Repositories/ISwapMetricRepository.cs b/csharp/src/Data.Abstractions/Repositories/ISwapMetricRepository.cs index 68c035fc..5d8b0636 100644 --- a/csharp/src/Data.Abstractions/Repositories/ISwapMetricRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/ISwapMetricRepository.cs @@ -8,10 +8,7 @@ namespace Train.Solver.Data.Abstractions.Repositories; public interface ISwapMetricRepository { - Task<(decimal TotalVolumeInUsd, decimal TotalProfitInUsd, int Count)> GetTotalVolumeAndProfitAsync(DateTime startFrom); - Task> GetDailyVolumeAsync(DateTime startFrom); - Task> GetDailyProfitAsync(DateTime startFrom); Task> GetDailyCountAsync(DateTime startFrom); } diff --git a/csharp/src/Data.Abstractions/Repositories/ITokenPriceRepository.cs b/csharp/src/Data.Abstractions/Repositories/ITokenPriceRepository.cs index 8abcb878..af6255e2 100644 --- a/csharp/src/Data.Abstractions/Repositories/ITokenPriceRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/ITokenPriceRepository.cs @@ -1,4 +1,5 @@ using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -8,7 +9,7 @@ public interface ITokenPriceRepository Task GetAsync(string symbol); - Task CreateAsync(string symbol, string externalId); + Task CreateAsync(CreateTokenPriceRequest request); Task UpdateAsync(Dictionary prices); } diff --git a/csharp/src/Data.Abstractions/Repositories/ITrustedWalletRepository.cs b/csharp/src/Data.Abstractions/Repositories/ITrustedWalletRepository.cs index 77cc210a..3713e7f2 100644 --- a/csharp/src/Data.Abstractions/Repositories/ITrustedWalletRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/ITrustedWalletRepository.cs @@ -1,5 +1,6 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -9,9 +10,9 @@ public interface ITrustedWalletRepository public Task> GetAllAsync(NetworkType[]? filterTypes); - public Task CreateAsync(NetworkType type, string address, string name); + public Task CreateAsync(CreateTrustedWalletRequest request); - public Task UpdateAsync(NetworkType type, string address, string name); + public Task UpdateAsync(NetworkType type, string address, UpdateTrustedWalletRequest request); public Task DeleteAsync(NetworkType type, string address); } diff --git a/csharp/src/Data.Abstractions/Repositories/IWalletRepository.cs b/csharp/src/Data.Abstractions/Repositories/IWalletRepository.cs index f2116e4c..d6de61a8 100644 --- a/csharp/src/Data.Abstractions/Repositories/IWalletRepository.cs +++ b/csharp/src/Data.Abstractions/Repositories/IWalletRepository.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Mvc; using Train.Solver.Common.Enums; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Abstractions.Repositories; @@ -10,7 +11,7 @@ public interface IWalletRepository public Task> GetAllAsync(NetworkType[]? filterTypes); - public Task CreateAsync(string signerAgent, NetworkType type, string address, string name); + public Task CreateAsync(string address, CreateWalletRequest request); - public Task UpdateAsync(NetworkType type, string address, string name); + public Task UpdateAsync(NetworkType type, string address, UpdateWalletRequest request); } diff --git a/csharp/src/Data.Npgsql/EFFeeRepository.cs b/csharp/src/Data.Npgsql/EFFeeRepository.cs index 866bb89d..a8183219 100644 --- a/csharp/src/Data.Npgsql/EFFeeRepository.cs +++ b/csharp/src/Data.Npgsql/EFFeeRepository.cs @@ -2,21 +2,19 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Npgsql; public class EFFeeRepository(INetworkRepository networkRepository, SolverDbContext dbContext) : IFeeRepository { - public async Task CreateServiceFeeAsync( - string name, - decimal feeInUsd, - decimal percentageFee) + public async Task CreateServiceFeeAsync(CreateServiceFeeRequest request) { var serviceFee = new ServiceFee { - Name = name, - FeeInUsd = feeInUsd, - FeePercentage = percentageFee + Name = request.Name, + FeeInUsd = request.FeeInUsd, + FeePercentage = request.PercentageFee }; dbContext.ServiceFees.Add(serviceFee); @@ -53,8 +51,7 @@ public async Task GetServiceFeeAsync(string name) public async Task UpdateServiceFeeAsync( string name, - decimal feeInUsd, - decimal percentageFee) + UpdateServiceFeeRequest request) { var serviceFee = await GetServiceFeeAsync(name); @@ -63,8 +60,8 @@ public async Task GetServiceFeeAsync(string name) throw new Exception($"Service fee {name} not found"); } - serviceFee.FeePercentage = percentageFee; - serviceFee.FeeInUsd = feeInUsd; + serviceFee.FeePercentage = request.PercentageFee; + serviceFee.FeeInUsd = request.FeeInUsd; await dbContext.SaveChangesAsync(); diff --git a/csharp/src/Data.Npgsql/EFNetworkRepository.cs b/csharp/src/Data.Npgsql/EFNetworkRepository.cs index a6d56d9d..d7d02a3f 100644 --- a/csharp/src/Data.Npgsql/EFNetworkRepository.cs +++ b/csharp/src/Data.Npgsql/EFNetworkRepository.cs @@ -2,6 +2,7 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Npgsql; @@ -29,23 +30,9 @@ public async Task> GetAllAsync(NetworkType[]? types) .ToListAsync(); } - public async Task CreateAsync( - string networkName, - string displayName, - NetworkType type, - TransactionFeeType feeType, - string chainId, - int feePercentageIncrease, - string htlcNativeContractAddress, - string htlcTokenContractAddress, - string nativeTokenSymbol, - string nativeTokenPriceSymbol, - string? nativeTokenContract, - int nativeTokenDecimals, - string nodeUrl, - string nodeProvider) + public async Task CreateAsync(CreateNetworkRequest request) { - var networkExists = await dbContext.Networks.AnyAsync(x => x.Name == networkName); + var networkExists = await dbContext.Networks.AnyAsync(x => x.Name == request.NetworkName); if (networkExists) return null; @@ -56,31 +43,31 @@ public async Task> GetAllAsync(NetworkType[]? types) { var network = new Network { - Name = networkName, - ChainId = chainId, - DisplayName = displayName, - FeePercentageIncrease = feePercentageIncrease, - FeeType = feeType, - HTLCNativeContractAddress = htlcNativeContractAddress, - HTLCTokenContractAddress = htlcTokenContractAddress, - Type = type, + Name = request.NetworkName, + ChainId = request.ChainId, + DisplayName = request.DisplayName, + FeePercentageIncrease = request.FeePercentageIncrease, + FeeType = request.FeeType, + HTLCNativeContractAddress = request.HtlcNativeContractAddress, + HTLCTokenContractAddress = request.HtlcTokenContractAddress, + Type = request.Type, }; dbContext.Networks.Add(network); await dbContext.SaveChangesAsync(); - var tokenPrice = await tokenPriceRepository.GetAsync(nativeTokenPriceSymbol); + var tokenPrice = await tokenPriceRepository.GetAsync(request.NativeTokenPriceSymbol); if (tokenPrice == null) { - throw new Exception($"Token price for '{nativeTokenPriceSymbol}' not found."); + throw new Exception($"Token price for '{request.NativeTokenPriceSymbol}' not found."); } var token = new Token { - Asset = nativeTokenSymbol, - Decimals = nativeTokenDecimals, - TokenContract = nativeTokenContract, + Asset = request.NativeTokenSymbol, + Decimals = request.NativeTokenDecimals, + TokenContract = request.NativeTokenContract, NetworkId = network.Id, TokenPriceId = tokenPrice.Id, }; @@ -90,8 +77,8 @@ public async Task> GetAllAsync(NetworkType[]? types) var node = new Node { - ProviderName = nodeProvider, - Url = nodeUrl, + ProviderName = request.NodeProvider, + Url = request.NodeUrl, }; network.Nodes.Add(node); @@ -109,11 +96,7 @@ public async Task> GetAllAsync(NetworkType[]? types) public async Task UpdateAsync( string networkName, - string displayName, - TransactionFeeType feeType, - int feePercentageIncrease, - string htlcNativeContractAddress, - string htlcTokenContractAddress) + UpdateNetworkRequest request) { var network = await GetAsync(networkName); @@ -122,11 +105,11 @@ public async Task> GetAllAsync(NetworkType[]? types) throw new Exception("Network not found"); } - network.DisplayName = displayName; - network.FeeType = feeType; - network.FeePercentageIncrease = feePercentageIncrease; - network.HTLCNativeContractAddress = htlcNativeContractAddress; - network.HTLCTokenContractAddress = htlcTokenContractAddress; + network.DisplayName = request.DisplayName; + network.FeeType = request.FeeType; + network.FeePercentageIncrease = request.FeePercentageIncrease; + network.HTLCNativeContractAddress = request.HtlcNativeContractAddress; + network.HTLCTokenContractAddress = request.HtlcTokenContractAddress; await dbContext.SaveChangesAsync(); @@ -135,8 +118,7 @@ public async Task> GetAllAsync(NetworkType[]? types) public async Task CreateNodeAsync( string networkName, - string providerName, - string url) + CreateNodeRequest request) { var network = await GetAsync(networkName); @@ -145,7 +127,7 @@ public async Task> GetAllAsync(NetworkType[]? types) return null; } - var node = new Node { Url = url, ProviderName = providerName, NetworkId = network.Id }; + var node = new Node { Url = request.Url, ProviderName = request.ProviderName, NetworkId = network.Id }; network.Nodes.Add(node); await dbContext.SaveChangesAsync(); @@ -161,10 +143,7 @@ await dbContext.Nodes public async Task CreateTokenAsync( string networkName, - string symbol, - string priceSymbol, - string? contract, - int decimals) + CreateTokenRequest request) { var network = await GetAsync(networkName); @@ -173,23 +152,23 @@ await dbContext.Nodes return null; } - if (network.Tokens.Any(x => x.Asset == symbol && x.TokenContract == contract)) + if (network.Tokens.Any(x => x.Asset == request.Symbol && x.TokenContract == request.Contract)) { return null; } - var tokenPrice = await tokenPriceRepository.GetAsync(priceSymbol); + var tokenPrice = await tokenPriceRepository.GetAsync(request.PriceSymbol); if (tokenPrice == null) { - throw new Exception($"Token price for '{priceSymbol}' not found."); + throw new Exception($"Token price for '{request.PriceSymbol}' not found."); } var token = new Token { - Asset = symbol, - Decimals = decimals, - TokenContract = contract, + Asset = request.Symbol, + Decimals = request.Decimals, + TokenContract = request.Contract, TokenPriceId = tokenPrice.Id, NetworkId = network.Id, }; diff --git a/csharp/src/Data.Npgsql/EFRouteRepository.cs b/csharp/src/Data.Npgsql/EFRouteRepository.cs index 6f268992..08ca0164 100644 --- a/csharp/src/Data.Npgsql/EFRouteRepository.cs +++ b/csharp/src/Data.Npgsql/EFRouteRepository.cs @@ -4,6 +4,7 @@ using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Common.Enums; using Train.Solver.Common.Helpers; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Npgsql; @@ -13,62 +14,49 @@ public class EFRouteRepository( IFeeRepository feeRepository, IWalletRepository walletRepository) : IRouteRepository { - public async Task CreateAsync( - string sourceNetworkName, - string sourceTokenSymbol, - string sourceWalletAddress, - NetworkType sourceWalletType, - string destinationNetworkName, - string destinationTokenSymbol, - string destinationWalletAddress, - NetworkType destinationWalletType, - string rateProviderName, - BigInteger minAmount, - BigInteger maxAmount, - bool ignoreExpenseFee, - string serviceFeeName) + public async Task CreateAsync(CreateRouteRequest request) { - var sourceToken = await networkRepository.GetTokenAsync(sourceNetworkName, sourceTokenSymbol); + var sourceToken = await networkRepository.GetTokenAsync(request.SourceNetworkName, request.SourceToken); if (sourceToken == null) { - throw new ArgumentException($"Source token {sourceTokenSymbol} not found in network {sourceNetworkName}"); + throw new ArgumentException($"Source token {request.SourceToken} not found in network {request.SourceNetworkName}"); } - var destinationToken = await networkRepository.GetTokenAsync(destinationNetworkName, destinationTokenSymbol); + var destinationToken = await networkRepository.GetTokenAsync(request.DestinationNetworkName, request.DestinationToken); if (destinationToken == null) { - throw new ArgumentException($"Destination token {destinationTokenSymbol} not found in network {destinationNetworkName}"); + throw new ArgumentException($"Destination token {request.DestinationToken} not found in network {request.DestinationNetworkName}"); } - var sourceWallet = await walletRepository.GetAsync(sourceWalletType, sourceWalletAddress); + var sourceWallet = await walletRepository.GetAsync(request.SourceWalletType, request.SourceWalletAddress); if (sourceWallet == null) { - throw new ArgumentException($"Source wallet {sourceWalletAddress} not found for network {sourceNetworkName}"); + throw new ArgumentException($"Source wallet {request.SourceWalletAddress} not found for network {request.SourceNetworkName}"); } - var destinationWallet = await walletRepository.GetAsync(destinationWalletType, destinationWalletAddress); + var destinationWallet = await walletRepository.GetAsync(request.DestinationWalletType, request.DestinationWalletAddress); if (destinationWallet == null) { - throw new ArgumentException($"Destination wallet {destinationWalletAddress} not found for network {destinationNetworkName}"); + throw new ArgumentException($"Destination wallet {request.DestinationWalletAddress} not found for network {request.DestinationNetworkName}"); } var rateProvider = await dbContext.RateProviders - .FirstOrDefaultAsync(x => x.Name == rateProviderName); + .FirstOrDefaultAsync(x => x.Name == request.RateProvider); if (rateProvider == null) { - throw new ArgumentException($"Rate provider {rateProviderName} not found"); + throw new ArgumentException($"Rate provider {request.RateProvider} not found"); } - var serviceFee = await feeRepository.GetServiceFeeAsync(serviceFeeName); + var serviceFee = await feeRepository.GetServiceFeeAsync(request.ServiceFee); if (serviceFee == null) { - throw new ArgumentException($"Service fee {serviceFeeName} not found"); + throw new ArgumentException($"Service fee {request.ServiceFee} not found"); } var route = new Route @@ -78,10 +66,10 @@ public class EFRouteRepository( SourceWallet = sourceWallet, DestinationWallet = destinationWallet, RateProvider = rateProvider, - MinAmountInSource = minAmount.ToString(), - MaxAmountInSource = maxAmount.ToString(), + MinAmountInSource = request.MinAmount.ToString(), + MaxAmountInSource = request.MaxAmount.ToString(), Status = RouteStatus.Active, - IgnoreExpenseFee = ignoreExpenseFee, + IgnoreExpenseFee = request.IgnoreExpenseFee, ServiceFee = serviceFee, }; @@ -97,19 +85,13 @@ public class EFRouteRepository( string sourceToken, string destinationNetworkName, string destinationToken, - string rateProviderName, - BigInteger minAmount, - BigInteger maxAmount, - RouteStatus status, - bool ignoreExpenseFee, - string serviceFeeName) + UpdateRouteRequest request) { var route = await GetAsync( sourceNetworkName, sourceToken, destinationNetworkName, - destinationToken, - amount: null); + destinationToken); if (route == null) { @@ -117,26 +99,26 @@ public class EFRouteRepository( } var rateProvider = await dbContext.RateProviders - .FirstOrDefaultAsync(x => x.Name == rateProviderName); + .FirstOrDefaultAsync(x => x.Name == request.RateProvider); if (rateProvider != null) { route.RateProviderId = rateProvider.Id; } - var serviceFee = await feeRepository.GetServiceFeeAsync(serviceFeeName); + var serviceFee = await feeRepository.GetServiceFeeAsync(request.ServiceFee); if (serviceFee == null) { - throw new ArgumentException($"Service fee {serviceFeeName} not found"); + throw new ArgumentException($"Service fee {request.ServiceFee} not found"); } - - route.MinAmountInSource = minAmount.ToString(); - route.MaxAmountInSource = maxAmount.ToString(); + + route.MinAmountInSource = request.MinAmount.ToString(); + route.MaxAmountInSource = request.MaxAmount.ToString(); route.ServiceFee = serviceFee; - route.IgnoreExpenseFee = ignoreExpenseFee; - route.Status = status; + route.IgnoreExpenseFee = request.IgnoreExpenseFee; + route.Status = request.Status; await dbContext.SaveChangesAsync(); @@ -157,8 +139,7 @@ public Task> GetAllRateProvidersAsync() string sourceNetworkName, string sourceToken, string destinationNetworkName, - string destinationToken, - BigInteger? amount) + string destinationToken) { var query = GetBaseQuery(null); @@ -175,16 +156,6 @@ public Task> GetAllRateProvidersAsync() return null; } - if (amount != null) - { - var routeMaxAmount = route.MaxAmountInSource; - - if (amount > BigInteger.Parse(routeMaxAmount)) - { - return null; - } - } - return route; } diff --git a/csharp/src/Data.Npgsql/EFSignerAgentRepository.cs b/csharp/src/Data.Npgsql/EFSignerAgentRepository.cs index 55976851..6f44b450 100644 --- a/csharp/src/Data.Npgsql/EFSignerAgentRepository.cs +++ b/csharp/src/Data.Npgsql/EFSignerAgentRepository.cs @@ -7,15 +7,16 @@ using System.Threading.Tasks; using Train.Solver.Common.Enums; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; namespace Train.Solver.Data.Npgsql; public class EFSignerAgentRepository(SolverDbContext dbContext) : ISignerAgentRepository { - public async Task CreateAsync(string name, string url, NetworkType[] supportedTypes) + public async Task CreateAsync(CreateSignerAgentRequest request) { - var signerAgentExists = await dbContext.SignerAgents.AnyAsync(x => x.Name == name); + var signerAgentExists = await dbContext.SignerAgents.AnyAsync(x => x.Name == request.Name); if (signerAgentExists) { @@ -24,9 +25,9 @@ public class EFSignerAgentRepository(SolverDbContext dbContext) : ISignerAgentRe var signerAgent = new SignerAgent { - Name = name, - Url = url, - SupportedTypes = supportedTypes + Name = request.Name, + Url = request.Url, + SupportedTypes = request.SupportedTypes }; dbContext.SignerAgents.Add(signerAgent); diff --git a/csharp/src/Data.Npgsql/EFSwapMetricRepository.cs b/csharp/src/Data.Npgsql/EFSwapMetricRepository.cs index fbf1f367..eb650308 100644 --- a/csharp/src/Data.Npgsql/EFSwapMetricRepository.cs +++ b/csharp/src/Data.Npgsql/EFSwapMetricRepository.cs @@ -10,20 +10,6 @@ namespace Train.Solver.Data.Npgsql; internal class EFSwapMetricRepository(SolverDbContext dbContext) : ISwapMetricRepository { - public async Task<(decimal TotalVolumeInUsd, decimal TotalProfitInUsd, int Count)> GetTotalVolumeAndProfitAsync(DateTime startFrom) - { - var r = await dbContext.SwapMetrics - .Where(m => m.CreatedDate >= startFrom) - .GroupBy(_ => 1) - .Select(g => new { - TotalVolume = g.Sum(x => x.VolumeInUsd), - TotalProfit = g.Sum(x => x.ProfitInUsd), - Count = g.Count() - }).FirstOrDefaultAsync(); - - return (r?.TotalVolume ?? 0, r?.TotalProfit ?? 0, r?.Count ?? 0); - } - public async Task> GetDailyVolumeAsync(DateTime startFrom) { var result = await dbContext.SwapMetrics diff --git a/csharp/src/Data.Npgsql/EFSwapRepository.cs b/csharp/src/Data.Npgsql/EFSwapRepository.cs index 34784ed6..cf31d191 100644 --- a/csharp/src/Data.Npgsql/EFSwapRepository.cs +++ b/csharp/src/Data.Npgsql/EFSwapRepository.cs @@ -27,8 +27,7 @@ public async Task CreateAsync( sourceNetworkName, sourceAsset, destinationNetworkName, - destinationAsset, - null); + destinationAsset); if (route == null) { diff --git a/csharp/src/Data.Npgsql/EFTokenPriceRepository.cs b/csharp/src/Data.Npgsql/EFTokenPriceRepository.cs index 8ce7cf44..fb3e662c 100644 --- a/csharp/src/Data.Npgsql/EFTokenPriceRepository.cs +++ b/csharp/src/Data.Npgsql/EFTokenPriceRepository.cs @@ -1,17 +1,18 @@ using Microsoft.EntityFrameworkCore; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; namespace Train.Solver.Data.Npgsql; public class EFTokenPriceRepository(SolverDbContext dbContext) : ITokenPriceRepository { - public async Task CreateAsync(string symbol, string externalId) + public async Task CreateAsync(CreateTokenPriceRequest request) { var tokenPrice = new TokenPrice { - Symbol = symbol, - ExternalId = externalId, + Symbol = request.Symbol, + ExternalId = request.ExternalId, }; dbContext.TokenPrices.Add(tokenPrice); diff --git a/csharp/src/Data.Npgsql/EFTrustedWalletRepository.cs b/csharp/src/Data.Npgsql/EFTrustedWalletRepository.cs index 9b3387d8..4dfe0b6c 100644 --- a/csharp/src/Data.Npgsql/EFTrustedWalletRepository.cs +++ b/csharp/src/Data.Npgsql/EFTrustedWalletRepository.cs @@ -6,15 +6,16 @@ using System.Threading.Tasks; using Train.Solver.Common.Enums; using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Data.Abstractions.Models; using Train.Solver.Data.Abstractions.Repositories; namespace Train.Solver.Data.Npgsql; public class EFTrustedWalletRepository(SolverDbContext dbContext) : ITrustedWalletRepository { - public async Task CreateAsync(NetworkType type, string address, string name) + public async Task CreateAsync(CreateTrustedWalletRequest request) { - var trustedWalletExists = await dbContext.TrustedWallets.AnyAsync(x => x.Address == address); + var trustedWalletExists = await dbContext.TrustedWallets.AnyAsync(x => x.Address == request.Address); if (trustedWalletExists) { @@ -23,9 +24,9 @@ public class EFTrustedWalletRepository(SolverDbContext dbContext) : ITrustedWall var trustedWallet = new TrustedWallet { - Address = address, - Name = name, - NetworkType = type, + Address = request.Address, + Name = request.Name, + NetworkType = request.NetworkType, }; dbContext.TrustedWallets.Add(trustedWallet); @@ -54,7 +55,7 @@ public async Task> GetAllAsync(NetworkType[]? types) return trustedWallet; } - public async Task UpdateAsync(NetworkType type, string address, string name) + public async Task UpdateAsync(NetworkType type, string address, UpdateTrustedWalletRequest request) { var trustedWallet = await GetAsync(type, address); @@ -64,7 +65,7 @@ public async Task> GetAllAsync(NetworkType[]? types) return null; } - trustedWallet.Name = name; + trustedWallet.Name = request.Name; await dbContext.SaveChangesAsync(); return trustedWallet; diff --git a/csharp/src/Data.Npgsql/EFWalletRepository.cs b/csharp/src/Data.Npgsql/EFWalletRepository.cs index 0e37974d..6380e7c7 100644 --- a/csharp/src/Data.Npgsql/EFWalletRepository.cs +++ b/csharp/src/Data.Npgsql/EFWalletRepository.cs @@ -2,6 +2,7 @@ using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Models; namespace Train.Solver.Data.Npgsql; @@ -9,8 +10,8 @@ public class EFWalletRepository( ISignerAgentRepository signerAgentRepository, SolverDbContext dbContext) : IWalletRepository { - public async Task CreateAsync(string signerAgentName, NetworkType type, string address, string name) - { + public async Task CreateAsync(string address, CreateWalletRequest request) + { var walletExists = await dbContext.Wallets.AnyAsync(x => x.Address == address); if (walletExists) @@ -18,14 +19,14 @@ public class EFWalletRepository( return null; } - var signerAgent = await signerAgentRepository.GetAsync(signerAgentName); + var signerAgent = await signerAgentRepository.GetAsync(request.SignerAgent); if (signerAgent == null) { throw new Exception("Signer agent not found"); } - if (!signerAgent.SupportedTypes.Contains(type)) + if (!signerAgent.SupportedTypes.Contains(request.NetworkType)) { throw new Exception("Unsupported type"); } @@ -33,8 +34,8 @@ public class EFWalletRepository( var wallet = new Wallet { Address = address, - Name = name, - NetworkType = type, + Name = request.Name, + NetworkType = request.NetworkType, SignerAgentId = signerAgent.Id, }; @@ -61,7 +62,7 @@ public async Task> GetAllAsync(NetworkType[]? types) return wallet; } - public async Task UpdateAsync(NetworkType type, string address, string name) + public async Task UpdateAsync(NetworkType type, string address, UpdateWalletRequest request) { var wallet = await GetAsync(type, address); @@ -71,7 +72,7 @@ public async Task> GetAllAsync(NetworkType[]? types) return null; } - wallet.Name = name; + wallet.Name = request.Name; await dbContext.SaveChangesAsync(); return wallet; diff --git a/csharp/src/Infrastructure/Services/QuoteService.cs b/csharp/src/Infrastructure/Services/QuoteService.cs index 89fab429..8b3246a1 100644 --- a/csharp/src/Infrastructure/Services/QuoteService.cs +++ b/csharp/src/Infrastructure/Services/QuoteService.cs @@ -25,8 +25,7 @@ public virtual async Task GetLimitAsync(SourceDestinationRequest reque request.SourceNetwork, request.SourceToken, request.DestinationNetwork, - request.DestinationToken, - null); + request.DestinationToken); if (route is null) { @@ -72,8 +71,7 @@ private async Task GetQuoteAsync( request.SourceNetwork, request.SourceToken, request.DestinationNetwork, - request.DestinationToken, - shouldValidateLimit ? request.Amount : null); + request.DestinationToken); if (route is null) { @@ -137,8 +135,6 @@ private async Task GetQuoteAsync( { BigInteger fixedFee = default; BigInteger? expenseFee = default; - BigInteger percentageFee = default; - if (!route.IgnoreExpenseFee) { @@ -153,8 +149,8 @@ private async Task GetQuoteAsync( var (Fee, Percentage) = CalculateServiceFee(route); fixedFee += Fee; - percentageFee = amount.PercentOf(Percentage); + var percentageFee = amount.PercentOf(Percentage); var totalFee = fixedFee + percentageFee; var totalServiceFee = Fee + percentageFee; diff --git a/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs b/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs index 7eb71ba0..953fc61a 100644 --- a/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs +++ b/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs @@ -7,6 +7,7 @@ using Train.Solver.Common.Extensions; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.EVM.Models; namespace Train.Solver.Workflow.EVM.Helpers; diff --git a/csharp/src/Workflow.Abstractions/Models/AllowanceRequest.cs b/csharp/src/Workflow.EVM/Models/AllowanceRequest.cs similarity index 60% rename from csharp/src/Workflow.Abstractions/Models/AllowanceRequest.cs rename to csharp/src/Workflow.EVM/Models/AllowanceRequest.cs index 5f151fd8..fc0b1fb6 100644 --- a/csharp/src/Workflow.Abstractions/Models/AllowanceRequest.cs +++ b/csharp/src/Workflow.EVM/Models/AllowanceRequest.cs @@ -1,4 +1,6 @@ -namespace Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; + +namespace Train.Solver.Workflow.EVM.Models; public class AllowanceRequest : BaseRequest { diff --git a/csharp/src/Workflow.Abstractions/Models/ApprovePrepareRequest.cs b/csharp/src/Workflow.EVM/Models/ApprovePrepareRequest.cs similarity index 76% rename from csharp/src/Workflow.Abstractions/Models/ApprovePrepareRequest.cs rename to csharp/src/Workflow.EVM/Models/ApprovePrepareRequest.cs index ddae47ab..677ae5ac 100644 --- a/csharp/src/Workflow.Abstractions/Models/ApprovePrepareRequest.cs +++ b/csharp/src/Workflow.EVM/Models/ApprovePrepareRequest.cs @@ -1,6 +1,6 @@ using System.Numerics; -namespace Train.Solver.Workflow.Abstractions.Models; +namespace Train.Solver.Workflow.EVM.Models; public class ApprovePrepareRequest { diff --git a/csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs b/csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs similarity index 79% rename from csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs rename to csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs index fb313bc1..e4ab8194 100644 --- a/csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs +++ b/csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs @@ -1,6 +1,7 @@ using System.Numerics; +using Train.Solver.Workflow.Abstractions.Models; -namespace Train.Solver.Workflow.Abstractions.Models; +namespace Train.Solver.Workflow.EVM.Models; public class EstimateFeeRequest : BaseRequest { diff --git a/csharp/src/Workflow.Abstractions/Models/GetBatchTransactionRequest.cs b/csharp/src/Workflow.EVM/Models/GetBatchTransactionRequest.cs similarity index 55% rename from csharp/src/Workflow.Abstractions/Models/GetBatchTransactionRequest.cs rename to csharp/src/Workflow.EVM/Models/GetBatchTransactionRequest.cs index 08674c35..68ffe194 100644 --- a/csharp/src/Workflow.Abstractions/Models/GetBatchTransactionRequest.cs +++ b/csharp/src/Workflow.EVM/Models/GetBatchTransactionRequest.cs @@ -1,4 +1,6 @@ -namespace Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; + +namespace Train.Solver.Workflow.EVM.Models; public class GetBatchTransactionRequest : BaseRequest { diff --git a/csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs b/csharp/src/Workflow.EVM/Models/NextNonceRequest.cs similarity index 52% rename from csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs rename to csharp/src/Workflow.EVM/Models/NextNonceRequest.cs index c06e67f7..d912e6cd 100644 --- a/csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs +++ b/csharp/src/Workflow.EVM/Models/NextNonceRequest.cs @@ -1,4 +1,6 @@ -namespace Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; + +namespace Train.Solver.Workflow.EVM.Models; public class NextNonceRequest : BaseRequest { diff --git a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs index ec0dbfa2..24a26c6f 100644 --- a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs +++ b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs @@ -353,7 +353,8 @@ public Task LockCommitedAsync(HTLCLockEventMessage message) return Task.CompletedTask; } - private async Task ExecuteTransactionAsync(TransactionRequest transactionRequest) + private async Task ExecuteTransactionAsync( + TransactionRequest transactionRequest) { var confirmedTransaction = await ExecuteChildTransactionProcessorWorkflowAsync( transactionRequest.Network.Type, From 2d77a3207942f800d7ea34e49e99a83fa1a34634 Mon Sep 17 00:00:00 2001 From: Ruben Date: Thu, 18 Sep 2025 19:04:31 +0400 Subject: [PATCH 05/69] Remove swap id from transaction request --- .../src/Workflow.Abstractions/Models/TransactionRequest.cs | 2 -- .../src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs | 2 -- csharp/src/Workflow.Swap/Activities/WorkflowActivities.cs | 2 -- csharp/src/Workflow.Swap/Workflows/RefundWorkflow.cs | 1 - csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs | 7 +------ 5 files changed, 1 insertion(+), 13 deletions(-) diff --git a/csharp/src/Workflow.Abstractions/Models/TransactionRequest.cs b/csharp/src/Workflow.Abstractions/Models/TransactionRequest.cs index 40836447..cf88adfe 100644 --- a/csharp/src/Workflow.Abstractions/Models/TransactionRequest.cs +++ b/csharp/src/Workflow.Abstractions/Models/TransactionRequest.cs @@ -11,6 +11,4 @@ public class TransactionRequest : BaseRequest public required string FromAddress { get; set; } = null!; public required string SignerAgentUrl { get; set; } - - public int? SwapId { get; set; } } diff --git a/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs b/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs index 206094fa..76a855cc 100644 --- a/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs +++ b/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs @@ -192,7 +192,6 @@ await ExecuteChildWorkflowAsync((x) => x.RunAsync( ToAddress = request.FromAddress, }.ToJson(), Type = TransactionType.Transfer, - SwapId = request.SwapId, }, new TransactionExecutionContext { Nonce = context.Nonce, @@ -261,7 +260,6 @@ await ExecuteChildWorkflowAsync((x) => x.RunAsync(new T FromAddress = context.FromAddress, SignerAgentUrl = context.SignerAgentUrl, Network = context.Network, - SwapId = context.SwapId, }, new()), new() { Id = TemporalHelper.BuildProcessorId(context.Network.Name, TransactionType.Approve, NewGuid()) }); diff --git a/csharp/src/Workflow.Swap/Activities/WorkflowActivities.cs b/csharp/src/Workflow.Swap/Activities/WorkflowActivities.cs index 00c87818..c6dd6552 100644 --- a/csharp/src/Workflow.Swap/Activities/WorkflowActivities.cs +++ b/csharp/src/Workflow.Swap/Activities/WorkflowActivities.cs @@ -96,7 +96,6 @@ await temporalClient.StartWorkflowAsync( Network = destinationNetwork.ToDetailedDto(), FromAddress = swap.Route.DestinationWallet.Address, SignerAgentUrl = swap.Route.DestinationWallet.SignerAgent.Url, - SwapId = swap.Id, }, new TransactionExecutionContext()], new(id: TemporalHelper.BuildProcessorId(swap.Route.DestinationToken.Network.Name, TransactionType.HTLCRefund, Guid.NewGuid()), taskQueue: swap.Route.DestinationToken.Network.Type.ToString()) { @@ -129,7 +128,6 @@ await temporalClient.StartWorkflowAsync( Network = sourceNetwork.ToDetailedDto(), FromAddress = swap.Route.SourceWallet.Address, SignerAgentUrl = swap.Route.SourceWallet.SignerAgent.Url, - SwapId = swap.Id, }, new TransactionExecutionContext()], new(id: TemporalHelper.BuildProcessorId(swap.Route.SourceToken.Network.Name, TransactionType.HTLCRefund, Guid.NewGuid()), taskQueue: swap.Route.SourceToken.Network.Type.ToString()) { diff --git a/csharp/src/Workflow.Swap/Workflows/RefundWorkflow.cs b/csharp/src/Workflow.Swap/Workflows/RefundWorkflow.cs index 1367637f..469beef6 100644 --- a/csharp/src/Workflow.Swap/Workflows/RefundWorkflow.cs +++ b/csharp/src/Workflow.Swap/Workflows/RefundWorkflow.cs @@ -45,7 +45,6 @@ public async Task RunAsync(string commitId, string networkName, string fromAddre Network = network, FromAddress = fromAddress, SignerAgentUrl = signerAgent.Url, - SwapId = swap.Id, }, new TransactionExecutionContext()), new ChildWorkflowOptions { Id = BuildProcessorId( diff --git a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs index 24a26c6f..0527ec45 100644 --- a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs +++ b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs @@ -165,7 +165,6 @@ await ExecuteTransactionAsync(new TransactionRequest() Network = _destinationNetwork, FromAddress = _destinationWalletAddress!, SignerAgentUrl = _destinationWalletAgentUrl!, - SwapId = _swapId, }); //_isLpLocked = true; @@ -214,7 +213,6 @@ await ExecuteTransactionAsync(new TransactionRequest() Network = _sourceNetwork, FromAddress = _sourceWalletAddress!, SignerAgentUrl = _sourceWalletAgentUrl!, - SwapId = _swapId }); userLocked = await WaitConditionAsync( @@ -251,7 +249,6 @@ await ExecuteTransactionAsync(new TransactionRequest() Network = _destinationNetwork, FromAddress = _destinationWalletAddress!, SignerAgentUrl = _sourceWalletAgentUrl!, - SwapId = _swapId }); tasks.Add(redeemInDestinationTask); @@ -272,7 +269,6 @@ await ExecuteTransactionAsync(new TransactionRequest() Network = _sourceNetwork, FromAddress = _sourceWalletAddress!, SignerAgentUrl = _sourceWalletAgentUrl!, - SwapId = _swapId }); tasks.Add(redeemInSourceTask); @@ -311,7 +307,6 @@ await ExecuteTransactionAsync(new TransactionRequest() Network = network, FromAddress = _destinationWalletAddress!, SignerAgentUrl = _destinationWalletAgentUrl!, - SwapId = _swapId! }); } @@ -370,7 +365,7 @@ private async Task ExecuteTransactionAsync( await ExecuteActivityAsync( (ISwapActivities x) => - x.CreateSwapTransactionAsync(transactionRequest.SwapId, transactionRequest.Type, confirmedTransaction), + x.CreateSwapTransactionAsync(_swapId, transactionRequest.Type, confirmedTransaction), DefaultActivityOptions(Constants.CoreTaskQueue)); await ExecuteActivityAsync( From 0ce4676db681a2b60572ee2594144f4678f8e7de Mon Sep 17 00:00:00 2001 From: Ruben Date: Thu, 18 Sep 2025 19:17:30 +0400 Subject: [PATCH 06/69] Get rid of calldata asset --- .../Models/PrepareTransactionDto.cs | 4 ---- .../Models/TransactionResponse.cs | 6 ------ .../Activities/EVMBlockchainActivities.cs | 1 - .../Helpers/EVMTransactionBuilder.cs | 20 ------------------- .../Workflows/EVMTransactionProcessor.cs | 4 ++-- .../Workflow.Swap/Workflows/SwapWorkflow.cs | 4 +++- 6 files changed, 5 insertions(+), 34 deletions(-) diff --git a/csharp/src/Infrastructure.Abstractions/Models/PrepareTransactionDto.cs b/csharp/src/Infrastructure.Abstractions/Models/PrepareTransactionDto.cs index 98060c23..4a5177d8 100644 --- a/csharp/src/Infrastructure.Abstractions/Models/PrepareTransactionDto.cs +++ b/csharp/src/Infrastructure.Abstractions/Models/PrepareTransactionDto.cs @@ -11,8 +11,4 @@ public class PrepareTransactionDto public string Asset { get; set; } = null!; public BigInteger Amount { get; set; } - - public string CallDataAsset { get; set; } = null!; - - public BigInteger CallDataAmount { get; set; } } diff --git a/csharp/src/Workflow.Abstractions/Models/TransactionResponse.cs b/csharp/src/Workflow.Abstractions/Models/TransactionResponse.cs index cbbd7677..f672ac7b 100644 --- a/csharp/src/Workflow.Abstractions/Models/TransactionResponse.cs +++ b/csharp/src/Workflow.Abstractions/Models/TransactionResponse.cs @@ -5,12 +5,6 @@ namespace Train.Solver.Workflow.Abstractions.Models; public class TransactionResponse { - public BigInteger Amount { get; set; } - - public string Asset { get; set; } = null!; - - public required int Decimals { get; set; } - public required string NetworkName { get; set; } = null!; public required string TransactionHash { get; set; } = null!; diff --git a/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs b/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs index f5b25c60..24a3f30e 100644 --- a/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs +++ b/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs @@ -734,7 +734,6 @@ private async Task GetTransactionAsync(DetailedNetworkDto n var transactionModel = new TransactionResponse { - Decimals = nativeCurrency.Decimals, NetworkName = network.Name, Status = TransactionStatus.Completed, TransactionHash = transactionResult.Data.TransactionHash, diff --git a/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs b/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs index 953fc61a..eca5185b 100644 --- a/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs +++ b/csharp/src/Workflow.EVM/Helpers/EVMTransactionBuilder.cs @@ -44,8 +44,6 @@ public static PrepareTransactionDto BuildApproveTransaction(DetailedNetworkDto n Spender = htlcContractAddress, Value = request.Amount }.GetCallData().ToHex().EnsureEvenLengthHex().EnsureHexPrefix(), - CallDataAsset = nativeCurrency.Symbol, - CallDataAmount = BigInteger.Zero, }; return response; @@ -81,15 +79,11 @@ public static PrepareTransactionDto BuildTransferTransaction( response.Amount = BigInteger.Zero; response.ToAddress = currency.Contract!; - response.CallDataAsset = currency.Symbol; - response.CallDataAmount = request.Amount; } else { response.Amount = request.Amount; response.ToAddress = request.ToAddress; - response.CallDataAsset = currency.Symbol; - response.CallDataAmount = request.Amount; } return response; @@ -133,8 +127,6 @@ public static PrepareTransactionDto BuildHTLCAddLockSigTransaction(DetailedNetwo Amount = BigInteger.Zero, Asset = nativeCurrency.Symbol, ToAddress = htlcContractAddress, - CallDataAsset = request.Asset, - CallDataAmount = BigInteger.Zero }; return response; @@ -177,8 +169,6 @@ public static PrepareTransactionDto BuildHTLCCommitTransaction(DetailedNetworkDt response.Amount = BigInteger.Zero; response.Asset = nativeCurrency.Symbol; - response.CallDataAsset = request.SourceAsset; - response.CallDataAmount = request.Amount; } else { @@ -200,8 +190,6 @@ public static PrepareTransactionDto BuildHTLCCommitTransaction(DetailedNetworkDt response.Amount = request.Amount; response.Asset = nativeCurrency.Symbol; - response.CallDataAsset = request.SourceAsset; - response.CallDataAmount = request.Amount; } return response; @@ -253,8 +241,6 @@ public static PrepareTransactionDto BuildHTLCLockTransaction( response.Amount = BigInteger.Zero; response.Asset = nativeCurrency.Symbol; - response.CallDataAsset = request.SourceAsset; - response.CallDataAmount = request.Amount + request.Reward; } else { @@ -274,8 +260,6 @@ public static PrepareTransactionDto BuildHTLCLockTransaction( response.Amount = request.Amount; response.Asset = nativeCurrency.Symbol; - response.CallDataAsset = request.SourceAsset; - response.CallDataAmount = request.Amount + request.Reward; } var htlcContractAddress = isNative @@ -318,8 +302,6 @@ public static PrepareTransactionDto BuildHTLCRedeemTranaction( Amount = BigInteger.Zero, ToAddress = htlcContractAddress, Asset = network.NativeToken.Symbol, - CallDataAsset = request.Asset, - CallDataAmount = BigInteger.Zero, }; } @@ -350,8 +332,6 @@ public static PrepareTransactionDto BuildHTLCRefundTransaction(DetailedNetworkDt Amount = BigInteger.Zero, ToAddress = htlcContractAddress, Asset = network.NativeToken.Symbol, - CallDataAsset = request.Asset, - CallDataAmount = BigInteger.Zero, }; } } diff --git a/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs b/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs index 76a855cc..fff31e16 100644 --- a/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs +++ b/csharp/src/Workflow.EVM/Workflows/EVMTransactionProcessor.cs @@ -126,8 +126,8 @@ public async Task RunAsync(TransactionRequest request, Tran var confirmedTransaction = await GetTransactionReceiptAsync(request, context); - confirmedTransaction.Asset = preparedTransaction.CallDataAsset; - confirmedTransaction.Amount = preparedTransaction.CallDataAmount; + //confirmedTransaction.Asset = preparedTransaction.CallDataAsset; + //confirmedTransaction.Amount = preparedTransaction.CallDataAmount; return confirmedTransaction; } diff --git a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs index 0527ec45..60666562 100644 --- a/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs +++ b/csharp/src/Workflow.Swap/Workflows/SwapWorkflow.cs @@ -373,7 +373,9 @@ await ExecuteActivityAsync( confirmedTransaction.NetworkName, confirmedTransaction.FeeAsset, confirmedTransaction.FeeAmount.ToString(), - confirmedTransaction.Asset, + transactionRequest.Network.Name == _sourceNetwork!.Name + ? _htlcCommitMessage!.SourceAsset + : _htlcCommitMessage!.DestinationAsset, transactionRequest.Type), DefaultActivityOptions(Constants.CoreTaskQueue)); From 4ff59afdc02620c9028d0e5cf643dbcb5c81fb65 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 2 Oct 2025 20:15:00 +0400 Subject: [PATCH 07/69] Bring Aztec changes to dev. --- js/package-lock.json | 3138 ++------ js/package.json | 13 +- .../Extensions/StringExtensions.ts | 14 +- .../Activities/ABIs/train.json | 6558 +++++++++-------- .../Activities/AztecBlockchainActivities.ts | 16 +- .../Activities/Helper/AztecEventTracker.ts | 15 +- .../Helper/AztecTransactionBuilder.ts | 62 +- .../Blockchain.Aztec/Activities/Helper/FPC.ts | 30 - .../Activities/Helper/Train.ts | 220 - .../Blockchain.Aztec/Worker/AztecWorker.ts | 5 +- .../Workflows/AztecTransactionProcessor.ts | 19 +- .../Workflows/FuelTransactionProcessor.ts | 13 +- .../Activities/Helper/StarknetEventTracker.ts | 12 +- treasury/package-lock.json | 995 ++- treasury/package.json | 10 +- treasury/src/treasury/aztec/ABIs/train.json | 6558 +++++++++-------- treasury/src/treasury/aztec/FPC.ts | 4 +- treasury/src/treasury/aztec/Train.ts | 60 +- treasury/src/treasury/aztec/aztec.dto.ts | 5 +- treasury/src/treasury/aztec/aztec.service.ts | 53 +- 20 files changed, 7875 insertions(+), 9925 deletions(-) delete mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts delete mode 100644 js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts diff --git a/js/package-lock.json b/js/package-lock.json index 723e210d..90992221 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -9,12 +9,11 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@aztec/accounts": "1.1.3", - "@aztec/aztec.js": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-contracts": "^0.23.0", - "@aztec/noir-contracts.js": "1.1.3", - "@aztec/pxe": "1.1.3", + "@aztec/accounts": "^2.0.3", + "@aztec/aztec.js": "^2.0.3", + "@aztec/kv-store": "^2.0.3", + "@aztec/noir-contracts.js": "^2.0.3", + "@aztec/pxe": "^2.0.3", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", @@ -39,21 +38,21 @@ } }, "node_modules/@adraffy/ens-normalize": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", - "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", "license": "MIT" }, "node_modules/@aztec/accounts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-1.1.3.tgz", - "integrity": "sha512-Q754MHkDojefx1m5KzsmDYUhir+NbqVzXdthFkI5GRpUOJmpRLD44sG58t33QOMbcs/Smtp35DzIS95coukYXA==", - "dependencies": { - "@aztec/aztec.js": "1.1.3", - "@aztec/entrypoints": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-2.0.3.tgz", + "integrity": "sha512-RNOQOgkRVQT6exmZ9IvqerTq5R/D/ptVXjIEuWmtu0pw/nAYypUAuF05vsTv7KP7ZhMvrUh40pSgAbgQSXFH9A==", + "dependencies": { + "@aztec/aztec.js": "2.0.3", + "@aztec/entrypoints": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -61,17 +60,17 @@ } }, "node_modules/@aztec/aztec.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-1.1.3.tgz", - "integrity": "sha512-WjKKL/PUvk2xUj+ZgKP68xZYyHdeuN6xV+PHRaRVSBD0YIMSaWIEDirdhjTBd6kQK1soFYRS8+gy5CLx2oSSiQ==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/entrypoints": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/l1-artifacts": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-2.0.3.tgz", + "integrity": "sha512-3JxvC1R0IvvIr0VUEIhM6Eu9MgBH7+VQosTfcX8J+Gx5b0ZWRDxhJT1YrWyst0JJnoPFEfFXThINJ5vJsq8W9A==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/entrypoints": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", "axios": "^1.8.2", "tslib": "^2.4.0", "viem": "2.23.7" @@ -81,20 +80,20 @@ } }, "node_modules/@aztec/bb-prover": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-1.1.3.tgz", - "integrity": "sha512-YsyyIY5dK6QcXfg7dVvRg21Bx+IyTYXWxMTryxqkqqVD6O85dVGSChXUjdt7o2x4GzOErZy4/wlEBt4NriIh9A==", - "dependencies": { - "@aztec/bb.js": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/simulator": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", - "@aztec/world-state": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-2.0.3.tgz", + "integrity": "sha512-UqgC6OExLTDPkTyfnHcIuiFUzrH1ZvtfebV3Ryz+VKxDUOFDNeY/MYjUB7CC/VS1qulKZaiyDFzROAtmJUEeYg==", + "dependencies": { + "@aztec/bb.js": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/simulator": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", + "@aztec/world-state": "2.0.3", "commander": "^12.1.0", "pako": "^2.1.0", "source-map-support": "^0.5.21", @@ -108,9 +107,9 @@ } }, "node_modules/@aztec/bb.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-1.1.3.tgz", - "integrity": "sha512-cAR++gmXYvSzC0CyGfo326YMumdmjs5vGTErx2NQKKc96MyYcJdm9aTiyf/G2uBdGSn4tWdMgxOxH2lr/qH1Sw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-2.0.3.tgz", + "integrity": "sha512-sI8lA2L8RMACsi6iBtcuKgGLx4crMzoAaTNtfP3VAaOpjoIwB3O/AMETz5IDGdkOA6tOqM2R0nWh1J+wDYPlVQ==", "license": "MIT", "dependencies": { "comlink": "^4.4.1", @@ -126,12 +125,12 @@ } }, "node_modules/@aztec/blob-lib": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-1.1.3.tgz", - "integrity": "sha512-+YAGXaW75hKEAmlNtcxd8k7XJaIxbphQ/ddy04MTlYMclQr/43ZfKX/xPErHH/7aV4MAwRmrpUFOxYNO4Bu/yA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-2.0.3.tgz", + "integrity": "sha512-bVyFI9s/VdT6kIgYz36X79E85gYdF8LwNvsHLqWKJdKokN5RKPxaD/Ez5+3h3R4HZpWIMc9yjUIKpp1Tn8ebWg==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", "c-kzg": "4.0.0-alpha.1", "tslib": "^2.4.0" }, @@ -140,12 +139,12 @@ } }, "node_modules/@aztec/builder": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-1.1.3.tgz", - "integrity": "sha512-VHg2S344a5NXHKd8I0Rj1JqC1v9ufm6/xvOIauFDcf3XNf+rYSNt3iLOcVE4ueDBFMgaasfeBzsABvp4kJ1vMw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-2.0.3.tgz", + "integrity": "sha512-sP6GTHKRburRmfq3ettRxASLjZNvHOPPbH19Mm8kt0LXx08SytZdpyCtaiJmakowYtXLhFMgKrO1QppLtUEfLg==", "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "commander": "^12.1.0" }, "bin": { @@ -155,347 +154,10 @@ "node": ">=20.10" } }, - "node_modules/@aztec/circuit-types": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/circuit-types/-/circuit-types-0.23.0.tgz", - "integrity": "sha512-5lyopDn8r9w7wvlji7L73vaC06oZY1RLnhWXgrvoaSkCfDZj+L0ArhmofqJ5xOcROfPAbJopORJteO/+q0uqsg==", - "dependencies": { - "@aztec/circuits.js": "0.23.0", - "@aztec/ethereum": "0.23.0", - "@aztec/foundation": "0.23.0", - "@aztec/types": "0.23.0", - "browserify-cipher": "^1.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.isequal": "^4.5.0", - "lodash.times": "^4.3.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "license": "MIT" - }, - "node_modules/@aztec/circuit-types/node_modules/@aztec/bb.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", - "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", - "license": "MIT", - "dependencies": { - "comlink": "^4.4.1", - "commander": "^10.0.1", - "debug": "^4.3.4", - "tslib": "^2.4.0" - }, - "bin": { - "bb.js": "dest/node/main.js" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@aztec/ethereum": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", - "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", - "dependencies": { - "@aztec/foundation": "0.23.0", - "dotenv": "^16.0.3", - "tslib": "^2.4.0", - "viem": "^1.2.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@aztec/foundation": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", - "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", - "dependencies": { - "@aztec/bb.js": "0.23.0", - "@koa/cors": "^4.0.0", - "@noble/curves": "^1.2.0", - "bn.js": "^5.2.1", - "debug": "^4.3.4", - "detect-node": "^2.1.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "koa": "^2.14.2", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "levelup": "^5.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "memdown": "^6.1.1", - "pako": "^2.1.0", - "sha3": "^2.1.4", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@koa/cors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", - "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", - "license": "MIT", - "dependencies": { - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/circuit-types/node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/circuit-types/node_modules/abitype": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", - "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/@aztec/circuit-types/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@aztec/circuit-types/node_modules/isows": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", - "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@aztec/circuit-types/node_modules/viem": { - "version": "1.21.4", - "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", - "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "0.9.8", - "isows": "1.0.3", - "ws": "8.13.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@aztec/circuit-types/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@aztec/circuits.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/circuits.js/-/circuits.js-0.23.0.tgz", - "integrity": "sha512-cIQEcnScjErWIO9cEOkRVCwENwropMWPAYg3MGvrWC0h0UUBO/I5nOR7+tTqnXjsP8hfPOrhfPXQcsEB9Jzkjg==", - "dependencies": { - "@aztec/bb.js": "0.23.0", - "@aztec/foundation": "0.23.0", - "@aztec/types": "0.23.0", - "eslint": "^8.35.0", - "lodash.chunk": "^4.2.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/circuits.js/node_modules/@aztec/bb.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", - "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", - "license": "MIT", - "dependencies": { - "comlink": "^4.4.1", - "commander": "^10.0.1", - "debug": "^4.3.4", - "tslib": "^2.4.0" - }, - "bin": { - "bb.js": "dest/node/main.js" - } - }, - "node_modules/@aztec/circuits.js/node_modules/@aztec/foundation": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", - "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", - "dependencies": { - "@aztec/bb.js": "0.23.0", - "@koa/cors": "^4.0.0", - "@noble/curves": "^1.2.0", - "bn.js": "^5.2.1", - "debug": "^4.3.4", - "detect-node": "^2.1.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "koa": "^2.14.2", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "levelup": "^5.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "memdown": "^6.1.1", - "pako": "^2.1.0", - "sha3": "^2.1.4", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/circuits.js/node_modules/@koa/cors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", - "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", - "license": "MIT", - "dependencies": { - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aztec/circuits.js/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/@aztec/constants": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-1.1.3.tgz", - "integrity": "sha512-gAkZJR0Sjll+ftzjrDQjGUzJwUcZyKuRJr414GMRk8UlqyqNs58zllX7k8QZ9AgW/YD3K3Ll2nXXcfctTgj5tw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-2.0.3.tgz", + "integrity": "sha512-2HVuOWTFmpYphCMvA+HMKhQ6qmoZwlO4azlqEnnHTao6MP6SetEduRiqNSapRk8oFfuE7s/DKwnCwpxedcWRAw==", "dependencies": { "tslib": "^2.4.0" }, @@ -504,14 +166,14 @@ } }, "node_modules/@aztec/entrypoints": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-1.1.3.tgz", - "integrity": "sha512-Q4OqnF04ANVAMHYGSnGsUpRW0XOLc4LI3Qy75XGfv7OXUDNxDsPrAc1+FWcMdbkfayge08jXTdpTN063qZupWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-2.0.3.tgz", + "integrity": "sha512-1mgEUC94411aXWXbrbTNJpDJwocwEskGW7vQ9sCbeDb2IvxDs3C904SDcJUJhSTUKDpWRGbINlXB26gFeAGhWQ==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -519,15 +181,17 @@ } }, "node_modules/@aztec/ethereum": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-1.1.3.tgz", - "integrity": "sha512-0QdtWIm0OYg2tqnbr8mOcJrlH5MM/WIZIQlmlYUDjcsyc997dmnVDRQMmGVQV6CvYWrKtuhrK/xvEIvOZIllig==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-2.0.3.tgz", + "integrity": "sha512-i6SYcYRecuSbABsoYAdtIJsBlmF+mW9Be++W2qyi1uSAlqTDHo6eJ0yfbXMe+193zxZ053OPAn/KAS2vTY3Yiw==", "dependencies": { - "@aztec/blob-lib": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/l1-artifacts": "1.1.3", + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", "@viem/anvil": "^0.0.10", "dotenv": "^16.0.3", + "lodash.chunk": "^4.2.0", "lodash.pickby": "^4.5.0", "tslib": "^2.4.0", "viem": "2.23.7", @@ -538,13 +202,13 @@ } }, "node_modules/@aztec/foundation": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-1.1.3.tgz", - "integrity": "sha512-JbLCEJKfjefQiev2yhdWj0VcGA1Q3dgf3IabIorKjzUPQFI/aDtL7ys486vNDLj/wv2Gb42+UiE5GvD92fU3kQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-2.0.3.tgz", + "integrity": "sha512-qFDpKJQfB4pMORDr4i71C/zy2henlAS4hxG8WEOtiTn0bvTG+o5zekmtZMfDF5QR7LUDWg0kvQ9OFZB20sOItg==", "dependencies": { - "@aztec/bb.js": "1.1.3", + "@aztec/bb.js": "2.0.3", "@koa/cors": "^5.0.0", - "@noble/curves": "^1.2.0", + "@noble/curves": "=1.7.0", "bn.js": "^5.2.1", "colorette": "^2.0.20", "detect-node": "^2.1.0", @@ -568,14 +232,14 @@ } }, "node_modules/@aztec/key-store": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-1.1.3.tgz", - "integrity": "sha512-8z2UioLpktexEXq3AWsLn/qMwJtHVlm2pAR0b8R9phsC7GAin64y4WD1VNRWijT3XnetkNOqrmIGoZRCy9rArA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-2.0.3.tgz", + "integrity": "sha512-SKTBm6Mhrv7NcWzPCMcs2IOKd8dkjvBk40dTY8rV+Jj9y720vCie9fdhe4u5E/1bIXq2toLuV0idUb5Y4Rp7wA==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -583,14 +247,14 @@ } }, "node_modules/@aztec/kv-store": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-1.1.3.tgz", - "integrity": "sha512-uqIMe49dd1pDtdEcAN+80heQ7+U8i0XwE3tBrywaAsdXaI7r0uCQJ5dG3KYgjcxMvWwkHo++oLqTR9Ufu/GrhA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-2.0.3.tgz", + "integrity": "sha512-U43RY0CxvWN9ryk3lBMlawV348ur/L5faA+ABP1xn1emXC5W60qyJ9fthv4jdUrz8s+czjFQDwjF4GERWHGReg==", "dependencies": { - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/native": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/native": "2.0.3", + "@aztec/stdlib": "2.0.3", "idb": "^8.0.0", "lmdb": "^3.2.0", "msgpackr": "^1.11.2", @@ -602,21 +266,21 @@ } }, "node_modules/@aztec/l1-artifacts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-1.1.3.tgz", - "integrity": "sha512-9XAotNCjB7FCKYECoiFDmVpAswwoYyZwrYgX+xidxemGxP6Sv2+EZqEgwreMgBRw/XII8cZGz0Rbsk2ZnUNIKQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-2.0.3.tgz", + "integrity": "sha512-APwOQZH0JeZ4Z836tZycHNR/f0gWflb8Fjkp8p3xKocm0ZXocnDlOJhnu7Waiz2i+rTHmSCVPdeOjYc7plEqJQ==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@aztec/merkle-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-1.1.3.tgz", - "integrity": "sha512-hT9JNt3dkc0OUydybxU3xYLx9RTiOQ1Fx9MFvS3xoiU1m3Mg20h0RnaZKkRXEHXYllrwea8IZw/lKoAHWfHERQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-2.0.3.tgz", + "integrity": "sha512-PgND5Gysca1XcriXZpE2bBHJr8AVI/OuvYNDzGvp4rH6a6yHqpZq+U5y+6CUQJDR9cIuoEVaU1VnwMHlmaD9fQ==", "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/stdlib": "2.0.3", "sha256": "^0.2.0", "tslib": "^2.4.0" }, @@ -625,11 +289,11 @@ } }, "node_modules/@aztec/native": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/native/-/native-1.1.3.tgz", - "integrity": "sha512-VwfB39EV09WcWduS0vphH42HoSIletkXheqkIaMvU/A3FGWgvR2EQjnueWyHJ8iQw1/SLH3fi7tmZO4ypG1+Zg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-2.0.3.tgz", + "integrity": "sha512-fgRFz8HNFo7leiWv4FXGZ8RFUqiY0+Y7VoglSrEmAhDQWvLE7X3xl/hyLWlztLRcXDeXNPPF+3bgzTcNv0VpbA==", "dependencies": { - "@aztec/foundation": "1.1.3", + "@aztec/foundation": "2.0.3", "bindings": "^1.5.0", "msgpackr": "^1.11.2" }, @@ -638,295 +302,30 @@ } }, "node_modules/@aztec/noir-acvm_js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-1.1.3.tgz", - "integrity": "sha512-rz3uIbG7/1Xq/3US+GddoqBXNQ1gKh6Z81XxbdupiqLNY1CwUXAJzmrYFEidxXc+T+QcKRChemuPI9Pf6+PwcA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-2.0.3.tgz", + "integrity": "sha512-ykxlUHop7ouYpsCstd55h97ijTYPr9feDmrg0Mcb3cyQMhyAIMnEfkDV8/sUdqmA+UetE1n1x1/91F/+AD6fBg==", "license": "MIT" }, - "node_modules/@aztec/noir-contracts": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/noir-contracts/-/noir-contracts-0.23.0.tgz", - "integrity": "sha512-HOJYWpQ939MdjZRzPWerHDhAxW5Ga5Zh8+u78pMF2JviOPuvwRrrdFl4WZM62rSmTbpSROEarHeAl9PY3arvCw==", - "deprecated": "This package is deprecated. Please use @aztec/noir-contracts.js instead.", + "node_modules/@aztec/noir-contracts.js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-2.0.3.tgz", + "integrity": "sha512-7gMTJ7FAVM20w/pJSJDG1+WJCTMFQyutQnMvkI0IbTEYVnUlwpytcsCKlZ3sWrl48mC3kw04JQ0s6WmIEPmtHw==", "dependencies": { - "@aztec/aztec.js": "0.23.0", + "@aztec/aztec.js": "2.0.3", "tslib": "^2.4.0" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/noir-contracts.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-1.1.3.tgz", - "integrity": "sha512-5JpQMOmps0pHKKhV7l6hcODdSBWjxMmheUM2ArArgy0JOT92Oz0WR9kqFBsV6tpzahMLa0+S2XnhIi6DQf8ZFQ==", - "dependencies": { - "@aztec/aztec.js": "1.1.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=20.10" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "license": "MIT" - }, - "node_modules/@aztec/noir-contracts/node_modules/@aztec/aztec.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-0.23.0.tgz", - "integrity": "sha512-mXr/Qre4N98yLHXateR1Uq8bmKH5hSODo8CsKMstMtJat3lq2vZvTBmre5z4sNnxMbRDWJ4Rr5R7VpFgjPMxlA==", - "dependencies": { - "@aztec/circuit-types": "0.23.0", - "@aztec/circuits.js": "0.23.0", - "@aztec/ethereum": "0.23.0", - "@aztec/foundation": "0.23.0", - "@aztec/types": "0.23.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@aztec/bb.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", - "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", - "license": "MIT", - "dependencies": { - "comlink": "^4.4.1", - "commander": "^10.0.1", - "debug": "^4.3.4", - "tslib": "^2.4.0" - }, - "bin": { - "bb.js": "dest/node/main.js" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@aztec/ethereum": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", - "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", - "dependencies": { - "@aztec/foundation": "0.23.0", - "dotenv": "^16.0.3", - "tslib": "^2.4.0", - "viem": "^1.2.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@aztec/foundation": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", - "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", - "dependencies": { - "@aztec/bb.js": "0.23.0", - "@koa/cors": "^4.0.0", - "@noble/curves": "^1.2.0", - "bn.js": "^5.2.1", - "debug": "^4.3.4", - "detect-node": "^2.1.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "koa": "^2.14.2", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "levelup": "^5.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "memdown": "^6.1.1", - "pako": "^2.1.0", - "sha3": "^2.1.4", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@koa/cors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", - "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", - "license": "MIT", - "dependencies": { - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/abitype": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", - "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/@aztec/noir-contracts/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/isows": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", - "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@aztec/noir-contracts/node_modules/viem": { - "version": "1.21.4", - "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", - "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "0.9.8", - "isows": "1.0.3", - "ws": "8.13.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@aztec/noir-contracts/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=20.10" } }, "node_modules/@aztec/noir-noir_codegen": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-1.1.3.tgz", - "integrity": "sha512-HnX/lrDEHoizn6M/bAWDL5WoaZSALFLvBLauGwfG9XdSpFpgwWvZF9UhZADg0+lehqx+vwSny31rP3q2fOSZlw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-2.0.3.tgz", + "integrity": "sha512-wPKroQazBfzngSMpUlWeF36Bf6CFmD6Mrly3KL3q0ebOoDwyzquhrLLXgHcpCBQo8R0ZruK/O3sVAiF4rFzGTg==", "license": "(MIT OR Apache-2.0)", "dependencies": { - "@aztec/noir-types": "1.1.3", + "@aztec/noir-types": "2.0.3", "glob": "^11.0.2", "ts-command-line-args": "^2.5.1" }, @@ -935,27 +334,27 @@ } }, "node_modules/@aztec/noir-noirc_abi": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-1.1.3.tgz", - "integrity": "sha512-0bXBVUQrELTzYiKZwJZh8KgqCC6XXD/kR6pvFQKkJs4qBT07wya8yh4VYF0ynDSq+YHgFPgZgDdVPR5FfdYOHQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.3.tgz", + "integrity": "sha512-6Ghb5l8vFV6L7mdJmp0fL9P6O6SBq2S6MTO0Jtvs5kF+De/qHxvp3GCtbUswoSBfqo3s5JbJyyTzDbM8V6SkZw==", "license": "(MIT OR Apache-2.0)", "dependencies": { - "@aztec/noir-types": "1.1.3" + "@aztec/noir-types": "2.0.3" } }, "node_modules/@aztec/noir-protocol-circuits-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-1.1.3.tgz", - "integrity": "sha512-Jq08Qyhf+S14cJqGxucKo8aSS/st+1vxAwl0wOvqwVJRUBH3+gSLO1aV19/qeveXv1n0AuPVdWSxEz4nweYvQw==", - "dependencies": { - "@aztec/blob-lib": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-acvm_js": "1.1.3", - "@aztec/noir-noir_codegen": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-2.0.3.tgz", + "integrity": "sha512-E3X0NsIrTqrjqE8w10iOpMmrMruWn8OnjPJ/Y8fY45zOwvrn/vC+MeEkWuO5jLFVb225xI2k+a0EP7APiirpqg==", + "dependencies": { + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-acvm_js": "2.0.3", + "@aztec/noir-noir_codegen": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/stdlib": "2.0.3", "change-case": "^5.4.4", "tslib": "^2.4.0" }, @@ -964,19 +363,19 @@ } }, "node_modules/@aztec/noir-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-1.1.3.tgz", - "integrity": "sha512-8zNJeRecFbI9Kib2uyrKoXdeu5L4lXRgLHNG8YACOXYjuWJtbyJ/h2nCVqEj3vD0AiF7rHZ27oDBxoggwlpYVA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-2.0.3.tgz", + "integrity": "sha512-f8eEjPg+vdbAJ+RD8YHH7PFuUdxU59/3VAf6QBT7VTN6yL52LKVH7XP/g3Dy4vkfctyUWcQsuI4n+k8Uq4Ur7A==", "license": "(MIT OR Apache-2.0)" }, "node_modules/@aztec/protocol-contracts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-1.1.3.tgz", - "integrity": "sha512-fM6ZeO35jAxo7/8d6K6ltXux7e9DsudZGHU+gLjRQeCgYkmYUjoaoGhzSMIo0SS35aD9lSjr2oDUPrm1FBCYIg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-2.0.3.tgz", + "integrity": "sha512-Uri5NxnTpCqSFOY4hDVVUj74sGtg8SUFHdEbKKPOH+RGvs2zocYNNaQ+l6CWqDtYmJZnhsBLJMaMImSCupm7rQ==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "lodash.chunk": "^4.2.0", "lodash.omit": "^4.5.0", "tslib": "^2.4.0" @@ -986,23 +385,24 @@ } }, "node_modules/@aztec/pxe": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-1.1.3.tgz", - "integrity": "sha512-O2rgeZIlIxkscwW0JoCnKEzDUfIFt3oPRfuBZGmEyl8Utt5TWBdvfsHPa275TAAqCvIeOBHkuNiwRdxX6pZ5og==", - "dependencies": { - "@aztec/bb-prover": "1.1.3", - "@aztec/bb.js": "1.1.3", - "@aztec/builder": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/key-store": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/simulator": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-2.0.3.tgz", + "integrity": "sha512-19r1EgEi9NGEI8leu8vvGfw0u9d9k/KiWe1nQIkVZluDukIdzsA9xviZ5LKT3pbD17yl3k4IVD6AUucYWBbcNg==", + "dependencies": { + "@aztec/bb-prover": "2.0.3", + "@aztec/bb.js": "2.0.3", + "@aztec/builder": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/key-store": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/simulator": "2.0.3", + "@aztec/stdlib": "2.0.3", + "json-stringify-deterministic": "1.0.12", "koa": "^2.16.1", "koa-router": "^12.0.0", "lodash.omit": "^4.5.0", @@ -1017,346 +417,99 @@ "node": ">=20.10" } }, - "node_modules/@aztec/simulator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-1.1.3.tgz", - "integrity": "sha512-ypoTSF2KxAZTbapnoCuxZE++8j5rHNlWiwYSKzhF07VNwS2waDwxOElNfOpbsePam8Rakf4wu3dumyOxh07xtw==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-acvm_js": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", - "@aztec/world-state": "1.1.3", - "lodash.clonedeep": "^4.5.0", - "lodash.merge": "^4.6.2", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=20.10" - } - }, - "node_modules/@aztec/stdlib": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-1.1.3.tgz", - "integrity": "sha512-jd9Ob8+zv7BvRNFvPeizvbLf2qMvrC6ZVep6fJ+hDZTEnRbOz/dPUaRhf+W7Iyot3Ltan52DBYwfvLYlAQZrVQ==", - "dependencies": { - "@aztec/bb.js": "1.1.3", - "@aztec/blob-lib": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@google-cloud/storage": "^7.15.0", - "axios": "^1.9.0", - "json-stringify-deterministic": "1.0.12", - "lodash.chunk": "^4.2.0", - "lodash.isequal": "^4.5.0", - "lodash.omit": "^4.5.0", - "lodash.times": "^4.3.2", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "tslib": "^2.4.0", - "viem": "2.23.7", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=20.10" - } - }, - "node_modules/@aztec/telemetry-client": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-1.1.3.tgz", - "integrity": "sha512-lhukZyoJJbUdNf8LNY+pbNkXFViE+OdSFvFjpY9vWqIfGt7X75KCa8rcuUyLUR4StvmT/b8etLz8bAmQdmmcVg==", - "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.55.0", - "@opentelemetry/core": "^1.28.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", - "@opentelemetry/host-metrics": "^0.35.4", - "@opentelemetry/otlp-exporter-base": "^0.55.0", - "@opentelemetry/resource-detector-gcp": "^0.32.0", - "@opentelemetry/resources": "^1.28.0", - "@opentelemetry/sdk-logs": "^0.55.0", - "@opentelemetry/sdk-metrics": "^1.28.0", - "@opentelemetry/sdk-trace-node": "^1.28.0", - "@opentelemetry/semantic-conventions": "^1.28.0", - "prom-client": "^15.1.3", - "viem": "2.23.7" - }, - "engines": { - "node": ">=20.10" - } - }, - "node_modules/@aztec/types": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/types/-/types-0.23.0.tgz", - "integrity": "sha512-VRLUBWWAl8OGuE3pNCqdv/QPZj3emQ6VQZn7Z2bjW3+1O/QRFuS3c6IQ8sqsq7dLVEdNmxrRnCyosAxC4WIzjg==", - "dependencies": { - "@aztec/ethereum": "0.23.0", - "@aztec/foundation": "0.23.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/types/node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "license": "MIT" - }, - "node_modules/@aztec/types/node_modules/@aztec/bb.js": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-0.23.0.tgz", - "integrity": "sha512-dEIfEY0wNK5TIiP6BOjByWqQ3aV1TkTpN0FwEfY/1DlDpkw5WyIfSblLUAiAHgIrEsBHddWFU1z3r17Cyh1CTQ==", - "license": "MIT", - "dependencies": { - "comlink": "^4.4.1", - "commander": "^10.0.1", - "debug": "^4.3.4", - "tslib": "^2.4.0" - }, - "bin": { - "bb.js": "dest/node/main.js" - } - }, - "node_modules/@aztec/types/node_modules/@aztec/ethereum": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-0.23.0.tgz", - "integrity": "sha512-b9aMnOLVy1wYhYn/0Wm/TY1yFudxsyB+wLE8W+j6H4h3lIIxrUfGdDkOljs2VdUCgaSe6xYLdziCgdWSr37L9g==", - "dependencies": { - "@aztec/foundation": "0.23.0", - "dotenv": "^16.0.3", - "tslib": "^2.4.0", - "viem": "^1.2.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/types/node_modules/@aztec/foundation": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-0.23.0.tgz", - "integrity": "sha512-tK3VXp+/np3PVJ99vrZHJQw/qInS6hx58tv9tA0Aum0knIe3/4JhktMQ24KzGgkXQcW/5lIeNM0KuErB/SlddQ==", - "dependencies": { - "@aztec/bb.js": "0.23.0", - "@koa/cors": "^4.0.0", - "@noble/curves": "^1.2.0", - "bn.js": "^5.2.1", - "debug": "^4.3.4", - "detect-node": "^2.1.0", - "elliptic": "^6.5.4", - "hash.js": "^1.1.7", - "koa": "^2.14.2", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "levelup": "^5.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "memdown": "^6.1.1", - "pako": "^2.1.0", - "sha3": "^2.1.4", - "zod": "^3.22.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@aztec/types/node_modules/@koa/cors": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz", - "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==", - "license": "MIT", - "dependencies": { - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aztec/types/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/types/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/types/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/types/node_modules/@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/types/node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@aztec/types/node_modules/abitype": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.9.8.tgz", - "integrity": "sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.19.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/@aztec/types/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@aztec/types/node_modules/isows": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", - "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@aztec/types/node_modules/viem": { - "version": "1.21.4", - "resolved": "https://registry.npmjs.org/viem/-/viem-1.21.4.tgz", - "integrity": "sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "license": "MIT", - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "0.9.8", - "isows": "1.0.3", - "ws": "8.13.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@aztec/types/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "license": "MIT", + "node_modules/@aztec/simulator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-2.0.3.tgz", + "integrity": "sha512-v1N1yqbiFYn7Pk1QvhoBaHpRgPfR7SiyhS44cNwgh5+EHUo1e9R43/hzxFIunckWoNl2arMHjX2JYUaE7Q6u3Q==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-acvm_js": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", + "@aztec/world-state": "2.0.3", + "lodash.clonedeep": "^4.5.0", + "lodash.merge": "^4.6.2", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=10.0.0" + "node": ">=20.10" + } + }, + "node_modules/@aztec/stdlib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-2.0.3.tgz", + "integrity": "sha512-kzYspDE4xWTRZQOEMwuYRD84YE5XNJQBzTo/pLq5UnhupdnyqjW1KJIVmi82Ql3vstjx6ZzIldveqjzE3Q0QwQ==", + "dependencies": { + "@aztec/bb.js": "2.0.3", + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.9.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/telemetry-client": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-2.0.3.tgz", + "integrity": "sha512-3geZjXE0U8Y3QzGoaVBhscOqE/d7hu5xpnu3yQuaM20VQEN7VeP3E1JTSg9YTCwXtdXnQ9ethSQrmXt3jq0ICA==", + "dependencies": { + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.55.0", + "@opentelemetry/core": "^1.28.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/host-metrics": "^0.35.4", + "@opentelemetry/otlp-exporter-base": "^0.55.0", + "@opentelemetry/resource-detector-gcp": "^0.32.0", + "@opentelemetry/resources": "^1.28.0", + "@opentelemetry/sdk-logs": "^0.55.0", + "@opentelemetry/sdk-metrics": "^1.28.0", + "@opentelemetry/sdk-trace-node": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "prom-client": "^15.1.3", + "viem": "2.23.7" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=20.10" } }, "node_modules/@aztec/world-state": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-1.1.3.tgz", - "integrity": "sha512-fto3bPUsTYSgu/ETdU+knajh3dQ3/43JFzCug8EPc3LXeo2Cht/sMB+f3s8qPhCl30i42yvZTKDRPIK/2xsB7A==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/merkle-tree": "1.1.3", - "@aztec/native": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-2.0.3.tgz", + "integrity": "sha512-PwoscvIQzaOR3gV72PZbAkfpHcTip5O5AOyhW5s05NScNc+EKkEdXJLuzUoorec5GIIfPxkPkJDxZSoWYJznOw==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/merkle-tree": "2.0.3", + "@aztec/native": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", "tslib": "^2.4.0", "zod": "^3.23.8" }, @@ -2336,117 +1489,6 @@ "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/@ethereumjs/block": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-4.3.0.tgz", @@ -3400,15 +2442,6 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", @@ -3838,9 +2871,9 @@ } }, "node_modules/@google-cloud/storage": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.0.tgz", - "integrity": "sha512-5m9GoZqKh52a1UqkxDBu/+WVFDALNtHg5up5gNmNbXQWBcV813tzJKsyDtKjOPrlR1em1TxtD7NSPCrObH7koQ==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.1.tgz", + "integrity": "sha512-2FMQbpU7qK+OtBPaegC6n+XevgZksobUGo6mGKnXNmeZpvLiAo1gTAE3oTKsrMGDV4VtL8Zzpono0YsK/Q7Iqg==", "license": "Apache-2.0", "dependencies": { "@google-cloud/paginator": "^5.0.0", @@ -3873,12 +2906,12 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", - "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.0.tgz", + "integrity": "sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==", "license": "Apache-2.0", "dependencies": { - "@grpc/proto-loader": "^0.7.13", + "@grpc/proto-loader": "^0.8.0", "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { @@ -3886,14 +2919,14 @@ } }, "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", - "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", "license": "Apache-2.0", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.2.5", + "protobufjs": "^7.5.3", "yargs": "^17.7.2" }, "bin": { @@ -3909,57 +2942,10 @@ "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", "license": "BSD-3-Clause" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "license": "BSD-3-Clause" - }, "node_modules/@ioredis/commands": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.3.1.tgz", - "integrity": "sha512-bYtU8avhGIcje3IhvF9aSjsa5URMZBHnwKtOvXsT4sfYy9gppW11gLPT/9oNqlJZD47yPKveQFTAFWpHjKvUoQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz", + "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==", "license": "MIT" }, "node_modules/@isaacs/balanced-match": { @@ -4195,6 +3181,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@jest/core/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@jest/core/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4697,6 +3694,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4970,9 +3978,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -5038,9 +4046,9 @@ } }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", - "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.14.0.tgz", + "integrity": "sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/base64": "^1.1.2", @@ -5658,12 +4666,12 @@ ] }, "node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.8.0" + "@noble/hashes": "1.6.0" }, "engines": { "node": "^14.21.3 || >=16" @@ -5673,9 +4681,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -5684,41 +4692,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -6459,9 +5432,9 @@ "license": "BSD-3-Clause" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", - "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", + "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", "cpu": [ "arm" ], @@ -6473,9 +5446,9 @@ "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", - "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", + "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", "cpu": [ "arm64" ], @@ -6487,9 +5460,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", - "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", + "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", "cpu": [ "arm64" ], @@ -6501,9 +5474,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", - "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", + "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", "cpu": [ "x64" ], @@ -6515,9 +5488,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", - "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", + "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", "cpu": [ "arm64" ], @@ -6529,9 +5502,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", - "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", + "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", "cpu": [ "x64" ], @@ -6543,9 +5516,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", - "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", + "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", "cpu": [ "arm" ], @@ -6557,9 +5530,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", - "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", + "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", "cpu": [ "arm" ], @@ -6571,9 +5544,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", - "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", + "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", "cpu": [ "arm64" ], @@ -6585,9 +5558,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", - "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", + "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", "cpu": [ "arm64" ], @@ -6598,10 +5571,10 @@ ], "peer": true }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", - "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", + "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", "cpu": [ "loong64" ], @@ -6613,9 +5586,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", - "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", + "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", "cpu": [ "ppc64" ], @@ -6627,9 +5600,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", - "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", + "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", "cpu": [ "riscv64" ], @@ -6641,9 +5614,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", - "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", + "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", "cpu": [ "riscv64" ], @@ -6655,9 +5628,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", - "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", + "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", "cpu": [ "s390x" ], @@ -6669,9 +5642,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", - "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", + "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", "cpu": [ "x64" ], @@ -6683,9 +5656,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", - "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", + "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", "cpu": [ "x64" ], @@ -6697,9 +5670,9 @@ "peer": true }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", - "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", + "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", "cpu": [ "arm64" ], @@ -6711,9 +5684,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", - "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", + "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", "cpu": [ "arm64" ], @@ -6725,9 +5698,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", - "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", + "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", "cpu": [ "ia32" ], @@ -6738,10 +5711,24 @@ ], "peer": true }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", + "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", - "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", + "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", "cpu": [ "x64" ], @@ -6858,45 +5845,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/starknet/node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/starknet/node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/starknet/node_modules/@noble/hashes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", - "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@sinclair/typebox": { "version": "0.24.51", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", @@ -7490,12 +6438,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", - "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "version": "24.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.6.1.tgz", + "integrity": "sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==", "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.13.0" } }, "node_modules/@types/prettier": { @@ -7580,12 +6528,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, "node_modules/@viem/anvil": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/@viem/anvil/-/anvil-0.0.10.tgz", @@ -8025,15 +6967,6 @@ "acorn": "^8.14.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/acorn-walk": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", @@ -8137,9 +7070,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { "node": ">=12" @@ -8286,21 +7219,6 @@ "node": ">=8.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -8317,9 +7235,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -8464,6 +7382,15 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz", + "integrity": "sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -8537,13 +7464,12 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -8576,47 +7502,10 @@ "run-parallel-limit": "^1.1.0" } }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", + "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", "funding": [ { "type": "opencollective", @@ -8633,9 +7522,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001741", + "electron-to-chromium": "^1.5.218", + "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { @@ -8704,12 +7594,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "license": "MIT" - }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", @@ -8819,6 +7703,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -8835,9 +7720,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001746", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz", + "integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==", "funding": [ { "type": "opencollective", @@ -9011,19 +7896,6 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", - "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cjs-module-lexer": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", @@ -9383,6 +8255,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/content-disposition": { @@ -9460,19 +8333,6 @@ "node": ">=0.8" } }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -9546,9 +8406,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -9600,12 +8460,6 @@ "node": ">=4.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -9616,20 +8470,6 @@ "node": ">=0.10.0" } }, - "node_modules/deferred-leveldown": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz", - "integrity": "sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^7.2.0", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -9680,16 +8520,6 @@ "node": ">= 0.8" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -9701,9 +8531,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -9745,18 +8575,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -9832,9 +8650,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.214", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz", - "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==", + "version": "1.5.228", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", + "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", "license": "ISC" }, "node_modules/elliptic": { @@ -9909,9 +8727,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10015,289 +8833,36 @@ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" } }, "node_modules/esprima": { @@ -10313,27 +8878,6 @@ "node": ">=4" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -10374,15 +8918,6 @@ "@types/estree": "^1.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eth-block-tracker": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-8.1.0.tgz", @@ -10543,16 +9078,6 @@ "node": ">=0.8.x" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", @@ -10643,23 +9168,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", @@ -10700,15 +9211,6 @@ "fxparser": "src/cli/cli.js" } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -10735,18 +9237,6 @@ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", "license": "MIT" }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -10791,75 +9281,6 @@ "node": ">=8" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flat-cache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "license": "ISC" - }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -10880,21 +9301,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -10990,6 +9396,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -11049,15 +9456,6 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/fuels/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/fuels/node_modules/commander": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", @@ -11209,6 +9607,15 @@ "node": ">=14" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -11375,33 +9782,6 @@ "process": "^0.11.10" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/google-auth-library": { "version": "9.15.1", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", @@ -11446,12 +9826,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, "node_modules/graphql": { "version": "16.10.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", @@ -11580,20 +9954,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -11617,9 +9977,9 @@ } }, "node_modules/heap-js": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.6.0.tgz", - "integrity": "sha512-trFMIq3PATiFRiQmNNeHtsrkwYRByIXUbYNbotiY9RLVfMkdwZdd2eQ38mGt7BRiCKBaj1DyBAIHmm7mmXPuuw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.7.1.tgz", + "integrity": "sha512-EQfezRg0NCZGNlhlDR3Evrw1FVL2G3LhU7EgPoxufQKruNBSYA8MiRPHeWbU+36o+Fhel0wMwM+sLEiBAlNLJA==", "license": "BSD-3-Clause", "engines": { "node": ">=10.0.0" @@ -11832,40 +10192,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -11890,6 +10216,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -11909,6 +10236,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -11922,12 +10250,12 @@ "license": "ISC" }, "node_modules/ioredis": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.7.0.tgz", - "integrity": "sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.0.tgz", + "integrity": "sha512-AUXbKn9gvo9hHKvk6LbZJQSKn/qIfkWXrnsyL9Yrf+oeXmla9Nmf6XEumOddyhM8neynpK5oAV6r9r99KBuwzA==", "license": "MIT", "dependencies": { - "@ioredis/commands": "^1.3.0", + "@ioredis/commands": "1.4.0", "cluster-key-slot": "^1.1.0", "debug": "^4.3.4", "denque": "^2.1.0", @@ -11996,18 +10324,6 @@ "node": ">=4" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -12068,13 +10384,14 @@ } }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -12106,15 +10423,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -12145,21 +10453,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -12751,6 +11044,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13455,6 +11759,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-runtime/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -14099,12 +12414,6 @@ "bignumber.js": "^9.0.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -14148,12 +12457,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "license": "MIT" - }, "node_modules/json-stringify-deterministic": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz", @@ -14260,15 +12563,6 @@ "node": ">= 0.6" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -14449,29 +12743,6 @@ "node": ">=10" } }, - "node_modules/level-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-3.0.1.tgz", - "integrity": "sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/level-iterator-stream": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz", - "integrity": "sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/level-supports": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", @@ -14510,24 +12781,6 @@ "node": ">=10.12.0" } }, - "node_modules/levelup": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.1.1.tgz", - "integrity": "sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg==", - "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", - "license": "MIT", - "dependencies": { - "catering": "^2.0.0", - "deferred-leveldown": "^7.0.0", - "level-errors": "^3.0.1", - "level-iterator-stream": "^5.0.0", - "level-supports": "^2.0.1", - "queue-microtask": "^1.2.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -14538,19 +12791,6 @@ "node": ">=6" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -14730,12 +12970,6 @@ "yallist": "^3.0.2" } }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", - "license": "MIT" - }, "node_modules/magic-string": { "version": "0.30.19", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", @@ -14797,17 +13031,6 @@ "node": ">=8.9.0" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -14817,27 +13040,10 @@ "node": ">= 0.6" } }, - "node_modules/memdown": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-6.1.1.tgz", - "integrity": "sha512-vh2RiuVrn6Vv73088C1KzLwy9+hhRwoZsgddYqIoVuFFrcoc2Rt+lq/KrmkFn6ulko7AtQ0AvqtYid35exb38A==", - "deprecated": "Superseded by memory-level (https://github.com/Level/community#faq)", - "license": "MIT", - "dependencies": { - "abstract-leveldown": "^7.2.0", - "buffer": "^6.0.3", - "functional-red-black-tree": "^1.0.1", - "inherits": "^2.0.1", - "ltgt": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/memfs": { - "version": "4.38.2", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.38.2.tgz", - "integrity": "sha512-FpWsVHpAkoSh/LfY1BgAl72BVd374ooMRtDi2VqzBycX4XEfvC0XKACCe0C9VRZoYq5viuoyTv6lYXZ/Q7TrLQ==", + "version": "4.47.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.47.0.tgz", + "integrity": "sha512-Xey8IZA57tfotV/TN4d6BmccQuhFP+CqRiI7TTNdipZdZBzF2WnzUcH//Cudw6X4zJiUbo/LTuU/HPA/iC/pNg==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.11.0", @@ -14847,9 +13053,6 @@ "tree-dump": "^1.0.3", "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" - }, "funding": { "type": "github", "url": "https://github.com/sponsors/streamich" @@ -15113,6 +13316,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, "license": "MIT" }, "node_modules/negotiator": { @@ -15204,9 +13408,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", + "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", "license": "MIT" }, "node_modules/node-vault": { @@ -15346,23 +13550,6 @@ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/ordered-binary": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", @@ -15470,18 +13657,6 @@ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", "license": "(MIT AND Zlib)" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-headers": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", @@ -15520,6 +13695,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -15529,6 +13705,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -15567,9 +13744,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", - "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "license": "ISC", "engines": { "node": "20 || >=22" @@ -15724,13 +13901,12 @@ } }, "node_modules/pino": { - "version": "9.9.4", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.9.4.tgz", - "integrity": "sha512-d1XorUQ7sSKqVcYdXuEYs2h1LKxejSorMEJ76XoZ0pPDf8VzJMe7GlPXpMBZeQ9gE4ZPIp5uGD+5Nw7scxiigg==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.12.0.tgz", + "integrity": "sha512-0Gd0OezGvqtqMwgYxpL7P0pSHHzTJ0Lx992h+mNlMtRVfNnqweWmf0JmRWk5gJzHalyd2mxTzKjhiNbGS2Ztfw==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", @@ -15738,6 +13914,7 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", + "slow-redact": "^0.3.0", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, @@ -15869,15 +14046,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -15994,15 +14162,6 @@ "node": ">= 0.6" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -16501,16 +14660,6 @@ "node": ">=14" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "5.0.10", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", @@ -16526,15 +14675,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/rimraf/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -16607,20 +14747,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/rollup": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", - "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", + "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", "license": "MIT", "peer": true, "dependencies": { @@ -16634,53 +14764,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.1", - "@rollup/rollup-android-arm64": "4.50.1", - "@rollup/rollup-darwin-arm64": "4.50.1", - "@rollup/rollup-darwin-x64": "4.50.1", - "@rollup/rollup-freebsd-arm64": "4.50.1", - "@rollup/rollup-freebsd-x64": "4.50.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", - "@rollup/rollup-linux-arm-musleabihf": "4.50.1", - "@rollup/rollup-linux-arm64-gnu": "4.50.1", - "@rollup/rollup-linux-arm64-musl": "4.50.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", - "@rollup/rollup-linux-ppc64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-musl": "4.50.1", - "@rollup/rollup-linux-s390x-gnu": "4.50.1", - "@rollup/rollup-linux-x64-gnu": "4.50.1", - "@rollup/rollup-linux-x64-musl": "4.50.1", - "@rollup/rollup-openharmony-arm64": "4.50.1", - "@rollup/rollup-win32-arm64-msvc": "4.50.1", - "@rollup/rollup-win32-ia32-msvc": "4.50.1", - "@rollup/rollup-win32-x64-msvc": "4.50.1", + "@rollup/rollup-android-arm-eabi": "4.52.3", + "@rollup/rollup-android-arm64": "4.52.3", + "@rollup/rollup-darwin-arm64": "4.52.3", + "@rollup/rollup-darwin-x64": "4.52.3", + "@rollup/rollup-freebsd-arm64": "4.52.3", + "@rollup/rollup-freebsd-x64": "4.52.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", + "@rollup/rollup-linux-arm-musleabihf": "4.52.3", + "@rollup/rollup-linux-arm64-gnu": "4.52.3", + "@rollup/rollup-linux-arm64-musl": "4.52.3", + "@rollup/rollup-linux-loong64-gnu": "4.52.3", + "@rollup/rollup-linux-ppc64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-musl": "4.52.3", + "@rollup/rollup-linux-s390x-gnu": "4.52.3", + "@rollup/rollup-linux-x64-gnu": "4.52.3", + "@rollup/rollup-linux-x64-musl": "4.52.3", + "@rollup/rollup-openharmony-arm64": "4.52.3", + "@rollup/rollup-win32-arm64-msvc": "4.52.3", + "@rollup/rollup-win32-ia32-msvc": "4.52.3", + "@rollup/rollup-win32-x64-gnu": "4.52.3", + "@rollup/rollup-win32-x64-msvc": "4.52.3", "fsevents": "~2.3.2" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/run-parallel-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", @@ -16879,26 +14987,6 @@ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/sha256": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sha256/-/sha256-0.2.0.tgz", @@ -17040,6 +15128,12 @@ "node": ">=8" } }, + "node_modules/slow-redact": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.0.tgz", + "integrity": "sha512-cf723wn9JeRIYP9tdtd86GuqoR5937u64Io+CYjlm2i7jvu7g0H+Cp0l0ShAf/4ZL+ISUTVT+8Qzz7RZmp9FjA==", + "license": "MIT" + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -17249,33 +15343,6 @@ "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", "license": "MIT" }, - "node_modules/starknet/node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/starknet/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -17428,9 +15495,9 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -17490,6 +15557,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -17823,6 +15891,17 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -17858,12 +15937,6 @@ "node": "*" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "license": "MIT" - }, "node_modules/thingies": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", @@ -18012,20 +16085,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/to-buffer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", - "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -18299,18 +16358,6 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "license": "Unlicense" }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -18346,24 +16393,10 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -18408,9 +16441,9 @@ } }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.13.0.tgz", + "integrity": "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==", "license": "MIT" }, "node_modules/unionfs": { @@ -18469,15 +16502,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -18922,9 +16946,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.101.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", - "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", + "version": "5.102.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", + "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -18935,7 +16959,7 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.24.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", @@ -18948,9 +16972,9 @@ "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.2", - "tapable": "^2.1.1", + "tapable": "^2.2.3", "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", + "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, "bin": { @@ -19009,27 +17033,6 @@ "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -19047,15 +17050,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -19161,9 +17155,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { "node": ">=12" diff --git a/js/package.json b/js/package.json index 7a928ee8..a6928726 100644 --- a/js/package.json +++ b/js/package.json @@ -11,12 +11,11 @@ "license": "ISC", "description": "", "dependencies": { - "@aztec/accounts": "1.1.3", - "@aztec/aztec.js": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-contracts": "^0.23.0", - "@aztec/noir-contracts.js": "1.1.3", - "@aztec/pxe": "1.1.3", + "@aztec/accounts": "^2.0.3", + "@aztec/aztec.js": "^2.0.3", + "@aztec/kv-store": "^2.0.3", + "@aztec/noir-contracts.js": "^2.0.3", + "@aztec/pxe": "^2.0.3", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", @@ -39,4 +38,4 @@ "ts-node": "^10.9.2", "typescript": "^5.7.3" } -} +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Extensions/StringExtensions.ts b/js/src/Blockchain/Blockchain.Abstraction/Extensions/StringExtensions.ts index bcb31e84..eade5577 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Extensions/StringExtensions.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Extensions/StringExtensions.ts @@ -18,7 +18,7 @@ export function hexToBigInt(hex: string): bigint { export function BigIntToAscii(bigint: bigint): string { - const hex = ToHex(bigint) + const hex = toHex(bigint) let str = ''; for (let i = 0; i < hex.length; i += 2) { const code = parseInt(hex.substr(i, 2), 16); @@ -31,10 +31,18 @@ export function parseHexToUTF8(hex: string): string { return Buffer.from(removeHexPrefix(hex), 'hex').toString('utf8'); } -export function ToHex(value: bigint): string { - return '0x' + value.toString(16); +export function toHex(value: bigint): string { + return ensureHexPrefix(value.toString(16)); } export function buildProcessorId(guid: string, networkName: string, type: TransactionType): string { return `${networkName}-${TransactionType[type]}-${guid}`; +} + +export function ensureHexPrefix(hexString: string): string { + if (!hexString.startsWith("0x")) { + hexString = "0x" + hexString; + } + + return hexString; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json b/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json index 17044063..2d7a5b87 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/ABIs/train.json @@ -1,6 +1,6 @@ { "transpiled": true, - "noir_version": "1.0.0-beta.7+0000000000000000000000000000000000000000", + "noir_version": "1.0.0-beta.11+5b65f9637e85a4177692c3190cb35ea678fb15e9-aztec", "name": "Train", "functions": [ { @@ -83,7 +83,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -139,7 +139,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -168,7 +168,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -362,7 +362,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -631,351 +631,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", "type": { - "kind": "field" + "kind": "boolean" } } ] } }, { - "name": "function_selector", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -984,30 +1083,26 @@ } }, { - "name": "is_static_call", + "name": "counter", "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", - "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -1064,26 +1159,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -1092,53 +1202,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -1147,50 +1284,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -1199,17 +1345,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -1232,7 +1378,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -1288,7 +1434,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -1317,7 +1463,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -1511,7 +1657,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -1650,18 +1796,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -1669,22 +1812,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -1701,19 +1838,43 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7542496824365424242": { "error_kind": "fmtstring", - "length": 61, + "length": 20, + "item_types": [] + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -1724,62 +1885,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11091894166229312484": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -1795,17 +1943,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17476367995570638746": { - "error_kind": "string", - "string": "NoAllowance" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -1814,24 +1954,18 @@ } ] }, - "18194595712952743247": { + "17476367995570638746": { + "error_kind": "string", + "string": "NoAllowance" + }, + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" }, "18313900523101689315": { "error_kind": "string", @@ -1839,17 +1973,9 @@ } } }, - "bytecode": "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", - "debug_symbols": "vb3driQ9cp57L3Osg2Iwfhi+FWNDGMtjY4DByBhLBjYE3/uuDJLxRner2Lmq1rdP3I9H34oni5kRmUkyyf/403//y3/79//5z3/9+//41//9p//yX//jT//tH3/929/++j//+W//+i9//re//uvfn//rf/zpcf0/jcaf/kv7p+e/Pv/tj/VvW//S+revf3n9K+tfXf/a+nfF6yser3i84vGKxyser3i84vGKxyser3i84smKJyuerHiy4smKJyuerHiy4smKJyuerni64umKpyuerni64umKpyuerni64tmKZyuerXi24tmKZyuerXi24tmKZyveWPHGijdWvLHijRVvrHhjxRsr3ljxxornz3hy/dvWv7T+7etfXv/K+lfXv7b+Hetfj3/p8Vj/tvXvM55e//b1L69/Zf2r619b/z7j+fXvdXz9Ce2xoW2gDX0Db7h+tV2gG2zD2HBFHk+gx4a24YrcLugbeMMzMl0K0g22YWzwBVfSTGgbaEPfwBt25L4j9x2578h9R+YdmXdk3pF5R+YdmXdk3pF5R+YdmXdk2ZFlR5Yd+coluk7mlUwTZINusA1jgy+4UmpC20AbdmTdkXVH1h1Zd2TdkXVHth3ZdmTbkW1Hth3ZdmTbkW1Hth3ZduSxI48deezIY0ceO/LYkceOPHbksSOPHdl3ZN+RfUf2Hdl3ZN+RfUf2Hdl3ZF+R++OxoW2gDX0Db5ANusE2jA07ctuR247cduQrB2lcwBtkg26wDWODL7hycELbQBt2ZNqRaUemHfnKwd4vGBt8wZWDE9oG2tA38AbZoBt25L4j9x2Zd+QrB7teQBv6Bt4gG3SDbRgbfMGVgxN2ZNmRZUeWHfnKQX5coBtsw9jgC64cnNA20Ia+gTfsyLoj646sO7LuyLYj245sO7LtyLYj245sO7LtyLYj2448duSxI48deezIY0ceO/LYkceOPHbksSP7juw7su/IviP7juw7su/IviP7juwrMj8eG9oG2tA38AbZoBtsw9iwI7cdue3IbUduO3LbkduO3HbktiO3HbntyLQj045MOzLtyLQj045MOzLtyLQj047cd+S+I/cdue/IfUfuO3LfkfuO3HfkviPzjsw7Mu/IvCPzjsw7Mu/IvCPzjsw7suzIsiPLjiw7suzIOwd55yDvHOTIQbrAF0QOBrQNtKFv4A2yQTfYhh1Z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", - "brillig_names": [ - "discover_new_messages", - "get_note_internal", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "directive_integer_quotient", - "directive_invert" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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j67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d51iWlIuVs85B0XSLss5Bo2k2rabdZE3tOO047TjtiHZEO6Id0Y5oR7Qj2hHtiHZEO247bjtuO247bjtuO247bjtuO245sHAJNJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdox2jHbMdsx2zHbMdsx2zHbMdsx2zHbsdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux22HtsHZYO6wd1g5rh7XD2mHtsHZ4O7wd3g5vh7fD29F1vrvOd9f57jrfXee5/slH0mxaTbvJmrzpNEXTLfrq/FE7oh3RjmhHtCPaEe2IdkQ7bjtuO247bjtuO247bjtuO247bjlycdSj0TSbVtNu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", + "verification_key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJpAAAAAAAAAAAAAAAAAAAA9SiI\nUsJqPUC1d41hpZo00lMAAAAAAAAAAAAAAAAAAAAAABFqbOoEQs9WbUxHrut4DwAAAAAAAAAAAAAA\nAAAAAGTQEoRzDwgzNgBopjZZ4KvXAAAAAAAAAAAAAAAAAAAAAAAX7jvKTJTMv0S93CBLWwEAAAAA\nAAAAAAAAAAAAAABrReQTV4bKfftldNgXu+L/kgAAAAAAAAAAAAAAAAAAAAAAGcpgGhZfoC8EnAq3\nfGH6AAAAAAAAAAAAAAAAAAAALBQSqyP2fNVQNUVLs9YzQkAAAAAAAAAAAAAAAAAAAAAAAB86zR20\n8Kc9Yl7qcgNIoQAAAAAAAAAAAAAAAAAAAO9Kfb9C3Oy8a21tGkl+DcETAAAAAAAAAAAAAAAAAAAA\nAAAG94LyaSNsE2yAuhysDOAAAAAAAAAAAAAAAAAAAACi2CnQDDkq3DqlbBmHaOFizQAAAAAAAAAA\nAAAAAAAAAAAAFmTgctnOnDato9Rgg8tRAAAAAAAAAAAAAAAAAAAAT3AiSeOGjtpOMA1/bXIHRDsA\nAAAAAAAAAAAAAAAAAAAAAC5hCV3HGcAiFrsVxJuEwAAAAAAAAAAAAAAAAAAAALzifWTxD7aibEut\nBsgb/VQjAAAAAAAAAAAAAAAAAAAAAAAp7wrJUU3ejQ64HkptkW8AAAAAAAAAAAAAAAAAAADQ8tiI\n5XsqPNC/smkuNeh00gAAAAAAAAAAAAAAAAAAAAAAFEfB83x+L1tH9JuL7hoRAAAAAAAAAAAAAAAA\nAAAANgR/kUVShWW4YN1dnm/0N2sAAAAAAAAAAAAAAAAAAAAAACucvrwyNE/7BVNdTwaCBwAAAAAA\nAAAAAAAAAAAAAM3P4Q88Y7WEABeqYQ5EmJ7ZAAAAAAAAAAAAAAAAAAAAAAAKZJBDM71i4Hou3gzV\nnPAAAAAAAAAAAAAAAAAAAABRtg+B0Dqdq+FpX88ynUCWYgAAAAAAAAAAAAAAAAAAAAAABTTGfXoI\nEcQ9aV3Yfs0rAAAAAAAAAAAAAAAAAAAAmgwq91f09SFJVigyejeFCvQAAAAAAAAAAAAAAAAAAAAA\nAAixVKJ/wMLrF0uVfVziuwAAAAAAAAAAAAAAAAAAAO0Qp7bTwCDWKpI7W9OWGR0TAAAAAAAAAAAA\nAAAAAAAAAAAiqKqwFC76lCbUvzIesCEAAAAAAAAAAAAAAAAAAACpYO0E7RgiavfiNMUPto6zLAAA\nAAAAAAAAAAAAAAAAAAAAH5TAAP1cwiS/0+cpUCw4AAAAAAAAAAAAAAAAAAAAf2bfOy4Wx90Wkg6C\np3acxZEAAAAAAAAAAAAAAAAAAAAAAAhRWG4qQOBJrmhi9vWEmgAAAAAAAAAAAAAAAAAAAPox4epK\nQEigRHtc9n/0bnHkAAAAAAAAAAAAAAAAAAAAAAApLarPGk6/VZhjZe6FmdsAAAAAAAAAAAAAAAAA\nAADuQY4n+AlK8MebcMnJKEIBfAAAAAAAAAAAAAAAAAAAAAAADzgnFrttm90IAUzmARDvAAAAAAAA\nAAAAAAAAAAAAL0cgTgOXQ+SqLF4zJJFgFy8AAAAAAAAAAAAAAAAAAAAAACdb65XQT8vok7pOVBec\nyQAAAAAAAAAAAAAAAAAAAGd4rn2FUCIdAw+FioxHdNRlAAAAAAAAAAAAAAAAAAAAAAAhH34m0p8M\n00yNIwqKnPsAAAAAAAAAAAAAAAAAAAD823syZBzNWnGGjnzT1yMg5AAAAAAAAAAAAAAAAAAAAAAA\nATDBDUq0HRHSx0+PInBuAAAAAAAAAAAAAAAAAAAAbGP6UV+RTMDMVJE9AtswcMAAAAAAAAAAAAAA\nAAAAAAAAAC8fAcvKUFeoLDHLV9S0EgAAAAAAAAAAAAAAAAAAACrCljqPxfDWxGjF4PGy/xrkAAAA\nAAAAAAAAAAAAAAAAAAAB+kqemFNv8lr9ZUhc1wsAAAAAAAAAAAAAAAAAAAA7RkR36Oe65E/1gWtv\nf7smZQAAAAAAAAAAAAAAAAAAAAAAHNq8fTDuve6Z/iP8f+D/AAAAAAAAAAAAAAAAAAAAu40KrxWt\nUHMUKc6dUA+L7eAAAAAAAAAAAAAAAAAAAAAAAAPZA6T2tVbVMvVGftb3XQAAAAAAAAAAAAAAAAAA\nAPxWP3hhvjWZAnc1CUBivFIAAAAAAAAAAAAAAAAAAAAAAAAfgzJHCuZ1H66fvaGxUxUAAAAAAAAA\nAAAAAAAAAACet7JEmSeW+rNQF7fKAwSccQAAAAAAAAAAAAAAAAAAAAAALaqXjEDPT8EbGpqtMV+p\nAAAAAAAAAAAAAAAAAAAA6IqTaih4VsfxUDfIsZtw2p4AAAAAAAAAAAAAAAAAAAAAABRtkmX0rQ+x\nGhaOAvmCfwAAAAAAAAAAAAAAAAAAAAOjf1OhsypIWp2gaPPIGfP1AAAAAAAAAAAAAAAAAAAAAAAs\nrHKVscA16vDkgbC0T10AAAAAAAAAAAAAAAAAAACTby0qURfaJ03ziPH9IfgCLAAAAAAAAAAAAAAA\nAAAAAAAAJbG5ed47GbvKx7QGHaM/AAAAAAAAAAAAAAAAAAAArvd6WJ0AotA0Nu4jSZjakLAAAAAA\nAAAAAAAAAAAAAAAAAClfrkrW8H0mufouY1eVzAAAAAAAAAAAAAAAAAAAAJMfzHP5LlKQyD9lvP/s\nc6naAAAAAAAAAAAAAAAAAAAAAAAV3i/u7zQKEAbzYx0pI1EAAAAAAAAAAAAAAAAAAAAV2KUwhUO2\n+pUgTw0Dn9dZ+AAAAAAAAAAAAAAAAAAAAAAABSZB4jXSw3ASqRfdxk9ZAAAAAAAAAAAAAAAAAAAA\nWk91/sehecd8do5/dHvLLuIAAAAAAAAAAAAAAAAAAAAAABhNJGvd18lWAPra/CQlLwAAAAAAAAAA\nAAAAAAAAAPHqXxtZWbSmCYIU4ThlQo60AAAAAAAAAAAAAAAAAAAAAAAiTzFsBjHzb9Tx/Wne5gwA\nAAAAAAAAAAAAAAAAAAAPqAzRPXt+cVQ3AuDFy8JrLQAAAAAAAAAAAAAAAAAAAAAACH2pvgOU59La\nxuF6lTM5AAAAAAAAAAAAAAAAAAAAGy8pcDePdUvRYFMVXBbKL3kAAAAAAAAAAAAAAAAAAAAAABYD\n8wPbMcLx67e484AHBQAAAAAAAAAAAAAAAAAAAJZVxkrHr3o3m0tIMU/dDqjiAAAAAAAAAAAAAAAA\nAAAAAAAXfZ3L804gr+CVtqHPrDkAAAAAAAAAAAAAAAAAAABsV60CEBUDVGuUv9rJY3dBawAAAAAA\nAAAAAAAAAAAAAAAAG47Q66gZRJqQrpcGyqvYAAAAAAAAAAAAAAAAAAAA3VHa9i6e7jyfBlA1soIm\nMr8AAAAAAAAAAAAAAAAAAAAAACWvpNNVY48/n7g15oMfKQAAAAAAAAAAAAAAAAAAAMwi8EA5Zv3n\n/f6XZtgAwkDQAAAAAAAAAAAAAAAAAAAAAAAUmB8scbwbyWrBUENwkssAAAAAAAAAAAAAAAAAAAB0\nCK+mRvavueBnVw1TF0W8fwAAAAAAAAAAAAAAAAAAAAAABOEf8Smm7hVtsVCy/4GrAAAAAAAAAAAA\nAAAAAAAAa590M9nvLroIy1aBdsoA/1AAAAAAAAAAAAAAAAAAAAAAABOR25HDJMxiZgsIvSjX2gAA\nAAAAAAAAAAAAAAAAAHeD04g2lw9RsrZ6oUI7G2FTAAAAAAAAAAAAAAAAAAAAAAALy4fPP4Hk35aZ\nmAgPEh0AAAAAAAAAAAAAAAAAAABKEpVZCcok60aX3aGb2+HWUQAAAAAAAAAAAAAAAAAAAAAAB5Yh\ng6/H2JwkOC3aUEVEAAAAAAAAAAAAAAAAAAAAmV9dQVLBx3VRCq/xpKAr5hkAAAAAAAAAAAAAAAAA\nAAAAAC+l7cKGla2COvAyr9qFJAAAAAAAAAAAAAAAAAAAAFizPZI63otdBEhBnUg0Xl+BAAAAAAAA\nAAAAAAAAAAAAAAAorT+MiWPqoo2xOyPO9TIAAAAAAAAAAAAAAAAAAACe1XxR9U4oXDTtSWep/t/5\nwAAAAAAAAAAAAAAAAAAAAAAAHhXa0jS1bGGnpVJQqKzmAAAAAAAAAAAAAAAAAAAAYx8/ayUS6OK6\nwi4J3r8TDiwAAAAAAAAAAAAAAAAAAAAAACGqgNoJupA1TkV9PQbJGAAAAAAAAAAAAAAAAAAAAHTR\n02JqV4LjEinXD7AjqxONAAAAAAAAAAAAAAAAAAAAAAAgveQqOWlou79Of2EQxiYAAAAAAAAAAAAA\nAAAAAAC/cOMgV5JmbRB4Lfgky4mDBQAAAAAAAAAAAAAAAAAAAAAALT7USRibmwMGX6XBt0h+AAAA\nAAAAAAAAAAAAAAAA70JLLYunou4TQHZUN+vS/1cAAAAAAAAAAAAAAAAAAAAAACKwd3QIwJ0gm8XB\nZkrCzQAAAAAAAAAAAAAAAAAAAGBSsDFWpMNlG2T75KQkCAAIAAAAAAAAAAAAAAAAAAAAAAAXpSn4\nAHnnpj3rkDGPgS8AAAAAAAAAAAAAAAAAAAAUkC2e5eP8MdkMvIKIdhOBegAAAAAAAAAAAAAAAAAA\nAAAAAZxwvhZxJTvWaKHUbFbrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsMzLg7oyhoLt6\nDQiNOUFZ8AAAAAAAAAAAAAAAAAAAAAAAFnCZNrukyUVY+y89ZpuvAAAAAAAAAAAAAAAAAAAArX3f\nI+s4cawJAiFz8VDFEooAAAAAAAAAAAAAAAAAAAAAAAXhEbdwtG185glziv9SZAAAAAAAAAAAAAAA\nAAAAAGvMegX/lalrKJQkxfczZw2WAAAAAAAAAAAAAAAAAAAAAAAAxDcm91tv2g3iLODg36sAAAAA\nAAAAAAAAAAAAAAAdCgnXF47JO614WPluZPC0jQAAAAAAAAAAAAAAAAAAAAAAL5tuC04sAZaN5cMk\ngqp9AAAAAAAAAAAAAAAAAAAAs8PPbbWlw3xztOqrx8K9tdUAAAAAAAAAAAAAAAAAAAAAAAGaqh23\nOphDKX3dUwWgOQAAAAAAAAAAAAAAAAAAAPMofO4kQhdTybsV1xRQMcptAAAAAAAAAAAAAAAAAAAA\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "add_lock_public_user", @@ -1928,21 +2054,14 @@ "error_kind": "string", "string": "Function add_lock_public_user can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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Ui0CAAAtCjAcBCosHAsAKh0LHBwKLgsAJwIdAEgnAiEEKy0IACstCgUsLQodLQAIACEAJQAAGlItAgAALQosHgQqCx4dACocHQsnAhwAaCcCHgQrLQgAKy0KBSwtChwtAAgAHgAlAAAaUi0CAAAtCiwdBCoKHRwAKgscChwKKgsAJwIcAHAnAh4EIS0IACEtCgUiLQocIwAIAB4AJQAAGlItAgAALQoiHQQqCx0FACoKBQstCAEFJwIKBBgACAEKAScDBQQBACIFAgotCgocLQ4LHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcLQ4FCRwKHwUAHAoSCgAcChYLABwKGBIAHAoaFgAcChsYABwKERoAHAoOEQAcCgQOAC0IAQQnAhsEDAAIARsBJwMEBAEAIgQCGy0KGxwtDgYcACIcAhwtDgUcACIcAhwtDiAcACIcAhwtDgocACIcAhwtDgscACIcAhwtDhIcACIcAhwtDhYcACIcAhwtDhgcACIcAhwtDhocACIcAhwtDhEcACIcAhwtDg4cHAoZBQAcCggGABwKDAgAHAoTCgAcChQLABwKFQwAHAoPDgAcCgMPAC0IAQMnAhEEDAAIAREBJwMDBAEAIgMCES0KERItDgcSACISAhItDgUSACISAhItDhASACISAhItDgYSACISAhItDggSACISAhItDgoSACISAhItDgsSACISAhItDgwSACISAhItDg4SACISAhItDg8SACISAhIuDIBKABIuCIBFABcjAAANqw0iABeATgAFJAIABQAAEg4jAAANwC0LCQQtCwQFACIFAgUtDgUELQgBBScCBwQEAAgBBwEnAwUEAQAiBQIHLQoHCS4MgEcACQAiCQIJLgyARwAJACIJAgkuDIBHAAkrAgAHAAAA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", - "debug_symbols": "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", - "brillig_names": [ - "add_lock_public_user" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "commit_private_user", @@ -2024,7 +2143,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -2080,7 +2199,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -2109,7 +2228,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -2303,7 +2422,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -2634,351 +2753,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ + }, { - "name": "inner", + "name": "function_selector", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "is_static_call", + "name": "args_hash", "type": { - "kind": "boolean" + "kind": "field" } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -2987,30 +3205,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -3067,26 +3281,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -3095,53 +3324,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -3150,50 +3406,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -3202,17 +3467,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -3235,7 +3500,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -3291,7 +3556,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -3320,7 +3585,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -3514,7 +3779,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -3649,22 +3914,23 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "285656119219400463": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "Field failed to decompose into specified 32 limbs" }, - "2709101749560550278": { + "576755928210959028": { "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." + "string": "0 has a square root; you cannot claim it is not square" }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -3672,22 +3938,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -3696,6 +3956,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -3704,29 +3968,6 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6418028854678020178": { "error_kind": "string", "string": "FundsNotSent" @@ -3743,45 +3984,84 @@ "error_kind": "string", "string": "Invalid public keys hint for address" }, - "11418088424205762236": { + "10090043878309646342": { "error_kind": "fmtstring", - "length": 98, + "length": 101, "item_types": [] }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -3797,13 +4077,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -3812,52 +4088,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfM8yj+qh6kSZbkSTWpTYo871SSKImTUoNTg1ODUyPyvAa1SZHnnUoSJXGSJGmSJXlSakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhq1NSoqVFTo6ZGTY2aGjU1amrU1Kip0VKjpUZLjZYaLTVaarTUaKnRUuPO80b/cH/yeyWVpIdGkyBOkiRNsiRPqklt0p3ng0pSapTUKKlRUqOkRkmNkholNSg1KDUoNSg1KDUoNSg1KDUoNSg1ODU4NTg1ODU4NTg1ODU4NTg1ODUkNSQ1JDUkNSQ1JDUkNSQ1JDUkNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1LDUsNSw1LDUsNSw1LDUsNSw1LDU8NTw1PDU8NTw1PDU8NTw1PDU8NWpq1NSoqVFTo6ZGTY2aGjU1amrU1Gip0VKjpUZLjZYaLTVaarTUaKnRpkYUqw0qSZTESZKkSZbkSTUpNTLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLP28xzumae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae03WlRkmNkholNUpqlNQoqVFSo6RGSY2SGpQalBqUGpQalBqUGpQalBqUGpQanBqcGpwanBqcGpwanBqcGpwanBqSGpIakhqSGpIakhqSGpIakhqSGpoamhqaGpoamhqaGpoa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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "notify_created_nullifier_oracle_wrapper", - "notify_created_note_oracle_wrapper", - "random", - "decompose_hint", - "lte_hint", - "field_less_than", - "build_msg_block", - "attach_len_to_msg_block", - "get_random_bytes", - "get_random_bytes", - "get_app_tag_as_sender", - "increment_app_tagging_secret_index_as_sender_wrapper", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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6DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbTFE3tGO0Y7RjtGO0Y7RjtGO0Y7RjtGO2Y7ZjtmO2Y7ZjtmO2Y7ZjtmO2Y7VjtWO1Y7VjtWO1Y7VjtWO1Y7Vjt2O3Y7djt2O3Y7djt2O3Y7djt2O2wdlg7rB3WDmuHtcPaYe2wdlg7vB3eDm+Ht8Pb4e3wdng7vB3ejtOO047TjtOOrnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOveuc+86zyVYjr+KWk27yZq86TRF0y3KOgeNpnaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHZ8dX5+Sbfoq/NHo2k2rabdZE3edJra8dX5yX3/1fmj0TSbVtNusiZvOk3R1A5rh7XD2vHV+VlJu8mavOk0RdMt+ur80WiaTe3wdng7vB3eDm+Ht+O047TjtOO047TjtOO047TjtOO0I9oR7Yh2fHV+PGk3WdOfI2bSaYqmP0fkKF+dPxpNf46wpNW0m6zJm05TNN1Hucjr0WiaTatpN1nT58g/Pfzq/FE0fY7vuimXez0aTbNpNe0ma/Km0xRN7ZjtmO2Y7fjq/P6SdpM1edNpiqZb9NX5o9E0m9qx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux22HtsHZYO6wd1g5rh7XD2mHtsHZ4O7wd3g5vh7fD2+Ht8HZ4O7wdpx2nHacdpx2nHacdpx2nHacdpx3RjmhHtCPaEe2IdkQ7oh3RjmjHbcdtx23Hbcdtx23Hbcdtx23HLUcuJHs0mmbTatpN1uRNpyma2jHaMdox2jHaMdox2jHaMdox2jHaMdvx1fmdSbNpNe0ma/Km0xRNtyjrHNSO1Y7VjtWO1Y7VjtWO1Y7Vjt2O3Y7djt2O3Y7djt2O3Y7djt0Oa4e1w9ph7bB2WDusHdYOa4e1w9vh7fB2eDu8Hd4Ob4e3w9vh7TjtOO047TjtOO047TjtOO047TjtiHZEO6Id0Y5oR7Qj2hHtiHZEO247bjtuO247bjtuO247bjtuO245crHao9E0m1bTbrImbzpN0dSO0Y7RjtGO0Y7RjtGO0Y7RjtGO0Y7Zjq7z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85zEdy1pFuUdQ4aTbNpNe0ma/Km09SO+xwz18M9Gk2fw5NW026yJm86TdF0i7LOQaOpHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7cjHwD1+yVO4iLuD1eiEZ14iEG8jfmQqIeDOImLSNuh7dB2aDu0HdqCtqAtaAvagragLWgL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3SdtuGZ1M9HMRJXMRNNKITDzGItA3aBm2DtkHboG3QNmgbtA3aBm2TtknbpG3SNmmbtE3aJm2Ttknbom3RtmhbtC3aFm2LtkXbom3RtmnbtG3aNm2btk3bpm3TtmnbtBltRpvRZrQZbUab0Wa0GW1Gm9PmtDltTht7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9JLvcnyhlwAHcRIXcRON6MRDDCJtm7ZN26YNveQkbqIRnXiIQbyN6CXAQZxE2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1oC9qCtqAtaAvagragLWi7tF3aLm2Xtkvbpe3Sdmm7tN227d+POIiTuIibaEQnHmIQaRu0DdoGbYO2QdugbdA2aMte8j1/duaqw4fZSx5+trETJ3ERN9GITjzEIN7G7CUPaVu0LdoWbYu2RduibdG2aNu0bdo2bZu2TdumbdO2adu0bdqMNqPNaDPajDajzWgz2ow2o81pc9qcNqfNaXPanDanzWlz2g5th7ZD26Ht0HZoO7Qd2g5th7agLWgL2oK2oC1oC9qCtqAtaLu0XdoubZe2S9ul7dJ2abu03bblMsbCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvOewlh73ksJcc9pLDXnLYSw57yWEvOewlh73ksJcc9pLDXnLYSw56yUk0ohMPMYi3Eb0EOIiTuIi0TdombZO27CVzJN7G7CUPB3ESF3ETjejEQ6Rt0bZp27Rt2jZtm7ZN26Zt05a9ZP4Sb2P2koeDOImLuIlGdOIh0ma0OW1Om9PmtDltTpvT5rQ5bU7boe3Qdmg7tB3aDm2HtkPboe3QFrQFbUFb0Ba0BW1BW9AWtAVtl7ZL26Xt0nZpu7Rd2i5tl7bbtlzyWTiIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmgbtA3aJm2TtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpo29JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2Esue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7noJTPxEIN4G9FLgIM4iYu4iUakbdG2aFu0bdo2bZu2TdumbdO2adu0bdo2bUab0Wa0GW1Gm9FmtBltRpvR5rQ5bU6b0+a0OW1Om9PmtDlth7ZD26Ht0HZoO7Qd2g5th7ZDW9AWtAVtQVvQFrQFbeglnhjE24heEomDOImLuIlGdOIhBvE+XL/fjziIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmgbtA3aJm2TtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPajDanzWlz2pw2p81pc9qcNqfNaTu0HdoObYe2Q9uh7dB2aDu0HdqCtqAtaAvagragLWgL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3Sxl4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPYSrHv9vlh2Yd3rw0H8bGslLuImGtGJhxjE25i95OEg0nZoQy85iUZ04iEG8TailwAHcRIXkbagLWgL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3SdtuGda8PB3ESF3ETjejEQwwibYO2QdugbdA2aBu0DdoGbYO2QdukbdI2aZu0TdombZO27CX5Nb1Y9/rwNmYveV+7O4iTmOfkTtxEIzrxEIN4G/Ed9cBBnETaNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPajDanzWlz2pw2p81pc9qcNqfNaTu0HdoObYe2Q9uh7dB2aDu0HdqCtqAtaAvagragLWgL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3SdtuGda8PB3ESF3ETjejEQwwibYO2QdugbdA2aBu0DdoGbYO2QdukbdI2aZu04TPhm2hEJx5iEG8j1pcAB3ESF5G2RduibdG2aFu0bdo2bZu2TdumbdO2adu0bdo2bUab0Wa0GW1Gm9FmtBltRpvR5rQ5bU6b0+a0OW1Om9PmtDlth7ZD26Ht0HZoO7Qd2g5th7ZDW9AWtAVtQVvQFrQFbUFb0Ba0XdoubZe2S9ul7dJ2abu0Xdpu2966V+AgTuIibqIRnXiIQaRt0DZoG7QN2gZt2Uu2JzrxEPNKIRJvY/aSh4M4iYu4iUZ04iHSNmlbtC3aFm2LtkXbom3RtmhbtC3aNm2btk3bpm3TtmnbtG3aNm2bNqPNaDPajDajzWgz2ow2o81oc9qcNqfNaXPanDanzWlz2py2Q9uh7dB2aDu0HdoObYe2Q9uhLWgL2oK2oC1oC9qCtqAtaAvaLm2Xtkvbpe3Sdmm7tF3aLm23bVj3+nAQJ3ERN9GITjzEINI2aBu0DdoGbYO2QdugbdDGXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlzl7i7CXOXuLsJc5e4uwlh73ksJcc9pLDXnLYSw57yWEvOewlh73ksJcc9pLDXnLYSw57yWEvOewlh73ksJcc9pLDXoJ1r9+3ui6se304iYu4iUZ04iEG8TYu2hZti7bsJd8DnRfWvT404mf7nna8sO71YRA/m3+Xalj3+nAQP9v3BOOFda8PN9GITjzEIN7G7CUPB5E2o81oM9qylxxLPMQgpu27ysS614eDmGfJSVzETTSiEw8xiLcRvQQ4iLQd2g5th7ZD26Ht0HZoC9qCtqAtaAvagragLWgL2oK2S9ul7dJ2abu0XdoubZe2S9ttG9a9PhzESVzETTSiEw8xiLQN2gZtg7ZB26Bt0DZoG7QN2gZtk7ZJ26Rt0jZpm7RN2iZtk7ZJ26Jt0bZoW7Qt2hZti7ZF26Jt0bZp27Rt2jZtm7ZN26Zt07Zp27QZbUab0Wa0GW1Gm9FmtBltRpvT5rSxlwR7SbCXBHtJsJcEe0mwlwR7SbCXBHtJsJcEe0mwlwR7SbCXBHtJsJcEe0mwlwR7SbCXYN3r9/jyhXWvD4342WInHmIQP9v32N+Fda8PB/Gz3bRlL3m4iZ/tRqITD/HP9vdZbuItzHWvheNDT5zERfyz/X2sm2hEJx5iEG/j10sKB3ESF5G2QdugbdA2aBu0TdombZO2SdukbdI2aZu0TdombYu2RduibdG2aFu0LdoWbYu2RdumbdO2adu0bdo2bZu2TdumbdNmtBltRpvRZrQZbUab0Wa0GW1Om9PmtDltTpvT5rQ5bU6b03ZoO7Qd2g5th7ZD26Ht0HZoO7QFbUFb0Ba0BW1BW9AWtAVtQdul7dJ2abu0XdoubZe2S9ul7ZZt57rXwkGcxEXcRCM68RCDSNugbdA2aBu0DdoGbYO2QdugbdA2aZu0TdombZO2SdukbdI2aZu0LdoWbYu2RduibdG2aFu0LdoWbZu2TdumbdO2adu0bdo2bZu2TZvRZrQZbUab0Wa0GW1Gm9FmtDlt6CWeOImL+Nm+P0vcue610Imf7VtyvnPda+FtzF4yc7DsJQ8n8bOtHCx7yUMjfraFwQ4xiJ9t3Q+zlzwcxM+2c4uzlzzcxM/2vXPfue618BA/28ZgtzF7ycPPZrlB2UseLuJn+75tcue610InfjZfiUG8hbnudX5vaXeuey2cxM/2fXHPznWvhUb8bCcSDzGIn+18G5TrXgsHcdZOzXWvhZtotVNz3WvhIUbt1Fz3+jB7ycNROzXXvRYu4mf7vjdn57rXQiceYhBvY/aSh4M4iYtI26Jt0bZoW7Qt2jZtm7ZN26Zt07Zp27Rt2jZtmzajzWgz2ow2o81oy14SJ/EQg/jZbv7b7CUPB/Gz3Txps5c83EQjOvEQg3gbs5c8HETaDm2HtkNb9hJUS/aSh0G8XS3ZSx4O4uxqyV7ycBOtqyV7ycNDzG0D3sbsJQ//bOuX0/l6SeEi7g9zg75eUujE82FO5+slhbcw172u300cxEn8bN/DyXauey00ohMPMYi38eslhYM4ibQN2kbacr7DiYeYtpzvuI3zR/xs0xIncRE/W74O5brXQid+tnyZyXWvhbfx6yXrWx65c91r4SR+tpW2r5cUGvGzbQx2iEH8bDsH+3pJ4SB+tmyOue61cBM/m/0SnXgasU4h6ZNZYp58loY8+R5uohGdeIhBvIW5ULJwECdxETfRiE48xCDSNmgbtA3aBm2DtkHboG3QNmgbtE3aJm2TtknbpG3SNmmbtE3aJm2LtkXbom3RtmhbtC3aFm2LtkXbpm3TtmnbtG3acPJ5ohMPMYi30X7Ez+a/xElcxE38bN+HGjsXShZ+tu+TjJ0LJQtv4/dCVjiIk7iIm2hEJ9LmtDlth7aTNkucxEXcRCM6MW0nMYi38XshW/nylgslCydxETfRiJ/t5Hy/F7LCIN7Gm7acWb6QPZzEzxZ5WLKXPDTiZwsMdohRmEsi//Zs4jfu99WEOxc/rrxCycWP67tLuHPxY2EQb2P2h4eD+I1705b94eEmGjFtOYfsDw/TlpPM/gDM/vBwECdxEf9sfxuYaEQnHmJ8uBJv49cf/t5pJg7iJC5i2lK8jOjEQwzibfz6w9+OSxzESVzEzzZykl9/KHRi2jwxiLfRNjFHyK34qnuPPAk8p5Mz80GcxEXcxG+wfO+a6xULDzGIt/Er6cLPlpcPuV6xcBE3MW053+PEQ0xbzuzcxvgRP9vKk/Yr6Z1vmnO94s4LkFyvWGhEJx5iED/bSsVX0oWDOImLuIlGdOIhBrFtuV6xcBAncRE30YifLa+dcr1iYRBv41f+hYP4jbt3ohGdeIhBvI1ZhfvrBLlssDAV35HPhXz7+7Bk50K+wk00ohMPMYi30X7EQaTNaDPajDajzWgz2rKc8t16Ls7beZGZi/N2Xk7m4rzCQ/xGyEvLXJz3MAvn4SBO4iJuohGdeIi0HdqCtqAtaAvagrYsEctTI4shr2xywd1fq0ucxEXcRCM6McfNEyaL4WHO9zthcsFd4SDmzDwxRziJQczz4dvruYjubwMSB3ESFzHHvYlGdOJnc4wbxNs4aZu0Tdombfn69rCPZi6iKzzEIPbRzEV0hYM4iYu4ibQt2hZti7ZF26Zt05YVm6dGLozDqeGoTfyD24jaBA7iJC7irvMhF8YVep8EWZsPozFrE6dG1ibOB9Qm0PvUQG3mAUBtAm/j4dFEbeZJgNoELuLukyBr86ETaTu0HdqCtuC5k8Xg3/7NFWOFg/hNJy+mc8VY4SYa0YmHGMTbmIXzMG2ROImLuIlGdOJnOznfLJyHtzEL5+Fn+75UfOeKscJF/Gx5tZ0rxgqdmDZLDOJtzMJ5mDZPzHFPohGdeIg57k38xo3vGOfasJ1X8bk2rHASF/Gz5S3HXBtW6MRD/Gx58Z8LwnbkfLOG8oo/F4TtyOlkDeWNyFwQVmhEJx5iEG9jXkTmvcNcEFb42W6K8yLy4SYa0YmH+Gf7u7xJvI1fvRUO4vwwp/PVW+Em2oc5s6/eCg8xbXm4T9pyDvEjDuIkLuImfra8SM8FYYWHGMTb+L1uFg7iJC7iJtJ2abu03bbl0q+/67XESVyNI/+rJy5i2k6iEZ14iEG8jTO3LRJzDjdxEhdxE43oxEMM4m1cPyJti7ZF26Jt0bZoW7R9xWvf0812Lruy/IQvl11ZvmnLZVeFTjzEIN5Gy3GBg/jNd+Zxs0XcxG/c+dV8LqWyvGObS6kKc4tzkr76APgmGtGJOW4e+azCh7cxqxAHNqvw4STSdmg7tB3asgqBWS0TeIhBzL6TW5xXmQ8HcRIXcRO/OeQ7wFzyVHiIQbyFueSpcBAncRE30YhOPMS25eImy1vmubipcBE30YhOPMQg3saswoe0TdombZO2SdukbdI2aZu0LdoWbYu2RduibdG2aFu0LdoWbZu2TdumbdO2adu0bdo2bZu2TZvRZrQZbUab0Wa0GW1Gm9FmtDltTpvT5rQ5bU6b0+a0OW1O26Ht0HZoO7Qd2g5th7ZD26Ht0Ba0BW1BW9AWtAVtQVvQFrQFbZe2S9ul7dJ2abu0XdoubZe2Wzb7/X7EQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpm7Shl6zERdxEIzrxEPNl5n6YDeThIE7iIm6iEZ14iEGkbdO2adu0bdo2bZu2TdumbdO2aTPajDajzWgz2ow2o81oM9qMNqfNaXPanDanzWlz2pw2p81pO7Qd2g5th7ZD26Ht0HZoO7Qd2oK2oC1oC9qCtqAtaAvagrag7dJ2abu0XdoubZe2S9ul7dJ225YrmgoHcRIXcRON6MRDDCJtg7ZB26Bt0DZoG7QN2gZtg7ZB26Rt0jZpm7RN2iZtk7ZJ26SNvWSwlwz2koGLEU9cxE3MdnUSnXiIQbyNuBgBZnNMGy5GgIuYtkg0ohMPMYi3MXvJd1veckVT4SQu4iYa0YmHGMTb6LQ5bU6b05a95LtbZ7miqdCJhxjE25i95PvAwHJFU+Ekps0SN9GITsxx88Bmf9h5hLI/PNzEHCGPUPaHh4f4zfe7b2+5Sulh9oeHg/jZLDco+8PDTTRijvvtvlx5ZN/tUsuVR4WLmPP9JRrRiYcYxNuYNf8wbZ44iYuY87VEIzrxEIN4G7PmHw7iJC4ibZO2rPnvPq3lyiPznHrW/MPbmDX/cBAncRE30YhOpG3RtmjbtG3aNm2btk1b1vy3BsNy5VHhIQbxNmbNP8w9GYmTuIhpyxMma/6hEz/bwWBBvI1Z8yfPyaz5h5P42U4elqz5h0b8bN/9Scsn7hUG8bNFHuOs+YeD+Nlu7rOs+Yeb+Nluzjdr/uEhfrabuyQ7ATCvHx5+tm+JoeUT9woX8c/mvyyGrz8UOvF8mFv89YfC2/j1Bx+5xV9/KJzE9WFu8dcfCo342WZu0Hf9UBjEz/bdqLFcSFY4iJ/t+/DcciFZ4SZ+tu+uhOVCssJD/GwLg93Gr5cUfrZ8AcyFZIWL+Nmyg+dCskInfrZs27mQrPA2fr3Esw3mQrLCSfxsloN9vaTQiJ8taygXkhUG8bN9n6FYLiQrHMTP9n1+YbmQrHATjejEQwzibdw/4iDStmnbtG3avl7iJ3fU10sKg/jZTh6sr5cUDuJni9yTXy8p3MTPlsWbC8kKDzH6aNpt/HpJ4eij+fWSwkXcfTTdiE48fTS/XlJ4G79e4pGn3NdLCifxs908ml8vKTTiZ7v4t4cYxM+WDSQXkhUO4uy9/vWSwk203uvZSx4eYvRez14CzF7ycPRez17ycBH/bOcHNKITz4c5na+XFN7CfOLe+dYxWS4vK5zEP9v5PmewfOJeoRE/W3a5XHRWGMTP9n3kYLnorHAQP9vMwb5eUriJn23mYF8vKTzEz/YtBrJcdPbw6yWFny27XC46K1zEz5ZNLBedFTrxs+WVeS46K7yNXy85ec2Vi84KJ/Gz5WVoLjorNOJn2xjsEIP42bICctFZ4SB+trykykVnhZt46vJg41pjJg7iJC7iJhrRiYf4zTcvLfMpeuf7mNxyVVrhIE7iIm6iEZ14iEGk7dB2aDu0ff3h5KVarkorNKITDzGIef2bez2vNR4O4mfLV5xcf3awd8KJhxjE2/h1gsJBnMRF3ETaLm2XtkvbbVuuPyscxElcxE00ohMPMYi0DdoGbYO2QdugbdA2aBu0DdoGbZO2SdukbdI2aZu0TdombZO2SduibdG2aFu0LdoWbYu2RduibdG2adu0bdo2bZu2TdumbdO2adu0GW1Gm9FmtBltRpvRZrQZbUab0+a0OW1Om9PmtDltTpvT5rQd2g5th7ZD26Ht0HZoO7Qd2g5tQVvQFrQFbUEbe4mxlxh7ibGXGHuJsZcYe4mxlxh6iSVuohGdeIhBvIWOXgIcxElcxE00ohMPMYhp+15mHL0EOIiTuIibmLaV6MRDDOJtRC8BDuIkLuIm0jZpm7Shl0TibUQvAX62vLTMpX6Fi/jZ8tLS0TXy19AfTuIgfiN8i5csn4FXuIlGdOIhfvPNy9Bc6vcw+8PDQUxbTjL7w8NNTFtOPfvDw0NMW049+wMw+8PDQUxbbnz2h7yRkAsAT94yyAWAhUG8jdkJ8o1CLgA8N49QdoKb881OcHNm2QkeGtGJacuZZSd4eBuzEzxM2038U8Qvp/OVf/xyOl/5R17b5yPu4odfO8Qg3sav/AsHcRLTlvvsbqL3aXR5Rl2eqbfP1PP7EQdxEhdxE43oxEMMIm2Dtq/m4/vDfstVioWL+G3Qt2DGcpVioRMPMYi38av5wkGcxEWkbdI207YTDzGIt3H9iIOYttzitYibaMS03cRDDOJnyxtLuXYxvrVJlmsXCz9bvvvKtYuFny3fcuXaxUInHmIQb6P9iIM4iYtIm9FmtBltRpvR5rQ5bU6b0+a0OW1Om9PmtDlth7ZD26Ht0HZoO7Qd2g5th7ZDW9AWtAVtQVvQFrQFbUFb0Ba0ZQP51p9ZLmMsnMRF3PWSlMsYC514iEG8hflcu8JBnMTcCk+MetXLZ9VF3uzMZ9UVDuIkLuImGjH3w1dOubgR+yEXN2Izc3Fj4SYaMffvTTzEIN7G1UczFzcWTuIibqIRnXh6DlnzD2/j/hFHzwE1D1xE2ljzwZoP1nyw5oM1H6z5sD53wrgnjXvSuCdR8zkH45407knWfLDmgzUfrPlgzQdrPljz4TxuqHkg96RzTzqPG2oeyD3Jmg/WfLDmgzUfrPlgzQdrPljzETxuwT0Z3JPBPRnck1nzeSMsF2MWfra8+5WLMQtvY9b8w8+2cg5Z8w8XcRON6MRDDGLavknmYszCvH64ibuqMJddRn4QkcsuCw8xiH2E7vgRB3ESF3ETjdhHKBdjFgaxj1AuxiwcxElcxE3MrTiJQbyN2R/yRmMuu4xcZZDLLgsXcRON6MRDDOJt3H3v6uLuAXATjejEQwzibcTdA+Ag0ma0GW1Gm9FmtBltRpvT5rQ5bU6b0+a0OW1Om9PmtB3aDm2HtkPboe3Qdmg7tB3aDm1BW9DGe443aAvagragLWgL2oK2S9ul7dJ2abu0XdoubZe2S9stm/9+P+IgTuIibqIRnXiIQaRt0DZoG7QN2gZtg7ZB26Bt0DZom7RN2iZtk7ZJ26Rt0jZpm7RN2hZti7ZF26Jt0bZoW7Qt2hZti7ZN26Zt07Zp27Rt2jZtm7ZN26bNaDPajDajzWgz2ow2o81oM9qcNqfNaXPanDanzWlz2pw2p+3Qdmg7tB3aDm2HtkPboe3QdmgL2oK2oC1oC9qCtqAtaAvagrZL26Xt0nZpu7Rd2i5tl7ZLG3vJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwl+Ray/g+Y/Vca1noxEMM4m3MdygPB3ESF5E2o81oM9qMNqPNaXPanDanzWuVl2Ot5UMnHmIQb2O+Q/kWbnqutSycxLTh326iEXPbduIhBvE25juUh4M4iYu4iUakLWgL2oK2S9ul7dJ2abu0XdoubfkO5Vuh4rlaM74P5T2fHgfMp8cVDuIkLuImGtGJhxjEWp3nWMP5cBBrdZ5jDefDTczVeb9EJx5iEG9jruF8OIiTuIibSNukLd+3fEsWPNdlhuV/zXcolluR71AeGtGJ3wjfYiDPtZbxfaTuudaycBON6MRD/PbvtyLBc63lw6z5h4M4iYu4iUZMW+71rPmHQbyNWfOWxzhr/mGutrDERdxEIzoxbbl/866E5/7NuxLArPmHg/htm+cuyZr33Iqs+YdGdOIhBvE2Zs0/HMRJpC2rG1PP2vTcD1mbD42Yc8C/PcQg3sJcE1k4iJO4iJtoRCceYhBpG7QN2gZtg7ZB26Bt0DZoG7QN2iZtk7a8p/DdJPFcE1lY63R9TSM68TTmPYWs2FznGNlhcp1jrr31XOdY6MRae+u5zrHwNuaa6cjp5Jrph5O4iJtoRCceYhBvo9FmtGXFZkfMtYvxPSDCc+1ifHeQPdcuPszafDiIOULuqKy3k3s96+3hbcx6eziIk/jt38jdl/X20IhOPMQg3sast4dp88RJXMRNTFseoaxCYL5YfssNPRcWFm5i/lruvizIh7VI2VcvUvaFRcofbixSBua4lpgjeOJ5S5c9FwsW3sZcePzdi/dcLFg4ibnMOcfNhccPjejEQwzibcyFxw8HcRJpm7TljbvI6WQ55dmXCwAjqyUXABYu4iZ+I3yfNXsu6ovvs2bPRX2Fk7iIm2jEb//enFm+AD4M4m3MF8CHgziJi5i2PJr5AvjQiYeYtjyEWWTALLJv5aznor77y43/XtQKDzGIt/ErssJBnMRF3ETaTi1E91zUVxjEWojuuaivcBBzQXPu6lz0+3ATjejEQwzibcxFvw8HkbZL2819lrv65t75/msu37vfwgDP5XuFk7iIOYIn5gjf+ZtL8goHcRIXcRNz/95EJx5iEG/j/BEHcRLTZombaEQnfrbvw37PJXmFn+17FofnkrzCQZzEzzZy73y1WWhEJx5iEG/j/hEHcRJp27Vg3HNJXqETa8G4Gxb6A28jFvrnYFjoD5zERdxEIzrxEIN4G502p81zn+V8s45HnhpZx9+KBM9ldg+zjh8O4jfCzOP21ebNl45cOld4G7/aLBzESfz278y6iE00ohMPMYi38f6IOd88Pe8kLuImpi33Tlbswxz3O2658O1+H215LnwrdOIhBvE2ZsU+HMRJXETaRv3RhefCt8JDrD+68Fz49hB/mgPMP82ZiZO4iJtoRCceYhBvY/5pzkPaFm1Zm98HdJ7PrbvfB5Wez627K/9BVuHDQZzEb4SVG7RzBEu8jfYjDuIkLuK3f7/P6jwXsxU68RCDeBv9RxzEtOVh8UXcRCOmLY9xVuHDz5Z3k3KJ28OswoeD+NnytlAucSvcRCM68RCDeBuzYh8OIm1Rf4zkudqt0Ij1x0ieq90Kg5h/QpOD4U9ogIM4iYu4iUZ04iEGsW258K0w99lKzL1jibl3PDGItzHr+GGOEIk5wk08xCDexnw1fTiI3/7NGyq5QK1wE43oxEMM4m3MV9O8YZUL1AoncRHTlnsnK/ZhjrsTb2NW7MNBnMRFzHFz/2YdP8ytyD25DzFtOZ2sbmBWd96KyKVohWnL3ZfV/fCz5V2UXIpW+NnyHnQuRSv8bJ6bmdUNzOrOO7Inq/vhZ8tbMrkUrTBtuUFZ3Q/TlhuU1f0wbblBWd3ArO68T5BL0QrTlhuU1f3ws+VtgFyKVvjZ8o5ALkUr/CrgDXYb81r54SBO4iKmLXdJvh4/dGLacovz9fjhbczX44eDOImLuIlGdCJtt2256Ozm1VV+berN2wC56Ozm+/n82tTCQwzibRw931yKVjiJi7iJRnTiIXK+o/dOPpOvkLaseWxQVjc2aHK+k/PN6n44iJPI+S7Od3G+i/NdnO/ifBfnuznfzflu7p1N26YtqxsblHWMDTLO1zjfrOOHm8ijaZyvcb7G+Rrn65yvc77O+Trn65yvc+84bU5bViw2KGsTG3Q438P5Hp59h2ff4dE8PJr5yvs9sNRzyVhhvhamAq+8wE004jdu3m7KZWA37xvlMrD8U1nPZWCFm2jvT2U9l4EVHuLXS/LmQC4DA+YysMJBnMRF3EQjOvEQg0hbVmG+dueCr5uXErng6+YNq1zwVRjE25ivsbmj8ol69/u7A88n6hUeYhBvY9bbw2//5m2hXNpVuIibaEQnHmIQ05ZbnPX2cBAnMW0jcRPTthKdeIhBvI1Zmw8HcRIXcRNpy0UaedsCC74eBvH70DhvA2DB18NB/D40zpskWPD1cBON6MRDDOJtzEUaDweRtkNbVuzN+WZt4uzL2sxqyUVchZO4iDnCTfwbYfzyllauzGoewlN4CW9hS86zP78puPgIh/AtPrlGq3kIT+GcfSRuohGdCOdKDmE4z8fjJwxn/u6A8yZ/+/z7s/KDxVoPjejEQwzibcwFFg8HcRJpm7TlV5D/vr/7OLlaq/kIh/Al5/eQFw/hKbyEtzC8ue+XCx/hEL7k/RPGv89t2SF8yfYTHsJTGPPM42Wb7Pj3eex8Ci/h/Pff/aCTi6iaXfg7fjNPk6zQh7cxK/S773KwjOrhJH7Hb+ZG5zKqh0Z04iEG8TbmMqqHgziJtAVt+TXgv5lHENWMyaOaMU9U8+MlvIUxzrfnB6rz+5TkDFTn4ym8hLewCWNv3+QjHMKXjAp9PISn8BKG15JN2IWPcHq/5esnF0IVz/R+N0FOLoX64/z3cwov4S1swi58hEP4klGtj8Wbq6JW7sJcFfVwE79T7Ls9c7Aq6uEhfqfYyoOZq6KAuSrq4SBO4iJuohGdeIi0bdpQy4+xl3Juhr2UR9COcAhfMmr8e/LbGajl757PGajlx0c4hC/5/IRzb3+f2pxcy9S8hLewCbvwEQ5hePPsip/wEJ7C8ObRj01GtWLbUa2PTdiFMZ9vn88ft3eiih9PYYx/krewCWP8SD7yuyHM/TyHeId4h3hRxY+3sAm7sHiHuFCh3+2qM1Ghj7dwjvndejoTFfr4CIdwjm85Pir08RCewun9bn2fidfN7xbTmXjdfBzCGP87vhOvm4+H8BRewlvYhOHN447X38chfMl4/X08hKfwEsaYeQ44fjf3LV6LH0/hJbyFTTjn7LnPUb+PQ/iSUb+Ph/AUXsLp9TxGqN/HLnyEQ/iSUb84dqjfx1N4CWMbf8nB/YbrbjBeqR8PYWxLnktX9hVq/PERxpzTi+vr5IXaf4x9Zck8Ruu3hLewCbvwEQ7hSx4/4SEs3iGuwauOhVfnx5eMV+fH2BYwrzrWNGEXxvEFh/Alo8a/24tnLV7trDWFl7B4l3iXeFH7j0P4kvdPWLxbXKhrz32Fun4cwjnmd4P1LNT14yE8hXP8727pWbiufmzCLpze7zt0zkLtnzyvUPuPpzDGz/MNtf/YhF34CIfwJaP2Tx531P7jKbyEt7AJu/Aho65PngN4/T25b1HLj134CIfwJaPGI/c5avzxFF7CW9iEXfgIpzfyGKH2kzdq//EQnsJLePex26j9xy58hLGNX3/bqOvcbxuv6Y+3sAljW1Yy99VGjT8ewphzevH6/ngLY19ZssvvHuEQFu8S7xIvav/xEt7CJizeJa68R3aBk7iIm4jt8GTcw8h9vC/ZfsI4tid5Ci9h7Kfc96jv97sufITFa+J18foQnsJLeAuL18WFmo7cdtT04ymcY373EM9GTT82YRfO8W+e13g9f3zJeD1/nN6b5yPq/uY5hbp/7MIYP8811P3jS0bdPx7CU3gJw5vHHXX/2IWPcAjfZkPdPx7CGDOS8bs3+ZLxuv14CE/hJfzNeXyryE6u4Gp24SMcwpecdV88hGfyTF7CW9iEXfgIRx87Q92DUfePhzC28Zfs3G94PX8cwpe8sS0rWfYVrtkfmzDmnN59hEMY++o7T8zkGJkcI5NjZOI18Zp4UfuPj7CcGybnhovXxZWfSWWbycekFR5iELEdeT7mx8jZkvKJaIWbiAObv3hc+AhjJ+Hf3/7V+BEHkcagMWgMIzrxEINI26Xi4sTMHXNN2IVz/nmzNR981nyb89FnzVkQeVM1H37WvIS3cHq/x6qeXPH1xzv5ksdPGONb8hRewlvYhF34CMPryZeMQn88hKfwEt7CJowxv32eq7n++CYv4S1swi58hHPOeQs1F4AVo6AfD+EpvIS3sAmnN2/XOgr9cQhfsv2Eh/DksbMlvIVNGNv4NbNcHVb7zYfwFF7C2JY8l1z2lYfwJR/MOb1nCE9h7Ks8T44coyPH6MgxOuI94j3ijZ/wEJZzI+TcCPGGuAL7P8+xi205yUN4Ci/hLWzCLnzeR98nl4EV3sJcBlY4iJO4iJtYCxnOQcl/azTPQcmDUfKPhzA25yYv4S1swi58hEP4vrUHB2vKHg7iJC7iJhrRiadx/XqLl2wNmsHjJbyFZWuWbM2SrVmyNa8ZJL9mAB7C3KDNDdrcoM0N2tygzQ3Kj74fcvcZdx8WoOQWm2wNSv2xCx9h2RqTrXHZGpetcTknXM4Jl3PCuUHODXJukHODnBt0uEGH58Ph7jvcfVihklt8ZGuOnOFHzvCQMzxka0K2JmRrQrYm5JwIOSdCzongBgU36HKDLjfocoMuN+jyfLjcfZe7LztB3mPPp5cVDuIk5qbkR1dYSZb3ubGS7GEQcz99q5tPoBM8HsK5n75VzQeryfCruZrsoRFpHDQOGntd6YleV3qi15WefAhaIW2TirxqH/l5XOAFH7x+wpi/JU/hJbyF8zjnp1GB2n98hEMY3u/gBF7w89OrwAv+4y2M8XP+eMF/fIRD+JLxgv94CKc3PyEKvOA/3sIm7MJHOIQvGRWen6TksrI/zn2LF/zHIXzJeMF/PIQx59zneMF/vIVN2IWPcAhfMmo9P+EK1PrjKbyEt7AJO48dav1xCF8yLgS+5f4n8IKP/YYX/McufISxLd+5dH/cVxcX9Y+XMMaPZBN2YYx/k0N+l8fojp+weId4h3jxyv/YhF34CIt3iiurOndVPqSs0IhOzPHy0xIsZctyxVK2h5OYk82P6S6K+7EJ52TzozksZ3u/GsTbuGncNG4a9yJuohGdSNumAkWcHw9eFPHjLYz549+78BEO4TzI+dHcxUv54yE8heHNExCFnh83XRT64xDG+HlyodAfD+EpvIS3sAmn1/NAo9Afh/Alo9AfD+EpvIQxZh53XMHnx2hY1lY8hZfwFjZhzDn3OQr6cQjf4sCytuIhPIWXMLyebMIufIRD+JJR6N+xCyxtK57CSxjHZSdH7bf44R07GAX9eAhjW05y76vAUrXiI4zx04sXczBezB9j/Js8+btrCW9h8S7xLvHixfzxJe+f8BAW7xZXVvW3YixyNVvhbcwr9Yc53gHnX8yNRCM6MSd7wCF8ySjukzveR/+qT+Ii0ug0Oo1+iEG8jedHpO1QgSI+uWNQxI9DGPPPExxF/HgIT+E8yCdPZLxaPzZhF4Y3T0AU+smTCIX+eApj/Dy5UOiPTdiFj3AI32askBvfqvbACrniKbyEt7AJu/Aho4i/z+cCq9zG95lZYJVbsQsf4RC+ZBT09zlZYJVb8RRewlvYhF34CMPryZeMQn88hKfwEt597AYK/bELH2Ecl6+ZDRQx9huu1B9vYRPGtpxk2Ve4In88hDF+evFi/ngLY/w8T0yOkckxMjlGJl4Xr4sXL+aPl7CcGy7nhovXxYUnH+RuxpMPgIu4iTnezfMx/zjkl7sp77YD8277w5zs9yFcYGFb8RLOyd7c8XnH/f2qEw+RxqDx0pjvuR9O4iJuIm23FVggN74P/wIL5IqnMOZvyVvYhF04D/L3wVtggVzxJePV+jG8OR8U+vdhUmAhXLELY/ybHMKXjEJ/PISn8BL+vPP7UDawWK7YhY9wCF9yFnrxEMaYMxm/m/t2XfL+CQ/hKbyEMefc59uEXfgIh/Al2094CMObx8iW8BY2YRc+wsFjh0IHo9AfD2Ecl53s3G9+hEP4kg+2Jc+lI/vqbGETxvjpPUc4hDF+nichxyjkGIUcoxBviDfEGy58hOXcCDk3rnivuPLRQtlO8Kyvh4cYxBzv+ywk8FivLG881uvhJuZkvw/hAivgio9wTvb74C3waC/8aj7a6+Eg0jhoHDTmo70eOvEQg0jbpAJFPMAm7MKYvyWH8CWjiB/nQf4+eAushitewlsY3pOM8SP5klHojzH+TZ7CS3gLm7ALH+H05uU4VsY9RqE/HsJTeAlvYRPGmHncHb+b+9aX8BY2YRc+wphz7nMUNBgF/XgIT+ElvIVNGN48Rij0xyF8ySj0x0N48tih0B9vYRPGcfmaGVbDvf12h/AUXsLYljyXruyrG8K3Gave5vcZQGDVW/EUxvg3ecvvmrALH+EQFu/4CQ/hKbyExTvElS/g87upH1gNN79784HVcMVTeAlvYRN24fMenRa5GK7wNuL5Y8BBnMRF3MTcRyu3ATX/+JJR84+H8BRewlvYhF1YvFu8W7wmXhOvidfEa+I18Zp48TjAkxjE24jHAQLh3Mn7Pc0vckFcoROxQZYcwpeMhrByx/eTAmP3kwIjF8wV0nhoPDTmkwIfBvE25pMCH9IWVOCVfOXGotgfhzDmn0WHJvB4CE/hPCA7CwFN4LEJu3B6vz9/CSyBm99N98ASuOIpjPFX8hY2YRc+wiF8yWgC35/+BJbPFU/hJbyFTdiFDxlN4PvgIrAEbn4fJgSWwBW78BEO4UvGC/33AUJgCVzxFF7CW9iEXfgIp/e7sR9YJvcYzeDxEJ7CS3jz2KEZPHbhI4zz7Ts/sTTu7TcU+uMtbMI5puW5ZLKv/Cc8hDHn9OIC4PEWzvEtzxOXY+RyjFyOkYv3iPeIFxcAj5ewnBtHzo0j3iMuvLjnfWDDi/v3+UIYXtwfb2ETduEjHML3PRc28jFohYM4iYu4iUZ04jdu3oJ2PLkXOIjzPeg2vJ/cG95P7g3vJ/eG95N7w/vJveH95N7wfnJveD+5N7yf3Bs+aBu0DdoGbYO2QdugbdA2aZu0TdombZO2SdukbdKWFwDfpyaR6+keoiHkBwSOhvA4T4z3b5bwFs4TIz8gwDK74jwx8kY6ltkVXzIawmOMv5MxjiWf79G8+M9BvI14jG/+WzzGFziJ68OU5NeRPzSiEw8xiLfRf8RBnETanDaUfH5kgwVzE8cDpZ0ff2DBXPES3sI5TpYCFsDN/IQAC+CKp/AS3sImnHs776I6yvlxCF8yXsofD+EpvIThzbMFL+WPXfgIw5vHDtf5yQcv8Xl9dfAS/3gKL+EtbMIufIRD+JKHePN5wnl/JxfRFS7i/hD/1ohOPB/mBuXTEh/exnxa4sNBnMRF3EQjOpG2SRtqPC/ksEpu5mcPWCU3v+WFgVVyxUc4yHgRzzP84MU6S/LgxfqxCx/hEL5kXLnnO4yDK/fHU3gJb2ETduEjDO9MvmS80D8ewvDmscML/WP87leVBxX9eAjn7+Z99IOKfvwdtnxzlg9OK3TiaUSVXzDGyHnlI5fy/UAuZCt0Yo6Rc82HHT68jfmww3x3kavYCidxETfRiE48xCDewlzbVjiIefTyPlagFi/+ex6lvFGOdWyPUYuPhzDGiWSMc5ND+JLxPvvxEJ7C395e31+lRD4GrdmEXfgIh/Al5yttMbwneQov4S0M70x2YXh3cghf8v4JD+EpvIS3sAm7sHjzAcOem5UPGAbmA4Yffsc8rwxybVvhIn5nWF5S5MK2QiceYhBvYz5g+OEgTuIi0ua0OfZenoEHeyn3/MFeyrPrLOEtbMI5Tt5yxkq1lXeOsVKteAlvYRN24dzbeTcXK9WKLzlfmYuH8BRewlsY888z/7rwEQ5heL+jn49ea84b05GYH+/9Eg8xiLcRzxAHDuIkLuImGpG2fI3N98+5UK3wNuZr7LeqMPLLNgsn8TtV8h1+rmMrNKITDzGItzGfSPxwECeRtkVbLmHLVoHFavnRBxarZdFhsdrDRdzEUx/p4nlqeTbjeWoPJ3ERN9GIuX9v4iEG8Tbmsw4fDuIkLmLacq/j+f5AJx7iZ8u6ungueCKeCz4TB3ESF/Gz4UzN5yI+dOIhBvE25kffDwdxEheRtnyRzgvZfCJb4SF+506uc8nntD3MF+mH37mTl9S5mq1wETfRiE48xCDehzdXsRUO4iTmPrPE3DsnMfdOfJh1/HAQJ9Hemqmb689yddHN5WcP5484iJO4iLnuaSUa0YmHGMTbmAtPHw5izvcmLuImGjFtuXeyYoFZsd9nJze/pjIfoH7zayoLDzGItxGLy4CDOImLuIm05Yun5Qbli+fDIH5H3nK++eL5cBC/I//dzLq52qxwE43oxEMM4m08P+Ig0nZoy9qcuauzClce+azClf8gq/DhJC5irTm++XWSuTr35gKywkGcxEXcxFwAnKd9/hHHw0MM4i3MZWOFgziJaVuJm2hEJ6YtEoOYf33xVdbAc8GBgziJ+dcXM3ETjejEQwzibcTfegAHcRJpy1fTyK3IV9OHTvzOne+t4M1lZYW3MV9NIwfLV9OHk7iIm2hEJx5iEG/jpm3Tlq+xO+ebdfxdNNx8GFo+jf3mirKHWccPBzFHyONm9bc0NxeHFd5G/xEHcRK//fvdu765LKzQiE48xCDexnw1fZi2PD3xfH/gIm5i2nLvZMU+xFVibnL8hIfwFF7CWxhXxWl6V8VgXBXnfnxXxWB4c++8q2JwevPlZ+Cq+HF680UFT1srTu/MbcFV8eP05ovFwFXx4/TmSwAWmRXDa8lTGF5P3sLwnmQXhjeSQxjebxuxyKw4vd9nyxdPYStOb7ZSLD4rTm+2TSw+K05vdh8sPiv+KuXmP8lr6oeDOImLuIkw5l7Cu+nHRxjG3AN4Nw3Gu+nHQ3gKL+EtbMIufITFu8SLd83ZdbEEba3c23h3nB0WS9CKQ/iS815XsczfZP4m8zeZv8n8TeZvMn+T+ZvM32W/uXhdvG7cRrwvxja6zP/I/PF++fEUXsIy/yPzPzL/I/M/Mv8j8w+Zf8j8Q+Yfst9CvCFedAxsIzoDtvHK/K/MH53hsQnLcb8y/yvzv5w/ntFWPISn8BLewibswkeY3vU6QCTv3sY1OP81XPgIhzCPO57LVozjPpKn8PqeYZ3afMLxQyM6EWN//QCrzVa+tuZqszOAm2jEb4zv/dXN564VBvF+mAPnI1AfDuIkLuImGtGJhxhE2ow2VPDO+aBS8xIAT1db+eq5UKmPLxmV+hjj5NHLj5OX5RHIz5aKQ/iSUamPh3Du7Xytxnqy4i1swi58hEP4klGpeZ2D9WTFU3gJw5sHF5X6GF5LPsIhfMl4zX88hKfwEt7CJize/Mr4fPnMpWiFtzAXop18Hc11aIWT+J1h+cKci9AKjejEQwzibcyvjH84iJNI26AN9f39ceDFarP1fdZ7sdpsWf4b1PHjJbyFcxzP7cLr8Hcf9+JZasVTeAlvYRPOvf19Bnyxuqw4hC8Zd7UfD+EpvIThzYOF1+3HLnyE4bXkS8brtud+wOv24/Se/F1U/cn9871un43/bEQnHmIQb2N+QcHDQZzERaTNaUPH+P5O62LBWXEIXzI6xuMhPIWX8BY2YXhz/6NjPA7hS0bHeDyE8e/zXEWlg1Hpj4fwFF7CmGceL1R6MhaKre9z0IuFYsVbOP99vgXEQrHiI5zH7yTexizWh3n8InESFzGPnyca0YmHGMTbmF8/8HAQJ3ERaZu04Yo735Fjidj61lJcLBFbkf8GFf14C5swxsntQoVG7m1U6OMlvIVN2IVzb3+fiF48Ma34klGhj4fwFF7CWxjePFh4vX58hEMY3jz6eL1+DG/uN1xZ3/z3eB1/vIVN2IWPcAhfMqr18RAWb35nQd7Xy9VihUb8TrF8rcsHrhUG8TvF8gU5H7dWOIiTuIibaEQnHmIQabu0oZZvnlH56rx/WZt53b1/eQTzurv4NuMRa8UreSVjnJ18hEP4ksdPeAjPZE9ewlvYhF34CIfwJU94Z/IQnsJLGN6TbOTv9dqyPWO51/4+iblY7lW8hLewCbvwEQ7hS94/YfFu8W7xbvFu8W7xbvFu8W7xmnhNvAZvJKd35KmRzaDYhF34CIfwJWczKB7CU1i8uV4sz+z8bs5CJ36r027O/WsEhbfxawOW1Z4rywoncRE30YhOPMQg3sagLWgL7L08AQN7KYsjsJcs+ZLvT3gIY5wcE8Wdt/awPKz4NmN5WPEQnsK5t/OWH5aHFZuwCx/hEL5kNIPH8HryFF7CWxjekezC8K7kEL5kNIPHQ3gKL+EtbMIuLN68+56HLr/B82HefX/43eXLY5WPYCtcxO8uX75Rz5VlhU48xCDexrz7/nAQJ3ERadu0oSfkTVgsJ9t5gxXLyXbeVMVysuItbMIY56syLA/b+Z4Py8OKl/AWNmEXzr2dN1jzyWnNl5wv7MVDeAov4S2M+eeZf1z4CIcwvLnf4icMb+5DVPdjE8Z25b5F1T/GduU+RNWDUfWPMX7O4U7hJbyFTdiFj3AI3+ZAl3g8hKfwEt7CJuzCRziExTvEO8Q7xDvEO8SLLpG37QJd4vERDuFLRpd4/L0O5DvheA0A/9mFj3AI55D5ThJr1XAKY61a8RbO8fNOINaqFR/hHD/v+mGt2vtdXCY8HsLi3eLd4t0m7MJHOITFa+JCG8i7kHjOWrELY1ssOYQvGZcAj3P8fH8VaBuPl/AWhvckY/w8HdAewGgPjzF+Hi+0h8dLeAubsAsf4fTmvUI8i+0x2sPjITyFl/AWNmGMmecASj+v8rFKrXgLm7ALH2HMOfc5Sj8Zq9SKh/AUXsJb2ITh9eQjHMKXjNJ/PIRnHzs8i614C5swjstXv3jmGvbbxYv/4ym8hLEtJ5n76qLGH1/ywvjpxVuEx1MY49/kLb9rwi4s3iXeJV7U/uMhPIWXsHi3uFDXefF4cfn/eAhP4Rwz7/rdd5mf22hHOIRz/Lz7icewFQ/hHD/vbN53mZ+/ixp/bMLidfG6eJ0XvHg8W/EQnsLiPeJCXXvuK9Q1GHX9GNuS5zzq+vES3sI5vue5jcuBx0c4hOHN/Y/a95wbav/xFsb4eb6h9h8f4RC+xd/3Tvw0DA2p/m7afmFp2BpMg2s4GkLDlYAS//7k5gsYYCEcDaHhSkDNVxgasAmGsDRsDabBNRwNoeFKQFf4ViN+YWiYGpaGrcE0eB3bLxwNoeFKQE/4rmG+sGWP4pW/gms4GrBxJ4PpTkQ7qLA0wIMZ4GqggmuAB2eV6WE0PYyuh9F1Bq4zcJ0BWkYF06AnkuuJ5DqDo9LTt76+sDWYBteQQwdO5ej7X18YGqaG9Hx/KvSFrcE0pCdwfOLoAKHhSrg6g6szuDoDtJIKW4NpcA06gytSPOJtx0JYGrYGbJwhuIajITSkJ7Iw8GWoHYaGqQEzOAjwBMLREBrgyXMUj4XrMDRMDUvD1mAacgb3h3A0hIYrAQ2lwtAwNSwNGDpPl4HrhYsdj+ZQYWpYGrYG04BNwCFB26gQGq4EXF1UGBqmhqUBM8BhREOp4BqOhtBwJaChvAOMhlJhalgacORwXqNTvD2KK4wX0DYqDA3YOJx8R3ci2kaFowEezABXHS+goVSAB2dV6GEMPYyhhzF0BqEzCJ0BGkqFK+HqiXT1RLo6g6tSLPV5e/SGhsvw1gFW+Ia23w+hP+36gmlwDSd/ZyCEhish24b9JsKQAcbUsDToDIbOYOgMsGigQmi4ErCeoILOYKo0O4XhhQXr/DqEBmxclgyW+nUYGqaGlcERtgbT4BowgzyV8TQ6++Fg7aFhaoAH27O3BtPgGo6G0HAlZEOxgTMkG0qHqWFp2BpMg2s4EhxD43RxDIAd76bBNRwNoeFKONgEHJIzNEwNS8PWYBpcw9GAGeAwnishfhqGhqlhadhygMM0uIajAUcu+yiWDdYevUvD1mAasHE4+a7sRCwS7DA0wBMIS8PWAM9FcB3gaAgNOoOhMxg6gzE1LA1bg2nQGQyVolP4QJgaloatIYeePwSs05kIVwJXJn0hN2FiALSNCktDbsJ8v2M6gGs4GnQGS2ewdQZ7aJgaloatQWewVYpOMbET0SkqTA3YOEPYGkyDa8gzZDpCaLgS/KcBMzgI8OBMREOp4BrgwTmKhlLhSkBDqTA0TA1LQ85g4QxBQ6ngGo6G0HAloKFUGBowNA5JYADseDSHF+5Pw9AwNSwN2AQcErSNCq7haAgNlwHPyeswNGAGjrA0bA2mwTUcDcEDjAfmVUBDqTA04MhtBOcexXrFDqHhSpjYuIMgOxGLFjuYBngwA1yHVAgN8ORZhaWONcAaGqYGncHSGSydAa5DKhwNoUFOJCx67KBSdIqNib6/RXjhaAgNOfTOU/mtX7QXloatITdhDwTXcDTkJmwcH7sygP80DA06A9cZuM4AS6UquIajITToDI5K0Sk2diI6RQXXgI1DyaBTVLgS0Ckq5BmyURi49KiwNGwNmAFOZTSUjTMRDeUFNJQK8OCYoqFUWBq2BtPgGo6GnMHbVWgoCHjmXoehYWpYGrYG04Ch83TB4/PMFsLSsDWYBtdwNGATDOFKQNuoMDRMDUvD1mAaMANHOBpCw5WAhlJhaJg8wFhs2WFrMA04ctlH8by92qN4L1NhalgasHEHQXci3rFUuBJwHWKYAa5DKkwN8FwEPYymh9H0MJrOwHQGpjPAdUiFoUFPJNcTyXUGrlJcejhOS1x64KoTSys7TA1Lw9ZgGlwDujKkWA9d4Up4f0PxwtAwNSwNWwP+NAhHAQ0FV5CGhvICGkqFoQFbitHQUCpsDabBNRwNoQF/FpUnhb+/i3phaJgaloatwTS4hiMBfyGJHYIFnG9LsYKzw9KwNciWYhVnh6MhNFwJ6DsVhgbd0qlbOnVLp27p1C2duqUzNOi+Xrqv3x9JYocs3VJ0lwqu4WjQLV26pVu3dOuW7qlhadgadEu3bunWLd26pVu31HRLTc8q031tuq/fX1Rih5huqYUGqR8s9+ygW+q6pa5b6rqlrmeV61nlela5bqnrlh7d0qNbenRLj27p0bPq6L4+uq/z0Qt4kcl1n81DeAp/joG3SPmEwYvLiVwS2hzCN38hO+P7Ht4KQ8PMgJ2cT2h4v5+PaCg2YXFfcV9x4ys4k/FtvMVDeAovYROOnNxCuBLe92++gA0yhKlhadgaLIMjuIajITRgBvlajmWhA2c01oV22Brgwfbg+34qHA2h4Up439T5wtCQM8BbjfdFvRW2BtPgGo6G0HAl4Nt/8L4Djx8ceCHE8wc7hIYrAV8BVGFowCbgkLzv5XxhazANruFoCA1XAr4jBO8H3rf0VpgaloatwTS4HGB88V+F0HAl4Pv+1kbYskffV3i+4BqOBmwcTr7Qnfi+r/OFpQEezOB9ZecLrgEenFWhhzH0MF49jFdncHUGV2fwvt/zBdOgJ9LVE+nKDLC+tMN6D575eAubsAvnsHg/lCtGL6o/V4w2T+Gcuw2ErcE05NxxhY+v7q3fD+FLnuKe4p7ixld9Pt7CJuzC4p3iQlvApff7Dt8KWwM26P2OazgaQkOeDng7hWWlHYaGqQEzOAjwBMLREBrgyRPyfaVvhaFhalgatgbTkDPAe5H3zb4VQsOVgO5RYWiYGpYGDI1TBF/8icuN9xW/FaaGpWFrMA3YBByS9/2fL4SGK+F9BegLQ8PUsDRgBjiM6B4VXMPREBquBHSPd4DRPSpMDUsDjhyK+X1TKPbo+6rQDPd9V+gLQwM27iDITnxfAFzhaIAnEK4EXHRUgOciyGF83wNcYWvQGQydwdAZvO8RfeFKmD8NQ4POYKoUj2z7gUP4kvHUtsc57Hnha0T4HCfXoTa7cM79vBAargT0Cywbw1MX3+/nYxeLl7C4t7i3uPHUt8chfMl48Ntj8Zq40Bawnut9V3CF0IANyvp4XxdcYWiYGvJ0wBo9rFXtYBpcA2aA8xbdA4vi3vcGV5ga4MEJie5RwTS4hqMhNFwJ6B5YrPa+QbjC1LA0bA2mwTUcCWgLWLn2vkkYa8DeVwlXcA1HQ2i4Hcb7PuFcHTbeFwpXmBqWhq3BNLiGowEzcIQrAd2jwtAwNSwNuw/weF81XME1HA04cjvD+0bSibA0bA2mARt3EHQnvu8ffWFogAczeF9B+sLWAM9FcB3gaAgNOoOtM9g6g/d9pS8sDVuDadAZbJXima44CHio6+MlvIVz2FxRN354hiv2Hx7iCsZTXB/n3L8/kP/C1LA05NwvDgwe5/p+34WPsLhd3Efc+OrSx1N4CW9h8R5xoS1c7LH3taUvTA3YINTH++bSF0yDa8jT4WLn4qKiwpWAi4oKmAHmhu5xcdqhe1RwDfDghET3qHAZ3pcUVxgapoal4ZtBfm/nF0yDazgaQsOVgAe1VxgaMPREwAAL4UrAE9orDA1Tw9KATTAE0+AajobQcCW8LzV9YWjADBxhadgaTINrOBqCB/h9pfEL6B4VhgYcuY3gskffV5++EBquhPftpwdBd+L7ntMXTAM8mMH7qtMXQgM8OKtcD6PrYXQ9jK4zcJ2B6wze96K+cDToieR6Ih2dwVEp7nYOnJa421nhaAgNuOOLHc/nuX9hadgacF8X5w7WklU4GnBnGSfFe4AlBnhPsHxhaNAZXJ3B1RngQTcVXMPREBpkBu/5lRVw0/ogmAbXgI27CKHhSsCikAp52zwv5geWrXZYGraGnMHB3PCRS161DyxOrYCPXCrAsxCmhqVhazANruFowAw2wpWAj3orDA1Tw9KwNZgGDJ2ny1ucerDj8VlKha3BNLiGowGbgEOCj3pfwEe9FYaGqWFp2BpMQ84gcBjxKUuF0HAl4FOWCkPDlAOMT1kqbA2mAedoNq63bPXtUXzUW2FqWBpy6MDJd3QnYoVIhSsBK0Rw9foWp1aYGtKDC7y3OLUG0MMYehhDZxA6g9AZ4KPeCkODnkhXT6SrM7gqxZc04ZUJy1Y7DA1TAzZuI2Rbx3XI+6rlCqEB50F2y7c4tcLQgJ3oCEsGeN8S84Jp0BkMncHQGfArZL6LgJ+GoWFq0BlMlaJT4I0Llq1WQKeogI3D76BTVFgatoY8Q3B9j2WrHY6G0JAzwIU8FqcaLuSxOLXD1gDPQnANR0NouBLQUCoMDZgBzhA0lApbg2lwDUdDaLgS0ClwTf4Wp+Ka/C1OrRAargS0jQpDAzYBhwRto8LWYBpcw9EQGq6EbCiO62ssTu0wNSwNW4NpcDnAaCgVQsOVgB6Cd81v2erbo1gUUsE1HA2RM8iT7y1OxU58i1MrLA3YhIlgGlzDybAQQgeQw/gWp1bQGQydwdAZ4DqkgmlwDUeDzmCqdOL4bARsnCGYBtdwNISGK2H9NKBXYe+8b556YWnYGkyDazgaQgK/8PkLU8PSsDWYBtdwNISGK4Hf/PwFnYHpDExnYDoD0xmYzsB0BqYzMJ2B6wzeV8m9MDUsDVsDjrYjpAcvlO8boV943zr3AqoeJ9KZGpYGnFWBYDqAazgadAZHZxA6A3wFZYWpYWnYGnQGodKLE/YiDA1TQ24c3pdgdWsH0+AasmQGzlH0nQqXAatbO+QM8u9VBtaw5kOwvmAaXAM8hhAaroTx0zA0TA1LA2bgCKbBNRwNoeFKmD8NQwOGDgQMcBGuBHSXCkPD1LA05CbkxxkDa1g7uIajITRcCXmnpMPQkDOYOIzZdzpsDabBNRwNIQd4Xwn20zA0YLN/CC571I6G0HAlODYOJ5/rTvStwTRgEzADPxpCA3Yizqqjh/HoYTx6GI/O4OgMjs7guIajQU+koydS6AxCpe8La3FM3zfWvnA0hAZsHE7l9+20OIzv62lf2BpwHhwE13A0YCfi+Lwvqc0B/H1L7QtDw9SwNGwNpsE1HA2hQWcwVIpOkX8SNbBstYNryI3LNXYDy1Y7XAnoFBXyDFnw5FueDkvD1pAzwGsjFqd6rn0ZWJxaAQ2lAjyGMDUsDVuDaXANRwNm4AhXAhpKhaFhalgatgbTgKHzdMGqU1/Y8WgOFbYG0+AajobchI1DgrbxAtpGhaFhalgatgbTkDPYOIxoKBVCw5WAhlJhaJhygNFQKmwNpgGbnX0UX35dexRveSpMDUsDNg4nX+hOjNBwJeA6ZGMGuA6pMDVgJ+KsunoYrx7Gq4fx6gyuzuDKDPBc0w5Dw9SwNGwNrgHHJ09LrEr1XKM3sCq1w9SwNGwNpsE1ZK/CnW2sSu1wJeAeSoWhYWpYGraGP0/kErGRi1KbL/nrJs3YykDY3/+xwSbswjjVsffQLypcCegXuXRv5LNK6/e/dtG8hMW9xb3FvY9wCF+y/YTFa+JC98jFgANLUDuEhtygt6PQPSoMDVNDnhvPg+5RwTS4BswABxA9wnBCokdUmBrgwcmFHlHBNLiGoyE0XAloJYZTAq2kwtSwNGwNpsE1HAnoHo5TBD3CsePRIyq4hqMhNFwGrDr1XEA18FjTDlPD0rA1mAbXcDRgBhvhSkArqTA0TA1Lw+YBxoLVDq7haMCRy1cRfFv326P4uu4OW4NpwMYZgu5EXHRUGBrgwQxw0VFha4DnILgOcDSEBp3B1hlsnQEuOiosDVuDadAZbJV+fcLePvyuRpoxcCBsDabBNRwNoeFKQDvBJ3ZYk9phasgZ4PodD0PtYBowg4twNISG+20bTt18NHrxEJ7CS3gLm7ALH+Eg59PQ8Rqb61WbsXXY2WghFUyDazgaQsOVgOsUfDSI5aodpgbMAGc/elAF04AZYGvQgyqEhm//4gU/F7U2D+EpvIS3sAm78BEOMvoLPoHDWtYOSwO27/2OaXAN2L5ACA3Yw3kyYS1rh6EhZ4BPIfHU1Q5bg2lwDUdDaMgZ4ONFPJS1w9AwNSwNW8O3n/FmPxe+4vkpI9e94ikeI5e9Ng/hKbyEt7AJf8dxYA9/1zHNIXzJll7MM/tT8RRewlvYhF34CAcZ/Qcfs2Lxa4elAftuIZgG14CjtxFCA44edjgudCoMDZgB9hsudCpsDabBNRwNoQEzwC7GhU6FoWFqWBq2hr8ZbHscH2NHfZ0oHwT8rRr5CQ/hKbyEt7AJ/23gxmt2rpltDuFbPHPBbD789+MhPIWX8BY2YRc+wkEePH8mVsN2WBp4/kyshu3gGnj+TDz+tQPPn4nHv3YYGnj+zN9cGrYG0+AajobQwPNn/tZPw9AwNSwNW0OfPzPXzOL8mblkFsd95orZ5iE8hZfwFjZh57mxj3AIy/ljcv6YnD8m54/J+WNy/picPybnj8n5Y3L+vP4TCFPD0rA14Ohh417/eeFoCA3f9m3w136ah/AUXsJb2IRd+JDRXC4OKJpLhalhadgaTENu4MVJiEugCqHhSsAl0MXphUugClMDZoC9ikugCqbhm8H54eTIS6CTn05PLLs9P0w034a9gGW3HYaGqWFpwAB5YmDVbAcMsBGmBgxgCH+bsPIFfuba2mYXPsIhfMkTBkewDAchR4J6HuEQzpEw8a9PNA/hKbyEtzDEgeAacAwuQmi4EvKd0slPW2Y+3XWhG2OVbO20fTSEhishP9Q5AzsoP9TpMDXo8cj3TR1Mg87AdAaOobELfGpYGnLogaOSDaGDazgaQsOVkBckZ2IT8oKkw9SwNOQMJvZoXpB0cA05g4lTIy9IznzSKyF+GoaGqWFp2BpMg2vADHDqRGjADHC23J+GoWFqyBksbFz2jA6mwTUcDaHhMuDpsB1yBvnxyMT3xHfAebARMIMXTINrOBpCAvpMfggysea2w9SAzXaErcE0QBoIRwOkF+FKmD8NOYP88/2J1bgdloatwTS4hqMhZ5CfYUysxq2QVzMdhoapYWnAPjgIhw0TXxX/+gGW5lbYPw1Dw9SwNGwNxtY/Xxd74WgIDehimCi6WIWhYWpYGrYG0+AajgTHHsWpjJZWYWpYGrYGHFOcfGhpFY6G0HAloKVVwAxwiqGlVVgatoacgeHcQUurcDTkDAzHBy3tBbS0CjkDXPRhbW9+0+YXcgaGiaKlVTANruFoCAlf45o4D7+2VbiIm2hEL8QK3GMvHA2h4W9T0dVz/W3hIE7iIm4ixs4TBitoT94en7mCFu0p188WLuJ3mbCARnTiIQbxNqLk8QYBy2o75MHBWwEsq+2wNeTs8y7qxJNdT/7l9sSTXTt883+IseBHWVcwDa7haIjed5t737j3jXvfuPeNex8F+3a5XdnlKFjHP0PBVsD+MISlAduA8+Er2I15fuVaeIhBvI35XuQhxsbkUHCOyeXN1fePgngb8+snsZfzhuvDSVzETTQifDgFUF4V8qw/OOq4YngBVwwVcvYH5wNe/Q+Gxqt/hbznBbzcfXgia4ehYWqAZSFsDabBeZiw6LVDaNAZDJ3B0BkMncHQGQydwdAZDJ3B0BkMncHQGUydwdQZTJ0BLgQq7KovrIx9tYKVsR2OhtBwJeC1+mBmKOkKQ8NXWgFcxE00ohMPMYi3MQv54SDSZrQZbUab0YZX47ytPbFAtcOVgLLPm9cTC1Q75C7HGyYsUO2wNZgG13A0hIYrAa/TFYYGncHRGRydwdEZoG3gDSSWrnYIDVcCXqcrDA2YwUZYGraG7yVoAJ14iEG8jV/7KMTYOL/QPHDXDStUD26aYYVqh8uAFaodsA0XYWpYGrYG0/CdRw/Tn38WMrFytcOVgOaBOzZYudphakh//rXFxMrVDunPP6GeWLna4Wj49iRmljcsgF/jKBzESVxEjO0I2AbsNlwS4J4Plq52mBqWhm8bAreGsHS1g2s4GkLD91KInZO3Ox8O4ndTbgAXcRON6MRDhO+FKyHfDXRYGjB7TMGOhu9lHHP/OsnDr48UjvzXOKzZRTosDdhzOA5uGuDGQfGjAVuCXe/YEhzV7CKBWz1Yrxp4y4T1qh2WhvQMbFZ2hMDNFaw9DbzDxmNWY+D8C4yGiQZGw9zyAiImZpAXEB1CQt5YCNxCwXLTwI0SLDeNge25rgGjYW4Xo2Fu2QNewHLTDkNDzjo/7ZtYbtphazANruFoCA1XwoDHETDaQcA/yyOHpaOBBoOlox2mhqXBNeRoufxvYoFohxwNXRXLQANXB1jSGbj6x5LODkNDzgBvM7Cks8PWYOLJK/b+f46G0HAloPTe3rGhYWpYGnQfoCjfZlto0L2DAsT5hvWdgTs6WN8ZuG+D9Z0dXMPREBquBBRgBexRzBoFWGFpwAxwUhzMABuH0kRDwWLPQDPLr5+vknEU7Qso2grp2S9sDaYhR8P7DyzpjI3jc3MtCHARMdILGAmbjIKtcDSEhpxxrl2YWM7ZYWiYGpaGrcE0uAZ4ctdiBWfgtgaWZgZuXmABZuD9CBZgdhgapob1faM6cBON6MRDDOJtxHfIAwdxEmlbtC3aFm2LtkXbom3TtmnbtG3aNm2btk1brlLAPs1FCg8ncRE30YhOPMQg3kanzWlz2pw2p81pc9qcNqfNaTu0HdoObYc2lCfeiGNpZYcrAeWJuw1YWoklqRNLK+ONhvLEPRY8tjNwJyXXTOKWRD60s3ARN9GITjzEIN5CrJAMvBvEOsio/+dvlPP++yEG8TZ+18KFgziJi7iJ8BmCazgSUKV494uFjoFbJljoGLhlgoWOHVzD0RAargS8rFYYGqaGpUFnsHQGS2eAq2HcXsESyA5XAl6kKwwNU8PSsDWYBtegM9g6g60zMJ2B6QxMZ4AXadz6wVrJDqbBNRwNIQHXz7hdhHWP8c6Qr5gPDvxXzIWH+J2POE2+Yn74FXPhIE7iImKOL+S+eGOjfisMDbkvcEMB6xo7bA2mwTUcDaHhSkA3qDA06AyuzgAv2LilgXWNHVxDzgCffmNdY4ecAe4u4GmdgZsDeFpn4D07ntbZYWnIGeCdOZ7j2SFngDUdeI5n4P13LnCsX7+N40ccxElcxBwbb86xdjHyaQ4TaxfjYhvwKl9hashtwJtzrF3sYBpcw5GA/oG37ViHGHjTjXWIgTfd+Ib4Dq7haAgNVwK6RIWhYWrADLCz0SUqmAbMAIcBXaJCaLgSsktcvJ/Ht8p3mBq+o/N+YxON+P25B6bxdYfCIN7G73KgcBDhw4HOi/0OW4NpCAkHs8fZfqYGjIaT42wNpsG/B5MCDzGItzG/O+DhIE7iIm6iEWkL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3Slr3i5v2Nhad2dhgasF8dYWnYGrBfA8E1fOflzbsYC0/t7HAl5D25DkNDziDvfCysU+yQM8jbIAvrFO/ArLOj3LwNsrBOsUNowAywCfOnYWj49jt+Ix8e/nATjejE07gw9kHANmD3LGzDRTANruFoyG2Y2D3ZXypkf+kwNEwN31Zg27K73Il9mN3lTsw5u0uH9E9sQPaQ3+P8CzccDzx04v33IxzCOd18v7/wlfIdhoapYWnYGkyDazgaQoPO4OgMjs7g6AzQUBb2HhpKBdPgGo6GkIDHT2Cf4ekTj6cw/nIQvIVNGLr3C0dDaLgS7k/D0IANRgHdpQEbjHPkmgbXkIccp3VelhTfZqw0LB7CU3gJb2ETduEjHMLiHeId4h3iHeId4h3iHeId4kVbyZtVC88DrYC2UgE73BGmhqVha8AOPwjY4ZDiG5MGOIQvGZ0n71QtPAy0w9SwNGwNpsE1HA2h4UrYOoOtM9g6A3yR7A+8hU3YhY9wCF8yvkHp8WfGmTre9yeBl3Bu+H6/YBpcw9GQG76xt9HdXkB3q7A0YDRI0anyTt7CqscOVwI6VQWMhhMEXWfjBEHXqRAaroT4aRga8qBsHJRYGrYG0+AajobQcCWgEW3UBRpRhalhacgZGHY8GlGFnIFh92Yj6hAavhlgt2EBY/EQnsJLeAvDkI0TixJv3jlaWJR482bRwqLEDkvD1oAtwdC4dKlwNISGKwE9Jm9KLSxK7DA1LA1bg2nIGTi2J3tMh9BwJaDNOLYHbabC1JAzcMwabSbvBy08IrQDZhAIRwNmgImizbyANlNhaJgaloatwTS4hqNBZ7B1BqYzMJ2B6QxMZ2A6A9MZmM7AdAamMzCdgesMXGfgOgPXGbjOwHUGrjNwnYHrDFxncHQGR2dwdAZHZ3B0BkdncHQGR2dwdAZHZ4DOluucFhYydpgalga8lQGbsAsf4RC+ZPS0x0N4Cuf4efvsL+RAB30E78gQ8DjSm/fSFh5H2mFqWBq2BtPgGuDJisRDR9++w0NH307BQ0c7mAbXkPslb8ItPHS0w5WAFlVBTgw8dLTD0rA1mAbXcDSEzA0t6oX10zA0TJkbWlSFrUFnsHQGS2egLWppi1raopa2KDy1tKaz9ShsPQpbjwJa1Jvb1qOw9Shoi1raopa2qKUtammLWtqilraopS0KTy2tuZkeBdOj4HoUXI8CWlTepl1YutkB++AgmAbXcDTkDOINfSWgRVUYGqaGpWFrMA05g7z/uvDY0w5aZuhKgdpGV6owNSwNevKhLVXQQx966EMPfWgBXi3Aq4f+6qG/euivHvqrh/7qob96+l89/a+cfFgbevOG9MLa0A5bA3bvRsDuNYSjITRcCbgeqzA0TA1Lw9YAjyOEhisBLa0CPAdhalgatgZcdWGz0dIqHA2h4UpYPw1Dw9SAa3VMFI2rwtEQGrCledWFZ6C+Nwh4BmqHrQFHDkcb7anC0ZAevBziGag1gP00DA06A9MZmM7gvWd7wTUcDaFBZ+AqRd/BezasHe3gGnLovK26sHa0Qw59cSqj71QYGnLjcKsQa0c7bA05g4u5oe9UOBpCA2aAw4gmVGFomBowAxysr9V8f6SOcDSEhpsBO+RrNQxDw9SwNGwNpgEzwB69R0NouAy5wpRhaJgalgYMnYckl4h+f1+PMDRMDUvD1mAasAkH4WgIDVfC/GkYGqaGpQEzCATT4BqOhtBwJawfD3AuMWWYGpYGnKOOELJH15WwfxqGBgx9EXQnbtdwNKRnYAa5Rr1CrlLvkB58qmCmh9H0MJoeRtMZmM7AdAYWGq4E1xPJ9URynYGrNBvKO6TZT4ovGV9Wh23Bd9U9nsK5WfiwJB94ymAaXMPREBqwY/MlJRedMgwNOQEczPclueAtbMIufIRD+JLft+OCh7B4r3iveK94r3iveK94L73++wkP4Sm8hLG/XzANrgEfrCyE0IAPdnLnO65pKgwN+GDnICwNmIEjmAbM4P2zoyE05OaD8Y2Yj4fwFF7CWxiG7CqOroJPshxdJVcbL0dXqbA0bA25JW/rl2s4GkLDlYDmg89QHM2nwtSwNGwNpiFngJvMjrZUITRcCWhLuEPvaEsVpoacAe5NO9oSPhNwtKUKmAH2NdpSBcwAOx5t6QW0pQpDw9SwNGwNpsE1HA06A9cZHJ3B0RkcncHRGRydwdEZHJ3B0RkcncHRGYTOIHQGoTMInUHoDEJnEDqD0BmEziB0BldncHUGV2dwdQZXZ3B1BrhQwscpjgulCqHhMhxcKOFC9uBCqcLUsDRsDabBNRwNIQHXU7mqeR10KXwWctClKmC0jXA0hIYrAVdNFYaGqQEeQ5Djc6buHfSqCkPD1IC94whbg2lwDXKGnKUzWHKGnP3TMDRMDUvD1mAy0e0ajobQoPsAvQrviA56VQXsUXjQqypsDaYhZ4BPYw56VYXQcCWgV1UYGqaGpSFngA9oDnpVhSOHHu0Jb5MP2tMLaE8VhoYph/HooT966I8e+qOHHu2pQmjQQ6/t6Wh7Otqejrano+3paHs62p6OtqeDJoSPog6aUIWpAbsX+w1NCJ8+HTShCq7haAgNlyHQhCoMDVMDPAfBNRwNoQGe3NLAm7oKQ8PUgMvmi7A1mAbXcDSEhith/jQMDbuW5ORq6EIn5puCHziELxn9Ch/jBfpVhalhadgaTMMnx278ulVhEHPTHG50qgpDw3eJmEvuFtY/F29hE3bhIxzCl4zlSI+HsHhNvCZeE6+J18Rr4jXxunhdvC5eNKX8I4wVaEoVTEOeS/5+52jIcwkfnwY61AvoUBXSjzMl3wIWL+EtbMIuDENWeaDP4NPaQJ/BB7SBPlPBNLgGbAlOJ1wGVbgS0IEqDA05A3xAEOhAFbaGXKGDXZnv64qPcK4Mev/+NmOZdPEQnsJLeAubsAsf4RAWL5oRPge8aEb4rOCiGVVYGrYG0+AajobQcCWgGVXQGUydwdQZTJ3B1BlMncHUGUydAa6v8DHERb+qMDRMDUvD1oAZTATXcDRgBo5wJaBrVVgacq0RJo21Ro9D+JKx1ujxEJ7CSxjbcRByO/CR0sU1UoWjITRcCbhGqjA0TA1Lw9agM3CdgesMXGeAdoSPuy7aUYWhYWpYGrYGHMtAcA1HQ96fueBLfl+SDh7CU3gJw42DgRZWwTVg63G6oYVVuBLQwioMDVMDth5nJVpYBdOAGeBExEVUhdCAGXyn0P7hUin/n50rsHPJ4c7114X5y/mnFfuHK6MX0IwqDA1Tw9KQ078YGs2ogms4GjADTBLN6AU0owqYATYMzajC0oAZBIJpcA1HA2ZwEb4ZjB+2J1vOyA8Ddq7RZtgaTINnWAgnw0aIDNieBQ9mnS2nw9AwNWAGmPXeGkyDa8gZ5O3unQ+J/Z6/mSHfxY2Biea7uDFwSPJd3BgYIN/FddgaTINrOBpCA2aAfe0/DXqyvqb0wtZgGlzD0ZDSicOYTalCNqUOudkTOySbUoelYWswDa7haAgNV0L8NOgMQmcQmAEOSWwNpsE1HA2hATPAvr4/DUPD1JAzWDh3sjV1MA05g4VZZ2vC4tmdS74Zcgb5Urdz0TdDzgAdKZd9MywNW4NpcA1HQ2i4EsZPg85g6AyGzmDoDIbOYOgMhs5g6AyGzmDqDKbOYOoMps5g6gymzmDqDKbOYOoMps5g6QyWzmDpDJbOYOkMls5g6QyWzmDpDJbOYOsMts5g6wy2zmDrDLbOYOsM0PnyhvjO5eAMVwLaYIXvKiHfgG2sCC9ewlvYhF34CIfwJTs28CCgrb2AzQiEoyE0XAloaxWGhqkBu+si6GE5ulNCdwpaVIWpIQ9LrnrfAy2qgmlwDXpihM4g9MS4emJcPTGunhhXT4zXojC316JecA16YqBFvbmhRSFMtKgKMoOpLWpqi5raoqa2qKktamqLmj85NedPjsIcPw1Dw5S5jaVha9AZaIua2qKmtqipLWpqi5raouaU82C+FvXC1mAa5DyYaFEVQoPOQFvU1BY1tUVNbVFTW9TUFjW1Rc0l58FcehSWHoWtR2HrUUCLyk8w9kSLqoCjMBFMg2s4GrAPMDe0qBfQoioMDVPD0rA1mAbMAJuAK7UKX6cy/CsfbBQTrSrv8e9cKs6wNZgGPdiuB9v1YLuW3NGSQxOroCf80YN99GAfPdhHD/bRE14b3zx6uoWebqGn22tvgWAaXAO2FPsN7c0wa7S3F9DeKgwNU8PSsDWYBtfAmxl7/X4ahoapYWnYGuCZCK7haMCWLoQrAU2sArZ0I0wNS8PWYBpcw9EQGq4ENLEKOoOpM5g6g6kzmDqDqTOYOoOpM5g6g6UzWDoDNDHU3EITy48p9kITq2AaXMPREBquBDSxCkPD1KAzyJvxaE5YZl7swt+FzsbBzdtgxZect8HQGLHAvHgKL+EtbMIufIRD+JJdvC5e9Kz8ZGcvdKb8WGIvdCZ//+xKQGeqMDTkaI5NRZdxHFt0mQpXArpMhaFhasij4ShE9J8KpsE1HA2h4UpA/6mAGeCIov9UWBq2BswAZwr6T4W8M/pGDuHbjKcFFw9hyAMh5Xk/f29cWVUwDa4BN1zAufV5v3dv9KQX0JMqDA1Tw9KwNZgG13A06AzQed62oVfkX9/sjV7xAnpFhTxt8Su5frt4CW9hE3bhIxzCl5x/ilIs3i3eLd4t3i3eLd4t3i3eLV4Tr4nXxGviNfGaeE28uKzJzxf2xg2oCvkODPy+VRo8hKcwjrQhYCScq3gKMP4PPAT48RD+Rnr//j0eHLyFv214s8Pjfx8f4RC+ZDz69/EQnsJLeAuLN8SLPpGfQmyszh75lKGN1dkjUF3oBhVMg2vI0fIm9sZK65F/1LGx0rrD1mAaXMPRkEcjb6NvQ32/gPquMDRMDUvD1mAaMIOBcDSEhisB1xy4GYml2h0wQCCEhisBbSD/PGJjpXUH9EjwEt7CJpyO/NuKjYXVA7frsbB6Pl7CW/gbCXcksdy6+Ah/hvkEl5zvW4qH8BRewlvYhF34CIvXxIu3KxeTQwHnn1Vsw5sSfPJgeOmvEBquBLz1wOcLWCU98MEBVkl3OBpCw5WAl/4K2CmYdUwNS8PWYBpcw9EQGjADnA946a8wNEwNmAHOgrs1YAZZhLkG+vviHoShYWpYGrYG0+AajobQcCUMnUEWO9615jLo5iX86fFWEmugi134c+OeGRZAF19y1njxEJ7CS3gLm7ALi3eKd2HPOgL23/t/sP+wacs1HA0hIbvAzD8J2P6qfSKYBtdwNISGKwE1nyvZN9Yxd5galoatwTS4hqMBM8DRQvG/4D8NQwNmgDPFlwbM4CCYBtdwNGAG2KN+JZyfhqFhalgatgbT4BqOBp1BdhlcBWMZc/EQ/vQHhz07TPEW/tyOMbO9FB/hEL7kbC3FQ3gKL+EtLN4r3ryAeJ0dK5Dfyw5WIM/804iNFcgdTINrwGh51PO5wt8XbiEsDVuDaXANR0MejXz4z8YK5ArZKDoMDVPD0rA1mAbMYCMcDaHhSliYwUUYGtKTf12wsc544vM6rDPuMDRMDUvD1mAaXMPREBp0BvhmIGw1vhro8RT+9LjdhjXGxSacjf2Aj3AIX3J2kOIhPIWX8BY2YfG6eNEf8OEnlgtPvP/FcuG53j8zDa7hSAiMhk3FdQNexLD0t4NpcA1HQ2jIo4FbPVgU3GFomBqWhq3BNLgGbA+O6A0NlwGLgjtgBgthasAMDGFrMA2uAfvgIISGKwHXGhWGhqlhadgaTINr0BlkLznY0Gwlj7OTFGdjv+ApvISzsWPMbCLFLnyEQ/iSs38UD+EpvITFu8SLqxCULlYET9y1DvSUXKq/Az2lwtZgGnI03FoOXGvgtmrgWqPC0rA1mAbXkEcjV5nvwLVGhSsB1xoVhoapYWnYGjCDieAajobQgBn8f/beZkeankfPPJdezyL0Q1L0qQwGg4anBzDQaBt2ezZGn/tkihHiXVVfMlkZqp1XL6/nraT+71BIDMlq1LTkAkvH2t605AJCYARBGAgzHVsaHaYyF8yS2gKohQQvmDmwNUILCV4wc2DrpBYSvGDmwNZbLCR4geXAhqjpzwWWA6tE058LLAdWIaY/F1gOrPOZ/lxgObBim/5cMHNg0yc1/blg5sAmTWr6c8HMga36qenPBTMHtranpj8XzBzYCoya/lxgOZjFtgjhBZYDNqgIc45lnqf8XDaBzWAL2ANsS3tWn8UGLygIM21b8LHY4AUdgRAYQRAGggLYLOaCgoA5aJgDeyOyVRmL8622GGVxvtXWktS06IKK0BA6ApanY3k6lqdjeTqWh7A8hOUhLA9heQhrlDAHhDkwlTqLbVp0FpuxPIzlMS26gBEEAcvDWB7B8giWR7A8guURLI9geQTLI1ijgjkQzIFp0VlsU5yz2APLM7A8pjgXKIBiD1Esj2J5FMujWB7F8iiWR7E8iuVRLw8dx4FQECoCrWKThfRasclCeq0IZCG9CwpCRWgIHcHS6QaM8CzPmeZUkMtWt6eAXLalQQbmiQ2envT8qwG2uj2FQC1PUwcuu4L9TEGtSuZ05LIJbAZbwB5gq9tTMi67gF3BhnQ7pHtqgkw4R74azJZQa0ob+Rc0hI4wvZ3VYbOQs9w2C7mgIjSEjkAIszXUmsZG/gUDQQFs5F9QECpCQ7AcWO3YyL+AEQTBcmA9xUb+CTY/meuqZEG1CypCQ+gIhMAIgjAQFEAxB1Mt1Np3isVlN7AfybfD2vOpFMtmsGevPH0OsHXZFkt72QXsCnYDu4NNYDPYArana4GyZwEsHLbNVWGycNg2g+DJwmEXCMIAsFXTGR5PFtra5jouWWjrAkYQhIGgAFMi2gycJwttXVARGkJHIARGEATLQTNQgH4gFATLgdVobwgzB8VqZ84vFswclNPBzEGxenvOL1qxRnhOLy77qTHLLmBXsBvYHWwCm8EWsCFdgnSnGrW5+fSAglARGkJHIARGEISBoABiObAGkoJQERpCRyCAqR+tWuGmfizoCITACIIwc12tUad+XKD2G2thFYSBYL+ZvdxiVBcUhNnKw+wGdgd7trKazWAL2LOVxWx1uxxgF7Ar2A3sDjaBzWAL2JBugXRtc2UuuZJFl7ZqpTGVqJZtU4kLBoICmBbM1U+ySNE2v2MgixRdIAgDQQFsxF8wW2Mu8pFFii5oCB2BEBhBEAaC5WA+LixSdEFBqAiWA+sp1BEsB1aj842i9fM3gjAQFMBG/wUFoSI0hI5ACJiD5+i/avc5+Jetbj+HfpvLxzQDSJddwX52y7PNn8N+2QQ2gy1gD7DV7XGAXcCuYEO6A9I1fegGavVnOVWrP2torQgNoSOYtzlALPyzzUVFsvDPBRWhIXQEQrDWUANBGAgKUA6EglARGoLlgAwIgREEYeZgLiaShX9eYKP/rBAb/SfYHOGCgjDzNpcZyYIvrzowXbhAECwH1UABTBcumOnMRUuy4MvLQcdW6NgKHXPQMQcdc2C6cIECEPYDwn5AmAPCRG3Az/VQajbgL1AAG/Bk9WYD/oKK0BBmOmTp2IC/gBEEwXIwlckiMBtZd7GH+gUNYabD1g/soX4BIwjCQFCA+YqxYOaArYfYFOGChtARCIERBGEA2Khn6y5qDqzibb5wgSAMBHXopgcXWBHYoCI0hI5ACIwgCAPBcjCb0UIvFxSEitAQOgJ5A1vo5QJBGAAWqTGjrKlbSIbVaLeXjgsIgRGscLPzWYTmVYkmGxdUBEvHcmCvFhcQwkxnLipTb4IOBgI2Y8ccdMxBxxyYoFzQEQiBETAHHRMlmCv1cwZxQkcgBCvcCTBX6nwgFISZjpzQEDrCTEesfZjRgSAMBMyBYA4Ec2CCckFD6AiEgDkQTNSUQqwSTSkuaAhWOBsyphQXMIIgzHTEBoa9TJxg04gLCoLlwLqyCYpYTzRBuUAQLBLJ+qgJioGdqrugIFSEhtARLBCqGDCCIAwEBTBBuaAgVARz3QzMwax4OsO4TigIFaEhdAQrAhswgiAMBAUwQbmgIFQEy4EYdARCYARBGAjqDWyH7y4oCBXB+igZCNSoTT0uUACbelxghRsGWIkmGxcwgqVjObB5yAUKYIJiy6N2qu7lgLEZGZuRMQeMOWDMgQnKBQMBO5JgRxLMgWCiphTHCYIwEBTAph62CGqxoec6l8WGLiCEmY4tEVts6IKBMNOxtV+LDb0cmGxcUBEwB4o5UMyBMoIgDARYt7N40gUVYbqegbxkgaILBMEKxwYKYEpxQUGwSFExaAgdgRAsB8PA0pk98YwLvaAgzAAiW9q10NAFHYEQGEEQBsKMX7K1WDtQd0FBqAgNoSMQAgN0c90MzIFVfO8IhMAIgjAQrAjWJBb7dUFBqAgNoSMQAiNYDqwZLQbsAgWwKLALCkJFaNDAJigXEAIjWB+1fi0FalQqQkPoCFY463yClSgKMA4ES8dyMCpCQ5jpFOtVA5txYDMObMaBORiYA8UcaEGoCNiRFDuSYg4UErVzas8tMDundkFFaAhWuGJg+zrNYCAowJSNbsvwdk7tgoowi1DO33R0QAiMgDkomIOCOagHQkGoCA0Bc1AxUVMK2zywwNAFBcEKxwYNoSMQwuwhtlJrx9kuGAgKYIJiK9IWTNpt6dmCSRcQwkxnxgSTBZMuGAgKYIJyQUGoCDMHtlh/BpReQAiMIAgDQQFMUC4w19YkFhxareJ5ICiAHAgFoSJYEaxJTDYuIARGEISBoAAmKBdYDqwZTVAuaAgdgRAYQaCBTVAuUAATlAusj5IBQY0qIwjCQLDCzc5nQaRnJVoQ6YKOYOmoASMIwkzHFtwtiPRyUA6EgoA5KJiDgjmwj1YuYARBGAiYg4qJ2tTDXtgtSLTbm6tFiS4QhIGgACYoFxQEizFhg4bQEQiBEQRhIChA9xggskjSbgv/Fkm6gBAYwUpqtWOCcoECmKBcUBAqQkOwklqFECEwgiAMBAWwuI8LCkJFgOggizG9Smq6c8FAUADBkgqWVLCkgiU13bmAEBgBSypYUsGSDizpwJIOLKlFd1yAdT2wrs+IL6uQgSU1dbmgIFQELKliSRVLqlhSxV6l2KsUetUZY2oZPWNML6gIDaEjEAIjCALU9RlJahVikaRnSS2SdEFHIAQoqUWTLhgIWNJ6IBSEioAlrVjSiiWtWNKKJa1Y0gq96oonPQHr2hTJNmnsRNkFjCAIVtL5MDrjSW2L5IwnvaAhWI2yASEwgtWoGAx0oAAWVXYB5oAwB4Q5gHh4UoiHJ4V4eNIzHv4EzAFjovZVjG0fW3DpAkKYhbNtXQsuXTAQFMBEyHZJLbh0QUVoCDMH3drUpji2s2ohpAsUwKY4tpmqNsW5oCI0hI5ACIxgObAeYlOcCxTAROiCglARGkJHMNfP7sIWNdrnJxdsUaMLGkJHIARGmEWYO6tskaYLFMCmOBcUhIrQEDrCzMHcgGWLNF0gCANBAUxdLiirgdkOj13QEDqCDUA1UKhRm+JcUBAqghWuGmAl2pvRBQPBimA5sDejCwqCVWI3wGbs2Iwdm7FjDjrmoGMObIpzgk1xLsCORNiRCHNAmKgpxVmJNnc5gQ+EgmCFIwP/ao3PyNQLBMH6ARsogMnGBVaJ1j4WmXo6kIbQETAHgjkQzIEMBAWwucsFBQFzMDBRUwqySjSluEABTCnYfmNKcUFFaAizh7ANDJuuXMAIgjBzMD/kYQsx7XNjlC3GdEFDsHS6ASEwgiAMBAUwQbnAckAGFaEhdARCYARBGACmFHPfmS0itc8tYLaI1AWCMBAUwGTjAvus9DCoCA2hIxACIwjCQLDPWmczWkTqgoJQERpCRyBoYBOUCwRhAJiGzI14LqYUZ43a6soFhMAIVjjrfIyVaIuyF1QEK4Ll4Pw89wRCsEq0XsXYjIzNyNiMgjkQzIFgDmweckFHwI4k2JEEcyCYqClFtW5pbzkXdARCsMKdYF+DTxm0s1UXFATrByc0hI5glWjto4wOBGEgQA4sbnVBQagIDaEjEAIjQKJ2aGqfm91sh6YuaAizcHNHmu3Q1AWMIAizh8x3JrZDUy+wqccFBWHmYL5jsAWv9rkxyha8ukAQLJ1uoAAmKBcUhIrQEDqC5YAMGEEQBoICmKBcUBAqgrkWA3NgFX9+4X9CQagIDaEjzCKoNYnJxgWCMBAUwATlgoJQEeyYAWtGE5QLCIERBGEgKDSwCcoFBaEi2ABUA4EatXeZCxTA3mUusMJZ5xtYifbGcgEjWBEsBzYPuUABbB6i1qsUm1GxGRWbUTEHijlQzIHNQy4YCNCRLNB1QUFoCFMp5v4PWwTrgoGgADb1mJt1bHGqdtYNW5zqAkKwfsAGgjAQrBJn+9gxpZcD2+W5oCJgDirmoGIObD3kAkEYCArQMAcNEzWlUKtEU4oLBOHpmuaONFsI7AVTKRYUhDrB6npOPRZ0BELgCZa3bunMnmiBrgsKgqXTDRpCRyAERhCEgWA5sB7CB0JBqAgNoSMQAgOIubbuIubAKl46AiEwgiAMhFmEYk0yZWNBQagIDaEjEAIjzBycI2sKygIF0AOhIFSEBg2sHYEQGMEG4NRRC4E9a9RCYBc0hI5ghasGUIkW6HpBORCsCM2gIjQEq8RuQOiAEQQBc1AwBxVzUAtCRWgIHQFzUDFRO53QhMtCYBdUhIZghSMD+afrGDzu5wmFJyiAycbcXWYLdF1QEawSLR07e/1yQAiMgDnomIOOObCz1y8oCBWhIWAOCBM1pSgGphQXFIRZuLkjzRYCu6AjEMLsIXN3mS0EdsFAUAATlGpd2QSlWk80QbmAECwd66MmKBcMBAUwQbmgIFQEy4H1EBOUCwiBEQRhICiACcoF5tq6i5oDq3gdCOpgga4LCkJFmEWYu75sga4LCIERBGEgKIAJygUzB3PTli3QdUFD6AiEwAjiDWyHmi5QABOUC2wAqgF5jVoI7AJBGAhWuNn5LND1qsTWEDqCFcFy0BhBEKwSuwE2Y8dm7NiMHXPQMQcdc2DzkAsYQRAGAuaAMFGbesw9I7YQWJpbPmwhsAsEYSAogAnKBQXBtMpa2y5wuKAjEAIjCMJAUACxnmiFM0G5oCMQAiMIwkBQABOUCwoC5mBgDgbmYGAOBuZgYA4G5mBgDhRzoJgDO0XVXvLpPDL5hI5ACJYDG0znkcmzK1s87IKCMEtqC8Z2vuqCjjBLOjfEmOEwZWY4TJn5PEz5BMxBwRwUzMF5mPIJDaEjEALmoGCiNkOZm3VskbILGoIVrhsQAiMIwmzGuTvGFil7wZzILCgIlgM2sHTEgBEEwdIZBgpgunNBQagIDaEjWA7UgBEEYSAogL0ZXVAQKsJ0bftmFg9LtoVl8bALCkJFaAgdYRbBdq0sHnaBIAwEBbDpygUFoSJYDqwZTXcuIARGEISBoNDApjsXFISKYC1n/doE5axRE5QLFMAE5QIrnHU+xUq0F5sLGMHSsRzYROYCdbCwWbINJAubPR1Y2OyChtARCIERBGEgQEeygNoFmIOCidoMxTYOLFKWbAvLImUXKIDNUC4oCBWhIUytspVtO2l1ASMIwkBQgPP6hhMKgqXTDAiBEeS6xoDFr2pg8asaWPyqBha/qoHFr2pg8asaWPyqBha/qoHFr2pg6ZBuh3Q7pEuQLkG6BOkSpEuQLkG6BOkSpEuQLkG6DOkypMuQrs1qbNvLomsXzA5r21F2JusC61VkMBAUwHSHrRlNdy54ZsA25WfY7bI72AS2pWEj0fTDdnhm/Gxh6+zzxobL7mA/PZ2FshsbTlvAflbh5VPdfsrLsgvYFewGdgebwGawBWxIVz1dC6olK4CFzpJtJlroLNm+noXOLhgICmBvOrZhZ2GwZBtcFga7QBAGggKYWlwwW8P2tOw81QUNoSMQAiMIwkCwHMz+YNGyCwpCRbAcWI3aC9EFMwe2JWXRsgsEYSAogE1MLigIFaEhdATMwRQUW++ZYbTLHmA/e4eth8wY2mUXsJ+90hbJZwDtsjvYBDaDLWAPsNXtKSiXXcCGdBnSNdWwXTyLjSWbtVpsLNmGmsXGLqgIDcG8mWubX9gejcW5LigIFaEhdARrDRtu9l5zgSAMBAWwacgFBaEiWA5s6NgE5QJCYISZA9tQswjYEyyAlWxrygJYFzCCOWgGA2FuY8wKPc9IPe0CdgXb0ugG5okM5pd8s6EtQvWyC9jzc0HLk30WfNodbPsQ0mwGW8AeYKvb59llZhewK9gN7A42pNsgXRv01p0tIJVsrFlAKtmCuAWkLiAERnh6Y9uNseBStt0YCy5d0BEIgREEYUywpiEFmC8gCwpCRWgIHYEQLAdWOywIA0EBxHJgPUUKguVADBpCRyAERhCEgaAA40AoCJgDEwhrbNOH0yaw7XlltoA9wLZ5+7TPFxSzC9gV7AZ2B5vAZrAF7AH2SleO4wDbanYYzPqbG0tigak894XEAlMXKMAUhwXT29x7EQsy5bn3IhZkumAgKEA9EArCbI25PSEWZLqgIxACIwjCQFCAZjmoBgWhIjQEy4EYEMLcND6sQiyE/bCKtxD2CxpCRyAERhCEgaAA55VRJ2AO7PgRNbuB3cG2j0XNZrAF7Cm61oPOAwSmbecHnHYBu4LdwO5gE9gMtoAN6TKka2GohzWnBZue/duCTQ8rmgWbXjAQFMACxc7+PTwgQM4jTS8QhIGgAHogWEiC9W87APmChtARCIERBGEgWA5ma9nZpgsKQkWwHJBBR7AciAEjCMJAsBzMGrXI0wUFoSI0hI5ACIwgCAMBc2CXPlhB7dKH065gP5OfL1ZiB6leNoE99eX0KWAPsNVt05bTLmBXsBvYHWwCG9JtkK4dwF6tAKYpcytSLOjUruyRct5AdwIjCIApR7VWJw8cFIszXUAIjCAIA8FCF+eotAjUBQWhIjSEjkAIjGA56AYDQQHssOULLAdWo6YlF8x0mrX9eUmMVZUFoV9QERpCRyAERhCEgaAAijk4Y8TMrmA3sC3KzmwCm8G22GCzB9i6bIs1vewCdgW7gd3BJrAZbAHb07V4U7vZRyyq1G72EYsqtSt7xKJKFwjCAKj+WcQD/PsAsdjRBYwgCANBASzUa26piMWOLqgIDaEjEAIjCIKVZxgowHm91AkFwXLQDBqC5YAMCIERBMHqwGrU5honmGJcUBAqQkPoCITACIKAOZhaIlbQKSWXXcCewm7NPnXksjvYU9jN5xSRyxawB9jq9hSQyy5gV7Ab2B1sSFcg3fOTFyuAaQpZVzNNmRsbYnGnCwiBEeyzRmt19Y8XxWJIF3QEQmAEQbCPF21U2lzDwGJIFxSEitAQOgIhWA6qgSAMBAWwucZ89xI7LHWBzdnVgBAYQRAGggLYe4s9eS3UdMF8ts/wILFQ0wUzB/aAtlDTBTMH9hi2UNMFMwf2pLJQ0wtsbmFPazt6dYHlwCrRphcXWA6sQmyCcYHlYBgIguXAit0UYOoPNyv21J8FMwf24LSI1AUzB82KPfVnwcyBPd3sUNYFMwf2SLBY1QvIcmDFpoJgObBi24rKBc8cDCv1lJ/LZrAF7AG2um1rKe2EglARZtr2zLAo1QWEwAiCMBAUwNZSLigIFQFzIJgDWzHp1jK2LmIPHQtZZXtmWMjqgobQEQgByzOwPAPLM7A8iuVRLI9ieRTLo1gexRpVzIFCDuwI17PYFqV6FtuiVM8iWJTqAkYQhIEA5bH41QUFoSI0hI5ACIyA5SkDAXNQMQemRWexTXHOYlcsT8XymOKcYIpzQUHA8jQsT8PyNCxPw/I0LE/D8jQsT8fydKzRjjnomAPTlbPYph5nsQnLQ1geqggNAXsIYQ+x9dgZLvMAQRjP20jOv1K3nwqy7AK2pUEG5okNpqdhtro9z2y/7OlJza5gN7D70xazCWwGW8AeYKvb88z2yy5gV7Ab2JDugHRPTTA4R77l1Ea+zYO6jfwLOgIhTG82IbBAU7Z5kAWaLmgIHYEQGGG2hi2lWqDpAgWwkX9BQagIDaEjWA6KASMIwkCwHMyeYoGmCywHw6AiNISOQAiMIAgDQQFMLS7AHDzVwi7ZkBmouuwO9rN32KxlRqkuW8B+9kqbDc0Q1ct+qsSyC9gV7AZ2B5vAZrAFbEi3Q7qmGjPcRiwUldmaxrSBrUeaNlwwEBTAZhFsrm2uwFY3Nle4QBAGggLYXOGC2RozhkIs4HRBQ+gIhMAIgjAQLAc2dGx+cUFBqAiWA+spNr+4YOZArHZsfnHBzIGcDmYOxOrtOb+wizlkxpsuu4BdwW5gd7AJbAZbwB5ge7oz/nTZs9wznEks/HRBQ+gIhMAIgjAQFMDU6ALLgRhUhIbQEQiBAUw/5q6+WFzpAkJgBEEYCDPXM6BXLK50gf2mGQwEBbD5wbC6tvnBBRXh2co2CZghossmsJ+t3E+3AvYA+9nKNrOYwaHLLmBXsBvYHWwCm8EWsAfYkC5DuvauMayhTSXmV5ti4aE8Iw/EwkMXKICpxAW2MG2ubcSr1Y2N+AsGggLYiL+gINj6dzdoCB2BEBhBEAaCAtgbxQyREIsIXVARGoLlwHqKzSsusBxYjc43CjnO3wwEdbBY0QUFoSI0hI5ACIwgCLN7qNnq9rxk6rKf3dLmSPPg1WU3sGe3HGYT2Ay2gD3AVrfrAXYBu4LdwIZ0K6Rr12nPMAmxYFCxWbKdriozFEHsdNUFHYEQzNscIDPs8wFiUBEaQkcgBEaw1rCa7gNBAehAKAgVoSF0BMsBGTCCIAyEmQPb6LMzVBfMkFIrga2B2lalxXUuGAgKYOugFxSEitAQOgIhYA4EcyCYA8EcDMzBwBwMzMHAHAzMwcAcDMzBsBxY3xuWA+tHQwH0QCgIFaEhdARCYARBwBzMAFF76o2nxiy7gP0MxZsBczIPY112B/vZAewhO8NJly1gD7DV7XKAXcCuYDewO9iQboF0i9Xs7LcWQyq2pTzO/dlh0BEIgRGmN1uYtXhQsbVYiwdd0BEIgREEYbaGrdJaPOgFcxKyoCBUhIbQEQjByqMGgjAQFMBExt5K7FzVBZYDNmgIHYEQGEEQBoICmMhcUBAwB3PCYiI15qrHZRPYz+SP8+8F7AH2M23TeAsnvewCdgW7gd3BJrAZbAF7gA3pDkjX1MaW1i2GVGzN3GJIxZbJLYZ0gQKYplwwvdkyucWDiq2MWzzogoGgDnYi6oKCMFvDXk7sRNQFHYEQGEEQBoICFMtBMSgIFaEhWA7YgBAsB2KgABbocYGlowYVYaZjC4QWc7qAEGY6Nrm2sNMFA0EB5mvLgoJQERpCRyAEzEHDHDTMQcMcdMxBxxx0zEHHHHTMQcccdMxBxxx0zEHHHJj+2IuUnaK6oCI0hI5ACM9H0dmPTFdsKFgA64KK0BDMs3V4hhFjYaoLcMTYvMbWby1MdUFFsBJY3mxeczkgBEbAHAjmQDAHA8fswDFr85oLGgLmYGCiJi62imxhqAsKghVuGDSEjkAI1kFsYJkgXTAQdMGwgFSZrxzDIlJlLmIOO0R1ASHMdOaq7rBY1QUDQQFMdi4oCBXBctAMOgIhMIIgDAQFMEG6wFyTgTlgg4GgAKYnFxSEimBFGAYdgRAYQRAGggKYnlxgObBmND25oCF0BEJgBIEGNj25QAFMTy6wPioGBDVqE5ULBGEgTNdsnY+xEk02LugIMx22HNiL0gWCMNNh61WMzSjYjILNKJgDwRwI5sAE5QJGwI4k2JEEczAwUVOKanVgb0AXMIIgWOGsK5tsVCu2VoSGMNOZi9jDQlkXMIJVorWPycblQB0slHVBQagIDaEjEAIjCALkwKJXF0zX89PFYTGqCwjBCjcMBGEgKIApxQzsHGeQ6gUVoSFYWNFhYHFLllETlAsUwARlrpwPC0pdUBEaQkcgBEawHDSDgaAAJigXFISK0BA6grme3aXY/EKs4k0cLmgIHYEQGMGKYE1isnGBAtg85IKCUBEaQkewHFgzntFnJwjCQFCAMwLthAINfMagndAQOoL1UTFQqFGbelxQECrCdD2s8w2sRJONCwaCxe5ZDmweckFBmOkM61WKzajYjIrNqJgDxRwo5sAExcACWxcUhIrQEAjBFxQfoAAmGxcUBCtcM/AFxWFBrQsEYaYz12yGHZV6gcnGBVaJZFDBQW0IHQFzUDEHFXNwLsSeoAAmKBcUBMxBw0RNKYZViCnFBQpgSjH3MIZFuC6oCA1hpjP3MIZFuC5gBEGYOZgbAMPiWGXuewyLY13QECyUtBoQAiMIwkBQABOUCywH1kPOUNYTGkJHIARGEIQBYEqh1l1sgqFW8SYOFwjCQFAAk40LrAjWJCYbFzSEjkAIjCAIA8FyYM1ognJBQagIDaEjEDSwCcoFgjAcLOZVZlDgsMjWs0YtsnUBITDCDDac+zjD4lfPSrT41QUVoc3fWA7mPGQBIcyYxvlZ6LDI1uVgIEAzWmTrAsxBxRyYoFzQEQiBETAHFRM9P4ixXLeG0BEIwQrXDHzjcZyBqRcUhDp/0w0aQkewSrT26YwOBGEgYA4Ic0CYAwsSuaAhdARCwBwQJjqVYtiDxeJOFzQEK9wwIARGEIQZ9zp3nYbFnV4wpx4LCsLMQbGuPAVlFGusKSgLBGGmU6w8U1AumIKyoCBUhIbQESwH1kMGIwjCQFAAPRAKQkUw19Zd1BzMirdQ0wUFoSI0hI5gRRgGjCAIA0EByoFQECqC5UANOgIhMIIgDAT1BrYg1AUFoSJYHxUD8Rq1iNQFCtAOhOnaXlYt7vSqxEYIjDDTsZc7iztdoABTUMYM1h8Wd3o56NiMHZuxYw465qBjDrogDATsSIQdiTAHhImegWbdQBAGggKwFa4ZWPiV1agFol5ACLMI9XQgCAPBKtF+AyFoo58haCdUBMyBYA4EcyCMIAgDQQEG5mBgoqYU1SrRlOICQbDC2ZAxpTjBlOKCgjB7SLWBMaceCzoCIcwcNOvKJihzU2TYIaoLCsJMZ655D4ttXdARCIERBGEgWA5mD7HY1gUFoSI0hI5ACAxgSjGX+oeFpo654zMsNHUBITCCIAwEK8JsEgtNXVAQKkJD6AiEwAiWAzUYCApggnJBQagIDRrYBOUCQmAE66NTR+2o1KtGqSI0hI4wXc8tsGHxqVcl2ucvJ5hsXDDT6ZYDm4dc0BBmOt16FWMzMjYjYzMy5oAxB4I5sHnIBRUBO5JgRxLMgWCiphS2PXAGq15QERqCFc66sgWo0QkDQQFMNuZu0rAzUBdUBKtEax/t6IAQGAFzoJgDhRzY6agLCkJFaAgdgRFm+8zdpGFxpwsKghVuGDSEjkAIs4fYBhLb1OOCgaAAJii2z2SxqsN2ESxWdQEhzHSsTS1WdcFAUAATlAsKQkWwHFhVmaBcQAiMIAgDQQFMUC4w12RgDqziTRwuUACbYFxQECqCFcGaxGTjAkJgBEEYCApggnKB5cCa0QTlgobQEQiBEQQa2ATlAgUwQbnA+qgYENSovctcIAgDYbq2fSaLeL0q0d5YLugIMx3bTbKI1wWCMNOxfSaLeL0cKDajYjMq5kAxB4o5sHnIBYyAHUmxIynkwIJcF0zXtmdkoazDZp0WyrpAEAaCApigXFAQ7IMtS/T8oO6EjkAIjCAIA0EB7OMZe5rZGajDZpB2BuoCQmAEK+npbSAogAnKBQWhIjQEK2k1IARGEISBoADnp3YnFISKQFAhHUtqunPBQFAAwpISlpSwpIQlNd25gBAYAUtKWFLCkjKWlLGkjCXlhoB1zVjX5+e6ViGMJTV1uaAgVAQsqWBJBUsqWFLBXiXYqwR71cCSDizpwJIOLOnAkg4s6cBeNbCuB9b1+TmfVYhiSRXHj+L4URw/iiVVLKliSRVKOo4DoSBUBCjpODoCITCCIAwE6FWjHAgF4ZmOncww7ATWBYwgCM907GbsYees2mEMw2JkFzSEPn9jJbWr8i5gBJkgBgMdKIAdd3IB5qBhDhrm4LwD/ARCYARBwBx0TNQu1bT3rHFe+30CIczC2evLOG/pPWEgKMB5S28xKAgVoSHMHJxtasej2dzfwmIXKIBdlWeTeguLXVARGkJHIARGsBxYDznvAD9BAc47wE8oCBWhIXQEc23d5bzc2yr+vNz7hIbQEQiBEWYRbLY+zit7T1AAuyrvgoJQERpCR5g5sGmexdMuEISBoA4WT7ugeAPreTv4CQ2hI9gAVAP1GrVA2QUFoSJY4aoBVKLaVXkXDAQrguXgvNz7hIJgldgNoBm1dgRCwBxUzEHFHJx3gBucd4CfUBAqAuagYaLnwUhWiefBSAbnwUgnFAQrHBlMRTIJ0PP4oxMEwfoBGyjAeTHvCVaJ1j7n8Ufm4Dz+6ISOgDkgzAFhDs7jj05QADtK7YKCgDlgTNSUwt6z9Lz2+wQFOG/ptd+ct/SeUBEawuwh9pKi5y29JzCCIMwc2LuMBbravcfDAl0XNARLx/qoCcoFjCAIA0EBzjvAT7AcWA857wA/oSF0BEJgBEEYCx4SYq7FwBwMA0YQhIGgAOfl3ifMIsyoMD3OK3tPaAgdgRAYQRAGwszBDCdSC3RdUBAqQkPoCLQaWI/zdvATBGEAmIbMl3y1ENirRu2W3gsIgRGscHVCx0q0u3gvqAhWBMvBebn3CYRgldgNsBk7NmPHZiTMAWEOCHNw3gF+QkfAjkTYkQhzQJjoeeiidcvz0MUTOgIhWOFOmIo0t0j0OI9WPKEgWD84oSF0BKtEax87wPVyIAgDAXMwMAcDc3DeAX5CQ+gIhIA5GJioKYVYJZ7Xfp/QEGbhhg2Z85beExhBEGYPGTYwzlt6J5Tzlt4TCsLMwYyZUwt0tXuP1QJdFwiCpdMNFMAE5YKCUBEaQkewHJABIwjCQFCA8w7wEwpCRTDXYmAOZsWX83LvEwpCRWgIHWEWYUaFaTmv7D1BEAaCApigXFAQKsLMgVozmqBcQAiMIAgDQaGBz9vBTygIFcEGoBoI1Ki9y1ygAPYuc4EVzjofYyXaG8sFjGBFsBycl3ufoAA2D1HrVYLNKNiMgs0omAPBHAjm4LwD/ISBgB1pYEcamIOBiZ7HQ1srnMdDnzAQFOC89tu68nkItFXieQj0CYRg/YANBGEgWCXO9qnnIdDVoCBUhIbQEQiBEQRhIChAwRwUTNSUYsbzaT2v/T5BEJ6u7cprrectvQbnLb0nFIQ6oRg0hI5ACDzB8mZXzcwYM7VA1wUFwdLpBg2hIxACIwjCQLAczB5SzzvATygIFaEhdARCYIDz2m/rLufl3lbx5+XeJxACIwjCQJhFKNYk55W9JxSEitAQOgIhMMLMgY0sC3RdoAB238wFBaEiNGjg83bwEwiBEWwATh21ENirRu3ymQsaQkewwlnnG1iJdo/ECXaRxAVWBMvBebn3CQ3BKtF6lWIzKjajYjMq5kAhBxb1uqAgVISG0BEIARJt5wUTzaAgVISGYKvHYjBXaK2kDa6e0AZXT6gFug6bBFug64KKYKvUatDRASEwAuagYg4q5uC8euKEglARGgLmoGGith9s72YWArugIMzC2SvPGQJ7QUcghLkEby82FgK7YCAogG3s2PuPBboOe1+4TmA9gRAsHTYQhIGgALZtfEFBqAiWA+shtm18ASEwgiAMBAWwjZ0LzLV1F9uXsUn9Geh6gQJYoOsFBaEizCLYDP8MdL2AEBhBEAaCAti28QWWA2tG27G5oCF0BEJgBIEGth2bC9ThjJS9wFquGJDX6BkCe4EgDAQr3Ox8Z6CrVeIZ6HpBR7AiWA4s2uQCQbBKZANoxjPQ9YKCgDmomIOKObBt4wsYQRAGAuagYaKmFDarOY9evYARBMFcz658HrBqM6HzgNULGoIVYRgQAiNYEax9LHL+cqAAFjl/AeaAMAeEOYBLsrTDJVna4ZIs7XBJlp7xsCcwJmpKYe9mFgK7gBBm4fT8jSAMBAUwpbAXGwuBXVARGoLlwLqyCYq9L1ig6wIFMEGxF4FugnJBRWgIHYEQGMFyYD3EBOUCBTBBuaAgVISG0BHM9ewuFuiqNqm3QNcFDaEjEAIjyIRqMBAUYM5DFhSEitAQOoLloBkwgiAMBAWoB0LxBrZDXBc0hI5gLVcMFGrUAkwuKAgVwQrXDbASmyAMBCuC5aAfCAXBKpENsBk7NmPHZuyYg4456JiDrgB0IGBHIuxIhDkgTJTMtRiY6ylpFgK7oCBUhIbQEQhhTsPPlrN3mQsGggLYu8wFBaEiNISZTrNE7dbuCwaCAtitmhcUhIrQEDoCIWAOBuZgYA4G5kAxB4o5UMyBYg4Uc6CYg/NWTet89spzwUBQB4uU1fmlk1o8rF0ZqhYPu4AQZoe191M7rnXBQJi9yl48LWz2cmCXe19QETAHBXNQMAd2q+8FgjAQFKBiDiomOmcoau+nFim7QBCscN1AAabuLCgIc8jMb3nUImUXdARCsBxY+5juFMuo6c4FBcHSGQYNoSMQAiMIwkCwHFgPMd25oCBUhIbQEQiBAUx3qnUXU5dqFW/qcgEhMIIgDIRZhGpNIgdCQagIDaEjEAIjWA6sGWUgKMA4EApCRWjQwKMjEAIjWMvNh6tFyl41qhWhIXQEK5x1PsVKVHWwE2AXWDpiUBEagqUzDAgdMIIgDATMQcEc2ETmgorQEDoC5qBgouf9392gIFSEhmCu1WAqkr32yXnL9wkKYLIxP4hSi4ddUBFmEeaHMCrnLd+nA0JgBMxBwxw0zIEtvV5QECpCQ8AcdEzUlKJZJZpSXFAQrHBWb6YUF3QEQpg9pFk685VnwUBQABOUGRCoFuiqzXqiCcoFhGDpWB81QblgICiACcoFBaEiWA6sh5igXEAIjCAIA0EBTFAumK67dZc5D9FuFW/icIECzHnIgoJQEWYRujWJycYFhMAIgjAQ1MFiWxdYDsigIjSEjkAIjCDewBbbukABTFAusJZrBuQ1auGsCwRhIFjhZuezcNazEi2cdUFHsHQsBzYPuUAQLJ1hAM1o4awLCgLmoGEOGubA5iEXMIIgDATMQcdEbeoxv1pSC2fVGayoFs66QBAGggKYoFxQEKZW2cq2hbMu6AiEwAiCMBAUYL7/FIvSsXDWBR2BEKyk1immbBS2Tj5lY0FBmI1FVokmGxd0BKtRS2fKxnIgCAMBczAwBwNzMCpCQ+gIhIA5GJioCQqdUBEaghXOhowJygWMIAjWXWxgmKAYWDjrgoJgORgGlo4aMIIgzHRmQKBabOsFJhsXFISK0BA6wszBjBtUi3pdIAgDQQFsQeWCglARzHUzMAez4i1odUFBqAgNoSNYEdiAEQRhICiAvdhcUBAqguXAmtHU5QJCYARBGAgKDXyqywkFoSJYHyUDgRq1ecgFCmDzkAuscNb5GCvR5iEXMIKlYzmwecgFCmDzENsQs9jWy4FgMwo2o2AOBHMgmAObh1wwELAjDexIA3MwMFF7Y7GNEAtnXTAQFMBmKLZzZ+GsCypCQ3gW7jj7zhSUBYwgCANBL6iHHe+6oCDMSnzuED6BEBhBEKyk3UABTFAuKAiPkpb5Wv6EhtARCIERBGEgKIDJxnNS/4SG0BEIgREEwNRFrKpMQ567ik8wb5aoacgFjGDe1GAgzHp77gw9wDTkgoIwy/OMKHxCQ+gIhMAIgjAQLAd1gmnIBQWhIjSEjjBb7jhhQL2ZoJzAWKMmKMN6la3QXtAQOgIhWEmti5nUXDAQFMCkZlgOTGouqAiWA2tGk5oLCMFyYG1qUnPBQLAcWK8yqVFrYJMatSaxNRS1SjTduaAjzHTU6sB05wIFMN25wNKxOrDpytmVbbpyASMIgjoUu8lCyaAhdASawAaMIAgDQQHsRosLCkJFaAizCGcObB5ywUBQAJuHnA5sHnJBRWgIVtJiQAiMIAgDQQHagVAQKsJMx+RphsA6WEmtfUxqLlAAk5oLrKTDoCI0hI5ACIwwS2pje4bAOigAHQgFoSI0hI5ACIxgJZ1jzuJhFxSEitCe114eh0FHIARGsJI2g4GgAHIgFISK0BA6gsxErentzs8LFMBu/TTtLXbt5wUVoSF0BEKYNcrWq4YgDAQF0AOhIFg6Vh618nSDgaAO1e7PYTEoCBWhIXQEQmAEQRgIClAwBwVzUDAHBXNQMAcFc1AwBwVzUK3lyKAgVISGYDXKBoTACIIwEBSgHQgFwXJgGW0NoSMQguVgGAjCQFCAfkDT94JQERpCRyAERhAE6G/zTNkHqEFFaAgznXIYzHRKMWAEQRgIs6Rljqxq9wtfUBAqwsxBsYyaIhVrElOkCxhBEAaCAti9xBcUhIrQEDAHz8mPWHU8pz6XKW4+0hYr+1OjTvOpUJf5SJWtdp/qdJnNze4mucluipvDTV3mU40u01NTT02tHq3Pmg6V8//M2qqzLDOm1qEgVITprVaD6a02AwUoB0JBqAgNYdZ9JQNCYARBGAgKYGpzQUGwHBSDhtARCMFywAaCYDkYBjMHzarK1OaCglARGkJHIARGEISBgDl4qo29sswo3Musbj7StteLGX97meTmI1V7hZqRt5c53NRlPuc6l1ncrG42N7ub5KanRp7aeVP5CVZbljvTi9YNCIERBMBUoVnj2dhvYtARCIERBGEgWN3PwdVsnnJBQagIDaEjEAIjWA6sN4+BoAB6IMwcdOsX89LhBTMH3WrUZjAXEAIjCMJAUIdumnKB5YANKkJD6AiEwAiCMBCePdLMpwpdZnGzutnc7G6a79mo3XSkD4OCYLOjbtAQOgIhMIIgDAQFsLelC6yu1GDWFR0GhMAIgjAQFMDmJhfMklIxqAgNoSNYDqoBIwjCQFAAOhAKguXAepLNWsgqxGYtFxACIwjCQFBoU8bWZmxtm7Vc0BA6AiEwggCgCnWbm1xQERqClZQMQIU6qlA/VcjAVIjMganQBRXBavT8TUcHhMAImIOBORiYg1OFTigIFaEhYA4UEzV5oVmJZPJyQUGYrvkwaAgdgRBmOlwMBGEgKIBNc7gaWDrNoCMQgqXTDQRhICiAidAFBaEiWA7IoCMQAiMIwkBQAJvMXGCuxcAcWMWbulygAKYuFxSEijCLYPNrMnW5gBAYQRAGggKYulwwc2DTdDJ1uaAhdARCYASBBjZ1uUABTF0usAGoBgQ1arJxgSAMBCucdT7BSjTZuKAjWBEsBzatuUAQrBKtVwk248BmHNiMA3MwMAcDc2CCcgEjYEca2JEG5kAxUVMKex0hJQRGEAQr3OzKfMC7CR8VoSFYP2ADQmAEq0QxGOgA3o4Y344Y344Y344Y3474fDs6gRAYQRAwBxUTNaWwjRs2pbiAEKZr255hU4oLBoICmFLY3J3tteeCitAQZg7spYRNUOwFhE1QLlAAExTb6GATlAsqQkPoCITACJYD6yEmKBcogAnKBQWhIjSEjmCurbvYbMO2WtjE4YKG0BEIgRFmEWzfhU02LlAAm4dcUBAqQkPoCDMHtmDPJigXCMJAUAATlAsKNLAJygUNoSPYAFQDhRq1qccFBaEiWOGs8ylWosnGBQPBijBzIDYPuaAgWCV2A2hGOToCITCCIAwEBTBBuaAgVATMQcFETSlsg0hs6mE7P2KycUFBqAiEYN7EQAFMHGwPRUwCbGtiBr8+lo0OAwWYA31BmVAMKkJD6JDOHOjr/zCCIAyE+QZm71liuzgXFISKgHVg84Oz2DY/uABrh82bdRe28lQDK8/5fzoCITCCIAwEBRCrUeuWUhAqguXAOoVYDqxwYjmwIojlwOpa5jttPx0MBAUYs95sDXge+fpwYJU4x3axVeh55KsDIwjCQFCAKQELZkltsXoGzDo0BMuB5U0tB1ZvajmwIqjlwGpHZ0mvP1OHYfs7F8xVAutiw3ZxLiAES0cMBMFKqgYKUA6EWVJbsp0xsg4NYZbUpkUzetaBEQRhIMwc2LrqmEqxoCBUhIbQEQiBESyd2fmG7RHbKJmRsI//Y7XTGEEQLNfDQAFMXarVm6nLBRVh5trWVWfArAMhMIIgDAQFmNOIYuubM2DWoSI0hI5ACAy1Q5aOAR8IBaEiWDrWYU13LiAERniOejFJm+e/OijA3CNeUBAqQkPoCFaj3WAgKMA4EKyk1pFGRWgIHeE5GsWWA2fArIMgDAQFmHvECwpCRbAaPYERBMFKanWg6jCjZx2spMOgIlhJ1aAjEMLMga0Lq+nOBQNBAUx3LigIFWHmoBeDjkAIjCAIA2HWtb36zujZIvZSPM+MLWKvsfPMWAdCYARBGAgKMNdhxZZAZvitQ0VoCDMH9rI6w28dGEEQBoIC9AOhIFSEmY6t5qkpUreqMkW6YCAogCnSBQWhIlibWu2YIl1ACIwwS2rLdDMW10EB+EAoCBWhIXQEQrCSdgMFsJnQBVZSazmbCV3QEKykbEAIVlKreNOqCwaC5cDyZlp1QUGoCA2hIxCC5cCGs82RLhgICmBzpAsKgvUqa23FXqXYqxR7lWKvUu9V5TgOhIJQEbxXlePoCITACN6rygzZdVCAciAUhIrQEDrC2av+40H/9J/+1z/Zs//5P22YTUuWNZalZj1+156/m/OmWunBfXKf3B9M02+Z/CjcnIQ8rMf/Yf/L8vxLmczz/z+DyWVZY1ozIHtaszHMevxu+O/s4+VpPfOm8H+eeXvW1//6pzmVq/P9qy6rLasvi5bFy5JljWXpZc23QbNWGm2l0VYabaXRVhptpdFWGm2l0SyNRxX0Y1llWXVZlsajgnpfFi2LlyXLGsvSy6JjWWVZdVkrDVpp0EqDVhq00qCVBq002P7u0SXY/u2hWVKufxNL7SFQYp4fw1SsIR+1MaXIrLEsvaypQGaVZdVltWVZ7h/deUrOPEVyyLLGsvSy9FhWWZZ5fpRI27L6smhZlvtH2VSWNZallzUPpb3M4mZ1s7nZr6qb4bqXyW6Km8PNs8afQ6L87yHxv4fE/x4SOCTmo9Cm8aTPf2j+Dzr/oa+HXrHd1mnN5/2y6rLasvqyaFm8LFnWWJZeVltptJVGszTkHEhm9WXRsnhZsqyxLL0sWzuYVlnWSsOWDJ5zclsvmBYti5clyxrL0suyufi0yrLqslYatNKglQatNMjS4HMgmaWXZSsD0yrLqstqy+rLomXxslYavNLglYasNGz+/IxOtCnycw/V5sfPFzqbHD8tmxlPqyxr/va5MWmT2+cuns1sp6WXZXPaaZVl1WXNEj236Wytb1q0LF6WLGssSy/LhtlpWiprmJ1mc7O7aSmNa5id5rhKZmPLTHu7NrO4aUk8Pye0UTYPdrB3ZzPFzel3nspnA3CaNgLNnH7nOe511VCxQWhmd9NTq55a9dTqcHM1RmmHm8VNT615Ejbi5mGQNuTM1GXaoJunK9qoM7O62dycfufZiTbyzGQ3xU1L7TkjtpE2Tx2yoWZmc9P8PtvNRpuZ7Ka4OdzUZdqQM9NSe7amDTozm5vdTXKT3RQ3xzLtDXaev2ZvqfMcQHtHNVPcHG7qMm0EmjkzOQ8CtPdSM5ub3U1yk90UN4ebltr8UPdws7hZ3WxudjdpNYuNXDPFzXGZ1UbsGdt61U61sWkmucluWtZ5vgNeVVJtQJpZ3TS/z9RsmctMctP8zhdK8Z8NN1cD2CcTp+mpVU/NhqmZ3U1yk9301OqZxPPZTB++yJb5PmpJzQBAXpYsayxLL8vEYFqzSM8wPJOCac0CPYPcTBOmRcuyNNaDmeQ/7MX3nJIXuqbkZrVl9WWZs+M/Hr/81//6n//53//Lf/23//vf//u//MvTyfUP/+Of/tP/+b/+6b/983//l3/793/6T//2P//1X/+Pf/r//vlf/+f8o//x3/753+Z///2f//vj/z58/su//T+P/z4c/r//5V//5Wn9x//hvz5e/9QO35+/fh7CvRw8ZD/rojW5MtB6KeCifXFRX7uYzx/LxNGWg/YtD+21g/GcEU4Hj62Vlw76awfzO9TpQPUzB3zl4LmY9NJDVI80LheN52LIP65HCVqzPoNVrSJb85p8rOJ/cTGi1rz6Q1NyBzzSxeDqxWjyshgl8EHcri71ML0q+JuLEnSpeQy9NQhRfeki6JUivDpV93IQpz3MW+TNA5fXHoJuVWdUiLXoY662fPT61QUFmeBrcD22dF5ngoNMiFx1WR873d65P20Ped0eUa+Q5+KA9Qo59KULjeTu+eQ95a6XVy7qcbdNa7ndprXebdMaKGZ5hm4txWL2bDyFI12UufF3FoXKy6IE3bOOq1Hb8dJBLBbKq1uU9rJN5bZ4Ry7aPGLqFE4NnoIajRGua4xAZdTvD8KoNsbVIHy4fj+63C96xlDvGQqt+r1ntKCH6rwWyJ6oBDlp/K0sLdKdYw0UqaAZ6Vbpx/LQH5OMl63SKJqc0FKuUeGZWL4+E1ugoI+3R1l12gs8jx7vwV+9yIb+Me72j7AsvR3HKkuj9rIsPZp4zsWUUzmGQlm+jvxe7vaPqJfmVTCuEW5LQDpDaX7USPSoZ7p0rD5yBTUiX30EfdU+JTnVlLFW6auPqDTz4omzv4/22kfQU0e9etno5bWHqJ+W9ayvQR4iNa19NUplGHHjF90jK4VU7ksh1btdPWzWeXqyFUWDRqEeValLYQ26F9HdhiW+3bDhOJmxdzZOHq8Hr7MRvinJ1clb06CPRvmofb1u1fE6HxwoadeVDzqO140SK9hY4vOYqcMc/7uCcdBJea4p2cOl1dfPOA6e+b2sh0svZXzmQ/jqpn10ee0jaJmHi6tlRBrOCb8+KTmoVentetuQPo7XPqJ5JfkExp9Oj+Wzrx5G9KTVa8TViv3ju49AS6leFUrt+MyDrnlHodceot7VVia4l9ezDqnRu8Iab8T82kc4Vki6T8NG0M8lktLHGvXVOR62HC8kXejuQyEcKWM9mrrC7OdHSeT+SJFxf6SI3h0p47g/Uka5O1JCD6mREvZQ7j6FY+qv+/nod98Uot5FZU056JnyR6NN5vfmVhY5grn1iBZGm68w47pm/fYeOMbd0Rbmopfr2faYwhwvcxG9jdYZZ3m+N0l5+TaqJVqi1Wu0NYH18vJttEU+Hi+B14ShPyeyL320+++zeruXxjU6fNRjL/3+ohD5qM19RK0idzdBdNzdBVG9uw0S18RYo4Rrf1kT8yu3YLlkrNlox2Ub+eakRvPzunp5G/KZk36sGukWWvTKSb/fz+eHbn/Y0XktXVf+UiG/6Oi8WqZK56B5x92ePj/Hu9fVS7RuvKGvz1h0K4gGylGiPaJ6iC+hN1xepG9OWjQHW4URCw7/wMngWtbWBpXACW3o69GGU66vxxLSYdpQgtFfokd+K923izhwouH68RKzR+OAk/5tI/G4vdQZddZ5v83ZWYU/G/26GuZ54NzrDh/uL+RGf+23R3+07XR/9NthaOfaDbz3/KyM6KFfff25NRxz/Asn876Xs0rHETiJuimNVSWPJ115/RJWov0n3+fATtYa/SYn80q7KydVg5xEi7fzMPyzVo7yOi/hhnFZlfJtcvht8Lbo+c/SlgSwwNr+t/YJxx4dHqlDPchJuLa/pgDPi52Cit3wwl/ahjf++WHovVf+0je885d++6U/dpF66w9l4PHH6xnxNRDre7zJjrlqvz1Xjbv78JXxAzYKfnT3aBvqMeFdC9IdYnhUf+FDVogDiwQ+on46T+Q+C9MJohy+VSpFyjrnXSatFdZ0fjop0dhdQ+YxZyyvh120GUW09m6J0MkvZlbsL91yBDOrcDuK1PddSWHe+63DUziJb9DRapCTQFd7XbtavSo4ad9zEj/G1/g9YMr6Pb4p3JRaEtCPINiLgs76WDBcHZ6P4+WWZ4k2pcoxr8i8dk5hAH/f9YwHTl+rTI0wCO+7GkUbB+k+H65l5vp8PPaSz81wXyr73Iw2ppLPzWhfKv3cjLamks/N0EXuuRn3j2S7SNnQLtH2VLJdpG1ol2hzKtkuoYtcu4QvWGVNVp/fj76eAkS7U5XWC1YNB3+4PZXuIbqhh4zjdg8ZZUMPGfV2DwldbJjx9rLWEkiDF98RTVb7ClYigvr48ewefP/ZPeT2szvao0o/u4f+/bN7fl51rY8E89Vom+kx2ekwxZPIzQ6Jj7ar0gM42q9KDmClDQNY+fYADl1skPi6qrR9mTd/l3gN12iqh5Jqf9ku8wyCuz2kHhsmAfW4PQmYBwzc7SH1uD0JiF3kekj0+i197XcLgbDq92xIuBN4dTJ4+f4WaFyjHSvyBTwS7Kd9fHMSrgL0tWB8QMDPdydxfRT1l5miL+sj/BZHVhxCwSWN5xccX51Ej++1pEEQyvDTRbv/dlejL6Syb3c12rXKvd29yUdSQIpsEJBobSUpIPGyd1JAoj2rpICELlICEney5Npbjfassmtvte7oqfV+T607emrd0VPr/Z5ad/TUdr+ntg09Nfqob23wDJjn/lDU8Iup5NtubTv6R9uwTlXb7XWq2mRH/xj3+8e43z+ixzavbDxWK8rrHhLtM9l9k6ccauSkbuhmvW3oZtF2VbqbhV9h5LpZ9HVNuptFc7tkNwtdbHhgJt/ba7RZlX9vrzuWzGu0XZXuI9Ru95FouyrdR8LPp3J9JHSx4a2M1xc2IvX1W0i0VQUfTXYe7fXsn8JPpgt8eeml0a8xHjXaq3pGhP+jffOq/ZuTaFW1jXVGQse4pv49J9EnLjquF7OH+fprw3gasY44eJ4w+1rguW9YUtnxCVXd8Q1Vvf8RVd3xFVW9/xlVvf8dVTwFKB7+X/HzuO89JNqqSvcQ2TEFkB1TALk/BZAdUwC5PwWQ+1OAWMz6inrrcFjLDzEbx4bX3fBjqNzrbhwSIW3tq8CeyI+JyGj3nzPRB1Xp50y0W5V+zkS7VennzNixYj42hAHWcTsMsOqGMMCqt8MAYxfJwRse6eZbkQw95Ec30x1rALpjDUDvrwHojjUAvb8GoPfXAOLhn1PmdmwIAmzH7SDAN/nIdbJ2bHj8t+P2439+8ni3k7Xj9uM/drFBQfzN7DEXlZcK0sJjueat61aWAzeZ+BeviFrXYRAqrzeIWnwI39W2g+T1gImWRGjFRBNOddv36tjRTcv9blp2dNNyv5uW+900nE8lH3StbpjFtLph37/V2/v+rW7Y92/19r5/7CLXuNHQp2N9vfPIxvF66FfZ0bhjR+PenqK2tmGK2trtKWrsYsPIzT5gom2qLQ8Y/4avH/R6c7hFu1TJB0y0S5V8wOz4oKrd/6Cq7figqt3/oKrd/6Aq7h1+fkmvXV/3jr7hTar1DW9SrfP9xpUdjTvuN+79qP/w1Nh14BkxvzwJODp3rdH65qcP/ITp+2ku0UP/WN/cPy/RBCf0Cycz+u3asauBk/DDv9SB2S3aWcqdmB26yB2v3KLvqJLnK7do6OcOWG7R1lT21Ox8q0jQKlH3KN03dINzHRqHwSmZT+5b9AlV8pP70EXuoOa4OmjtXTYOqyPalpK1y/Ywoa9/+2ggdjLWUfkPHxo4GffHbbSplBy3kYvkuJX756I3uX0wegu/oMqO23SrBOM27B664pZFYWb5o3uEu1K5E+9btKOUbduxoW31dtuO8LPU9HnPsZv0Eeljxxnp4/Yh6W90iJeYDf1QzEZRFxF5/Ql0Cz+jou5n5cCSzvf7R2KB1zXRfez9BXOqsUFWx31ZHfdlVTfIqt6XVd0hq2ODrMbdYx098NgP5tfdQ/l+94i2pZLdQ+8rc/j1VK579OjjqVz36EfZ0D3SrfJx9/DX5OMYn72RPYq6jg08+us+1sMT/3K3IPXjfj/tx+1+GrrI9dN+bOin5X4/LRv6ab5VJGgV+tMFDFkfPvdHqV4uYPRoS4rrOlaOe3v92O/RppQWmE0dL5/6b+pDvD7Gh3Wau2Gqx1dMHb5DX/pLH9GmVHbUhntSuVEbuUiO2nBHKjlqw9P+cqM2vGQqO2rTrRKM2rB3+Mm2FVdhf+WD1pphpdZe944wjHQdj0nK+qGPtYsT+thwIVtvt+/pC10ke3q7f1Nfb7ev6uvRZhQf/eocjDtaP3p6+NFU5k62MBuk6xhoPvAsyR/Z0B2v2T3akcq+Zvf7d03FPSR3WV6PPpra0DKyVkAIP/7+2TJpJ/qhk7FOb3mYHztZt88+DzD90Ikea0tKa/+wt5a+IuKednvdW+NOn12ieuNG1sTsYXP52I36WTAD3od+NwRl7fmpwJVNP4dg2ol+6mSV52HSZ04emw/QRscI3MSV66HppRylf9pGA87rGbjH/Es36xDDp5ug/+af6K/fWjkMDPXNlWBFInwbSF0K2sPLcbIv8aETvyzxMQMZgZPcGZVVelCaDSsBfH8lgO+vBPCGlQC5vxIgO1YCeMNKQNw72Kcmo3/ko5VVmFZUPvVx3PbRfILTYCngdz5W4z7cvfYh4/77Uewj934UlqWveP/Wedz38WEfa3VF3LQ+Xrdt+A0VTGweS0/B4I8yIivq5rHv+VoKwxP/ko0b+9jQuFK8LMHADXdEjnWdQikQC/XLSvVP/kfQy6IvqHKnF/b4sD/1a8uOYBoe5aOvtcSOF/z9qI7wme33RzbcD/1x+2y/vw6odP+ZrXz7ma18+5mt9/f/u97e/6fj2PDMTrdKoKfa768Dhj5y64AUn9CXk7G4p6fW8Oi43UtDF7leSsf9XkrH/V5atoSXUNlx73S5ffF0XKu5dS+KPp9KrXvFlZpennnXNsm35Ddusq/+b9xkF4veuMkuFr1zk1wsivttcrHoF070Uye5xaLQSX6x6F3Hy67y5MX65VSP4s+qMssz4Qyrd5+l4V3O3+9fr7fvAKR2+w7AN0Xxqz96sMAT5yMX1xxnRP2M2nLUICP9fp3evlktdrGhOh5PtbUCWHpUHeMvezr19S5BjxnW62z08J1mvVvBYVv1+PYQvr9/FediPSPwzepnLqI+Wta0t1c8Jj/vYj50XQfp+MyJkj/FFcNnfuVkHaNSCoYS/qZS16Ska9S0409dPJ/c/owa5XVRxo6WGTtaZtxvmXjkMrwa4b3j30du+P1O8vJPiq+oSo3dMB+6PhEr+mUvo/+mMGtTvyi+3PxwcvuSaqLbt1THLnJPGIrPc8zdDUnRd1WFZe09P2zYBudfOUldMEnhmX/JCyYpWknMXjBJ4fcIyU9miTccUE18+4Bq4g0HVJPcPqA6dpH6ZDbuIck7GSn6vCp5nyJFR/5lLw4gCY+nzJ2CRNHnVblTkOLCJA+op2ivKXtAPYU3VGXHXXgsXHbcRcf+JcfdqBvGXbRllRx3oYvcuBPa0S68o13kfruMHe2i99tF/1QPsxfUkW44S510w0GqpBuOqCK9fUQV6YYjqkhvH1EVu0iO3LCH5M5S52PLWeq847Q9Pjacpc7H7bPU+dhwljoft89Sj11sUJHkHWgc77HkjmPmY8Pzn8uG5z+X289/Lhue/1xuP/9jF0kVidQ9d+cXR59YZe/84vDQvtSdXxxeTpWcunPR+1N3Du+WSk3d3+QjOWDqDkmt9yW17pDUel9S621JjTtZ8pWK64ZXKq47emq731Prjp7advTUdr+nth09td3vqW1DT43CoVN3fnG0R5V9geC2o3/0HY/+fv/R33c8+vv9R39v9/tH9NhO3vnF4cF/yTu/uG+4SJ372NHNNlykznT7InWmDRepM92+SD12seGBmX1PjbapfvGeShtW/5lkRx8Z9/vIhtV/5tur/7GLDW8huTu/OIxRSd75xRyeiZi6i4XDb2aSd7FwtE+VvYuFo32q7F0s8TQid+cX84Zr1Fk2HKfOsuE4dZbbx6mzbDhOneX2ceqxi5zAh1OA5J1fLLKjh+yYAsiOKcC4PwUYO6YA4/4UYNyfAsRilrtZhseGPVUet/dUw+dM9s4vjg+byz1nhm54zoSXU2WfM9HHVennzNiwE8nhZlV28EabVcnBG21VpQdvtFmVHLyhi+TgjYqSvAqFdcMagBwb1gDkuL0GIMeGNQA5bq8BxC5yjRsP/5wyS/iBVVKZJbxbKqXMb/KR7WQbHv9Sbj/+pWx4/Eu5/fiPXWxQkOSVLBIdBpi8kiV+RUze+SXh+1DqShaJlkRyV7JI2dFN6/1uWnd003q/m9b73TScTyUfdFI3zGKk8o7GlfuNO3Y0rt5vXL2vQdGzMnnnl4SbVNnGbRumqNJuT1GlbZiiSrs9RY1dbBi52QdMtE215QGTvPNLern9gIl2qZIPmL6jm/b73bTv6Kb9fjft/KcalL3zS/qONyna8SZF99+kaMebFN1/k6L7gVTRFztdjvX5oTT8pOsXX0F1Xh+Wdumvv4ISCvf9M19BSbQ7lfsKKnax4TvbR2OsA2eLRAfchU68cVvvHzppa9HvsTf4+mIniZwkGyban0o2TOhiR8PQygdziapDoj1dXREqz+OZXn1Z9s5Jg41hGi+dBJrKvK6GeSwwvP6eW6LtqV79Y/0vsbbfTquXaHvqsfWx3kGO8vIsNAl3p1KnZUn4IRX1NWYYZsvfF3Ql2loqh8KpEgofdX0/nCJ2U7pf3PNYLJeXbsIuK/MWbmvj1oMuG+5S5Q7LFLl/+4/I7dt/Qhe5I41k3L/9R8bt239kbLj9J98qErRK2DtSh2WGPpKHZb7zcdz2kTvoUkb2EH+qH+YjdWjnm3ykzmTMlyXwEZalr8+x2+Np8dKH9r/OR+rgz7yPD8dL8uBPiQ7/yx78GWckd/DnOI7bneyNjw2Nmzv4cxzh6SO5gz/fZCR18OeIPoHKTWVGeB9S8uDPMB+5gz/fTlQZJqr9xUR1RJtT2dlu6CR3UE48TZV1E8jDfN3Zo42l5DxoRB9A5eZBoYvcPGhEW1PJedCIgrFz86BR5P48KN8qka6HLzHrmV1UX8tp3SGF0VtMMiwldCJ+Ur/gG9mvnLDfacIy2odOfGGYh7SPX8rw/E/lj1/KPIDp8YJGgZuwXtYxsyy9flq5vhgxDg6c1NsK/+aO6cNlYHw0dB5rCOvs3hI8vdvt9/8R7VGlH5ptQ5WGTbuCQh6tXD/s8uVocB5q/3gdohDMiuTjkVPqAZOrYORExzKteoFLiPu3k2HeHOu0truexzq9OgttRDtV2bOhQifJc/s2LGnGp0vp+q6zaP34dKlcJNQId5p4bSI+cgzF+ZaPaEO0Nt9XAV393elSsp58j3Wv1zsro/+1kzK/P7m62fjQifipyKKv62RQ+Jnqat/On7nQddAVzt9/5aIcsLDKFDiJ3mnmNUk27rrC5spv6tQvN3sMmqCfRSL/2EvwG9KO4NSu6EHBfvIXQ+Pq9wqJdgG6Lheei+e2ZDob4kvVjyUFeZmN6IKq1tYN8zCtKt/eJSJtJ1dlwp5e+vjmJApzP1Z1tEOOl07iM2p80b21L9tmx7ec0G09jNqlPLrYelA9bH05k4h7WV97vNxb0FPDLxDWB7OPt15+WZrwAVFXpArjlYK/cZGq0/CwrewzJnSSfTyE31LtcJJ+xoROss8Y4dvPmMhF8hkTuUg/Y6JNpuwzJqzT5DMm/gg5K0Thl1CpQfPmYJjM6I9dpEb/Gxe5gvT7oz92kh24WyRkjA2jP3SSHf1abo9+LbdHf3hdVnb0R3tV2dEf1ml69EffljCctg0rEeVbWQIXvfmnAw0umvk+HXpzEkry9TD6lCo5eMNDTLKDN3SSHHd6/LWT7OCNnSQHr0b7RLnBG7rIDd7QRXbwanTqX3LwxnW6Y/DqWiJWopeDV6Nvqah0v68DT8r/Pnjj4wdyg1dLuz14w9ludvDumDJrtGe1xUl68MYnECYHb/xJVWrwRi6Sg7fohsEbfQ2VHbxhnWYHb7SWWd1JxSr5MXyjb6oe2xjr2Vsg1PzH8I2Ph0oO3yq3h294slN2+IZOsiOvHX/sJD18QyfZ4Rt/V5UavpGL5PANd86ywzf6JCo7fMM63TF8m29HtsKvj3bRaNbbx7rpqivuSP54+u4YvtFWU3L4jh3Dd+wYvr3/sZP08A2dZIdvl9vDN3KRHL6Ri/Twjb6uyg7f3jcM3/A0s7Y+JyoN1vC/nTKjFN9BuAYvbCUw513QGv8YUfQ7F3Jt7zx2iz5zMQ+wt7X7ctx3QR+6WHXBn9YFr7rgT+tCVkHk07pAFx/WBd6A+GFdyKoL+bQuxirI+LQu0MWHdTGWZAz5NBeyzvsdH+ZCj+tpoJ/WBbr4NBfrKjgNJCc8+TAbtRcfn5j8CkrjA/ZXs0itI3ASfhcq/0CEv3/PHRcmGWr3xkkujjF2koxjfHOQW2ojZdzeRn3jIjWhDE8Ky04oQyfZueBof+wkPaEcG7ZRddzeRg1dJCeUY8M2qo7726hxnWYnlLphA0P19jZqfAJbctDIlr2HLSMvcpIeNKGT7KCJPqdKDprIRXLQhB91JQdNOaKT/rKjRmnHa1h4/hn5wVIQcf/9eJpHccL7vtY1u61gZBh/dxJ2EvhwB2r2MUX65iTQNF5HsTO1D12sL0QYvlT5pYtjzfBe5uLNkXJ1fbJ3fHl9+JaN6Ki/TurHjvctTvSVk/Qpe485b9DLog2q0v0y595GUJwevSev77K4wOz7p5Ooq5ZKa/WitEO3uCn1deWGKynq1fL6vN741D9fw9DychL/KI3efRGIT+zLPjvrhhVMU/K/9ZJ9er7xknx8lqPeDgCIfeQeoLGP/BO03o8BeFOx6UdoeHzf4VJNeMf88S0rLQqtXu/zHT4T+TaGHy6ij6vWC3DHa9n5mw7EpwjmJtGPjPTbs+i24dUzdpIew03+2kteCUIvaSWIL6zKKUHkI6sEkY+8EvS2QQnCik0qwZtKWRMUrR9X7DqoRYXuN07gIx47bX1z9hiK5UMn1U/wb0dUqxv2rGInz2nammr18WFWSlmt89h+pk+9wIyt6cd5If9Yk+BAvt96Yf+ofujHJfLh02pYIrmvSyT3dYlkhy7xn3fb5neLNZJPKyWpS6GPpC4lGyf0EU5Bk2UJfSTLkpwKRxobvqlkNTZ+Z8pqrOzorLJFY2WLxsoWjZUtGitbNFa2aKxs0FjZoLGyRWPHn3fbtMbKBo2VDRortzU2XiZPFSV2kSpJdrE+EthwGyUrsPGGTlZgdUdP1S0Cq1sEVrcIrG4RWN0isLpFYHWDwOoGgdUdAluOP++2aYHVDQKrGwRW7wtsuHmfE9jQRU5gkyEEEt3RtWGV4E2YSVJgS9nQU0MnaYF94yUpsLGXrMDGXrIC+8ZLUmDflCgpsKXcF9jQR1JgQx95ga1/3m2zAhtXSk5gYx85gc02TqRLcfCbf1XJ9PIu1diFH5qLh+78KiQxd0TcGye5IwTjzw9yD5x+u2WzH0GEDbthyeTNhzLZB07rG0Zu6zseOLGX7AOn9R0PnNBL+oETe8k+cOISZR84vdx/4PRy/4HTNxx88Tz09K+7bfqBE1ZK8oET+kg+cJKNE0lb+HlmTmBDFzmBTX4kGgks7RBY2iKwtKOn0haBpS0CS1sElrYILG0RWNoisLxBYHmDwPIWgeU/77ZpgeUNAssbBJbvC2x4fEVOYEMXOYFNHqIRCWx4vElWYOODVrICKzt6qmwRWNkisLJFYGWLwMoWgZUtAjs2COzYILBji8COP++2aYEdGwR2bBDYcV9gj9txFbGLnMAet6Mq4sPfsgLbd2z6Fd3RU3WLwOoWgdUtAqtbBFa3CKzuENh63BfY0EdSYEMfaYGtx59326zAxpWSE9jYR05gs40j0ZGjt4sSu0iVJHsAaySw4dG4WYGND+lNCmwtG3pq6CQtsG+8JAU29pIV2NhLVmDfeEkK7JsSZQW2bhDYukFg6xaBrX/ebdMCWzcIbN0gsHWDLh23N/1iF5lNv/hyisLr9tE6Xt9wUWq7d4dSfMp+7mEjtyNMsmf9By7iWxiSD5s390FkHzZtwyeHoZP8wyb2kn3YhF7SD5vQS/phE3vJPmziEmUfNv3+l7Khj+zDpu/4Urb2P++26YdNv//tRuwj+bDpt1cZ3txSk3nYvHGRedi8u1tqXSPKcJ2pfq8NCk+oHn6wggx5fRvpw08UEDV0nWagBa8yrN9KFEV9+02GihcZPj9p/paV2xcRkGw4T6jUaOcjdxbYOx9rNkA0ymc+UgeKvfORu5hpw+FIsZPsB9mV5a+9pD/rjr1kP+uucv+z7tBH9rElOz7rrrLhs+64YrMHPISLe2kluH+tGR87LjY6+o5+L/rXXvKjR3TH6Bn1/ugZ9f7oGXXH6Bm0YfTIhis0uW55oEdvcMnR0+7fb9bu32/W7t9v1nbIQNsiA/rnXvIyoH2HDGz4fKtu+Hyrbvl8q+34fCuu2KwM0Ibrp8tc77k5emjD/dOxk2y/bwf/tZf06Im9ZEfPXGG5OXpCH8nRE/rIj55y/6qiNxWbHT3hVYO52xIexQnnBJnrEmIfufsS3vhIXZgQ+8jdmJD3QZ/6SN2Z8MZH6tKE2Efu1oS8j0/rI3dvwhsfqYsTYh+5mxPyPj6tj9zdCW98pC5PiH3kbk/I+/g4H7n7E8JbaLP3J0ROsvcnlBadb5a9QOHhJbpSK3eDQlic7A0KsZPkDQqhk+QNCnLI3Ve12EXqVe2Ni9QxlmXHgbZlx4G2rdNfe8lPNvuG8+AfXm4fCB/7yE42+44j4RvdPxL+TcUmJ5sSHhScflWj+4fA1rFh9NSxo9+T/LWX/OihHbsFje/vFoQ+sqOHd+wWNN6wWxBXbPpVLVoayN6o0Di83TJ3o0KLt5VyNyo0DsZP7kaF2EXqRoU3LjI3KkRXfWZvVGgSrQgkb1T4hZPXNyrEvSx5o0KT6HGRvFGhRRtb2RsVWngcYPpGhd+4CW5UGMm4qOhGhegDkuSNCi36qid5o0LfcY76nqnj6H/tJf8IHTv2Ctq4v1cQ+sg+QseWvYIdJxTGFbvjRoV+DL9UHaTgx5Zh0ygQN3WjQot2PpI3KvQdYURNbwcPCO24l4x2hN401b/2klcC3RE80I/7wQOhj6QShD7SStCPDcEDccUmlYCisxTqWJXSjg4Tv9K/lyd6no81WSoDYq77t7hEbRvGcS+3d/8pkoJ0CJ3u2Hnspf21l/Q4jr2kx3Hh++O48P1xXHjHOC737+Z8U7HpELodT8Feb9/OyWXDUzB2ku73lf7aS3701B0Lsr3eX5ANfWRHT92xINvbhgXZuGJ3PAVbW9shj+2o8vIpGDrph2//H1yDR2m047XHCw/qvknkBeLf+NB17RprlQ99+OKW0msf9fZh+W985L5pyQ6c6APKsuPkjLLj5Iy+45TC0En6W7s3XpLf2sVest/axV6y39q98ZL81u5NiZLf2nW6/2F36CP7zKAdH3Z3+vNum/3WLq6UpC7R/Q+7s40T+ih8vyyF75clObWPvhsM37yy3zPH74BZjd1xUGHoJK+xvEVjeYvG8haN5S0ay1s0VjZorGzQWNmisfLn3TatsbJBY2WDxsoGjQ2XH5NlCX0ky5JcBo2ufaId1z7RlnnsjrMKQyd5jR1bNHZs0dixRWPHFo0dWzRWN2isbtBY3aKx+ufdNq2xukFjdYPG3j847c1mb64ssY9cWbKbzpHG9h33Q/cdNz/RjuMKQydpjX3jJamxsZesxsZeshr7xktSY9+UKKmxVO5rbOgjqbGhj7TGUvnzbpvV2LhScroU+8jpUrZxQm0LY1KTGhv6SGpsMjY2vB96w9lnb4Kosxq748TC0EleY+sWja1bNLZu0di6RWPrFo1tGzS2bdDYtkVj259327TGtg0a2zZobNugsf3+nlfsI6mx/faeV/xxVVZjy477jmjHnhdt2fOiLXtetGXPi7bsedGWPS/asudFG/a8aMOeF23Z8yL6826b1tgNe160Yc+L7u95vfn4NHO+5BsXqRtM40+CkzeYxk5yN5i+ORYk+cw59P4zJ3k8SXjHnt5/5rw5xyb7zOENh8OGTvLPHN5xpnHsJf3M4R1nGr/xkn3m8I4zjUnun2kc+sg+c2THmcbhKbF7um36mSP3zzSOfSSfOcnGCc9F1vvr07GP5PnMent9Oj7fLquxbcclJeHp8+nOOrZo7NiisWOLxo4tGju2aOzYorG6QWN1g8bqFo3VP++2aY3VDRqrGzRW6b4u3b+kpN2+pOTNSbVJpR/3oz2yJ+ZGNXrsUPpjh9Jz2fAJbegkrfRvvCSVPvaSVfrYS1bp33hJKv2bEiWVnsv9L79DH0mlD32klT689WhPt80qfVwpOV2KfeR0Kds4obbJ/Z3I2EdSY+X2TmR85UL6FqYdEXXh0y/dWdsWjW1bNLZt0di2RWPbFo1tWzS2bdDYtkFj2xaN7X/ebdMa2zZobNugsW2DxsZ30mSm0+98pC79o9vT6dhF7ro9uj2ZnkP8ttDzjqVppg2nb4dO8kIfe8kKfeglLfShl7TQx16yQh+XKCv0dP/Q+NBHVuhpx6HxzH/ebdNCT/e3zGIfSaGn21tmFJ+xqrpOKCjH4W74F04eP1R3AnXC3xs47CY6DsjKZ1560etanF6LvCxO21EnbUedSNtRJ+GVX7k6CSNIlfyAcTxohI/fOPEOq7jr/d1JePLDoxZoyckBT41fuckdlRC7SJ2U8MZF5qCEHk2Asy3zxkmuZXp4zGu6ZUI3uZaJXaRa5o2LVMtE58+TruOxHqZCbbTfOKl+4GU/XjoJjxKtfR10Unvxmfg3H4WjcwxLV5/awClBP51EIVrrTNPRPB+PWdMvfIx+SeLgEvmIjtg6dJ0mXA68Pe27k2Bxe/Alq0Mlykh4WpGsOb3AKb7t87aRl20Td5K2nhKPTsKf+aB1X0Kl1oI+Ep0orP7eqKyfOoHB99pJeOptrrO2ES5ldfFXnB5c3BC7OUZZR04fo33sRgVmNqAEv3QjbZ0GfAiXj92ovxiMYwRuordzqbqmwfz62fULJ/qpE/VJvVLgJG5qeF0a7XVw4BvJH2vBgeAF/fsgkujMIbx16KVGhueti8o6YFxRJBt/z0d4rDAcuN41KAzdf35JeJBh7vkV+kg+v6SM+88vic4xTD6/JNrjSj+/8m0jUduEZySv8/CL6uuHj9R2+7nxLidr6aXiVUo/cxLUSVst3I+wdaIz5JNXD8U56WUd18wt6rA97LCHd9jxWb3WUtYUpYzX81iJFvuz9Rp+RUW6uhofPej14ZZbql5DfR1lnYc/CjTwd32Nn1vJV8g3TnKvkC2+pDn7CvmoWfl7P8kDFWMfuQMV3/hIHagYBjeJb+iM1wqr998iJVwXyz6Fo69ask/hyEf2Kdx5w1O4y/2ncB87nsLptpHP+kjuJTJ0kXyHDE8Zyr5DvnGSmgtE06NcT61txxtk6CX9yvbGS/aNbccL2473tR2va1seWHG9pt/L65a1hrplqaH+eYnyCw11R68Nvz1M9tq8D/3QR67Xxh+oZnvtm56SXKmIZxXJhYro7MLUQkUNHsKPtZRL6pso3ElTfmQjul2urqdfazhD+o2PtiIIWhuvp4vhZ1ypDb+wPni9rj1Wqyioj2gtaxx9Pf2gt5fvU/Dosi5dH7mqfuxjNe6jt9eXTqrebZbobc8vzuUKgSGH5j2sKSvekffdQ1SKQisMqRAem/+Lmii9+iyxtpc+Hk0SxQxoXQ37sKFpv7/93u3mkYfnzV0rF4+FARj43+/EkmhLKjvwQx/Jga+3d/pbeCHrWlB4mOOVh3G7n4+7/Tx8/0/289BHup/H1zXl+nm0O1/rsV6qKvTRWmreB61KrUSvfYSjpff1rvqwoSw/Rss42u3REvvIjZYR3sd1Xz++1AjhemL9Hn4RtA3X1b7csKfJhz7kvg+8xOe7j2jqsV54O1wGWwulPdBa6voShvkbD7IWy/rx2kO0JrMWRAfJZx7WLYkDAyc/88DtpYfoqLzeVpBhb+O1j3CJyy9crVzopY8you2qUmlpaYUXn3/gRe/2rdhHrne98ZHqX+9qZKyg5Yo3Q93wwp96acd6j2vH+NgLexi2tE+9kK8+UP+4XpqvZPaDtnjRT730dUH282Ksj734fWSd+XMvXiL5uO/2JY+lj49buq/ruh/TtePTsUhjbWv0T32MupZ528c+juWj3/bBx8f5WBsBHI/kwMe8h8p8NL2fj0Ajie6qfeQhp/Whh5TSR6e4ZXU+74M/85HU+NhHTuFDH0l9D+c1Kn6B+xgf+Wi8lh0f5uteHs+XaW2IsryeL5fw67LU2mWYjbkWaNkYR4uyES2hklwNIyhhZXx3EsWstOFvZbib+SMn0ZTT43gaLtf9dBK9vZej+2YIfnb0rUBhzY61BFDHl5fmX7xUjbX4+DD5pY/4NdM7ycMOX7w53jtY66AFnMj3U1KCsTcvtbWxh0EA3zMS+aC2PuUi1JHvPqSGz5cVFy/4OdhvfPDqaF9iIn7lQ9uagCjeIfrNR9i8dKwX7+fKFX/qxb8VetjjQy8VggAegh90tehwBFqPLMb597c1vNhHbiXxjY/UWqKEZ/YO+AZLj5dRQCPyomVNZ7QE61Whj7qe4Vrr+GS9igZMupU/7GmPqeVa02QMfPkHfWTcXwcMfSTXAcfxp+uAX2ukfF6v5F5q/dBLWZ8MPewejeDomqFs64Q+sq3zt7s8X2uE5OPW6eDltb5GNZLTtNBDbnckLMkMGj5LgveS/+whWu/uFcU+HrLYVtsIwyTrd15kxXs9t9fLp15c6QXj6H7T14Z4L9H2ekcxukiqyAHlOYZ+5KXWFaVc24FvwO0zH6V+5oNWaHAlLh/5eOS/rpeCL2tOX33o/TCAyEU/ynr1xHMvyrdjCEIfZb16PrStv/RRNNq8Sspz7CMnzxqdhp6T57A+6lKAXnEa/rM+os2Bx8xsLQrA5/Y/vYRh0itq7TGvefkO/CYjflCF4tvNL4vj7zdHHZ97WVHfB31etbqCaQ8+Xnf66L2xrUCL3iIft5+devvZGZUjG1kQ+shGFmgUWpyNLCilRRudK7RgYFbK98VerfW+FoU+kloU3qaV0qI3FcKw9StRhdwOBGyhvK8JQGv4JvBDi6JLypIBeBrFeyUD8GIfuSdvqbTBR7gq6K+/tWOtfu9mLYo98fVJ2C+Sby7qhqig2Mlj4WtNEmnAqWKt6G/cjOZrAqPr525cGTFk4Yeb8Ci+oy8vx5eA72/jL4pMfqyTrJjih7/XTuIC+bfLzxO964f18tjL8xeCA+aMP9zMr0b/2s+Xbygbv66b2Ett67WgwkvbP/BC8dKar6zVT700/xiz48eYv/MCkVwEgS7/wMuGw93jyvV9ttpGULnhzU/Jj7miOkkuwIYuUjOuuCTJKdeb6sjOuaL9rbRuRwta2dMMNNzfSn5HqRT01uR3lKGP5HeUGm3GZr+j1GhzK/kdpXK8opX7jjLfNsHQCztJ8jADZQo3p1KHGUSB+uwn0PGXj8PbL5zIUa6eJnggwq+cpA8zCJ2MtS38WKmLnMRHFfrM62HDU5SPX7h5KJY//zrstf3WTenupgcfu8fVu767Zen10zZK3kk3wiWl1HkTI/4yO3XcROgjedqEhvtTudMm5s58MBPNnTah8UdhuVoNWzd3beGb7no0+DQUp+e/6/WFfPAU+XgMFj/39+EyGDzhNIfWTAmDtX83U1oRcxjJeOivpsIrH6XJxxPqfvhHDbXsmJZHXt68PR2+dffl0fFjSr3hAy3d8IGWavtbH8lVrjfvtn7ELeO5sv+gWm/vzcY+nmsOnpWoz2q8x+tbmrjW9Tsvg1afHfRxXnRtAdbjKB96SS9ixHmByLGvkv3VyyOj7f6L+hsvyRf1N16SL+oPL7zhRT2u3NX9y5f1t19WS06031VLTrR/0USRaJfj/kpttA4vtGbYj+183M6jXyzmF/+GqtX+Hx8u5qc0ux7l9qeGJXIxeM3PB17J8bNG+PaKTugit6ITHveXXdGJzwzMreg8dLTs2EWLlg1o7T1Xbq+bxiT95rrQw0l22e/1utDDCd1dF4p95NaFHj7k9rpQPcI9sNS60MOH3l8X+kXbSNQ27fbCUD3ajpOt4pykTrmsR3QVcO79+OGD7i9RxV6ya1Rv8pJcpHrjJblK9cYLrccf83EEXnp8aDQc86P19fv6Wz/JRbM3ftKrZm/9JJfN3rV4bt3snZfcwlk8mnJrPPGwTi6dvXGSWzt7tJDe1wY67q+dxTnJ1mvcwrnFs3e9Nrt69s5PdvnsrZ/s+lk4qcytn8Xz0sz6mW6IUjnCUKi24lQrYUCV/MKJrC9Xm345fesXTh5v2H0NH9KXTurB90O7jg070cf9nejj/k70sWMn+tiwE/1olw3nZ5U3H/J7lHmR1/2shLFMvkKrHd/U+y+cyPoGv3y5J+Cbk3pEH+Plwt0ePoInVy7c7Y2PpJBEj/LC4heIsZTXDRyemLIWhbo0/axtOq+vRbr0sG3GhrbRDW2zQeTD2xdoPa7qY84XSOvY0FvHht46NvTW+LN+P+X8OeV6dWde4T0z+3D3eK1VP1bdsM9/n2eN8ETttr5ZkR68Zoebi9nFGL1/hHToI7sYE37tlV2Mifausosx2ncsxqTbJlqMiXvJihZ/ZKV/5qSVVZ7H7pt87OS476SxT/Yg8PC7k4dOJNeWqH6aE4+xbvpxTlKHwP+iONFSWVicvp7lDbdVfuaE/jwn62Lv9thI2+Dk07HzeLOQ5WRIUCdhfIAfZC01UpQwK7K2fZvwa7Ev0e2m6d4WO9nRxlK8OIEqlfAOo0NgfYA+rtn1wUUbQXcL3+yT60ClyIZ1oDAnyRiqNzMlP9P+0WdevVLXUuNlLfhoA+/m/o2X5K5kGOua3LQq9f6lMA8nty+FiX0k50ml3r8UpoYfKiXnSaVuuBTmF20TrN6EnSS5Z1XafWks0Y3p6WDmyEk6mDnMSTaYOXSSDWbmLfsy717eslHIcb0ko5BjJ8koZLofL0tyeysl9pHcSSnRzU7ZJ2j8GU72Cdrb/VrV+xspb7prOgqZt2yjvHOT3UV5s2boX0/y62NQaglvh2FZZ5o9vdBHXpJzi7bhi9/wPBb1JXutwUeT0VUAjzq4epzweP2d7aNGoqvcuV1PUmIMLv2akfgmAPjsEk/PrPoLJ7KeX49VruOlkxqOwj1eHu9vh3e18akX8cum8Dijn16irS5ZD1PBDaJf+YBLMGl86OOxq+fxFjD6/oGXKOIwF+D6pmLV9yC0Rv0tGD00VvzkY5XYHxz6Cx/sp0QxQwvrjyrRuzvEJQxJaOv4y9YEI/2+LVAXKfeVIJpSPyrVY48ZF/9/PAajozhpHcvyePHiVzkJXfje7MPsn7lI1Ue05ZZWxtBJWtNk/LWXvDKGXtLKGN2flVXG8A6upDKOskMZowP00soYVmxSGWtpO9Qk+lwyN3pqFEudk4HYRUoG3rjIFUTvy0DsJD2Atf21l7wMhF7SMhB97pKVgchHVgbCz27SMhBFe6VlIKzYtAyE51D7whbkg8pXFzWM9mrrBbI3/Dqkfz0vqra+4T2nRgFOyWEc3kKXHcbxVXbJAViPP/eSHsaxl+wwrtHnWclhHPpIDuPQR3oYh8/Q7DCOK3bHMNa1cqlEwTCONpiorJ1VKkKvh3H06pcfxlGQU3IYR0GK6WHMO6bTNfrOa4+X/DAOvaSHcbjflRzGkY/sMA6/akoP4zBqKzuM44/5ksO4Rz3FnVSslZ8DOTrH7rHOvp7HX86D/z6Qo8Xy/EAOP/bKDeTwFsDsQA6dpIdgtCi8x0t+IIde0gM5uu42O5AjH9mBHPnID+Ro+KQHclixOwZy852zVvAikx8DOdr26mMdoNAVN8++D2TZMpD77Q2EKjsGsmwZyF3/2kt+IPcdGwiV7m8ghD6yA5l2bCBU2rCBEFdsdiCHuxDNr6tocGul0vfihCdzwvHwXhjmX/igJQUYCfNLH+vODIJrDX/ng9dxA19Oqf/YB33qY9UHf1wfvOqDP64PWWWRj+sDfXxaH3iV36f14XeqyMf1MVZZxsf1gT4+rY+xFGTIx/mQSxDH+DQfelzPCP24PtDHx/lYH7lppEHhJnX2lILISfpggBptgUhZTSN4Hdk/8BJ+XSb/QJdb678oTvYL/NhJ8uCG0En23IZolyu5GRO6yG3GjNt71FU3RKvETtLTxDH+2kt+sjl27MlWvb8nG/rITjZ1x55s1Q17snHFZiebumUPRO/vyeqOPRDdsXvRjuOvvaRHT+wlO3padM5dcvSEPpKjJ/SRHj1tw2GGbyo2O3rCk9x99FTGq8q1f89KFGVV1pECrXScbX1zEm4v4ZcpeP+zfHcSqBuvMzQYD/P4lYv17QPjnby/c3GsOd/LXISVQfOsNtOj48t7xfdsRCsCtD7m6niGxg0n+tJJ3MvWpyBV4IDVn70sPv3CD67obQTFiWIKj/XZERc8QuO7k/BrrlLXTfKlPIbGFjelvnQTr7aoVwuMm2+rLS3alIVFDi2vJ/UtvMwr9WLQyobVzthJ+uFX5a+95B+hdUcYQWv3wwhCH9lHaNsRRtDahjCCuGLTq53RAuFxuFQTnqdzfC9P9M3sesPv8OnE9xXTFsXPtPVC3CuumnzTgbrjw4nW9O5kOuwkaSVoW6bB4e1OW7zklaDXHUoQnfSfVYLIR1YJwhsH0kqw4QqvNxWbVYK4UtYEBW+0/aWPdUKJCt1vnMBHPHba+g7rOdf90EkdKzSjHVGt7tjYCp2UeYvhOdXq48OslLJa57FZTZ96gRlb04/zQv4JIsExX7/1wv65ONxb/tsS+fBpNSrRhg+62oYPutqWD7oa/3m3beuFtjSSTyslqUuhj6QuJRsn9BFOQZNlCX0ky5KcCkcaG76pZDU2fmfKaqzs6KyyRWNli8bKFo2VLRorWzRWtmjs2KCxY4PGji0aO/6826Y1dmzQ2LFBY8cGjQ1XypNlCX0ky5JcsY98hBsqSY19s7WT1Vjd0Vl1i8bqFo3VLRqrWzRWt2is7tDYftzX2NBHUmNDH2mN7cefd9usxsaVktOl2EdOl7KNI/TpXn6uLLGPXFmyMQWhxh47NHbHWkEvGzpr6CStsW+8JDU29pLV2NhLVmPfeElq7JsSZTW2btDYukFj6xaNrX/ebdMaWzdobN2gsfW+xsYhcf5xJt7A96uoOj8kFg+h+VWgYvIemdhJ8rqh+GOF5DOH7rdt9qOJyIdsWDt583VN9pnTNhxMEDrJP3NiL9lnTtMdz5zQS/qZE3vJPnPiEmWfOf3+eRqhj+wzp+84T6P3P++26WdOWCnJZ07oI/nMSTZOqG3hl51JjQ19JDU2+YVpWB87NLZv0Vja0Vlpi8bSFo2lLRpLWzSWtmgsbdFY3qCxvEFjeYvG8p9327TG8gaN5Q0ayxs0NjwGI6mxoY+kxiaP44h8hKelZDU2Prclq7Gyo7PKFo2VLRorWzRWtmisbNFY2aKxY4PGjg0aO7Zo7PjzbpvW2LFBY8cGjR0bNLbcj7OIfSQ1ttyOs4gPlstqbNuxB9h3HGIYOslrrG7RWN2isbpFY3WLxuoOjaXjvsaGPpIaG/pIaywdf95tsxobV0pOl2IfOV3KNo6ER5reL0vsI1eW7CGvsY8NGhufBpzUWCobOmvoJK2xb7wkNTb2ktXY2EtWY994SWrsmxJlNbZu0Ni6QWPrFo2tf95t0xpbN2hs3aCxdYMu0e09wNhFag8w/kCa1wWcFfYAfxxKR+G1Nqu7e8P27wUZ92NOYh/J5824HXMSX/2QfN68uYQi+7zpGz5FDJ3knzexl+zzJvSSft6EXtLPm9hL9nkTlyj7vKH7X9CGPrLPG9rxBe289v5vu236eUP31xpiH8nnDd1ea3hzNU7mefPGReZ58+76pXVvJsMFnt+vXyIOj70efuCCDHl9/ebDTxQiNXSdcqAFL+77esNqCZvG7+1TvLbv+anzt6zcvuqgRLEryRuYQhe5G5jo9hnRhTecVxQ7yX4cTXL8tZf0J9axl+wn1iT3zysKfWQfFbLjvCKSDecVxRWbvZtOo7DP7AEFJLcPKChRQHt69OiOs9Fp1L/2kh89Y8cBBTTuH1AQ+siOnrHjgAIaGw4oiCs2e0BBdDd4/iGq90+arPfvL6v37y+r9+8vqzvuL6s7TlanLUcHhl7yMqA7Tizi4/77VugjKQOhj7QM8LHjfUu3nFhUNjxE+bh/uwH1DaMndJLt93zoX3tJj57YS3r0lPtfyIQ+sqOn7PhChnd82BVXbHb0jHDJI3e7AZf7txtwuX+7Qewjd7tB6CN5u0HaB33qI3e7Qewjd7tB6CN5u0Hax6f1kbzdIPaRu90g9JG83SDt49P6SN5uEPvI3W4Q+kjebpD28XE+crcbhJGE2dsNIifp2w247bjdgNv92w3C4mRvN4idJG83CJ0kbzdox+31zthF6lXtjYvUkZLHjsNljx2Hy3Iff+0lP9nsO243YLp/u0HoIzvZpB23GzBtuN0grtjkZDM8Ijr/qka3bzdotW0YPXXHFevMx197yY8e3rFbwHx/tyD0kR09vGO3gHnDbkFcselXtWhpIHu7AfOG2w1YNtxuwHL7doPYRep2gzcuMrcbRPfWZ283YNlwu8EvnLw+xz/uZcnbDVg23G7AsuF2g9mEL3OSvt3gN26C2w1GMhYput0giptL3m7A4/7tBn3HmeZ9y8NvyF97yT9Cx5a9At2wV6Ab9gp0y16BbtgriCt2x+0G/Rh+LzpIwY8tQ9bbtxuw3r/doO+4Koz1/u0GXXYowY4xLEf9ay9pJYi9ZJVAjvvBA6GPpBKEPtJKIMeG4IG4YrOhN9Ed74850FUp7egw8SvfnqMSXY1VxposlQFxzv1bLGB4kWl2HEt451EuCCiKY08HAYVO0iNwy61HoZf8OA69pMdx9ClLdhxHPrLjOPykJj2Oo+Ps0uM4rNjsE/3YsaQkG2Jnjg1LSrGTdL+v46+95EdP3bEgK+3+gmzoIzt62o4FWWkbFmTjit3xFGxtbYe0BvH935+CoZN++Pb/wTV4lLbx1154UPdNIi8Q/8aHrivQWKt86MMXt5QCH/e/b4t95L4jyQ6cyMex4fu2Nwqb/L5NoheN9OCLnKS/b3vjJfl9W+wl+31b7CX7fdsbL8nv296UKPl9m0TbXtlnBvX7z4zIR/6ZQX/ebbPft8WVktQlun9eWbZxQh/hlDpZltBHsizJqX30rV745pX9hjh+B8xqLO/orLxFY3mLxvIWjeUtGstbNJa3aKxs0FjZoLGyRWPlz7ttWmNlg8bKBo2VDRp73L9HNPaRLEtyGTS6465vOHvtzXp5VmPHjs46tmjs2KKxY4vGji0aO7Zo7NiisbpBY3WDxuoWjdU/77ZpjdUNGqsbNFbva2y82ZsrS+wjV5bspnOosTvuau477l+ah0Lc7ayhk7TGvvGS1NjYS1ZjYy9ZjX3jJamxb0qU1NhR7mts6COpsaGPtMaO8ufdNquxcaXkdCn2kdOlbOOE2sb37xGNfSQ1NhkbG2ls3bAe+yaIOquxdUdnrVs0tm7R2LpFY+sWja1bNLZu0di2QWPbBo1tWzS2/Xm3TWts26CxbYPGtg0aS/f3vGIfSY2l23te8cdVWY09dtw3NHbseY0te15jy57X2LLnNbbseY0te15jy57X2LDnNTbseY0te16D/rzbpjV2w57X2LDnNe7veb35+DRzpuMbF6kzhONPgpP3iMZOkveIxseCJJ855f49otnjScIzP/v9Z86bc2yyz5zou6r04I2c5J85sZfsMyf0kn7mhF7Sz5zYS/aZE5co+8wJ45eTzxwZ95854Sdn6WfO+PNum37myP27N2MfyWdOsnFCbTs2rE8fG9anj9vr07XuuBuk7rgbZOiOzqpbNFa3aKxu0VjdorG6RWN1i8bqBo3VDRqrOzRWjz/vtmmN1Q0aqxs0Vu9rbL1/N0i9fzdIfFJt8vT7cT/aI3tibhRRFx5onI2oi49WTiq9lg2f0IZO0kr/xktS6WMvWaWPvWSV/o2XpNK/KVFS6bXe//I79JFU+tBHXunrn3fbrNLHlZLTpdhHTpeyjRNqm9zfiYx9JDVWbu9ExlcuZDWWd0TUadvRWdsWjW1bNLZt0di2RWPbFo1tWzS2b9DYvkFj+xaN7X/ebdMa2zdobN+gsf22xr65kiZ18xHdXyUvfH9tOvaRvOOOb69Nlx1xfWVLXJ/ShuO3Qyd5pY+9ZJU+9JJW+tBLWuljL1mlj0uUVXq+f2q8Jrs+fZqPvNLzn3fbtNJv0CXdoEu6QZeiz0KY1kHr7OfA1OM3LrouF/2liygGPJeJ0EMqD+ExavPeH9PWLwO3tLwP1nUKBl7V9ysfwzVeD/rIx+PZsE65POrrshSN9rnbsTap2zHah15yZxK88ZE6k+Cdj8yZBPFBe3A2ZD8+a90vPvqHPqr7aK/bpWq0QtiqXv29tdJf1McbH2097Fob8tqH/K2PXlZZei2fte06E7IKHvfyq3ZZ57FW0Q8VBPPxqY+xZt4P81Mfa+4Q+7it6uO2qpcRfsM57wM/H9avteONj3W60cPU1z6O2w/a2EeqPiR6K5NVG4+1LZhEfTsCMvax+ujD/NDH8FODB7TK73yMlY+Bt178yoe/peK1Cr/zscbKw92H+dBy9bCH+Wl9KLmP1+0SfV3RySfZjzeZ+z6kf+aD1+tyZzo+9CHrqSBBH4teOsSH7aPXvz5grR3h/hWteeGjYLAWwr/KSeqot0dObh/1xtHxasmT3njDEW2Psvy5l+xBb2+8JA96e0zHbx/0FvvIvbDHPrIv7A8v9w96e1OxyYPeopMt8oM4/FQrOYjf5CQ5iOvtU4vHhuPLx7Fj+LX6117yg7jVHYO40f1B3Oj+IG60YxC3sWEQtw1nFkdPczoOv2eivp5ltXmS4ksvdR2BThVuEXlMl745iZYSpHr0Pqx9f3MSl2Yt/9EhGpWm7ygN/W1pyjoT/mF+NmukVlZZWm2f+aiej0o7fMiHPtZ1fF/b5Vc+ZL0RVPm4TtnrtH7oo7qPfgQ9td2Oi3vjI7VinhbWwMfYsJE3NuzjtYN0gzRHTrL7eO+85Pbx3nhJ7uO98ZLcx3vnJbeP965EuX28dkSXcGVnFJGP7Iwi8pGfUfCfd9vkPt6bSkmqUugjqUrJxom/ayz3y1LL/bIk3z8DH+HqQFJh41WKrMLKjq4qWxRWtiisbFFY2aKwskVhZYvCjg0KOzYo7NiisOPPu21aYccGhR0bFHbcVtjwo/6mq6P1L/vy9KEP/cxHXzsnpbfyoQ9fLunMn/rwssjxoY+1HPZQxvahj3XrY6EjyEe0Kk5jraf1zzz4C5+2Dz2s11/tNz3w8WEeZO0vHuMjD/MTf/PQ9G4e+uvWjC5rzrVm6CHVmrGHTGvmPEStGXpItWbkIdeayTxErRm+K/c1G8Q1nVq+3jL2mClGlxamol3e+EhFqjx8jL/1kYt2iYOR1+Owti/a/b1Oo5k+rdVyLserZcMwG90DZnCe8g+y0e4vgpZoryq5CBqWhurqqI+Vw5eliX3QqhHi1zVSRngPJPVjeaHjQy/JwL2xIXBv3A/cC68jSoXehB5SgTftdvhPux38Ex7rpmu6pYq7j992MGMfPpNWPLnom48iEkaEH+sK2IcN77O/85Pso7GPXB994yN14VX0CdIx4NVvtOBMqNjLiiN6emkvvUTbddl+EvvI9hPe1E94Qz/hDf2Eb/eTUEbWY0rhmUuadrA+7Bp4iztR1sFYURAKZ459d9DCb8P8/ucG8WFttO8+ovN3fQrDEvnI5QPePr/7iD61a5eqKwRz/4PK4LsFOcJdvmv+I/xJn3iMrDV1edh4E6IcWSeiq2OMA/deP3QBq1/fXTx2NaPzVdbsmGBy3OqvfFTYv418tGhNcXWOx4zSB+uPWJ/CwcS0rQHfS7CAVqLQwVr8s5R6aOSFo3n2CjqK4nRiH2v5mQt9Wprsheuxl2zcUZHjr72ko5diL9nopSLt9kp4SR6MQONDH+mV8McD9/5KeFyxyeilN5WSWwkv90+tSDeOfDwEs4c7vxnIyT26MtqGJh4bzq145yW5Rxd7ye7RxV6ye3RvvCT36N6UKLlHV/S4r0zJC3ro03zklUn/vNtm9+jK/duT3vhIKtP925MiB7WMVZIxPpmClrVeXQYunI2sg3qsbzMP/siBfyDa6CMH5N8x6ycOOl3K0XGQ/CIHayJS4c3/Fw48FLSV1zl4TMejR79c9dhhnb1I/SAT7YgyMe6vTddDb69NH5mXiPZlByXfJdaec+8fDYteVmvUj7rE7eYs5ej+dP7yepnOxNCrYw/4NvfxlpleLuD1+JFXv2+1yB8X47g8DBD8n9mI+qSvY3151/+Ni7X5w1+0+lcurtElR/ugPeqx3mlrKfzJA6OKf2wtKp+46L5HCvEchdLFKAcs+jIWI7+uWNcEmCvseT8Wkb+1R/SJ1NA1C2j9k2yUuaJydm6RKBthrJyH2eBTuP3Oh7gPeemjlahSq1cqrMWXklatWtdJHo/s1qBCWnjhmT+Rm7pkyA8n0UrU433NH4glcBIejwRvN9RLsCxWWxQoN9ZGacFvrluj33gR725fr+H44WWEL2wrLx0/DPydl85jVQwsjv30Em0gZ18r8gWqJSpQ2NS9eWRWh4nLz6buLbneB7vZ/6Bi+o5GSnsJa6b3LU0tG5o6rNzm54208bpyI4kq7O0TPjoofqv2SjkagUiVX7npzTcMO2z1fXMT+XhMktcUqzFHjyEK385r8bdzeCwf35s5im98tMoKgHrYfAQVE32Vqn46xGOfpfZPKqYfHmvZv3xgd/zi9fTwEBdYO6R0Niqven0e9vbKw6M+wvBmEvbWgXcz7r9y4zuyDxvWLX64ifabmsBOJOwk/ni2hpvlv3i2RhtX+Wdr6CX9bGXaIduhl7Tg8g7BTRcofILETZ1/tsqx49n65m6oZCOlvYQ1E3pJN7VsOLoirtzks/Wtwoz1RHvM4+trhYlOnmh+Fs6Xl0z9VVZ8Df5hw37Az6wEbuSQ9Wnzw4aX/x9PtHFseKK9y42v6shjysBBblLHeT72kuiTt/h2rCWux9Jjff1Yi09M8wAhAifP1exvXuJDbNciNih3/742E39SlQx/qOHpgLnwhzp2fAtYx44P8OK8ZAMGanj7T3arv+rto31jH+nNsKo75DaslOw2fTyASFaICuMi1o8BpBIt2a8TegTXSkr5Ppija5Gar6c1hbidMupHogLhUN9FpUXXxokHDQpDoNz3fDyXhcK9kHWASy+hl+hMa3bRx4fhD1mZIQq3xakd92Oz2rEjCCK8KDstTnFesuLUjh1HobVo0yspTqGPtDi1cv++tjeVkhWnNwMROj+e5/JjCJXohtuDfdb/2C94PeNp0VGCj7e6FWEyoLf8iNZ8kxl/T3zY4wgyIzsmg3EFy9rXEtEeVXC0LeWB4njsZP+ek+iipNYP9j1byEn5XrvhgYJptax1h1pG3yZk1bJuuJz54WXDrRNvvGSjmlq0ZZbVuchHXufqhlMD4gbyLdmvJ+D/yEorO6q23Z/fZn1IWLFRx/fPNQt92vHTj+Z4vyv7aG4bumzb0mXbji4bVkr60RxqPvOKZqiB5vfwFMvqGw/8dT2u/SYv6yaLET5/oj0qWZ+QfvnM5+ezPcjHWGuUA7c/fuYj3Ohta/vjYQfbH63vmB9k36VgO//Hu1SPzm5d34Hi4QSlf29fiiPT1o5Q+XI4tnz3Eoqs+CEgX46C/+El+ta4HyvcsH85+vGHlxb12O7DR4LDPVt8vErzyGl6fYnDwwuF76mpmL0WfdSVjNl7kxNewR/EjTY46e1TJ+JnauinTmiNn4f5aXHGCrB9mFHrhBvwh3d9WBX5Bx0lWkQoq42l4EdzPzoth0J7NY/AXqb2X7jQ1e0VZuc/XXAoKevGoNKhbfi7k+ihruu9smh/HdMXOqnHapvH4nMLnEQqmzma4l0+ui+Cs77Oh5S/zUfxXaQy+oeVCjEaN5x4ZPnnTvANrgZ9JPqsq3g823PX8EMnvdR/tN94wwl96qT6UVq9f+xkbXx20g3F+dyJf0TRx7jvhI5PnVBxJ/Cp6A8ng26P4Tgfa/g9xlDQwNFWWFZLogeFx8UeMPZ+PCmifTDycCQ68HYX/pUTv/7nGPzaSbTh8+ig65sA7luc6Gsn8UxgiZrU0oOZQLQLVtRDF/TLuWPfu4lGgV7km+v0ZQnzu5PwqKvhx1Tp608VmmZvIWztQyf+0HksAOunTvz0r1pe56QfybAzbpGTcn920496Vwne5CM3u+nR/teOfCRnN++clA1OcrOb2ElydtMPvT+7iZ0kZze/cEKfOsnNbt45Sc1u8sX53EludpN2Es1uYifJ2U0v4/4Y1vuzmx7td2XzEQo0LS3hSNNqvf8OGzpJq3y9r65xPpIqX/lv85FV+TdOygYnSZUPnWRVPt7jSqp86CSr8nkn9KmTpMq/cZJT+XRxPneSVPmsk1DlQydZle/31TXOR1Lle/1blZfmH9xyUKnxd1zJwRd/xpUcfHkn9KmT5OB74yQ3+NLF+dxJcvBlnYSDL3SSHXzR6kCy08f5SA4+ur+QFb5IV98CrSNoXpINL9I0NszTIifpeRrf19Y4H8l5Gte/zUd2nvbGSdngJDlPo2zgfzRPCze1so+K0En2UZF3Qp86ST4q3jjJPSrSxfncSfJRkXUSPipCJ9lHhdx/14rzkXxUyP1VgVjlk2/j4UWJWYEetzdh3+QjKdCj/W0+sgI9jg0CHTtJCnT6HsxIoMfYINChk6xA553Qp06SAv3GSU6g08X53ElSoLNOQoEOnWQFWuX+GB4bBFr1bwU6+SJNx4ZVrNhJcvD9wgl96iQ3+N45SQ2+fHE+d5IbfGkn0eCLnSQHH5Xbb1pv8pEbfFRuv2nFEQMeqir9CGIHqcTHEXkcI8Q0a/vuJPqOxS+WKYxRs9/DQii6HKv6FnuteAbEOH7jpa5zIh9zgyPyki0R3rbzs0Th922yRqDAmZM/vdRwU2p5qfhlwM8S1bKjdkMv6doNSyQ+Jxe4CPOOF/3YS/FnGJ4Z8jsvo63axdN3fusFjr2Vj0s01klAj8kxf+pF62ppPCLpd+OoHuLfieLnTz9GQLRxkA1Ioug7rGxAEkXHIGYDkmInyYCkN05yAUkUfbiUXUeltiFmO3SSfU2ndntK+yYfudd06uVv85F8TX/npGxwkntNj50kX9Opb4jZjp1k3xT6hpjtN06Sbwp9Q8x2vjifO0m+KfQNMduxk+ybwv2trjf5SL4pkNzXEr6/jkrRyV1pgb6/0fUmH0mBvr/RFecjK9BvnJQNTpICHTrJCvSOjS7asdFFOza6aMdGF+3Y6KIdG120Y6OLdmx00Y6NLrq/0UU7Nrro/kZXLNDZddRxbBh8oZPs4Ms7oU+dJAffGye5wZcuzudOkoMv6yQcfKGT7OAb99+04nwkB59ueNOKXqSTAUkU3cWVfpHWvmGKpffnrXE+klOs+9tccT6yU6w3TsoGJ8kplmZPngqmWBx9uJVV+dhJUuV/4YQ+dZJT+XdOUiqfL87nTnIqn3YSqXzsJKnyXG6r65t85FSeS7uvJe3+OzCH+znJlU6Ol8RzKs/ltrq+yUdO5bno3+YjqfLvnJQNTnIqHzvJqnzd8HFB7CSr8nXDxwVvnCRVvm74uCBfnM+dJFW+bvi4IHaSVfl2W13f5COp8o3+VuWTL9LcNqxixU6yg69tWMV64yQ5+NqGVax8cT53khx8bcMqVuwkO/j67VWsN/lIDr5+fxUrnlCoX4V5BDEzHJ1MKGMdFA8XpNKHMQcFQpp+F7tTyzqjtD7PrAy8hA/yNckqHdYFvodXcXjWnHhvlVFe95LIyVjHUo/Rg3xE9yEnT8v5hZMPT8sZ88YPK00veGTk8T0r0SGnHkLBrQZHRjKHd6+uC+776BJ52XHMNvOOY7aZ7x+zzbzjmG3mHcdsx3nJnnzM4WZB9uRj5kBnkycfhz7SJx+zbLjnM66U7MnH8RAa67jhrnj78I8hJG3HEJK+YwgJ3R9CwjuGkISz2eRB6Bxtcuk621Prx+VJD8Nw2yA9DKMPurLDMPKRH4bRJ13pYRhWypZhSMfhR+qFz8Po1q7s4cc8wtuPcocfxzlJHn6cdxIcfvzGSe7w49hJ8vDj2Eny8OM3HWU9lumQaPoV7YekO0q03ZXuKGFOsh0l7STqKLGTZEcJnWQ7Sugk3VF2XHAi0R5C9uETzvXbWgXhL1eHfe+yEh5XONbtlYT32v7Wy3p7eWyyh0fVR+9Afg/A4EM+9KK8Dg9XjqZesRddd1eU48CVql+5KcdYZXrYUj71U+ZFm+d7Q8MFnl/66X6P8WPN6PjYD5e1fFa+vPX+zs9zR+HyUxsFx8RKiZfSfSGu4y0H9VdeDl8ThJfwG16ivMQ186iM5aaRfDqoymM3c92K3L7I+M8a1nBwrgWKx9LaS/XMO8ErYX7phN2JfOqkp5y8uedjiUSlA/vut4VKqeH1tEvHv4zH8aEPiXy8uVXm6igD+m2vv8jIWG9E48s06kdGwlez4xrMjwcl7icfv8nJetfUGuQkvlTGvyVteE/VzwaOPvaiNtbL2cNm7/ffr+uR6HOvLdf11HWF0fNOXl+N/pGRqLOtLSnGi3aO/gsfzWe5DT/G+wdeOH68rqfQ4XnhH07C87vWI6jhvbTyvc+28ACDeUbYtXdSgmUWiT74Kn7z42NlHJZ8vt+PLj2MnE1ePh97yV4bL9HxhtnlgHyB8JvWH1kJK5eXOhVuGnkJm7q7UBI+4X82dQ9Xw/zG0a/3mv2oXtnS1LKjfkMv6Q5Dx44OE1Vu8xicNl5XblIrm7y+e16i6VeX9Q7dRfi1QlEolmsxucEbBOlvMjLWUthjU0eDjHCo/KOsDSaBb45/PMlCN93frh42rArIb+r20cXWrRsPsQyKFB4s3/yFHt7PpP3KiTYfPvrKyRHt3B2+XV1gCvd41fuP/+uB//yf/8t//7//9b/+53/+9//yX//tfzx/WY96Pbzq0WZ/LU+zu0luspvi5nBTl1kON4ub1U1PrXhqxVMrnlrx1IqnVjy16qlVT616atVTq55a9dSqp1Y9teqpVU+teWrNU2ueWvPUmqfWPLXmqTVPrXlqzVPrnlr31Lqn1j217ql1T617at1T655a99TIUyNPjTw18tTIUyNPjTw18tTIUyNPjT019tTYU2NPjT019tTYU2NPjT019tTEUxNPTTw18dTEUxNPTTw18dTEUxNPbXhqw1Mbntrw1IanNjy14akNT214asNTU09NPTX11NRTU09NPTX11NRTU09NV2rtONwsblY3m5vdTXKT3RQ3h5uemmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWjKeZnFzpkbzD5qbM7Xnoms3LTFzpvZ8peimJWbO1J4ryt205PmxQzctMbO4Wd1sbnY3Z2o8TXZT3Bxu6jJNS8wsblY3m5vdTU9NPDXx1MRTE09teGrDUxue2vDUhqc2PLXhqQ1PbXhqw1NTT009NfXU1FNTT009NfXU1FNTT01XanQcbhY3q5vNze4mucluipvDTU+teGrFUyueWvHUiqdWPLXiqRVPrXhqxVOrnlr11KqnVj216qlVT616atVTq55a9dSap9Y8teapNU+teWrNU2ueWvPUmqfWPLXuqXVPrXtq3VPrnlr31Lqn1j217ql1T408NfLUyFMjT408NfLUyFMjT408NfLU2FNjT409NfbU2FNzLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHX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4nxVnK+K81VxvirOV8X5auOrja82vtr4auOrja82vtr4auOr/brz7vYiN3In33l3Cxkuvtr4auOrzflqc77anK8256vN+Wpzvtr4auOrja82vtqdeQfzDuYdzDuYdzAvvtr4auOrja82vtr4auOrja8294Ob+8HN/eDmfnBzvtq5r+cd5p3MO5l33tfznsyLrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNr/a+v48294Ob+8HN/eDe9/fR5n5wc77anK8256vN+Wpzvtr4auOrja82vtr4ap+7zuf1IjdyJ9/X1XmFfLkHXx18dfDV4Xx1OF8dzleH89XhfHW4HzzcDx7uB08r8l3n0+558uCrg68Ovjr46uCrg68Ovjr46vT7ej746uCrg6/OuO/fg68O56uDrw6+Ovjq4KuDrw6+OtwPHu4HD+erw/nqcD94uB88+OpwP3g4Xx3OV4fz1eF8dSZcPr86fH51+PzqzPs+Onx+dfDVwVcHXx18dfDVWXAXXHx18NVZcBevKz6/Onx+dfDVwVen4BbcgltwC27BxVcHXx18dfDVwVcHXx18dfDVwVcHXx18dThfncPr6sDlfvAcXleH1xW+Oof30fXVeF1fjdf11Xi9fnsfjdf11Xi9ws9M8iIXefN3z81vX408uZE7eZAf7phPnuSHOx7W21ff/yDUePfbf/K5+e2r9Cc38sPN85hvX31yyJP8cFNPLvLD/e55jne//ZPfvvrkhzuf5/z21Sc/3O/O53j323/yw/3ufI53v/0nP9z1fsxNPje/fbWex3/76pMfbj3P+e2rTw754dazX29fffLD3c9ze/vqkx/uedb57atPbuSHe541f/vqkx/ueZ7z21ef/HDP85zfvvrkb+7XJ65PPjc/vvrJ7cnPWj2++snf3NUe7uOrnzzJi1xPfl6Hj69+8rn58dVqz3N+fLXa8zwfX/3kh9ufdXh89ZMfbn+e2+Orn1zkh9uf197jq09+fLXe75HHVz+5kx/ueJ7b46uf/HDf753HVz/54b5fz4+vfvK5+fHV1yeWT27khzuf9X989ZNDfrjzmevx1U8u8sOdb9b5Lb/77V+fED65kTv54X53j8e73/6TH+53J3+8++0/ucibfG5+fPWTG7mTBzlk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Gr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46v3v32+v53W+a7317f/zbTfPfb6/vfRZrvfvvXtw9PfrhjPDnkh5t3XuSH+/1vrMx3v/0nn5vfvprPc3j7aj7P4e2rT36483nOb1998sNdz3N7+2q1v/363f//h7/+6R/+8c9//H+/+1///vW//+df/+kP//Knv/zT53//5d/++edP/vGvf/rzn//0f//+n//6lz/88X//61//+Pd//ssfvv/sd6/v/3y/5P+urV+9/f7rh9vn+t99vRXSvy5+Hft+/+t3431l5ftK5etK+/zQ1xp//bd//9D3G+b7Uj2X9uv78fr3433/7dF/pf/8va9Fmev7j8dvz6C3X/25lP/8pObPg/T9a+yfB0l+5Xz/8frPf6Pu43495een9r1Uv0b/vnTuXzy/ep75Xz8L8PU7+9fX767P8F8nll9fp4cf9tfh4et/98/QX7/Xvn72efqt/U8foN9nVb/680Tb+C+u5betGl8LPs9vm/LF/XoT/rYha3yt7Hz+yvzvd6PdlRznV94LUv/l4n/+/G9/+/3f/gM=", + "verification_key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJpAAAAAAAAAAAAAAAAAAAA6vi0\nzW19rbgn8NcLyNe2Bn8AAAAAAAAAAAAAAAAAAAAAAAWHd1/6+WVxTjgVSJOwcwAAAAAAAAAAAAAA\nAAAAAPuDagrW7Qj9ooYrIYkZTNSlAAAAAAAAAAAAAAAAAAAAAAAV6cKp+HTqOjQLp7gV9gwAAAAA\nAAAAAAAAAAAAAADN/Y4iYcd6NakSBlJtbQn3YgAAAAAAAAAAAAAAAAAAAAAAFnQLtFoReHq7imlf\nYpd0AAAAAAAAAAAAAAAAAAAA+wMkAMIW3S+AeMl+hqhe+8kAAAAAAAAAAAAAAAAAAAAAAC2K7UNL\n3pIIFeuNCiUlBQAAAAAAAAAAAAAAAAAAAPbwiu6EQcg+esU8vOm1aDsxAAAAAAAAAAAAAAAAAAAA\nAAAtkfMVJsgnZZbxTrf12hMAAAAAAAAAAAAAAAAAAADE12T9tLHArJ3iaebhWwv1lAAAAAAAAAAA\nAAAAAAAAAAAAB20+TGAR1dwVoWFdjhopAAAAAAAAAAAAAAAAAAAAnxvfyveRqg4yYs/ZCebuOywA\nAAAAAAAAAAAAAAAAAAAAABl/hpDG+B4WvFBTx4QyWQAAAAAAAAAAAAAAAAAAADvEG17g1ZXW+H5h\npAo9iKoBAAAAAAAAAAAAAAAAAAAAAAAuoEzCLN6cDu4XP/2vRqkAAAAAAAAAAAAAAAAAAAAH3z9m\nAzzzYZm1V7gZ+0CKuQAAAAAAAAAAAAAAAAAAAAAAJyH1T3YnmprCOsO6AlQMAAAAAAAAAAAAAAAA\nAAAACW6ZwivASo/dgevheMmdNqEAAAAAAAAAAAAAAAAAAAAAAB/zpdVMusxPObOhuo/8kQAAAAAA\nAAAAAAAAAAAAAKsc18eQZyXbTVvDA5lUeJ+kAAAAAAAAAAAAAAAAAAAAAAAZMa7eF6cd9XwZC2xI\nV9IAAAAAAAAAAAAAAAAAAAAYXt82TNiH2zl8JgStBLm82gAAAAAAAAAAAAAAAAAAAAAAGjNgrZZe\nXJfkSsQLON6DAAAAAAAAAAAAAAAAAAAAmgwq91f09SFJVigyejeFCvQAAAAAAAAAAAAAAAAAAAAA\nAAixVKJ/wMLrF0uVfVziuwAAAAAAAAAAAAAAAAAAAO0Qp7bTwCDWKpI7W9OWGR0TAAAAAAAAAAAA\nAAAAAAAAAAAiqKqwFC76lCbUvzIesCEAAAAAAAAAAAAAAAAAAADVG2iCG35I9qRbWgW0UsfzswAA\nAAAAAAAAAAAAAAAAAAAABiTi4A6n2VvYVJIuBzfCAAAAAAAAAAAAAAAAAAAAgop+UYg7zN/+WAPm\nyWIqftYAAAAAAAAAAAAAAAAAAAAAAClrwCcW+aWdOzokiOYqQgAAAAAAAAAAAAAAAAAAAOsobJuS\nt+imAGFzOptrwNZvAAAAAAAAAAAAAAAAAAAAAAAhZeD3WmPp9Gg3c4Qf5ekAAAAAAAAAAAAAAAAA\nAADAhHxl1xDYibr4ekRkWNz0HAAAAAAAAAAAAAAAAAAAAAAAKeyF/ptXu/eQ3z7nVhUzAAAAAAAA\nAAAAAAAAAAAAmZdG8c2W5ariW6biv+E6+S8AAAAAAAAAAAAAAAAAAAAAABd2cNbQMoCMlv8fz2gA\njgAAAAAAAAAAAAAAAAAAAEcWZ0LCJu4qkx88ji7RHxq4AAAAAAAAAAAAAAAAAAAAAAAYYQbE5F+L\nm2X2VMNN8FcAAAAAAAAAAAAAAAAAAABx6SCa1sEOlUBOfm2G0FR+cAAAAAAAAAAAAAAAAAAAAAAA\nHbDpHSLE7xkvEsT0z89SAAAAAAAAAAAAAAAAAAAACqCKrRT+sYb7Adtxoqcq03wAAAAAAAAAAAAA\nAAAAAAAAACvy+c+uJWFQRs9Nxq3e/AAAAAAAAAAAAAAAAAAAAPiDOxwSnoZjYHG8NFMM7vtNAAAA\nAAAAAAAAAAAAAAAAAAAkfvGeisH7J4VZ93dHhbQAAAAAAAAAAAAAAAAAAADGmTrwteXvtfbXJ2Kc\nAJwgZQAAAAAAAAAAAAAAAAAAAAAAGSzEYMcCeMu82MHLGgpKAAAAAAAAAAAAAAAAAAAAu40KrxWt\nUHMUKc6dUA+L7eAAAAAAAAAAAAAAAAAAAAAAAAPZA6T2tVbVMvVGftb3XQAAAAAAAAAAAAAAAAAA\nAPxWP3hhvjWZAnc1CUBivFIAAAAAAAAAAAAAAAAAAAAAAAAfgzJHCuZ1H66fvaGxUxUAAAAAAAAA\nAAAAAAAAAABVnC/95jotUXsi9iyC16ojkQAAAAAAAAAAAAAAAAAAAAAAJbYxiRdbFL5elFnRQqUJ\nAAAAAAAAAAAAAAAAAAAAmNLnyu7gtoTKbRXdp0L2r5QAAAAAAAAAAAAAAAAAAAAAACCYNPCi+Zig\nK2OZ8eHjIQAAAAAAAAAAAAAAAAAAAATVRmp/S9lHEjJwY3V6nG5WAAAAAAAAAAAAAAAAAAAAAAAP\nyJ1G2PkJneEiX2s3LN0AAAAAAAAAAAAAAAAAAADTbXdFtpGUfQbfrPxdMfsCYAAAAAAAAAAAAAAA\nAAAAAAAAEhzP1a8c0vhl3YvMThV7AAAAAAAAAAAAAAAAAAAAuxGtX9i3YKm1PsN5tOeiJDoAAAAA\nAAAAAAAAAAAAAAAAACLdabmYukgSfcEQToBmAgAAAAAAAAAAAAAAAAAAABSsFgqk7tlxLPGcuwHf\n9RrEAAAAAAAAAAAAAAAAAAAAAAACvqtHKG/PcsTAyAz0Rq0AAAAAAAAAAAAAAAAAAABQOoY6LL5k\nGb3KYT4qnKvlrwAAAAAAAAAAAAAAAAAAAAAACcHvV53UYPy32uPwmCPWAAAAAAAAAAAAAAAAAAAA\nedDV4GOHc5wi3z0/6bmkZDYAAAAAAAAAAAAAAAAAAAAAAC8/pMGI+soZyDlRyP+hvAAAAAAAAAAA\nAAAAAAAAADAl4EWAcVvZbIZ44579ovj0AAAAAAAAAAAAAAAAAAAAAAAnB/iGAh1818EsA8y6wiEA\nAAAAAAAAAAAAAAAAAACn90bKLkBDqNf0JmsUVS0qngAAAAAAAAAAAAAAAAAAAAAABZ1ah06/DK+H\nY06/om2rAAAAAAAAAAAAAAAAAAAAEf2a8omsEvM9OUiuOSStmxwAAAAAAAAAAAAAAAAAAAAAABnr\nonmn9T3agkgvr36QOAAAAAAAAAAAAAAAAAAAACGoyVZEGtclK1/Vfwk62/ThAAAAAAAAAAAAAAAA\nAAAAAAAC/ZdG8KMv886X+rcoILAAAAAAAAAAAAAAAAAAAACPjO8rsC5TEleuhB8jscSUWAAAAAAA\nAAAAAAAAAAAAAAAAGGsf4Ae+9Ud/KsL7wly+AAAAAAAAAAAAAAAAAAAAb//WpdRZVeBeGVWX/ii3\nrW0AAAAAAAAAAAAAAAAAAAAAABVhxeKvVVE8Rf3x/MfEFwAAAAAAAAAAAAAAAAAAAIPAAhov7gBn\nizaeHYQG4BkuAAAAAAAAAAAAAAAAAAAAAAAYYvhL5clAUDJ6HjaMljQAAAAAAAAAAAAAAAAAAADS\nItHpnH8klX+PLkgBQt+q+AAAAAAAAAAAAAAAAAAAAAAAAcM6AT/wBU8VNiX8pRUsAAAAAAAAAAAA\nAAAAAAAAfZCl6BnyoDva6K9iMQhqukwAAAAAAAAAAAAAAAAAAAAAADAdZ64gzxYtDoOJ4mNH1AAA\nAAAAAAAAAAAAAAAAAHHfIoAH9X0/8o0RmibJx2oUAAAAAAAAAAAAAAAAAAAAAAAbg87tPPPwlYem\nT0WxiY0AAAAAAAAAAAAAAAAAAADK5xtSDgueAtMqmS0ea30zkwAAAAAAAAAAAAAAAAAAAAAAGW30\nm5+RtMyrj3EJ/QSFAAAAAAAAAAAAAAAAAAAAxBC44I4pGbBBNLjf6HZGtE4AAAAAAAAAAAAAAAAA\nAAAAAA31wEwt50hXYVSeSjIQjgAAAAAAAAAAAAAAAAAAAHaZ0fRlIeVZBxbLF9jeWCGtAAAAAAAA\nAAAAAAAAAAAAAAAKJ7y1pZtJHU/0aPFQns8AAAAAAAAAAAAAAAAAAACUfIny2oQBBPCysxvYuIMp\n8wAAAAAAAAAAAAAAAAAAAAAAG2Kqyc/ls2Mtue3M9g91AAAAAAAAAAAAAAAAAAAAfU/ycr7oZRFb\nMCkj7p8ABXAAAAAAAAAAAAAAAAAAAAAAACXQFAcs/5KjJJV8YIWmRwAAAAAAAAAAAAAAAAAAAOaf\nxuBBpfdPJeBI0YfovNBiAAAAAAAAAAAAAAAAAAAAAAAeF2U6zn3hbj0ZqL1OsqAAAAAAAAAAAAAA\nAAAAAABncQt79wuRmYVXCYZu1cg9kwAAAAAAAAAAAAAAAAAAAAAABSLBO+tHCbMuVW7NZA+oAAAA\nAAAAAAAAAAAAAAAAEO48WLMafa41f71yRnFr3zAAAAAAAAAAAAAAAAAAAAAAAB6tayS9mQxhkGQz\nUzPO3AAAAAAAAAAAAAAAAAAAADdjgwQLwOq/uoVdTSQ+LIJ+AAAAAAAAAAAAAAAAAAAAAAAMW/vW\n5ScFXU6XmPn9clgAAAAAAAAAAAAAAAAAAAAVskDO0OYiStUd5bmE4IBjhQAAAAAAAAAAAAAAAAAA\nAAAAHYHOi6K9l855grvWskHxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBBWzq82mv+LKc\nFloK3oGPewAAAAAAAAAAAAAAAAAAAAAAIPhmunmO8MyL+Cl04iWYAAAAAAAAAAAAAAAAAAAAyVUZ\n6qS+u+KAU71fXYBHF5MAAAAAAAAAAAAAAAAAAAAAAAgYqrld0r2WT1o9Eb4trQAAAAAAAAAAAAAA\nAAAAAGvMegX/lalrKJQkxfczZw2WAAAAAAAAAAAAAAAAAAAAAAAAxDcm91tv2g3iLODg36sAAAAA\nAAAAAAAAAAAAAAAdCgnXF47JO614WPluZPC0jQAAAAAAAAAAAAAAAAAAAAAAL5tuC04sAZaN5cMk\ngqp9AAAAAAAAAAAAAAAAAAAAs8PPbbWlw3xztOqrx8K9tdUAAAAAAAAAAAAAAAAAAAAAAAGaqh23\nOphDKX3dUwWgOQAAAAAAAAAAAAAAAAAAAPMofO4kQhdTybsV1xRQMcptAAAAAAAAAAAAAAAAAAAA\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "commit_public_user", @@ -3992,21 +4236,14 @@ "error_kind": "string", "string": "Index out of bounds" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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EwAqGBMUHAoKEwIcChEKAgQqEy8RBCoKORMAKhETCi0IAREAAAECARwKEhMAJwISACAnAh4EPy0IAD8tCgtALQoSQQAIAB4AJQAAI9MtAgAALQpAGAQqOxgSACoTEhgnAhIAQCcCHgQ/LQgAPy0KC0AtChJBAAgAHgAlAAAj0y0CAAAtCkATBCo8ExIAKhgSExwKPhIAJwIYAEgnAh8EOy0IADstCgs8LQoYPQAIAB8AJQAAI9MtAgAALQo8HgQqEh4YACoTGBInAhMAaCcCHgQ7LQgAOy0KCzwtChM9AAgAHgAlAAAj0y0CAAAtCjwYBCoQGBMAKhITEBwKOhIAJwITAHAnAh4EHy0IAB8tCgsgLQoTIQAIAB4AJQAAI9MtAgAALQogGAQqEhgLACoQCxItCAELJwIQBBgACAEQAScDCwQBACILAhAtChATLQ4SEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATLQ4LERwKGgsAHAoXEAAcChkSABwKGxMAHAocFwAcCh0YABwKFRkAHAoUFQAcCgoUAC0IAQonAhoEDAAIARoBJwMKBAEAIgoCGi0KGhstDgwbACIbAhstDgsbACIbAhstDhYbACIbAhstDhAbACIbAhstDhIbACIbAhstDhMbACIbAhstDhcbACIbAhstDhgbACIbAhstDhkbACIbAhstDhUbACIbAhstDhQbHAoJCwAcCgcJAC0IAQcnAgwEDAAIAQwBJwMHBAEAIgcCDC0KDBAtDgYQACIQAhAtDgsQACIQAhAtDggQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAtDgkQACIQAhAuDIBKABAuCIBG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", - "debug_symbols": "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", - "brillig_names": [ - "commit_public_user" - ] + "bytecode": "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LQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLS0KFSUjAAAZnwwqJScsJAIALAAAMa0jAAAZsS0LDiUEKjMlDgAqKg4lHAo1DgAtCAEqAAABAgEtDiMqLQgBLCcCLQQhAAgBLQEnAywEAQAiLAItLQotLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4tChUhIwAAGxEMKiEnLSQCAC0AADE9IwAAGyMtCyosBCoOLCoAKiUqDi0IASUAAAECAS0OIyUtCAEqJwIsBCEACAEsAScDKgQBACIqAiwtCiwtLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQIt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", + "debug_symbols": "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" }, { "name": "constructor", @@ -4041,18 +4278,15 @@ } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "constructor" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "get_htlc_public", "is_unconstrained": true, "custom_attributes": [ "view", - "utility" + "public" ], "abi": { "parameters": [ @@ -4180,195 +4414,30 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3095323350861740601": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3367683922240523006": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] - }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" - }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "13649294680379557736": { - "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14225679739041873922": { - "error_kind": "string", - "string": "Index out of bounds" - }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, - "14657895983200220173": { - "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" - }, - "15366650908120444287": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" - }, - "16446004518090376065": { + "9174444391250494040": { "error_kind": "string", - "string": "Input length must be a multiple of 32" + "string": "Function get_htlc_public can only be called statically" }, - "16954218183513903507": { + "13699457482007836410": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" + "string": "Not initialized" }, - "17595253152434889169": { + "14225679739041873922": { "error_kind": "string", - "string": "offset too large" + "string": "Index out of bounds" }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" - }, - "17879506016437779469": { - "error_kind": "fmtstring", - "length": 128, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "18194595712952743247": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] } } }, - "bytecode": "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", - "debug_symbols": "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DWwD28A2sA1sA9vANrANbAPbxDaxTWwT28Q2sU1sE9vENsPmkygXFrCCDeyggAoaOEBsBVvBVrAVbAVbwVawFWwFW8FWsVVsFVvFVrFVbBVbxVaxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGltjZ6OLYwA76TTgnDbKgETQvGuedTKcSVINaUA+SIA2yoBEUjhKOEo4SjrOtzbGDAvomnI4GHpvQb8n77MkLva0vLGAFG9hBARU0EFvF1rA1bN7WPkPAZ08u7KCAChroNt863tYneltf6MO4TjWoBfUgCdIgr3gcLv5iyu6zFnxaZPdJCT4tcqGACvqS+l7wJr1wBnqTXlhAv9Hl1IIOl99S8EmRCxU8XD5m5JMiF85Ab9HzSPIWvfBYs1PhLXphB33NnDTIgkbQXOTdeZJX9M3mP97ndvUf7zYcBzgD/cf7wmNJffKET3Fc2MAOCnjYfPH9t/uk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", - "brillig_names": [ - "get_htlc_public" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "is_contract_initialized", @@ -4379,7 +4448,7 @@ "abi": { "parameters": [ { - "name": "Id", + "name": "id", "type": { "kind": "field" }, @@ -4401,18 +4470,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -4420,22 +4486,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -4452,19 +4512,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -4475,57 +4554,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -4541,13 +4612,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -4556,32 +4623,19 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "is_contract_initialized" - ] + "bytecode": "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", + "debug_symbols": "TJ3JjvU8c6Tv5V/34nDIgb6VXjR6NAwYNtDDyjffpQwmIzb+nvj9FoMilXFUUpbOf/zjf/zP//b//vm//Mu//a9//z//+Kf//B//+G//+1/+9V//5Z//y7/++3//r//3X/793/7+1//4x+/7P/vv/67/9I89/vFP/vef+Y9/yr//rH/80/j9/Xf//Xf+/df+/rv//ut///3+Wdz/5v3vwX/td/877n/n/e+6/933v3b/e8ezO57d8eyO53c8v+P5Hc/veH7H8zue3/H8jud3PL/jxR0v7nhxx4s7Xtzx4o4Xd7y448UdL+54ecfLO17e8fKOl3e8vOPlHS/veHnHyzveueOdO96545073rnjnTveueOdO96545073vj9GkbDbFgNu8EavCEasqFHHj3y6JFHjzx65NEjjx559MijRx498uiRZ488e+TZI8+/kefvg91gDd4QDdlwLqxfw2iYDT3y6pHXN/L4wBuiIRvOha+KAKPhG3l/8I2cH+wGa/CGaMiGv5HXX+WNr6QAo2E2/I281ge7wRq+kb8V+yoLkA3fyOcPvuICjIbZsBp2gzV4QzRkQ48cPXL0yNEjf5W2v/X5Sg1gDd4QDdlwLnwFBxgNs6FHzh45e+TskbNHzh45e+TTI58e+fTIp0c+PfLpkU+PfHrk0yOfO/L8/Rq+kdcHs2E17AZr8IZoyIZz4atBQI88euTRI48eefTIo0cePfLokUePPHvk2SPPHnn2yLNHnj3y7JFnjzx75Nkjrx559cirR1498uqRV4+8euTVI68eefXIu0fePfLukXePvHvk3SPvHnn3yLtH3j2y9cjWI1uPbD2y9cjWI1uPbD2y9cjWI3uP7D2y98jeI3uP7D2y98hfDW7/IBvOha8GAaNhNqyG3WAN3tAjR48cPXL2yFWD54PZsBr+Rrb9gTV4QzRkw7nw1SBgNMyG1dAjnx759MinRz43kea5ibR+v4bRMBtWw26wBm+IhmzokUePPHrkrwYtPlgNu8EavCEasuFc+GoQMBp65Nkjzx559sizR/5q0PKDbDgXvhoEjIbZsBp2gzV4Q4+8euTVI+8eua4n7YPZsBp2gzV4QzRkw7nw1SCgR7Ye2Xpk65GtR7Ye2Xpk65GtR/Ye2Xtk75G9R/Ye2Xtk75G9R/Ye2Xvk6JGjR44eOXrk6JGjR44eOXrk6JGjR84eOXvk7JGzR84eOXvk7JGzR84eOXvk0yOfHvn0yKdHPj3y6ZFPj3x65NMjnzvy/v0aRsNsWA27wRq8IRqyoUcePfLokUePPHrk0SOPHnn0yKNHHj3y6JFnjzx75Nkjzx559sizR5498uyRZ488e+TVI68eefXIq0dePfLqkVePvHrk1SOvHnn3yF2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQN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uIibaEQnBjGJdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3RjlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhllS/4PhepjSqY7BxETfRiE4MYhLPxVkNhI2DOImLuInlhleUODGISTwPK0suDuIkLuIm0m3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk63ypJhhUZ0YrllYRLPw8qSi4M4iYu4iUZ0It2CbkG3pFvSLemWdEu6Jd2Sbkm3pFvS7dDt0O3Q7dDt0O3Q7dDt0O3Q7Tw3vDHs4iBO4iJuohGdGMQk0m3QbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk43p5vTzenGLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsqWbM8b25dFY3ZuMmGtGJQUzieVhZcnEQ6bbptum26VZZMmdhEJN4HlaWXBzESVzETTQi3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3ZJuh26Hboduh26Hboduh26Hbodu57lVQ2fjIE7iIm6iEZ0YxCTSbdBt0G3QbdBt0G3QbdBt0G3QbdBt0q2y5Hvn76w2z8ZFLLdTaEQnBjGJ52FlycVBnMRFpNui26Lbotui26Lbptum26bbptum26bbptum26bbppvRzehmdDO6Gd2MbkY3o5vRzejmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3pNuh26Hboduh26Hboduh26Hbodt5bvb7EQdxEhdxE43oxCAmkW6DboNug26DboNug26DboNug26DbpNuk26TbpNuzBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzBL0vX7fcDLR93rxPKwsuTiIk7iIm2hEJ9Jt0m3SbdGtsmR54SQu4iYa0YlBTOJ5WFlykW6bbptum26bbptum26bbptuRrfKkmWFk7iIm2hEJwYxiedhZclFujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbeW7oe704iJO4iJtoRCcGMYl0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023QzujFLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6zBH2vKz5ElgAHcRIXcRON6MQgJpFum26bbptum26bbptum26bbptum25GN6Ob0c3oZnQzuhndjG5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdkm6VJfVld+h7vTiJn1t9dxn6Xi8a0YlBTOK5uND3enEQJ3ERN9GITgxiEuk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26WZ0M7oZ3YxuRjejm9HN6GZ0M7o53ZxuTjenm9PN6eZ0c7o53ZxuQbegW9At6BZ0C7oF3YJuQbegW9It6ZZ0S7ol3ZJuSbekW9It6Xboduh26Hboduh26Hboduh26MYsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLB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" }, { "name": "lock_private_solver", @@ -4663,7 +4717,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -4719,7 +4773,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -4748,7 +4802,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -4942,7 +4996,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -5293,351 +5347,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" } }, { - "name": "is_static_call", + "name": "start_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -5646,30 +5799,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -5726,26 +5875,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -5754,53 +5918,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -5809,50 +6000,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -5861,17 +6061,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -5894,7 +6094,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -5950,7 +6150,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -5979,7 +6179,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -6173,7 +6373,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -6308,45 +6508,40 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "285656119219400463": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "Field failed to decompose into specified 32 limbs" }, - "2709101749560550278": { + "576755928210959028": { "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." + "string": "0 has a square root; you cannot claim it is not square" }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3095323350861740601": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ + "kind": "field" + }, { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } ] }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3206131020419630384": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -6355,6 +6550,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -6363,29 +6562,6 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6418028854678020178": { "error_kind": "string", "string": "FundsNotSent" @@ -6402,45 +6578,84 @@ "error_kind": "string", "string": "Invalid public keys hint for address" }, - "11418088424205762236": { + "10090043878309646342": { "error_kind": "fmtstring", - "length": 98, + "length": 101, "item_types": [] }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -6456,13 +6671,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -6471,52 +6682,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnkfxV/UgTbIkT6pJbVLkeaeSREmclBqcGpwanBqR5zWoTYo871SSKImTJEmTLMmTUkNSQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1PDUsNSw1LDUsNSw1LDUsNSw1LDUsNTw1PDU8NTw1PDU8NTw1PDU8NTo6ZGTY2aGjU1amrU1KipUVOjpkZNjZYaLTVaarTUaKnRUqOlRkuNlhp3njf6h/uT3yupJD00mgRxkiRpkiV5Uk1qk+48H1SSUqOkRkmNkholNUpqlNQoqUGpQalBqUGpQalBqUGpQalBqUGpwanBqcGpwanBqcGpwanBqcGpwakhqSGpIakhqSGpIakhqSGpIakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhqVFTo6ZGTY2aGjU1amrU1KipUVOjpkZLjZYaLTVaarTUaKnRUqOlRkuNNjWiWG1QSaIkTpIkTbIkT6pJqZF53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53mae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae0zXznK4rNUpqlNQoqVFSo6RGSY2SGiU1SmqU1KDUoNSg1KDUoNSg1KDUoNSg1KDU4NTg1ODU4NTg1ODU4NTg1ODU4NSQ1JDUkNSQ1JDUkNSQ1JDUkNSQ1NDU0NTQ1NDU0NTQ1NDU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avSq0atGrxq9aok3ub70qtGrRq9a4k289KrRq0avGr1q9KrRq0avGuerxvmq0atGrxq9apyvGuerRq8avWr0qtGrRq8avWr0qg28g+tLrxq9avSqDbwDL71q9KrRq0avGr1q9KrRqzbxTq4vvWr0qtGrNvEuvPSq0atGrxq9avSq0atGr9rCu+717fSq06tOr/rnevsn4QZ3eMATvuvt9KrTq17wlgon3OAO4y146VWnV51edXrV6VWnV51e9cAbA54w+0yvesVb8dKrTq86ver0qtOrTq86veqJN7m+9KrTq06veuJNvPSq06tOrzq96vSq06tOr3rD27i+9KrTq06vOp8HO58HO73q9KrTq06vOr3q9KrTq97xdq4vver0qtOrzufBPvDSq06vOr3q9KrTq06vOr3qE+/k+tKrTq86vep8HuwTL73q9KrTq06vOr3q9KrTq77wLq4vver0atCrwefB8Qm4wgk3uMMDnvBd7yh4S4EDrnDCeAteejXo1aBXg14NejXo1aBXI/BGgzs84AnjrXjp1aBXg14NejXo1aBXg16NirdyfenVoFeDXg0+D47ES68GvRr0atCrQa8GvRr0ajS8jetLrwa9GvRq8Hlw0KvB+Wpwvhr0avB5cHS83L8a9GrQq0GvBuer8fTqe+/0jH6fe25n9vvlgCuccIM7POAJ3/uEZwj8ZbwT78Q78U68E+/EO/FOvAvvwrvwLrwL78K78C68C++63jMY/nKBA67wvb6T+1eT+1eTXk16NenV5Hw1OV9NejXp1aRXk15NejXp1aRXk15NejXp1Qy8gZdeTXo16dXk8+Dk/tWkV5NeTXo16dWkV5NeTXo1K9464Anfn99JryafByf3rya9mvRq0qtJrya9mvRq0qvZ8LYCs8/0atKryefByf2rSa9mw8v5anK+mvRqcr6anK8mvZrcb5/cb5+dfeZ8Nfk8OLl/Nbl/NbnfPjlfTc5Xk/PV5Hw1OV9N7rfPwfWd7PNknzlfTT4PTu5fTe5fTe63T85Xk/PV5Hw1OV9NzleT++1zcX0X+7zYZ85Xk8+Dk/tXk/tXi/vti/PV4ny1OF8tzleL89WiV+sz4AnffV6crxa9Wty/Wty/WtxvX/Rq0atFrxa9WvRqcb99RYEDrnDCeLl/tejVoleLXi16tejVoleLXi3ut6/aYPaZXi16tfg8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+/cMxDPf/vD2zv2aT68e3t55nnPC6/Lp1dr7cHr18NfbPtu7e/Vywg3um2PzgCe8Nn9f85lv/zkdbS7w8c7NFd7e73+oOc58+8sd3t7v35kQZ7795e39/mfZ48y3v1zg7Y392navXt7e2K9t9+rl7f3+lyHizLe/POHt/f5N53Hm21/e3v3ePvPtLfdr2L16OeHtzf16dq9e3t48zznhdXn3qu33/Jlvf3l79/v5zLe/nPD29v06d69e3t6+93b36uXt7Xvtu1cvb2/fz7l79XKFt3fs59+9enl798/FmW9/ecLbO/d7YPfq5e2d+7XtXr28vWvv7e7Vyw3e3rX3effq5e1d27t71T/7OXev+nlv7169jwdc4YQb3OHBc04eX/fx8bmPD7wD76h8Pd6Bd+AdA558L+udeCfeGffrJ+udyeN4Z+dxvJP1TryLfV54F96Fd+FdeBfrXXgX613Xe+bbXy6/v+bMt7+PVx5PHm883nl8wBPGW/AWvAVvqTDegrfgLYPH8Ra8gTcKfPf5zLe/jyePNx7HG3gDb+CteCveynor3sp6K95631dnvv19HG+9P0dnvv15PPEm3uT6Jt5kn5P1Jt6cfA3rbff9fObb38fZ58Z6G97GehvehrfhpVezs97O+4peTXo16dWkV5NezY634+146dWkV5NeTXo16dWkV3NwfenVpFeTXk16NSfrnXgn3omXXk16NenVnHjp1Vx4F96Fl17NhZdeTXo16dVcvJ/XfT8verXo1aJX61PhhBvc4QFPGC+9WqXAwdfgpVeLXi16tejVoleLXi16tejVCtYb9/quwEuvVnS+hvXG5HG89f78Lnq16NWqeOnVolerst7KeunVqngTL71a9Gol+0yvVuKlVyvxJt7k+jb2mV6threxXnq1GteXXq2Gt+FteOnVoleLXi16tXryNayXXi16tThfLXq1BvtMrxa9WgPvwEuvFuerRa/WwEuv1sTL+Wpxvlqcrxbnq0WvFr1a9Gpxvlr0anG+WpyvFuerRa8WvVqL60uv1uL60qt1e1U/t1f18ylwwJWvTx5vcOdrBo9PHl/38fK5jxe8Be/tVf0UvAVvwVvw3l7VT8EbeANv4A28gTca39t5HG+w3sBb2eeKt+KteGve56mst7LeirfirXiT9SbeDB7Hm6w38SbrTbyJN/E2vA1vw9vwNtbb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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "notify_created_nullifier_oracle_wrapper", - "notify_created_note_oracle_wrapper", - "random", - "decompose_hint", - "lte_hint", - "field_less_than", - "build_msg_block", - "attach_len_to_msg_block", - "get_random_bytes", - "get_random_bytes", - "get_app_tag_as_sender", - "increment_app_tagging_secret_index_as_sender_wrapper", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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6DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbT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9ybuTd2bujd1b+re1L2pe1P3pu5N3Zsub+04PFk8WT3ZPNk9SZ4cnmRPiifdm2tJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWiLPpK6kaclzEaebllhyenu+qnfTEktOb88ViW5aYsnp7bn63E1LaNoVT+pKmpZYsniyenJ6e75+dtMSS5Inhyent+cbbTctsaSupGmJJcv6mWmJJd2buDfTEvvZ8KR7E/dmWjJ/ZlpiSfem7s20ZP7MtMSS7k3dm2mJ/Uw8ubzRcXiyXD8j0xJLNk92T5L/bHiSPSmeXDVJ5fCkeyvurayapNI96d6KeyvsPxNPurfq3uqqSarVk+6turdK/rPhSfdW3Vv1mmxek829NffWvCab12Rzb829Na/J5jXZ3Ft3b91rsntNdvfW3Vv3muxek929dffWvSbJa5LcG7k38pokr0lyb+TeyGuSvCbJvQ33Nrwmh9fkcG/DvQ2vyeE1OdzbcG/Da5K9Jtm9sXtjr0n2mmT3xu6NvSbZa5Ldm7g38ZoUr0lxb+LexGtSvCbFvYl7E69J9ZpU96buTb0m1WtS3Zu6t1NL6jMpntQrOU4tmUnz1p7J6snmye5J8p8NT7InxZO6fnZqyUy6t+LeTi15/uzUkpl0b8W9nVoyfyaedG/VvZ1a8vzZqSUz6d6qezu1ZP5seNK9VfdWvSab12Rzb829Na/J5jXZ3Ftzb81r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ha/ot0dx/6rwVeGrwleFr+i3B/32oN8eVXCL/cVXha8KX9Fvj+L+VeGrwleFrwpf0W8P+u1Bvz2K81Vxvip8Vfiq8BX99ijOV4WvCl8Vvip8Rb896LcH/faoCXexv/iq8FXhK/rtUdy/KnxV+KrwVeEr+u1Bvz3ot0dtuJv9xVeFrwpf0W+P4v5V4avCV4WvCl/Rbw/67UG/PerAPewvvmp81fiKfns0968aXzW+anzV+Ip+e9BvD/rt0VwP9vN8MBpfNb5qfEW/PZrrwcZXja8aXzW+ot8e9NuDfns099v7eT4Yja8aXzW+ot8ezf2rxleNrxpfNb6i3x7024N+ezT327vYX3zV+KrxFf32aO5fNb5qfNX4qvEV/fag3x7026O5397N/uKrxleNr+i3R3M92Piq8VXjq8ZX9NuDfnvQb4/mfntP9hdfNb5qfEW/PZr7V42vGl81vmp8Rb896LcH/fZo7rf3Zn/xVeOrxlf026O5f9X4qvFV46vGV/Tbg3570G+P5n57H/YXXzW+anxFvz0m968mvpr4auKria/otwf99qDfHpP7V5P7VxNfTXw18RX99pjcb5/4auKria8mvqLfHvTbg357TO63T54PTnw18dXEV/TbY3K/feKria8mvpr4in570G8P+u0xud8+eT448dXEVxNf0W+Pyf32ia8mvpr4auIr+u1Bvz3ot8fkfvvk+eDEVxNfTXxFvz3otwf99qDfHhNf0W+Pyf32yf0r+u1Bvz3otwf99vj22+fNb+75zW9f/f76+fj02/f9+rev9v36t6/2++sv9/f3ican3/7Jv9yfq56bF3nf/P7+58nXVz9XNzf/cn+uUG4OcpLr5jv79dU3X+5YNy/y5Y77nq+vPvn66v4++Xj32785yJcbdx2ur775cvNyr6++eZE3+XJ/f59yvPvt3zzIl5vr5sv9/Y2V8e63f/Pl/v4GnXj327/5cn//fwjx7rd/83ny9VX9/ubpePfbv/ly+76H66tvLvLl9n1v11fffLl939v11Tdf7u//IDLe/fZvHuTL/f39ofHut3/z5d7P9rvf/nN6v3mSF/ly130/11effH31c3q/eZCDfLn3M//ut3/z5d7P87vf/s2LfLnnvs/rq0++vvo5dd88yJd77uzXV9/8y/05ad/c5EleN7+//yb/cvv+XLz77d88yHHz/Qxc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XzW+anzV+KrxVeOr5nzVm8/Vhsv1YG8+V5vPFb7qzc8Rvmp81fiqDz9H+KoP3MO8h3kP63yY97DOH1/9PiOYH1+98yAH+c09Nxf5cjtuvtzf342V7377N2/y5fbvM4t3v/2bL7fv93z76pOTXOTLnePmSb7c355nvvvt33ye/PbVuu/57atPvtzfzme+++3ffLm/nc9899u/+XL3+3su8iZf7r7f/+2rT77cc9/z21efnOTL/e185rvf/s2Xe+57e/vqk3+5P7tz83ny9dU3j5vvml9fffMv92dHbi5y33zf8/XVN6+bL/f66pvPk6+v5rhrdX31zZcbl3t99c1FbvLlxv0cXl998yZfbt73fH01877P66tvvty863B99c2Xe5+dvfvt3zzJl3ufo7377d98ue+fkeurbx7ky+373q6vvvly3z8711fffLnvz/P11Tdv8uXO+3m4vvrmy513/a+vvjnJlzvvXNdX3zzJl7su6/rqmy933+9zffXNg3y5585+ffXNv9z1ujNeX33zJC/yJp8/8rvf/s2DHOQkF7nJk7zImwx3wB1wB9wBd8AdcAfcAXfAHXADbsANuAE34AbcgBtw482tm8+T80V+c/vmICe5yE2efJ9Fhpvn+fp6keEW3IJbcAtuwS24BbeYt5m34TbchttwG25P8iJvMvNOuHOQg5zkIsOdcCfcCXfCXazzYt7FvIt5F9zVZNZ5sc6LdV5wN9wNd8PdcDfrvJl3M+9m3g13s7+HdT6s82GdD9wD98A9cA/cwzqfZ979epEH+eHuV5KL3ORJXnyfTYY74A64I8hJLnKT4Y5F3uRnnXe8yHADbsANuAE3Jpl5g3mDefHVzkFmnZN1TtYZX+2Em3ATLr7a+Grjq42vNr7aBbfYX3y18dXGV7vgNlx8tfHVxlcbX218tfHVxle74Tb7i682vtr4ak+4Ey6+2vhq46uNrza+2vhq46u94C72F19tfLXx1V5wF1x8tfHVxlcbX218tfHVxld7w93sL77a+Grjq33gHrj4auOrja82vtr4auOrja/O6+Ge1yAHOclFbr7PJC/yJsPFVwdfHXx18NUZcEeTJ3mRNxluwMVXB18dfHXw1cFXB18dfHU4Xx3OVwdfHXx18NXhfHU4Xx18dfDVwVcHXx18dfDVwVen4Bb7i68Ovjr46hTcgouvDr46+Org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Rb+96LfXos+w6DPQby/67UW/vei3F/32ot9e9Ntr0WdYm/3FV/Tbi357LfoMiz4D/fai317024t+e9FvL/rtRb+9Nn2GTf+KfnvRby/67bXpM2z6DPTbi3570W8v+u1Fv73otxf99tr0GTb9K/rtRb+96LfXps+w6TPQby/67UW/vei3F/32ot9e9Ntrc77anK/otxf99qLfXpvz1eZ8Rb+96LcX/fai317024t+e9Fvr03/atO/ot9e9NuLfntt+leb/hX99qLfXvTbi3570W8v+u1Fv702/atN/4p+e9FvL/rttelfbfpX9NuLfnvRby/67UW/vei3F/322vSvNv0r+u1Fv73ot9emf7XpX9FvL/rtRb+96LcX/fai317022vTv9r0r+i3F/32ot9em/7Vpn9Fv73otxf99qLfXvTbi3570W+vTf9q07+i317024t+ex36V4f+Ff32ot9e9NuLfnvRby/67UW/vQ79q0P/in570W8v+u116F8d+lf024t+e9FvL/rtRb+96LcX/fY69K8O/Sv67UW/vei31+F68HA9SL+96LcX/fai317024t+e9Fvr0Nf9NAXpd9e9NuLfnsdrgcPfVH67UW/vei3F/32ot9e9NuLfnsd+qKHvij99qLfXvTb63A9eOiL0m8v+u1Fv73otxf99qLfXvTb69AXPfRF6bcX/fai316H68FDX5R+e9FvL/rtRb+96LcX/fai316HvuihL0q/vei3F/32OlwPHvqi9NuLfnvRby/67UW/vei3F/32OvRFD31R+u1Fv73pt/fruR7s19MXbfrtTb+96bc3/fam397025t+e78G3Kcv2vTbm35702/v14A74A64A+6A+/iq6bc3/fam396vgPv0RZt+e9Nvb/rt/Qq4ybzJvMm8CTfhJtyEm8ybzJtwi3mfvmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ovxpuw224DbfhNtyG23An3Al3wp1wJ9wJd8KdcCfcCXfBXXAX3AV3wV1wn/vt/XqeD/brud/er+f5YL+e54P9eu639+t5Ptiv5/lgv5777f16+qL92nCf++39eu6392vDPXAP3AP3wD1wD9wD9zDvYd7n+WCP5/lgj+f5YI+nz9Dj6TP0ePpXPZ7+VY+nL9rjeT7Y4+kz9Hj6Vz2e/lWPpy/a4+mL9hhwB9wBd8AdcJ/+VY/BvMG8wbwB9+lf9Xj6Vz2evmiPpy/aI+AG3ICbcBNuss7JvMm8ybwJ9+lf9UjWOVnnYp0LbsEtuAW34BbrXMxbzFvM23Cb/W3WuVnnZp0bbsNtuA234U7WeTLvZN7JvBPuZH8n6zxZ58k6T7gL7oK74C64i3VezLuYdzEvvhqL/d2s82adN+uMr8aGu+FuuPiKfnvTb2/67U2/vceBe9hffEW/vem39zhwD1x8Rb+96bc3/fam397025t+e8fTZ+h4+ldNv73ptzf99o4Bd8DFV/Tbm357029v+u1Nv73pt3cE3Kd/1fTbm35702/vCLgBF1/Rb2/67U2/vem3N/32pt/ekXCf/lXTb2/67U2/vSPhFlx8Rb+96bc3/fam397025t+e0fBLfYXX9Fvb/rtHQ234eIr+u1Nv73ptzf99qbf3vTbOybcyf7iK/rtTb+9Y8KdcPEV/fam397025t+e9Nvb/rtHZyvgvMV/fam39702zs4XwXnK/rtTb+96bc3/fam397025t+e8eBe9hffEW/vem3dxy4By6+ot/e9NubfnvTb2/67U2/vfPpX3U+/aum397025t+e+cL7oCLr+i3N/32pt/e9NubfnvTb+8ccJ/+VdNvb/rtTb+9M+AGXHxFv73ptzf99qbf3vTbm357Z8J9+ldNv73ptzf99s6Em3DxFf32pt/e9NubfnvTb2/67Z0Ft9hffEW/vem3dzbchouv6Lc3/fam397025t+e9Nv75xwJ/uLr+i3N/32zgl3wsVX9Nubfnsnvkp8Rb+96bd3LriL/cVX9Nubfnsn14PJ9SD99qbf3vTbm357029v+u1Nv71zw93sL76i39702zu5HswDF1/Rb2/67U2/vem3N/32pt/e9fRFu56+aNNvb/rtTb+9i+vBevqiTb+96bc3/fam397025t+e9Nv7xpwn75o029v+u1Nv72L68EKuPiKfnvTb2/67U2/vem3N/32roT79EWbfnvTb2/67V1cD1bCxVf025t+e9Nvb/rtTb+96bd3Fdxif/EV/fam397F9WA1XHxFv73ptzf99qbf3vTbm357V8Nt9hdf0W9v+u1dXA/WhIuv6Lc3/fam397025t+e9Nv71pwF/uLr+i3N/32Lq4H6bd3cb4qzlf027u4HqwNl/tX9NubfnvTb+/ifFVPX7Q//fYYN19u3K95+yrq5iQXucmTvMibfP7In377Jw9ykJNc5CZP8iJvMtwBd8AdcAfcAXfAHXAH3Levfv9fuP3pt7/z21efPMhBTnKRmzzJiww34CbchJtwE27CTbgJN+Em3IRbcAtuwS24BbfgFtyCW3ALbsNtuA234TbchttwG27DbbgT7oQ74U64E+6EO+FOuBPuhLvgLrgL7oK74C64C+6Cu+AuuBvuhrvhbrgb7oa74W64G+6Ge+AeuAfugXvgHrgH7oF74J6H++m3f/IgBznJRW7yJC/yJsMdcAfcAXfAHXAH3AF3wMVXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1aff/vt7W/rTb//93Uz96bf//l6k/vTbq26+3Fo3J/ly+52bfLm/v2OlP/32T97ky533Pbx9te57ePvqky933ff89tUnX+667+3tq9V/+dNf/a+//fM//u3f/dM//M+/+i//5+df//u///Pf/9s//ss/f/713/73v37/5O/+/I//9E//+D/+5l///C9//w//7d///A9/80//8ve/f/ZXr99//H7c/uuYf4rx1z9fPD6v/9efx9QVPy++Zv71n/4q36/M+n1l1c8r4/NFY/++FL9f9Pth/X1p3Zf26/f7xe/3+/3bP3tR8f17Pf7U8/eP84938HO/J+5L9R/fVH+/Sew/5f5+k5/dqvP7x/M//o31fN+ft3y/aj8vrT9l/L50nr94/hR15399F2D8vOPR3+HHz32tEX8MMH5uSY3Y36FH18/X3rc/xv/vN4jnXa0/xX2jI/+T1+qPrcqfBe/zx6b8cH8ekP+xITN/VrbvX+n/926MZyV/flzqvSDrP138z5//5S9//Zf/Cw==", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "lock_public_solver", @@ -6661,21 +6840,14 @@ "error_kind": "string", "string": "Function lock_public_solver can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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AgACgAMuAgANgAQuAgAMgAUlAAAIiy0KCwIoAgADBIB4JwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgADgAMuAgANgAQuAgAMgAUlAAAIiy0KCwMuCICYAAQuCICZAAUuCICaAAYoAgAHBICbJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAHgAMuAgANgAQuAgAMgAUlAAAIiy0KCwcoAgAIBIC5JwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAIgAMuAgANgAQuAgAMgAUlAAAIiy0KCwgoAgAJBIDXJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAJgAMuAgANgAQuAgAMgAUlAAAIiy0KCwkoAgAKBID1JwIMBFotCAELJwINBFsACAENAScDCwQBACILAg0uAgAKgAMuAgANgAQuAgAMgAUlAAAIiy0KCwolAAAI0SUAAAleKAIAAQSBTycCAgQAOw4AAgABAQCAA4AFgAcuAIADgAguAIAEgAkLAIAIgAeACiQAgAoAAAjQLgGACIAGLgSABoAJAQCACAACgAgBAIAJAAKACSMAAAifJigAgEMAAQAoAIBEBAADKACARQEAACgAgEYEAAAoAIBHBgAAKACASAAAACgAgEkBAAEoAIBKBAABKACASwAAASgAgEwEAAIoAIBNBAAEKACATgQABigAgE8EAAcoAIBQBAAIKACAUQQACSgAgFIEAAooAIBTBAALKACAVAQAFygAgFUEAB4oAIBWBAAgJiUAACHQHgIADAAeAgANADMqAAwADQAOJAIADgAACYIlAAAh+R4CAAwBHgIADQAKKgwNDiQCAA4AAAmeJQAAIgsnAgwAAi0IAQ0nAg4EAwAIAQ4BJwMNBAEAIg0CDi0KDg8tDgwPACIPAg8tDgEPJwIPBBAtCAAQLQoNES4IgEwAEi4IgEUAEwAIAA8AJQAAIh0tAgAALQoRDgsiAA6ASAAPCyIAD4BFABAkAgAQAAAKFCUAACPrHgIADwYnAhEEEi0IABIuCIBFABMuCIBIABQtCgwVLQoOFgAIABEAJQAAI/0tAgAALQoTEC0IAQ4AAAECAS0OEA4tCAEQAAABAgEuDIBGABAtCAERJwISBBgACAESAScDEQQBACIRAhInAhMEFwAqExITLQoSFAwq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", - "debug_symbols": "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", - "brillig_names": [ - "lock_public_solver" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "process_message", @@ -6784,18 +6956,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -6803,22 +6972,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -6835,19 +6998,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -6858,57 +7040,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -6924,13 +7098,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -6939,32 +7109,19 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "vb3friW5cWf9Ln3ti00yIkjqVQYDQ/ZoBgIEyZDlD/hg+N1nM5jkijrlw8qz9+m5US91V8XKf/ztTJLJ/M/f/tef/uU//s8///mv//tv//7bH/7Hf/72L3//81/+8uf/889/+du//vEff/7bX5//9j9/e4z/SbX+9ofyT89/tt/+oOOf/bc/1Oc/2/M/9/HP9NsfUhqQnzD+Wa5/yvVPff5zVGi2oC5oC/oF/bEgLcgLygJZsCr3Vbmvyn1V7lfl/HgsSAvygrJAFugCW1AXtAWrclqV06qcVuW0KqdVOa3KaVVOq3JaldOqnFflvCrnVTmvynlVzqtyXpXzqpxX5bwql1W5rMplVS6rclmVy6pcVuWyKpdVuazKsirLqiyrsqzKsirLqiyjch1QF7QF/QJ9LEgL8oKyQBboglVZV2UdlduAfoE9FqQFeUFZ8Kyc04Bn5awDbEFd0Bb0C+pjwbNy7gPygrJAFjwrl8cAW1AXjMrjQI3m5zDa34Rn5TIUowFOKAtkgS6wBXVBW9AvGG1wwqrcV+W+KvdVua/KfVXuq3JflftVuTweC9KCvKAskAW6wBbUBW3BqPw8p2W0wQlpQV5QFsgCXWAL6oK2YFXOq3JelfOqnFflvCrnVTmvynlVzqtyXpXLqlxW5bIql1W5rMplVS6rclmVy6pcVmVZlWVVllVZVmVZlWVVllVZVmVZlWVV1lVZV2VdlXVV1lVZV2VdlXVV1lVZV2VblW1VtlXZVmVblW1VtlXZVuXRBuUxoF8w2uCEtCAvKAtkgS6wBXXBqlxX5bYqt6uyjMM7WqWMwytpwPjr/m/agn7BOJgT0oK8oCyQBbrAFqzKuirrqmyrsq3Ktirbqmyrsq3Ktirbqmyrsq3KdVWuq3JdleuqXFfluirXVbmuynVVrqtyW5XbqtxW5bYqt1W5rcptVW6rcluV26rcV+W+KvdVua/KfVXuq3Jflfuq3FflflXWEWhiA9KCvKAskAW64FlZHwPqgragXzACTdOAtOBZWWVAWSALdIEtqAvagn7BCLQJacGqnFflvCrnVXkEmuqAuqAt6BeMQJuQFozKdUBZIAuelW3s6Qi0CXVBW9AvGIE24VnZxvaMQJtQFsiCUXnYR6BNqBeMhqZtwPjr41yMZmX+b55/uI7jPJrVhLagXzCa1YS04FmnjsqjWU2QBbpgVB6u0awmjMp9QL9gNKsJaUFeUBY8K7dx1Y1mNcEW1AXPym0chNGsHEazamMzRrOakBeUBaPyUIxmNcEW1AVtQb9gNKs+pKNZTcgLyoJn5T42YzSrCbZgVB5XwmhWE/oEG21nwvjrOuD5h3sbMG7e8oDnH+7PzbDRUiakBXlBWSALdIEtqAvaglU5r8p5Vc6rcl4b5nfdj8cg21Q3tU19kd96P2RQ2pQ3lU2ySTe5YxwHvwOf1Db1RX4T/hgb6nfhk/Km4UhjW/xGfJJuGg4/xH4vPm7PzW/G09hfvxt38tvxSWlT3lQ2DUcelf2efJJtqpvapr7Ib8wnpU15U9m0HbYdth22HdXrjX2raVPeVDbJJl3kz7Hjt938QXaSVx5npu8t7XtL+9rS6s+c4zmg+kPnpLJJNukm21Q3tU19kT98TtqOtB1pO9J2pO1I25G2wx85sw3yv1sH+d/tg3STbaqb2qa+yK/2SWlT3lQ2bUfZjrIdZTvKdpTtkO2Q7ZDtkO2Q7ZDtkO2Q7ZDtkO3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7bDtsO2w7bDtsO2w7bDtsO2w7bDtqNtRt6NuR92Ouh11O+p21O2o21G3o21H2462HW072na07Wjb0bajbUfbjr4dfTv6dvTt6NvRt6NvR9+Ovh19OdrjsSltypvKJtmkm2xT3dQ2bUfajrQdaTvSdqTtSNuRtiNtR9qOtB15O/J25O3I27HbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO923nc777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO92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", - "brillig_names": [ - "process_message" - ] + "bytecode": "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", + "debug_symbols": "TL3LsjS7jpz5LnvcgyRIAOR5lR7IWn2RlVmZyqwljerltQJO0H2i87lq/3QEI+CZGYGV+Z///D//73/9X//tv/zbf////uN//POv//M///mv//+//fu//9t/+y///h//9//1P//tP/773//vf/7z+/6fPP/8a/4f/+w/EX//M/751/77H/vnX+P397/z73/t73/X3/+uv//1f/71/U/gfxL/s//+j9+/Pfjf87v/O+7/2v3fef933f/1+79x/zfv/971zl1v/H4No8EaZsNq8IZoyIbd0CuPXnn0yqNXHr3y6JVHrzx65dErj1559MrWK1uvbL2y9crWK1uvbL2y9crWK1uvPHvl2SvPXnn2yrNXnr3y7JVnrzx75dkrr1559cqrV1698uqVV6+8euXVK69eefXK3it7r+y9svfK3it7r+y9svfK3it7rxy9cvTK0StHrxy9cvytbL8PoiEbdsO5kL+G0WANs2E19MrZK+e38vhgN5wLX68BRoM1zIZv5fXBt/L+IBqyYTecC1/rAf5WnvaBNcyG1fC38pwfREM2fCt/O/b14Af29SDgW/l8YA2zYTV4QzRkw244F74eBPTKo1cevfLolb8eXOODaMiG3XAufD0IGA3WMBtWQ69svbL1ytYrW688e+XZK89eefbKs1eevfLslWevPHvl2SuvXnn1yqtX/npwzQ9WgzdEQzbshnPh60HAaLCGXtl7Ze+VvVf2Xtl7Ze+Vo1eOXjl65eiVo1eOXjl65eiVo1eOXjl75eyVs1fOXjl75eyVs1fOXjl75eyVd6+8e+XdK+9eeffKu1fevfLulXevvHvl0yufXvn0yqdXPr3y6ZVPr3x65dMrn7vy/P0aRoM1zIbV4A3RkA274Vv5r6nn14OA0WANs2E1eEM0ZMNu6JWtV7Ze2Xrl6sHzwWrwhr+VfX2QDbvhXPh6EDAarGE2rAZv6JVnrzx75dkrr5tIc40Ga5gNq8EboiEbdsPNuum9svfK3it7r/z1oOcH3hAN2bAbzoWvBwGjwRpmQ68cvXL0ytErR6/89aD/vZTMrwcBo8EaZsNq8IZoyIbd0CvvXnn3yrtX/now/IPV4A3RkA274Vz4ehAwGqyhVz698umVT698euXTK5+78vr9GkaDNcyG1eAN0ZANu6FXHr3y6JVHrzx65dErj1559MqjVx698uiVrVe2Xtl6ZeuVrVe2Xtl6ZeuVrVe2Xnn2yrNXnr3y7JVnrzx75dkrz1559sqzV1698uqVV6+8euXVK69eefXKq1devfLqlb1X9l7Ze2Xvlb1X9l7Ze2Xvlb1X9l45euXolaNXjl45euXolaNXjl45euXolbNXzl45e+XslbNXzl45e+XslbNXzl5598q7V969cvfg6h5c3YOre3B1D67uwdU9uLoHV/fg6h5c3YOre3B1D67uwdU9uLoHV/egdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3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MPd6cRCNOImL6MQgJnET6ZZ0S7ol3SpLZhQuohODmMRNPA8rSy4OohHptum26bbptum26bbpduh26HboVlkyvXARnRjEJG7iacTc68VBNOIkLqITg5jETaTboNug26DboNug26DboNug26DboJvRzehmdDO6Gd2MbkY3o5vRzeg26TbpNuk26TbpNuk26TbpNuk26bbotui26Lbotui26Lbotui26Lbo5nRzujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tbptum26bbptum26bbptum26bbptuh26HboRuzZDNLNrNkM0s2s2QzSzaz5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSzD3OrPQiJO4iE4MYhI38TxElgDptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HbabWLu9eIgGnESF9GJQUziJtJt0G3QbdBt0G3QbdBt0G3QbdBt0M3oZnQzuhndjG5GN6Ob0c3oZnSbdJt0qyz5fhZvYu714iJ+bve30YKYxE08DytLLg6iESdxEem26Lbotui26OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HbeW6Ye704iEacxEV0YhCTuIl0G3QbdBt0G3QbdBt0G3QbdBt0G3QzuhndjG5GN6Ob0c3oZnQzuhndJt0m3SbdJt0m3Zglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWTKZJZNZMpklk1mCudf62V/MvV4MYrntwk08D5ElwEE04iQuohODSLdBN2SJfYgsAQ6iESdxEZ0YxCRuIt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot6Bb0C3oFnQLugXdgm5Bt6Bb0C3plnSrLKkfUcbc68VF/Nzqd44x93oxieV2Cs9DZAlwEI04iYvoxCAmkW6bboduh26Hboduh26Hboduh26Hbue5Ye714iAacRIX0YlBTOIm0m3QbdBt0G3QbdBt0G3QbdBt0G3QzehmdDO6Gd2MbkY3o5vRzehmdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3RzujndnG5ON6eb083p5nRzujndgm5Bt6Bb0C3oFnQLugXdgm6491o/Oo97r8BBNOIkLqITg5jETaTbptum26bbptum26bbptum26bbptuh26Hboduh26Hboduh26Hbodt5bph7vTiIRpzERXRiEJO4iXQbdBt0G3QbdBt0G3QbdBt0G3QbdDO6Gd2MbkY3o5vRzehmdDO6Gd0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot8qSGIWDaMTPLWbhIjoxiEncxPOwsuTiIBqRbkm3pFvSLemWdEu6bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26Hbqd54a514uDaMRJXEQnBjGJm0i3QbdBt0G3QbdBt0G3QbdBt0G3QTejm9HN6GZ0M7oZ3YxuRjejm9Ft0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RzenmdHO6Od2cbk43p5vTzenmdAu6Bd2CbsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWYJ5l6/39ydmHu9mMRNPA+RJcBBNOIkLiLdkm5Jt8qS7xu0J+ZegZUlFz+37+ulJ+ZeL07i57ZXoROD+Ll9Xxk9Mfd68TysLLk4iEacxEV0YhDpduh2nhvmXi9+budXaMRJ/Ny+70WemHu9GMTaSSvcxPMQWQIcRCNO4iI6MYh0G3QbdDO6Gd2MbkY3o5vRzehmdDO6Gd0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot6Bb0C3oFnQLugXdgm5Bt6Bb0C3plnRLuiXdkm5Jt6Rb0i3plnTbdNt023TbdNt023TbdNt023TbdDt0O3Q7dDt0O3Q7dDt0O3Q7dDvPDXOvFwfRiJO4iE4MYhI3kW7MksMsOcySwyw5zJLDLDnMksMsOcySwyw5zJLDLDnMksMsOcySwyw5zJLDLMHc6/d98RNzr8DKkouVyqfQiJP452bf1xzPmnttDOKf29+z8sJNPA+/LPl7gl44iEb8c/t7Kl64iE783L4vv5g199q4iZ+bVTlfljQOohEncRGdGMQkbiLdgm5Bt6Bb0C3oFnQLugXdgm5Bt6Rb0i3plnRLuiXdkm5Jt6Rb0m3TbdNt023TbdNt023TbdNt023T7dDt0O3Q7dDt0O3Q7dDt0O3Q7bTbqrnXxkE04iQuohODmMRNpNug26DboNug26DboNug26DboNugm9HN6GZ0M7oZ3YxuRjejm9HN6DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26LbotujmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3pNum26bbptum26bbptum26bbptum26Hboduh26Hboduh26HboduhG7NkMEsGs2QwSwazZDBLBrOk5l5tjsIkbuLn9v1Z4qq518ZB/Ny+kfNVc6+Ni/i5rVqssuRiEj+3hcXOw8qSi5/bqsUqSy5O4ufmq9CJQfzcvI64suTieVhZ8n1yXzX32mjEzy1qscqSi0783LIOqLLk4iZ+bt/Pe66ae20cxM8td+EkLuLntqveypKLSfzcdu1ZZQmwsuTi53bqgCpLLk7i53bqgCpLLgYx36ZWllw8DytLsKmVJReNON+mVpZcdGK8Ta0subiJn9upM19ZcnEQjTiJi+jEICZxE+m26bbptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HaeW829Nv65zZ8VGnES14f4b50YxPxwF27iefhlSeMgGnESF9GJQaTboNugm9GtsqS6peZeGydxdbdYZcnFIGZ3S829Np6HlSXVLTX32mjE79gGcBGd+B3bqHK+LGncxO/YRh3QlyWNg/jtpFU5X5Y0LuLnZuX2ZUljEj83qyP+suTilyWNg2jESVxEJwYxiXRzun1ZMmfV+2VJoxE/t1n1flnS6MTPbf0Kk7iJn1u9DtXca+Mgfm71MlNzr42L+Lmt2vUMYhI/Ny+3L0suflnS+Ll5LfZlSeMkfm5ei31Z0hjEz63CseZeG8/DL0v+HpEVDqI11nhkbXpNR/493/qwrq3vBvKqOchGI07iIjoxiEncxPPQ6eZ0c7o53ZxuTjenm9PN6eZ0C7oF3YJuQbegW9At6BZ0C7oF3ZJuSbekW9It6ZZ0S7ol3ZJuSbdNt023TbdNt023TbdNt023TbdNt0O3Q7dDt+91ataboJqDbHRiEJO4iZ9bfhdqzUE2DqIRyy0KF7HcTmEQk7iJ52G9Tl0cRCNO4iLSbdBt0G3QrV6n9hcENQfZOIhGnMRF/Ny2FQYxiZ9bvbzVHOTF+SMOohEnsdyq3nqduhjEJH5upyqr1ylgZcnFz+3UaaksuTiJn9upxSpLLgaxjuJ7CaiJx/Wrdb98WPUOpWYb169K//KhMYhJ3MTzMGrdcvvyodGIk/i5jarhy4fGz21UkV8+NG7iefjlQ+Mgfm4jCydxEZ1YbrswieVWReZ5uH/EQfzc6t1BzTY2LqITg5jEz82qnC8fLn750DiI5VZFnklcxHIbhUHMxppXbKwVTuG3Qr3417xiYxCTuInn4dfzjYNoxEmk26DboNugm9W6Wfjd+/aiWrYqt0lcxG/ZeitSg4mNSfwO4vsbklWDiRe/5v67ngsH0YifW72DqcHERicGMYmbeB6uH3EQjUi3RbdFt0W3RbdFt0U3r3V3Ya1QG1XNXW+oatiwcRPPw2put8JBNOIkLuLnVp9ia9iwMYmbeB5Wc18cRCNO4iLSLemWdEu6VXPXB/AaNmwcRCNO4iKWWxQGMR9WG1+sFepcVMNerBXq6quGvZjEqrdO1jmNNUDY+NX7TXuuGiBs/Ny+h0qrBggbP7d6c1sDhKvextYA4ao3rzVAuBIrnIfV3Be/devWSw0F/kVs4bdC1rqjVqh1R61Q61Yb1w2ZGv/7S9DCRXTit0K9BtdI36qXrBrpW/XSXSN9jbVCGVcX1gtvjfQ1JnETv8rqk2mN9DUOohEncRGdGMRa9zuxNaa3dh1xNVm9zNcU3qoX9JrCazwPq8kuTuK3wqndqca5WCvURlWL1Cfpmotb9Zm55uIaN7Hcah/qsr84iPbWrcv+/v8uohODmO+I6zXt4nlYzXCRx1bNgAOqZrjII67Lvq6HmnVb9XanZt1W3XqpWbfGSVxEJwYxibU7u/A8rMv+Yrmdwj83r/dONevm329kr5p183obVbNuuGhr1q0xH37N4PWGqabaGo3oH9Zhfs3gdX+oJtX8+93rVZNqjbVCFTlrhSpyTuIiOvGvMq+3XDWp1riJ5+HXIo2DaMRJrHVrS1atUFvi9R/UwXv9B1W6J3ETz8Mo49qSGEQjTuIiOjGISdzE8zDplnRLuiXdkm5Jt6Rb0i3plnTbdNt023TbdNu1WF0EexPPw/MjDqIRJ3ERnRhEuh26nedWU2KNg2jESVxEJwYxiZtIt0G3arJ6311DYI1B/BarW3E1BObfPMKqITCvRzc17uV1y6ZGuLzeNdcIl9ejmxrhulhNdnEQjTiJi+jEICaRbpNui26Lbotui26Lbotui26Lbotui25ON6eb083p5nRzujndqo/rPXqNcDWeh9XHFwfRiJO4iE4MIt2qj2edwupjYPXxxUE04iQuohODmES6Jd023aqPV1191ccXJ/Fzq08SNcLVGMTPrZ7f1QhX43lYjX5xEI04iYvoxCDS7dDtPLca4WqsdbOwVtiF3wr16aDGshrPw2rei4NoxElcRCcGkW6DboNuRjejm9HN6GZ0M7oZ3YxuRjej26TbpNuk26TbpNuk26TbpNuk26Rb5YOPwkE04iQuohODmMRNPA+dbk43p5vTrfKhPuvVWFZjEGvd79W/Rq28PjvVqJXXB7EatWp0YhCTuInnYfX8xUE0It2Sbkm36vn6pFajVo2beB5Wz18cRCNO4iI6kW6bbptum26Hbodu1fP1IKNGrRoX0YlBTOImnoteo1aNg2jESVxEJwYxifshkuAUfivEr/Bb4XuY7TU+1ZjETTwPq+cvDqIRJ3ER6WZ0M7oZ3arnvw/QXuNTjYNoxElcxFrXP6w+/j5se41ENRqxVsjCRXRiEJO4iedh9fHFQTQi3Zxu1cdRZ6j6+GISP7fvjoDXSNTFep3POuJ6nc/avur5rIOvnr+4iJ9blnH1/MXPLeuCqZ7PMq6e3+VWPX9xEI04iYvoxCAmcRPptum26bbptum26bbpVt29a3eqj3ftTvXxrn2oPr64iLVCXRrVxxeTuImnsQaa/LsV4TW65N/nbq/RJf9uRXiNLjVu4nlYr90XB9GIk7iIn9v3yd1rdKkxiZ/bd3vBa3TpYvXxxUH83L77Gl6jS42LWG5eGMQkbuJ5WH18cRCNOImLSLdJt0m3Sbd67f7uuHiNLjUOohEncRHLrc5m9fzFJO6H1d0Xa4U689XHF2uFOkPVxxc38a/e+O5reI0jNQ6iESdxEZ0YxCRuIt2Sbkm3pFvSLemWdEu6Jd2Sbkm3TbdNt11udXnuSVzEcqtLbgcxieVWZ36fh6fcqvXOIBpxEhex3Oq0nCB+bqPq/Xo+RlX29Xx8t1m8xpEaB/Fz+26oeI0jNS7i5zaiMIhJ3MTzcPyIg2jESVxEug26DboNug26Gd2MblbrZmGtsAtrhVN4Hs4fcRC/er8HYl4jRo2L6MQgfm5W+/v1fFiV8/V8WNXw9Xzj5zZ/hd+6s1b4+jhmrVCPY/H/64NoxK+y7xu0vQaEGp0YxCRu4nlY3X1xEI1It6Bb0C3oVt096+Cruy+eh9XdFwfRiOvtQ7X0xSB+Fqu2r1r64nlYLb1qo6qlLxpxEhfRiZ/b9wzQayqosdyqhmppYLX0xXKrHqqWvjiJi+jEICZxE09jfRte4yAacRIX0YlBTOIm0m3QbdCtWvq7DeD1bXiNi1huWRjEJG5iuX19Ud+GF99zSK9vw4vv46TXt+E1TuIiOjGISdzE87Da/yLdJt0m3ar9v8/dXt+G1xjEJG7ieVjtf3EQy20WTuIiOjGISdzE89B/xEGkWwWI19msALnoxCCWmxdu4nlYUXGxVqgTW6FQH/BqsqtxE8/Dav/62FfTWhG169XzF5O4iedh9fzF74jrk1pNazVO4iI6MYhJ3MSqty7P6vmLg2jEcqvtq56/WG61UdXzF5PYsxRe01rAmtZqrHWjsFbIwlphF27ieVh9fPGrN3+FRpzERXTi51Yfz2oCq3ETz8Pq44uDWG6ncBIX0Ymf2y7j6uOLm/i51WenmsCK+mhUE1iNn1t98qkJrMbPrT4E1QRWYxCTuInnYfXxxUE04iTSbdFt0W3RbdFt0c3p5nRzujndnG5ON6eb083p5nQLugXdgm5Bt6Bb0C3oFnQLugXdkm5Jt6Rb0i3plnSrfKjPsTWt1biJ52Hlw6lrp/LhohEncRGdGMQkbuJ5eOh26Hboduh26Hboduh26Hbodp5bzXBFfZauaa2oj8o1rdVYK8zCTTwPKx8uDqIRJ7HWXYXvbNZcFra65rIajTiJdcRe6MQgJnHTgm7zRxxEI07iIvqrYQYxiZt4Xg3V8xcHkW7seWfPO3ve2fPOnnf2vK93pbpzJ5076dzJ6nnU4NxJ506y55097+x5Z887e97Z886ed/a8o+erhuBOBncyuJPBnayer1sRNcTVWDtZ61bPX5zERfxzy/pgXkNcjUncxPPw6/nGQTTi/LAa5+v5Rl7guyyqh/YmnofnR+SlgUYH8mQdnqzDk3V42R9e9ocn67yTVVNejYNoxElcRCcGsY7ia+ma52ocxNqoVVgb5YWL6MQgJnETz0P7EQex1o1CJwYxibVuHYWdh/NHHMR6CwicxEV0YhCTuInn4XpvWWsirHERnVhHsQvfW9b6OrfGQaxdP4WTuIjf7tRdnxok63+WxE2kW9At6FaNfnESF9GJdAtaVB/Xm//6trbGSfxKrztP9W1tjd+W1O2mmkpr3MTvxI5aofr44iB+G1W3emoqrXERnVhudQKqpS9u4nlYLV33gmoqLa22+mveRid+69YNoPpetsZNPI01q9Y4iEYsNytcRCcGMYmbeB5WS1+sxVZh/TMv3MTzsHrz4iAasYrMwkV0YhCTuInnYXXsxXLbhUacxEV0YhCzT0uNrTWeh+tHrGsnCv3tTrXpxSRuYi32XRr1TWl3S6pNLy7it27d5KsRt8YkfuvW7bwacbv/LHgCgicg6BZ0C7qFE4PI0x083UG3pEW+O5GJ227AIFbp+G838TysNq17eDXB1mjESVxEJ9ZG1fVQbXpxE8utTne16cVBNOIkLqITg5jETXxuNeLWOIhGnMRFdGIQk7iJdBt0q9fj748YvL4IrXES6850FDqx7kx7YRI3se7IfhdifRFa4+dWt0BrMq7xc6tboPVFaI1O/I5t1brV8xc38Tysnr84iEacxEV0It0m3SbdJt0W3RbdFt2q/euuZU3GZd2UrMm4rJuSNRnXOIhG/Oqt23k1GdfoxCAm8XOrG2w1GXex2v/iIBpxEsutaqj2vxjEJJZbXTDV/sD8ET+3ekWvybisG1Y1Gdf4udVdqpqMa/zc6n5UTcY1buJ5WPlwcRCNOImL6ES6bbptum26Hboduh26Hboduh26Hboduh26nedWk3GNg2jESVxEJwYxiZtIt0G3QbdBt0G3evWvt6w1RdcYxCSW2yk8D+s9wcVBNOIkLqITg5hEuhndJt0m3SbdJt0m3SbdJt0m3SoJ6l5mTcZlTajUZFzjt0INq9RkXGMSN/E8rHy4OIi17izk2ayex1ZXzwOr5y8O4nfE35/QeE3GNS6iE3ntBN2C107w2kleO8lrJ3ntJK+d5LWTvHaS107y2kkeW/V83fStybjG2p1at3r+4iQuYh1bnbfq+YtJ3MTzsHr+4iAa8XOrO8g1GdcY72RVo9d4To3DNZ6LUeNwjeOegKhxuMZJXEQnBjGJfbLi9xo9fq/R4/caPX6v0eP3Gj1+YxGdGMQ6CvuwWvriIH7rflNIUUNyuauyaumLTgxiEjfxPKyWvjiIta4XOjGISax16yjqxR1YLX1xEOulOQsncRGdGMQkbuJ5iDcCwBoMqD2rO3AXnfit+92cjRqSa9zEb91Tl1G1/8VBNOIkLmLtWZVT7X8xieVWW13tD6z2v1hutb/V/hcncRGdGMQkbuJ5WO1/kW6bbptum26bbptum26bbptuh26HbtX+py6Nav+Li1huuzCIf277VyfrS4LG01jfG7a/W39R3xvWaMRJXEQnBjGJm3geDroNug26DboNug26DbqNWvdr9Bqo299NvqiBuv3djIsaqGt0YhCr3izcxPNw/oiDWG6ncBIX8XMbVeSXBI1J3MTz8EuCxkE04iQuIt0W3RbdFt0W3ZxuTjenm9PN6eblNgqDmMRNPA/jRxxEI07iItIt6BblVmc+yi0Kz8P8EQfRiJO4iE4MYhLplnTbdNt023TbdNt023Tb5VYX107iJp6H50ccxHKrDjiTuIjlVpfnCWISPzfDYqexhu8aB9GIk7iITgxiEjex3L64quG7xkE04iQuohODmMRNpJvRzehWWfLNKUR9F1jjIjoxiEncxPOwsuTiINJt0m3SrbJk1kZVllxM4uf2TW5FDepdrCy5+Ll9tziivguscRIX0YlBTOImnoeVJRfp5nRzulWWrNrqypKLQSy3U7iJ52Flyff3IlGjfo1G/Ny8dqey5KITP7eo/a0subiJn9t3cyBq1K9xED+3rP2tLLm4iJ9b1hFXllxM4ueWdUCVJcDKkoufW73LrKm/xkn83OqtZU39NQbxc9tYbBPPw8qSeh9VU3+NRvzc6h1ITf01OvHP7dTrcU39NW7i+fA74pr6axzEP7dTuV5Tf42L6B9aYRCT+LlViNXU38UvSxo/t++eedTUX+Mkfm7fPceoqb/GICZxE8/DL0saB9GIk0g3o5vRzej2ZcmZtVFfllz8sqTxc6uoqKm/xkn83Fbt5JcljUH83Coqauqv8Txcvz6bNfXXaMT5zuaXJY1OjHc2VxI38byz6T/iIH5u383OqKm/xkX83LzO5pcljUn83Bz/7Xn4ZUnj51YBUrOAjZO43q5/WdIYxHy7Hpt4Hn5Zcnf9y5JGI86367mITvzcApjETfzcosr5sqRxED+3+ixd04SNi/i5ZZXzZUljEj+3SrmaJrz4ZUnj51Z3BGqasHESP7e6/1DThI1B/Nw2FtvE01jThOebzIj67rdGI35ulXL13W+NTvzcKsRq8rBxEz+3+nBVk4eNg/i51eesmjxsXMQ/t79PWLVa/RBDcwrvYix4yPVjDM3j42oE/BRu8xRexbPYhUP49Lu9mizco6qs9x0XF9GJQUziJp6H9Zstv3rLiR+5/dX7U/zKbfMUXsIuHMIpvIUP2X/C4uvi6+Lr4uvwrfo9hFN4Cx9y/IThW6c1THgK1w7/Cp0YxCRu4nlYv+Xy+x62B378ttmEy7Hu4uD3b5tdOIRTeAvjSOuK2T/hIQzfOuN7Ci/h8p1VW/22S3MKb+FDrt93aR7CJjyFl7D4HvE94nvE98D3O3b8Bi7qxw/bNm/hQx4/4SEs6wzUCV7CLow6vTiFt/AhIyguD2ETnsJL2IXF18TX4LuLD3n+hIewCU/h8q1XMfzobXMIp3D51mcG/PDtZSTM5fKtNwD47dvf9xA08OO3zfDNYheGb9WGhLm8hQ8ZCXN5CJvwFF7CLiy+Lr4uvi6+Ib4hviG+Ib4hviG+Ib4hviG+Ib4pvim+Kb4pvim+Kb4pvim+Kb4pvlt8t/hu8d3iu8V3i+8W3y2+W3y3+B7xPeKLnKlPnvi53OYl7MLMGZeccckZP8w3/Gpu8xA24Sm8hGv9en+L38NFduEHcX9e/w3y5/IUXsIuHMJJRs54rW/cf/zaLY4dP3fbHMIpXPvw/QFP4CdvLyNPLg9hnnf87G3zEnbhEE7hLXxYz80T8BA24cl6kCeXXVh8JU9C8iQkT0LyJCRPQvIknNdbuOyzyz677DPyBPW47LPLPkuehORJSJ6E5ElInoTkSUieRMj5vXkCln1O2eeU84s8uSz7LHkSkicheRKSJyF5EpInIXkSkiex5fxu2ect+7xln7fsM/LkG2AJ/FpuM/b5ez3C7+U2D2ETxvFWPciTyy4cwim8hc9j/HJuM3xPsQnjfZoXx+tr/FDu7xv3DfxSbvMhI2cu8zzmMOEpvIRdOIRTmOcRP5p72X7CQ9iEp/ASduEQxnF9+YbfyW0ewrV+fbjGT+X+6nM0fiu32YVDOIW38CEjfy4P4dUf1nI5MYhJ3MT3GQ+/jvur+5X4edxmE8YRRfESdmEcURan8BY+ZCTM5SFswlN4Cbuw+Ib4hviG+Kb4pvim+Kb4pvim+Kb4ImGirhYkTNaVj4QBI2EuD2ETnsJL2IVDOIXFd79HMzU72jiI72FJzY42LmI9LKkTWw+CLiZxE0/jxoMg4CAacRIX0YlBxO59/YVfxv3VPXH8NO6v7hHht3GbXTiEsU6tiRz4vmUn8KO3zUvYhUM4hbHbp/iQkQ+Xh7AJT+El7MLw9eIU3sKHjHz4ZnwCP4PbXFtfW1jPci4uohODWJYbXJY1K4Nfwr2M4Lg8hOtQazADv4b7q1tp+DncZhcO4RTewoeM4Lg8hE1YfBEQOBY0ds2l4Cdsm124/vuD/z6Ft/Aho7EvD2ETnsJL2IXFd4vvFt8tvkd8j/ge8T3ie8T3iO8R3yO+R3wPffHjts1DGL5WPIVXP4WsGdDGIL7HlPgp29/3x5eBX6391ROmmuzEg7+a7GwM4nscWJOdje9xYE127vpMX5OdjUacxEV0YhCTuInn4aTbpBuave4bHzT1wf8/droOBE0NRlNfHsLfOqNGc2po84/rDFSnNh9ydWrzEDbhWVw770vYhUM4hbfwIcdPGPXXuUCnXp7CSxi+dfYjyImao3gKL2H829rbDOHsx6aHz1UPn6sePletYc2/f1f7vbEG/v+zn6wePC0Fnof1gltPVmsws9GI9Wy2NqVecC86MYhJ3MRzMWtGs3EQjTiJi1hn77tVnDV4+cdWXFfHqP+mXnKbp/ASxjr+sWGdKB7CJjyFl7AL125/N8uz5i0fb+FDnj/hIWzCUxi+q9iFQziF4XuKD7m6c3yvl1lzln9ce1If8ZtTeAsfMrrz8hA24Sm8hMXX+yF71iBm4yb2Q/asQczGQayHtXVA9UDz4iI6MYhJ3MTzsB5oXhxEuiXd0K9WO5/YpboqNnYpi4ewCU9hrFNnql41x6yrvV41m4ewCU/hJVy7PWsz61WzOYW38HlcI5SPh7AJo/5dvIRdOIThO4u3MHy/rhzo7stD2IRxvFm8hF04hFN4Cx8y0uDyEDZh8bV+bJ41htkYxH5snsM28TzEuENtJMYdgEacxEV0YhCTuInn4aLbohtemWedHfT+9zVdOdD739P7HOh9MHr/8hCudVYdOF5pVx0jXmkvHzJeaS8PYROu3f4ed2QNTz524RBO4S18yPkThm/tA16lL0/hJQzfOvvo+stY/+vcGoT8uwxrT+q9cnMIp/AWPmR0/eUhbMJTWHxr9mAAg5jEmlCpYzo9oZI1E9lYEyq/QiNO4iI6MYhJ3MTzEHNMQLoNuqGXvepBz343I9PQs9+NxjT07OUhbMJYJ4uxzi4+ZLwiXx7CJjyFa7ej6sQr8uUQTuEtfMh4Rb48hOEbxVN4CbswfEdxCsN3Fh8yuvjyEC7fqH3DK/jlJezCIZzCW/iQ0fWXh7D41gt5hUpNOTY6sWa86rqIJG5izXjVRmIyCTiIRpzERXRiEJO4iXTbdMMre9TZQe9HXTno/e+v3tLQ+5cPGb1/udbJOnC8gmcdI17BL2/h83jiFfzyEK7d/m415cQr+OUl7MIhnMJb+JDxCv7d2MuJV/DLJjyF4evFLoz1s/iQ0fWXh7AJT2Gsv4tdGMd1ilO4fHfVhpQAIyW++zI5kRKXy3fX3iIlLpdvfX6ZSInL5btrr5ASl+Fbx46UACMlvj+gyomUuAzfOkakxGX41jEiJS7Dt44RKXG5fE8dI1ICjJQ4dYxIicvle+oYkRKXy/fUMSIlLpfvqWNESlzukdPE6CIwfsRBNOIkwrF2Ce8KLocwHGsH8K7g8iHjXcHlIWzCU3gJu3AIi2+KLz4LnNr5erdgv9rterdg9ZmiBhQfp/AWPuQj9R+p/0j9R+o/Uv+R+o/Uf6T+I/Uf7tv6/YSH8HrHWFOI9xhrDPHWXHOIzZUYzUPYhFn/GkvYhUM4hbew1G9Sv0n9ZsLia+KLxMAxzh+PcUr9U+qvZGhewi4s9U+pf0r9U+pfUv+S+pfUv6T+JfUv2bclvkt8bwLUMfrkMbrU71K/h3AKy3l3Oe+BfbPiIdxj0bliEhfRiVj7SxoMDtp33y1rcLBGoLPmBhsXsUarozCISazRaix2HtaL/MVBNOIkLqITg5hEum26HVxBVfDBTmcxdrrO0knhLXweY+zP6p11fQ/hH4/iEE7hLXzI6NTLtdt1Xw3jgM1TeAm7cAin8BZG/d/Vh3HA5iFswvBdxUsYvlEcwim8hQ8ZnX15CJvwFF7C4jt7wD1rGrBxE3vAPWsUsHEQa8C9Nr7+MOHiIjoxiEncxPOw/jDh4iDSzemG/v7GixPDfFZ3FjHMZ1ZXF/r4sglP4VrH6sDrddjqjiCG85qHsAlP4SVcu/0NfySG85pTeAsf8v4JD2EThm/tA163L7twCMO3zj5ety+Xb92fw3Bec/nO+rfo+rpD4+/vC7Jm8xqdGMQkbuJprKm8xkE04iQuYh3jBIdwCm/hQ0ZiXB7CJjyFlzB8vTiEU3gLHzIS4zL++1O8hQ8ZnX55CJtw1Vmf8DCod7lee60+nmLArnkK47+fxS4cwvX3IfjPN/E8rGatTxc1XNdoxPr7kCqq/oroohODmMRNPA/rrfjFQTQi3YJu9Y7b6h4exuOs7rdhPM7qnhnG45qn8BLGOrXz6FCv9dGhl014Ci9hF67drrtKGHdr3sKHjA69PIRNeAqj/l3swiGcwvCts4/X62KMu1m9D8G4m9WdJ4y7NU/hJezCIZzCW/iQ0a2XxRd/FOSFk7iI3yV2qt76A8OLSaw/QVqF52H9geHFQTTiJC6iE4OYRLoZ3dDL37BgYrjN6nUNw21WL8QYbmvewoeMHo9aE71c964SvXw5hbfwIdf76+ba7W88KzHK1jyFl7ALh3AKb2H41tWF1+vLQ9iE4VtnPxYZ3YpjR7deduEQRj2151uOF1182YRr/bozhJGyZheu9euuGEbK+t/KPm/Z5yO+R3yP+KKLLy9hOb9Hzu8R30OvjQ6tO20bHXp5CeNYVnEIp/AWrvXrrthGh14ewiYM3yjG+lmcwlsY63/nd+N18/IQNuEpvIRdGL6nOIW38CHj9ffyEDbhKVxr1ssihsmsXgExTNZswlN4Cbtw1Vx34zBR1ryFDxn9e3kIm/AUhm+dI/Tv5RBO4S18yOhfnDv072UTnsI4L7N4c9/w3huMV+rLQxjHUtdSyl6hxy+nMNYvX7zHBqP3L2P9uk62nKMt52jLOdriu8V3iy96//IhH7k2jlwbR3yPeB2+68BEWfN5jImyZqwJ5ruO83PhEK71D3gLHzJ6vO62nsF3O2eY8BQW3yG+Q3zR+5e38CHbT1h8TbzQ13XH96CvL29hHMt3zR/09eUhbMK1fr2RwMxZswuHMHy/axIzZ/bNpSVmzppNGOvv4iXswiGcwlv4kNH7dW8MM2rNJjyFl7ALh3CSq69n3SfDnNmse2OYM2sO4RTewodcPT7r/lh9weBjE57CS9iFQziF4VvnKA95/4SHsAlP4cVzh96/HMIpjPPy5VsNrvW+nSm8hF0Yx1LX0nl7tWtQ7fEQxvpZPIWXMNbfxSH/NoW3sPgO8R3iO0x4Ci9hFxbfIV7oawOb8BRewljzFOM+xiw+5PkTrpq/O40bE23NU7hq/u4ibky09b8N4RQW3ym+S3zXEDbhKbyExXeJV/X1HHXsPoRNGMeyipewC4dwnfdv6nDXfNvjQ46fMHyjGOvXdYXevxzCWL+uN/T+5UNG718ewiY8heFb5x29fzmEU3gLHzJ6//IQrjWtroF67Z643qqXL9drd/MQNuEpXDVb7Tl6/HIIp/AWPo8x+9Y8hOHrxVN4CbtwCKfwfucOs2+X0fuXhzDOyyyOt2+Ya2vewodsOJYo5l7V/NpjF8b65WspvIWx/ned1BRb/9s5hE1YfKf4TvGdIZzCW5jXRs2zPRYv9HXlzMBr+uUU3sJY87smB167K5cGXrsvL+Gqeda/RY9fTuGqeeK/P/y38RMewuIb4hviGy4cwim8hcU3xQt9PWuv0NeXQxjHUtc8+vryIaOvL9d5n3Vt4zX98hRewvCtaxK9P+u6Qu+D0fuXsX5db+j9y1N4CbtwCKcwfOu8o/eLDb1/eQib8BRewi5ca373frfhtfubTtqGXr68hF04hFO4av7urG7MwV1Gj18ewiY8hZewC8PXi1N4Cx8yev/yELZ37jA317yEXRjn5cs3zMTdfVtD2ISnMI4limWv1hY+ZLy+r/LF6/tlE8b6u1jOkcs5cjlHLr4uvi6+eH2/PITl2gi5NkJ8Q7zwmr7qGsNr+ve5bBte0y+b8BRewi4cwniaXNcDPstfPmR8lr88hE14Ci/hNzexMQE3vc4jeh+M3r88hHFctQ/o/ctL2IVDOIW3MI7rO3ZMzDUPYROewkvYhUM4yePNU2xMxuG4MBnXPIWXMI9rjhBO4S18yMiHy0NYjsvkuEyOy+S4TI7L5LjwueCy7OeU/cRkHI59ynEhBy6HcArLcU05riXHteS4lglP4SUsx7XkuJYc15LjWnJcLsflcp247KfLft4JuDp2l+PyLczrf8ZPWI4r5LhCjivkuEKuk5DrJOQ6CTmukONKOa6U40o5rpTjSrlOUvYzZT8xHZ91LPibmMtD2IRxXLP4TbxuzME1b2Hs25ct8+YGeAhj37x48t9iDu6yC4vvEd8jvpy03YuTtntx0navO2kLnsIujGsgig8ZnwUu41h2sQlP4SWMa+AUh3AKb+Hy/WbPN2bf5vdcbGP2rXkJ1/pR9eM9w+UU3sKHjPcMl4cwfGfxFF7CLhzCKbyFDxk58D2j2Zh3m1F7i/cMl7fwIeM9w+UhjJprz/Ge4fISduEQTuEtfMjIgahzhBy4bMJTeAm7cPDcIQcub+FDvu8lsnhx3/Ce4XIIp3CtmXUtbdkrfC64PIVr/ep9fKFecwjX+uiXLedoyzk6co6O+B7xPeKL9wyXXViujSPXxqGv/37C+PuMLF7CLhzCOJbvmsQ0Xf1NycY0XbMJV83fc8CNabpmF8ZeeXHKv93Ch2zia+Jr4mtTeAm7cAiLr4kX+jprr9DXl5cwjgX/fQin8Bau8/49B9z44rzmIWzC5ftNp2x8Qd78nm1tfEFe8xau9b/nQRtfkNc8hE14Ci9hF4ZvnXf0/uUtfMjo/ctD2ISnMNasawCfC3btLXr5sglP4SXswqi59hw9fnkLHzLuCVwewiY8heFb5wi9fzmEU3gLHzJ6H+cOvX/ZhKcwrrfqR/Q19g33AYrxBXbNQ7jW/J7TbczFYa8wF9ecwrX+9yxvYy7uMl7fL9f637Ozjbm4+2/HFF7C4jvEd4gvXt8vH7L9hIew+Jp4oa+/+bSN2bnmQ8ZfxlzGsYDx15Or2IVDuGo+4C18yOjxU/u/Bv/tMuEpLL5LfJf43r92BW/hQ75/7QoWXxcv9PWpvUJfX97COJbvmscX1TUPYROu816fF/BFdc0uHMKf76r325i4W7+6rqr3m014Ftf1Vr3f7MIhnMJb+JA3fOu87yFswlN4CbtwCCf5YM26Bg7+be3tceEQTuEtfB5jym7VczpM2TWb8BRewi4cwikM31N8yOMnPIRNeAqvd+7wZXPNIZzCuN6+fMMXyWHf8EVyzUvYhWvNujeOL5K7ezV/wkO41q97y/giueYlXOvXszPM2vW/TeEtLL5LfJf4LhOewkvYhcV3idf9Bova5/sNFuApvIRxLLO4cqPu+WO+7jL+zvVy1VzPATFf1zyFsVe1//g7tvtvQziFxTfEN8UXf8d22YSn8BIW3xQv9HU9i8TMXrMJ41jqmkdfX3bhEK7zXs8BMbPXfMjnJ1y+VvWg9+vZFmbzmkO41q/nQYnev3web/T+5SFswlMYvrPYhUM4hbfwIaP3Lw9hrOnF+LdRfMj2Ex7CJjyFUfMuduEQTuEtfMjo/ctDGL6neAovYRcO4RTe79zhS+Iuo/cvD2Fcb1kc3LeVwlv4kOs1fdW1jdm8u1e+hF241q9neZjNa97CtX49O8Ns3v23Ieco5ByF+Ib4hvhGCKewXBsh10aKb4oX+rqyBTN7zSm8hXEsdU3ivlz1OGbzmpdw1VzPATGb15zC2KtaH3/pjn+Lv1u9PITF94jvEV/cr7scwim8hemLmb3m2v8JduEQxrHs4i18yOjry3Xe6zkgZvaap/ASLt/vb0k2ZvNWPdvCbN5l9P7lWr+eBx30/uUpvIRdOIRTGL6z+JDR+5eHsAlP4SXswljzuwYwm7fqmR1m85qXsAuHcAqj5tpz9DgYPX55CJvwFF7CLgzfOkfo/ctb+JDR+5eHsPHcofcvL2EXxvX25Rtm9u6+4f38ZROewrVmPcvDbN7dK7xvv3zIeH2vZw2YzWs24Vq/nh1gNq//rZyjLedoi+8W3y2+eH2/PITl2jhybRzxPeKF1/TvecHBzN767vkfzOw1m/AUXsIuHMKVJ9/78IOZveZDxn28y0PYhKfwEq69+u7zH8zpNR8yev/yEDbhKbyEXTiExdfE18R3iu8U3ym+U3yn+E7xneKLv2v/Pque+011lw8Zf9d+Gb5ZjH0bxS4cwjiuXbyFDxn54LX//H7J8+P3S577DXaXxdfF18X3fr8keAsf8v1+SbD4hnjhdT/q2JEDl7dwHcv33ORgrq95CJtwnaOoHkE+XHbhEIZvXf/Ih+/e/sH8XrMJY/06v8iHyy4cwim8hQ8Z+RB13pEPl014Ci9hFw7hfIy5vvU9HzmY31vfM4uD+b3mEE7hLXzIeA/wPac4mN9rNuEpvIRdOIRTGL6z+JCRD5eHsAlP4fXOHWb/mkM4hXFevusTc31339D7l5ewC+NYVrHsFd7bXx7CqLl88d7g8hLGXkWxnKMl52jJOVri6+Lr4ov3BpensFwbLteGi6+LF173s64xvO5/zywO5vqal7ALh3AKb+HvWOpbhg++za55CJvwFF7CLhzCWL+O5X5TNHgIY/26HvhN0Wfwm6LP4DdFn8Fvij6D3xR9Br8p+gx+U/QZ/KboM/hN0Wcc8T3ie8T3iO8R3yO+R3z5TdHH+E3Rx/hN0cd+JjyFl7ALh3AKl+/3vOZgPvAycmPXf4PcuFzXz/1vpvASruvn+/uyg7nB5vwHP7Z78DvBF8/D+oLpi1jbi7FGFH9rfB8PDn799+J5iK+NrjrwtdFAI84P62DqV/guOjGISdzE8xC//gscRCPSbdENqfD95dnB9N/6nhodTP+tuqIx/dc8hZdwrXPqwPFO/9QxouMvm/AUXsIuXLt9aufR8Ze38CHj1f7yEDbhKQzf2ge82l8O4RSGb519fEoA413A93TiYOKv2YSn8BJ24RBO4S18yEd869up600Jfsv34iR+57xesfBbvheD+F1h9RanRgAbT2MNADYOohEncRGdGMQkPjfM/a3vuc3BfJ/X+z7M9/n3LOVgvq85hTe5Xuf9m6k8mNfz7/79wbxecwin8BY+5Hq/79/fMB18w12zCU/hJezCIZzC8K19mIe8fsJDGL67eArXv/2eURzM4jUP4fq3o/a2Orr5O20VAPUldY1BzIeBtWu/A2tUXfVzl/VyWeN2jUH81qgOrFm7xvOwfn67IqAG7RqNOImL6MQgJnETz8NNt0236lEfVXD1on93xA6m63zUGduHfH7CQxjr1I7Vq6xbnYF6lW0+jzEt1zyETbh2+7vzfvBtcs0uHMIpvIUPefyEUf8uNuEpvIThO4tDGL5evIUP2X7CQ9iEp/ASduEQFt/6rova/hq0u1jfLn1x/IOfBD81Zdc4iev7b+tA69ulLwYxiZt4HtZ3Vl0cRCNOIt0W3RZ277sCMWPnVv//6GOrA0EfX17CLlzrfPflD2bmfNYZr1fm5im8hF04hGu3670SZuaaD7lemZuHsAlP4SUM3zoXGcIpvIXhW2d//4TxLLOO/X6ffF2lmJ29vIUPGffiLw9hE57CS9iFxbe+j6permp8rvE01iBdfZf/Hw6iEb/Lpl4ga7iu0YlBTOImnof1ndMXB9GIdBt0w0Td9xeA507O1VV6J+e+v4g7d3Lu8hRewljnu0rxvXL1hPXge+WaTXgKL2EXxhPi2kzcWbu8hQ8Zd9YuD2ETnsKofxe7cAinMHzr3GGSBoxJmrpKMUXXbMJTGMdb+4Y7bpdDOIW38CHfJ/HgIWzCU1h860smUX595/TFJH5XWXVwfYvdxfrO6YvfVYaNrK+jvDiJi+jEICZxE8/D+jrKi3TbdMO30M86O+j9VVcOer8+IWF+rnkImzDmqOrAz5uXOpiZA2NmrnkIm/AUxpxWFLtwCKfwFj5k3H+/PITha8VTeAm7MHyzOMno+u9Zzok7/zqKQziFt/Ah3++ZBw9hE57CS1h88coMTOIm1itzHRNemYGDWK/Mv8JJXEQnBjGJm3ge1hfUXRxEujnd0Mte9aBn64kLJuTq2/sPJuSaTXgKv+nqg59mrcnjg0m45iFswlN4Cddu1912TMI1p/AWPmT8lcvlIWzC8K2r9P5mBNiFQxi+dXLv98aD4ft1ZdzvjQcPYRMu3/o0jCm6ZhcO4RTewucxpuiah7AJT+HvKqtQqSG6xiB+V1l1ZE3QNZ6H9UJeMVbjc41GnMRFdGIQk7iJ56HRzeiGV/Z6VpHo/e9vNk6i9+veN+bnLqP3Lw9h/A1SHfh8f2t0MA/XfMjrJzyETRh/a7SKsT7YhUM4hbfwIeMV/DJ8ax/wCn55Ci9h+NbZR9dfxvvYr3MxM9c8hE14Ci9hvH+u/b/v28F4/1z7fN+3g8sX5xHv2y+XLy5CvG+/XL649vC+/XL51msivvOuuXzrNQ4/r9oM3zp2vG+/DN+6lrYJw7eOEZ/WL8O3jnGHMHzrGPEp/nL5eh0jPsVfLt96TcF34TWXbyUz5u2ay7eetWPerrl8K70xb9f8NVFZ1bhd4yAacRIXEY5eHMIpDMddfMj4vH95CJvwFF7CLhzCKSy+Q3zxub6eLmPqzivzMXXnlduYumvewoeMu3GXpf4p9U+pf0r9U+qfUv+U+qfUP6X+Jfu2xHeJ73IeIz654xiX1O9SPz7RXzbhKSz1u9TvUr9L/S71u9QfUn9I/SH1h+xbiG+ILxIDx4hkwDGm1J9SP5LhsgvLeU+pP6X+lPq31L+l/i31b6l/S/1b6t+yb1t8t/jeBKhjRKfjGI/Uf6T+I9ftkev28Lzj2/GasW9WbMJft9eLZw3gNToxiFj7SxpM03nd7q9pulMvnDVM1+jEb416Raxvv2vcxC+f6iWqxusaB9GIk7iITgxiEjeRbpNu6OB6Z4TvuPOaT8B33Hm9p8DvrTYfMjr1cq2DNeu13bEJ9drevIUPGZ16eQjXbtfMAOblmpewC4dwCm/hQ0an1vsgzMs1m/AUhm+dfXTqZfjW1YLX/Mtb+JDxmn95CJvwFF7CLiy+9Ul916moT+oXz8P6pF7PFWrOrtGI3xVWjylryK7RiUFM4iaeh+dHHEQj0u3QDf39TS+MH8bp/PsTyk/UPn1/Q/kJUzFVLBW12vf3j38CL8ffQ+tPDBWmYqpYKlxFbf33yPoTqWKrOCJwI77FUGEqpgpUMCBcRahIFaggII4IvKQf7A5e01tUBQcLIBMO9q1uzn9PQD924RBO4S18yHUjoHkIm/AUFt8lvgiX7znXJ1LFVnFEIGBaDBWmYqpYKlwFKsAJQs602CqOCERNi6EC/wZXOVLiCsREi6HCVEwVX9Xxw0mtrGhRL9/xwxmu1+8nlgr8G1zl9RL+RKqoUZIfDgGzM1dgeKZFTbH8cPVhfKbFVFGDLD9sLyZoWoSKVLFVHAp8fd4TQ4WpmCqWClex67AhKjcCVWOsLn4JMVUsFa4Cq9XJwqxcjB+EqZgqlgpXESrq/AyD2CqOiMqAJ4YKUzFVLBU4ng0RKlLFVoEK6trB6N0TqAA7ulAB/s2aKpYKVxEqUsVWcUT4T8VQoRVUHvzuYVcePOEq6hq9x1N58MRWUdfoqDbDV/E9MVSYiqliqXAVoSJVbBVaQWoFib3GZVlvK8Lu/6V21HCk9ZHhiSOiPjQ8UasZWgYZYg6RKraKI+L8VAwVdX4MzXSmiqXCVYSKVLFVHAqM4oVNiKHCVEwVqGBDuIjvvce2A67F5g/CVEwVS4WrCBWpYqs4IuqtxxNagWkFphWYVmBagWkFphWYVmBawdQKplaA2Lm7g9iZBrFUuIpQkSq2iiMCsdNiqDAVWkGN8XmAXTiEv/EXx2XzRc7jQ/4CZ7uDh7AJT+El7MIhnMJb+JBDfEN8AzuL6zawf/f/gv3DocURkT8VQwVWw7WOwJg4nQiMFkcEAqPFUGEq6mysAbFUuIpQkSq2iiMCIdMCFeBsIWRaTBVLBSrAlYKQaYEKFsRWcSjwfX9PDBWmYqpYKlxFqEgV39WRBj7kiqXm7+rICTbhKfxdlTnALhzCKbyFD7lGf5uHsAlPYfE18UXarLpwMTAYKyGwfxtiqlgqXEWt5hVKGAMMhw/yocVUsVS4ilBRZ8Oxi3hb0uKIwNuSFkOFqZgqlgocz4EIFaliq0AFuFLipwIVYHuRGC1cBY4UG48saYEjxfYiS65AlrSAD8pJUzFVLBWuIlSkiq3iiED+tNAKtlawtYKtFWytYGsFWyvYWsHWCo5WcLSCoxUcreBoBcifwAWL/GmRKraKQ4FJyCe+5rPLzlbAnOMTqWKrwMp1wWOm8V79GGp8YqnAERhEqEgVOIIJcWQBvK9pMVRoBaYVmFZgriJUpIqtQiuYaopwiQXhKkIFDi4gtoojAm9YWpRPJISpmCqWClSwIeBzII4IxE6L8kmcU8ROi6liqXAVoSJVVAXIbnzPYAvETouhwlRMFUuFq8DSuFyQJ4mNR560WCpcRahIFTgEnBLkyRXIkxZDhamYKpYKV4EKcBqRJy22iiMCedJiqDA5wciTFkuFq8A1WhGPLxy8O+p4o9LCVEwVOLgNIZuIH/d94ogY8DkQQ4WpKB/c5MWXEr4FXEWo0AqGVjC0AgRKi6HCVEwVWoGp6f0EhD24n4CuGCpMBQ5uQOBzDg57poqtonxwoxszlk8MFeWDO9h+P+dgAcRGC1ehFSytYGkFS97bY9ryiaHCVGgFrqZIio1NRFJcgaRogYMLCFMxVSwV5bMTIlSkiq0CFeD8IFA2CkWgtFgqygd31/FFhk+kiq3iiECgtBgqqgLcq8f3GT6xVLiKUJEqtoojAklxcLng/QXugDvCocVWcSgwj/nEUIFDCIipYqlwFaEiVWwVRwQC5STEUGEqpoqlwlUETzAGNJ/YKo4IZAie5uCLDe+OYpLziVCRKnBwdfFharM3EbHRYqqADyrA+5AWoeLzSTwfwJcfvgX0NC49jUsrWFrB0goQKC1cRahIFVqBq6nLDcXAW48WriJU4ODqUsZM572HiKHOJ0zFrH9jEEuFq4gSOD+RusBWIbc0MQ36hFaQWgECpcVS4SpChVaQalpJkXh2gZnPJ5YKHBxaZoeKVLFVnBJojHrr8cRQYSpQAS7lAx9ciSdVbBXlg0ccGPV8YqgwFVPFUuEqqgLcAcf3Jj6xVRwR46diqDAVUwWWrsulpjn/xIIYKkzFVLFUuAocQkCkiq3iiJg/FUOFqZgqUEFCuIpQkSq2iiNi/XiCMUT6hKmYKnCNOsSWHV1HhP9UDBU4uA2hm+ihIlXABxX4ERE/FeWDz84YGO0FQk9j6GkMrSC0gtAKYqs4IlIvpNQLKbWCVFMkxd3R3CqOCLz1aIGDw6W85VEkxkCfCBV1CHgahEnQJ44IxAaenmAYtBc4pmKq0AqOVnC0ArxDabFVHAp8C+MTQ8VUUecHLyyY/Xxiq8DBVctg/POJocJU1BWCp04YAX3CVYQKVFCXMr6UMfH4BN/K+ISpKB88csEXMz7hKkJFqtgqjggEyhwQQ4WpmCqWClcRKlIEkgIPLfAbyjmx8QiHFqEiVWwVRwRiA48zMCz6hKmYKpYKVxEqUgUqwGlEoFyBQGkxVJiKqWLJCUagtAgVqQLXaOUoRkl7R3OqWCpcBQ4OF1/qJu6fiqECPqgA70NaLBXls3BVbT2NW0/j1tO4tYKjFRytAO9DWkwVeiEdvZCOVnDE9I6V4lP1nSttMVUsFTi4AYERrQlxROiYGr7IMfFQCbOnT0wVdQjr/hvXBUJFqtAKhlZgWoENFaZiqlgqtAJTUyQFnkrh2xyfMBU4uIBYKlxFqKgrBI9/MLD6xBGBtx4tUMGGgM+BcBWhonxwzxsDrU8cEQiUFkOFqZgqqgLcSsZc6xOhIlVsFUcEAqXFUIGlcUrwBgNPfDCk2gJvMFoMFaZiqsAh4JQgNlqEilSxVRwRCJQWQwUqwGlEoLRYKlxFqEgVW04wAuUKBEqLoQLXqEOE7Cg+y7TYKs4TA9OtWY/ABmZYsYkDM6xPuAr4HIhUsVWUTz3XGZh77QXGUGEqtIKhFQytAO9DWqSKreKIMK3A1BRJkSgUA60tUsVWgYMbJTC2mldMFUtFHUI9TRr4NsgnUkUdQuD8zCMLrJ+KoUIrWFrB0grwBystQkWq2Cq0AldTJEVgE5EULUIFDi4gtoojAknRoq6QeoD03XxSMVUsFagAlzICJXAlIlCuQKC0KJ97ThEoLaaKpcJVhIpUURXcrUKgXIFAaTFUmIqpYqlwFVgalwveYCQ2HuHQYqlwFaEiVeAQcEoQGxAYbn1iqDAVU8VS4SpQQUKkiq3iiECgtBgqjCcYA7FPLBWuAteol0BSYEcxHfuEqZgqcHAbQjYRM7BPHBF4H5KoAO9DWpiK8qnnTAMzsG8BVxEqtIKpFUytAO9DWgwVpmKq0AqWmuKtRz0zGhhuzXrXOTDc+oSpmCqWClcRKvBHQTDFsHuLI+L+Xc0VQ4WpmCqWCvy5GM4CAmXjbCNQrkCgtBgqcKRYDYHSYqlwFaEiVWwVOFJcFPhbuRZDhamYKpYKVxEqUsT9q1lsyNEjRe60mCqWCj3So0d69EiPHilyBwIDsU8MFXKkGIh9YqlwFaEiVWwVstf4lsonJjcEs7L3SDEr+0SoSBVypJiVbWF6pKZHaqZiqlgq9EhNj9T0SE2P1PRIpx7pHCp0r6fu9f0rW2zI1COdW4X0DyZin9AjXXqkS4906ZEuVxEqUoUe6dIjdT1S1yN1PVLXI3W9qlz32nWv8ZUeeKnG92U+MVSYis9n4g06vhuzvtHgE6liqzj1b3Ck9xexrxgqrIRDTFkA3/vRwlVoBakVpFZwf+IW4v7G7RVDhanQCraa3h/FDogj4v687RU4uA1hKqaKpcJL4Bq9P459RarYKqoCnFOMxU6898dY7BNLRfngTT3GYp9IFVvFEYEfx2sxVKCCCTFVLBWuIlSkiq3iiLg/fesQWCAgUsVWcUTc37m9YqjAIWyIqWKpcBWhIlVsFUcEfjUPb/Puz2O3MBVTxVLhKkJO8P3R3Cu2iiMCv5dZH/LHvD+Kix29v4p7RahIFbU0PlbcX8K+m3h/AveKqaJ8ECj317BbhIryQc/N0NMYehpTT2NqBakVpFZwfzL3ClehF1LqhZRawVbT+1VB2MT7XUFXuIpQgYPDpYzvBUIEYM71CVNRh4A3tJhzfcJVYBNxfvD1QL3AVnEo7u9jtxgqTMVUsVS4ilCRKtQUSYHPWfeXslssFTi4+29CRarYKuoKwYcUjMA+MVSYiqoAn2Xuj2bj88L91ewWW0X54L3//eHsFkOFqZgqlgpXgQomRKrYKo4IBEqLocJUTBVYui6X+zvaGxt/f0z3ClMxVSwVrgKHgFNyf1L3iq3iiLi/qnvFUGEqpgpUgNOIQGkRKlLFVnFE3N/mxQm+P857hamYKnCNJsSWHb2/vgtxf373iqGilj64+LZu4v2p3StSRfkcVID3IVfgfUiL8jm4qo6exqOn8ehpPFrB0QqOVnB/mveKQ3F/gLvFUGEqlopKinpIM/x+k+AVR8T9LsErcHBXVCLVI5Lh92sDrwgVdQjniq3iiEBs1N+gj/tVoncBfJdoi6lCKzCtwLSC+5O9V2wVR8T91d4rtIKppkiKg028v9Z7xVaBg6uWuT/K3WKoMBV1hdQw3MAI7BOuIlR8FdRv3X43Sn4lBsRQYSpmCYNYKlxFqEgVW8URgR8C+OEKwS8BtDAVU8VS4SpCRYq4P+WLy+X+Zi82/v5o7xWhIlVsFUfE/eVenJL7071XmIqpYqlwFaEiVaACnEZ8yf8V+Jb/FkOFqZgqlpzg+yPAV4SKVIFrtHI07o/8OsRUsVS4ilq6hlJG/GQT4/6k7xVDRfnUKNrAoOsTS0X51F+0jxihC6SKrUIrMK3AtIL7E8BXTBVLhavQCkxNkRQ1zTDuN5e2mCqWChzchKhEmtjE++XEEPfbia+oQ6jBqYFB1yemCmwizg++4LAXCBWpQitYWoFrBfeLiq8wFVPFUqEVuJoiKQY28f4q8BWmAge3IZYKVxEq6goZ2Gv8dEiLIwI/HtKiKjDUhkAxXIkIlBahonwM1ygCpcURgUBpMVSYiqkCFeAKQaC0CBWpYqs4IhAoLYYKLI3L5f42MDb+/jhwifvL4C2GClMxVeAQNoSrCBWpYqs4Iu7vBF8xVKCCAzFVLBWuIlSkis0TnPfHhiHurw1fMVTgGk2I4I7m/TXhK7aKIwI/LIjGuL8afjfx/nTwFa6ifCYqwK8Ht9gqyqe+PmDcHw+/Cyw9jUtP49IKllawtIL7U8NXpIqtQi8k1wpcTXHn9FaNO6ctUsVWgbvH2ET+osEnpoqlAveIYYq5tBapAnepcU7vDxtggfvLBlcMFVpBagWpFdyfN7giVKSKrUIr2GqK58H4bIYR2CdCRR0cPvLcEdgWRwQGTFrULXh8sMEI7BNTxVJRFeDzDwZdE58XMOh6BQZdn4DPgjAVU8VS4SpCRapABQ5xROCxcYuhwlRMFUuFq8DSdbncQVe8qb+Dri2WClcRKlLFdwgb7/Ax6NqiYuOJocJUTBVLhauIEgMiVWwVR8T6qRgqTE4wnti0WCpcBRqwgviOwN4dxWPjFqZiqsDBGYRuIqZNWhwRgUNABTFUmApsIq6q0NMYehpDT2NoBaEVhFaAx8Ythgq9kFIvpNQKUk2RFHhXc787tcVQYSpwcLiU8dQX74TuF6W22CpwHVRaYtD1iaECm4jzgy9Svgvg+1VbuAqt4GgFRyvgjyh9D6R/KoYKUzFVuApc5BviiBg/FXVw+MiDEdgnpoqlotoMH2wwAvtEqtgqqgJ8/sGg68bnBQy6PrFUwGdBhIpUsVUcEQiUFkMFKnCIqWKpcBWhIlVsFUfEwtIJgQWw8StVbBVHhP9UDBV1CPdsV2w8sVS4ilCRKraKIwKBgreGGHR9wlRMFUuFqwg5wZEqtoojItGAB2LJjqarCBWpAgeHi2/rJm5TMVXgEFDBdhWhApuIq2rradx6Go+exqMVHK3gaAVnqXAVeiEdvZAOKzCMwD6B8+MQOLiAcBWhIlVsFUcEAqUFUnlCmIqpYqlwFaEiVWwR/KH0T5iKqWKpcBWhIlVsFUcEfzH9E1rB1AqmVjC1gqkVTK1gagVTK5hawdIK7o8pLghTMVUsFTjbCVE7+sNFgcmRKzA50gJdjwvp5s4VUwWuqgPhukCoSBVagWsFoRVgyq2FqZgqlgqtINS03qHs+nxqmJR9wlTUwdXnEsOk7BOuIlRUy0xco8idFkfE/qlABTg/yJ2JQpE7LUIFfHAdIHdaHBHInRZDhamYKlABrhDkTotQkSq2ikOBgdonhgosfSBqgfrbJMM8bAukS4uhwlRMFXUI9ec7hnnYJ0JFqtgqjgj7qRgqUMGEmCqWClcRKlLF5gnGQG0LvJFpMVTgzA2IkB3FO5QWW8URgY889TDIMA/bm7iWCleBQ0AFeCPTYqvAJtZVhbHZXsD1NLqeRtcKXCtwrQBvZFqkCr2QXC+k0ApCTe9PNuOc3t9sviJVbBVYGpfy/X1mnMb7A81XLBU4hA0RKlIFDgHn5/5MMxa4v9N8xVChFWytYGsF98earwgVqWKr0AqOmiIpHJuIpGgRKurgHPuGpGhxKDAC+0RdITUqaBiBfWKqWCpQwYKAj0McEQiUFvAJCFMxVSwVriJUpApUkBBHBAKlxVBhKqaKpcJVYOm6XDDBumuezzDB+sRS4SpCRaqoQwicEsTGFYiNFkOFqZgqlgpXgQpwGhEoLbaKIwKB0mKoMDnBCJQWS4WrwJmrHMU4a+8oPvK0MBVTBQ4OF1/oJuKDTYsjAu9DAhXgfUgLU4FNxFWVehpTT2PqaUytILWC1ArwPqTFUKEX0tYLaWsFW03x1iNwWeKtRw0rGsZZnzAVU8VS4SpCRWXVxobgKU+LQ4Hvf31iqDAVU8VS8fn88oqt4oioQHkCR3ogVv1fEsJVhIo6WTUHaRhafeKIQGzUgKPhB+J7gYqNJ6YKrcC0AtMKLFVsFUfE/KnQCqaaIlBq+NIwzvrEVoGDq5bBOOsTQ4WpqMul5hMN46xPuIpQgQpwfhAbt1DERgtTAZ8NsVS4ilCRKraKIwLpkrhCkC4tTMVUsVS4ilCRIhAoG5cLYmNj4xEbLUJFqtgqjgjExsYpQWy0MBVTxVLhKkJFqkAFOI1IlyuQLi2GClMxVSw5wUiXFqEiVeDM1QsLxlnvjmKc9YmlwlXg4AJCNhE/WP/EUAGfhJgqlgr4bIjQBVLFVqEVmFZgWgHeh7SYKpYKV6EVmJriE0s9CDGMsz4xVSwVtXQ9uTOMsz6RKraKv4PDMw2radbHQ9iEp/ASduEQrs07OLEIkhZDhamoI8SHBky7PuEqQsXfEeJHMqyGXR8f8pcij4ewCU/hJYwdxEWNtyctjgi8PWkxVJgKHAe2CJlRTxEN46v74NpHZrQYKrAaLmpkRgvsF6pGZrQIFTgeXDjIjBZHBDKjxVBhKqaKr4Lzw/VVmfFEqEgVW8WhqMFWx7Hh21zvtmGU9QlXAZsBkSq2iiOikuWJUcIgTMVUsVTgQFHBCBWpAhUExBFhPxWoAIdtpmKqQAUTAhVsCFRwIKqCgQ2tmHniiKiYqd/L/sRUsVS4ivIZ2AO8O8GVjInXJ4YKU7FU/BXqiOr6MtfHh/yFiCPBa8D1sQlP4SXswiGcwptcbzUObp9jfPWJqWKpwPbgdEeoSBVbRR0f/n3+hIewCU/hJezCIZzkL1QcH5NqtvUxDu+KqWKpcBU4PFyzO1VsFUdERcoTQ8V3hHF5Ci9hFw7hFN7C53F9+evjIYzjSwhXESpSBY5vQxwRSJIWQ0Ud3w88hZewC4dwCm/hQ0ZO1AN9w1TrE0vFZ4GP7TXU+jiFt/Ahf59mHn9biHtPNfX6eAovYRcO4do9wzFUNhyDQ31yeWKpqLUWOIRTeAsfcgVI8xA24Sm8hMXXxdfF18XXxTfEN8Q3xBfhYdgYhEeLVLFVYP+quzHR+sRQYSqmiqXCVYQKVIBCc6s4IvZPBSpwCFMxVSwVLicaCdMiVWwVRwQSpsVQoVfX0asLb03wQBbf/frEVgGfygCMxB48ycNI7BOmYqrAkR4IVxEqUkVVgAcWGIk9eAyGkdgnhgpTMVUsFa4iVKSKrUIr+N61OJ5O1UTsYxP+mmni+L8keuzCXzPhaVqNzD7ewodcQdQ8hE14Ci9hFxbfKb4LO7sgsH/3/7JK4NCWqwgVKcKxGk5nfbw5eI6S9fHmCVcRKlLFVlFnAw/X8B2wTwwVpmKqWCpcRajA8eBsIX9aHBHInxaoAFcK8qcFKnAIVICtQv60CBWpYqs4IpA/LYYKUzFVaAVf/jie7tUA7eMU/i7LW/6XPc1f9Dz+Lst7vPXWpnkKL2EXDuEU3sLncQ3TPh7CJoyd3RC1f3jahKnYg5d1TMU+MVSYiloNj5E28gGvYRiEbYFPNS2GClMxVdTZwCMhjMg+ESpSxVZxRMyfiqECFRjEVLFUuApUkBCpoirAWzGMyLZAlrQYKkzFVLFUuIqqAM9tMC/7xFZxRCB/WgwVpmKqqEsTO1Vve5pDOIW38CEjefCUB5OyB584MCn7RC2FizO28CHXR6PmIWzCU3gJuzA2CvUhPPAEBtOyTwwVpmKqWCpcBQ4Qpnjz0mKrOCLw5gUPQzBH+4SpmCqWClcRKqoCPBnBHO3BkxHM0V6BOdonhgpTMVUsnkoM1T4RKlLFVnFEIIJaDBWmQiIIQ7VPpIqtAkdazXw0go5G0LkRdEX54IY2hmqfSBXY0ftvJATP/KkYKrSCqRVMreBG0BWhIlVsFVrBUlNkC5704HtlnwgVOLiE2CqOCGRLC1wuG8JUTBVLBSo4EOVTXwphGKptgfc2LcoHzwswVPvEVLFUuIpQkSpQAa4QvLe5Au9tWgwVpmKqWCpcBZbGKUG64KELhmqfWCpcRahIFTgEnBKkyxVIlxZDhamYKpYKV4EKcBqRLi22ivPExITtE0OFvRM8MXv7xFLhKnCNRgnERu3oxFDtE6ZiqsDSB4KbODE6+8QRgfc0BxXgPU0LU1E+9UxjYqj2LeAqQoVWYFqBaQUIlBZDhamYKrSCqaZIiok9WD8VQ4WpwMEZBD+qTHx77BNbRfnUI5CJadknhgpsIs6PfFiaP/mwNH/yYWn+XCtwrcC1gvthCeJ+WLpiqDAVWkGoKZLiYBORFFcgKVrg4BLCVEwVS0X5HDQGPgW1SBVbBSrA+fkC5Rtnh5gqlgovgWv0CxSKVLFVHBFfoFAMFagAV8iZKpYKVxEqUsVWcSjqe2W/8XwILOAQqWKrOCLGT8VQgUNIiKliqXAVoSJVbBVHhKGCDTFUmIqpYqlwFcETXNOyFFvFEYEMqYeLs75X9u3odBWhIlVg6br46ttj3yYuUzFVlM9ABctVhIryqedNs6ZluYCeRtfT6FqBawWuFfhS4Sr0QnK9kFwrCDWNWnrgsgwc3IRwFaEiReRPBVbD9uZSgdVgmlXOwJlDow9cVWj0Fq4CFeByQaO32CqO+KDR7/8Fjd7CVEwV3+evux91d6M5hPNxjbP28dc4ax9yjbNSTBXfWvXUdBoavh5zTEPD12OFaWj4K9DwLYYKUzFVLBW1mXXneBoavkWqQAU4NjS84djQ8IYjQMPXze9Z06yOWKhh1sdL+M9kJZZFSxuOHy1t+K/mT8VQYSqmiqXCVeAoN0Sq2CpQAc7Aqgom9gyZMLEzyISJQ/gyYSU25ouExy78Z4I/4Zk10tr8Nf1jOGBT0fMt6hjn/c+WCldRxzhxwOj5FltFHSPeBxkCoMVQYSqmiqpg4egRDS1CRarYKo4IhEaLoQI+2MHvfcNyHMHGP8Hm7KHCVFTRCxcm0qQFisa2IU1apAoUfU2PCKRJi6HCVEwVSwUqwFWHtw0tUsVWcSgmsqbFeJtT46zfX3ZBuIpQkSrKpu6mzomsuQJZ02Ko+DvQdf/9FzWPl7ALh3AKb+FDxluHuls7J946tFgqXEWoqCOsYe85kTMtjgjkTIuhwlSgAtSGnGnhKkJFVRDYL+RMiyMCOROoGjnTwlRUBXV3c06896i7knPivUfdD5wT7z1apIqt4ojAe48WVUHCFDnUYqpYKlxFqEgVW8URgRxqoRWEVhBaQWgFoRWEVhBaAXIocU6RQ1cgh1oMFaZiqoAPGi9TxVZxRCC8WgwRyJFESyNHWsC0rqqFBscNhIUGbxEqUsVWcUSgwVsMFaZiqtAKhlYwtIKhFQytYGgFphWg0etW1lxo57rfNBfauYaA5kI7tzgi0M64O7LQzi1MxVSxVLiKUJEqtoojYmkFSytYWsHSCpZWsLSCpRWgaXHbY6E1a8x4rtua+M9ua17hKkJFqtgq4FOX5UJrtsDxbAhTMVWgalywaDPcVVposxa44nHm0Ga437TQZi2WCldRPriNs9CALbYKVAAfNGCLoUIr2FrB1gq2VoB3Dy30Ctl6hWy9Qo5eIUevkKNXyNEr5OgVcvQKOXqFHK3gaAVHKvDfT8VQYSqmiuDF5zdD6uJzZAiuHUeGtDAVU8VS4SqC15vfDLli8xLzmyEQN0OumLz4HBmC682RIS02Lz5HhuA0OjKkxVBhKiYvMUeGtHAVwUvMkSEttgqtYGkFSytYWsGSa9TRmrhp52jNFlMFCsWO4lWzRahIFVvFEXHb+YqhwlR8FQzcWauJTwpXESpSxVZxSuB4qp2fGCpMBSrABbuXCleBClD1ThVbBSrA9XZ+KoYKU4EKcFlW0w7cIarhT4qt4lDU/Of3J/AQ5YN7DfXNp9+fwENMFUuFq0AFDpEqtoojYqCChIDpgShT3F+ogdDvL+UhytTuAqEiVWwVR0T19hNDRVWAmwc1MEpRFeCjew2MUoSKVLFVHBGVBwMfxmtslMJUTBWoAIVOVxEqUAGqnlvFEbFQwYaoCnATvwZOKaaKpcJVhIqqYF2freKIqI8ITwwVpmKqWCpcRajQClwrcK0gtIKADzYklgoXgajBJ8pA1LSoCvBZNhA1LbaKIwJR02KoqD3AB89A1Dguf0RNC1cRKlLFFoFAcTT6wWq4xA6OBxcSAqVFqtgqDkUiUFrA5wpTgeMJiKXCVaDqCoca5jT8cMNMJEULnLkFsbhviaRoESpSBXwOxBGBpGgh5yeRFC2mCq3AtALTCkwrQFJcgQ6OK7aKIwIdjLuRiQ5uYSqmiqXCVVRt+Pif6OAWW8URgQ5uMVSYiqliqXAVWoFrBa4VuFYQ8MFVhQ5usVS4ilCRKraKIyJ/KoYKrSC1gtQKUitIrSC1gtQKUivYWsHWCrZWsLWCrRVsrWBrBVsr2FrB1gqOVnC0gqMVHK3gaAVHKzhawdEKjlZwpIL9+6kYKkzFVLFUuIpQkSq2Cq1gaAVDKxhawdAKhlYwtIKhFQytYGgFQyswrcC0AtMKTCswrcC0AtMKTCswrcC0gqkVTK1gagVTK5hawdQKplYwtYKpFUytYGkFSytYWsHSCpZWsLSCpRUsrWBpBUsrcK3AtQLXClwrcK3AtQLXClwrcK3AtYLQCkIr0EzcmolbM3FrJm7NxK2ZuDUTt2bi1kzcmolbM3HfTAyIpcJVhIpUsUXcGDSIocJUTBVLhasIFaliqzgijlZwtIKjFRyt4GgFRys4WsHRCo5WcKSC8/upGCpMxVSxVLiKUJEqtgqtYGgFQysYWsHQCoZWMLSCoRUMrWBoBUMrMK3AtALTCkwrMK3AtALTCkwrMK3AtIKpFUytYGoFUyuYWsHUCqZWMLWCqRVMrWBpBUsrWFrB0gqWVrC0gqUVLK1gaQVLK3CtwLUC1wpcK3CtwLUC1wpcK3CtwLWC0ApCKwitILSC0ApCKwitILSC0ApCK0itILWC1ApSK0itILWC1ApSK0itILUCzcSjmXg0E8/NxAOxVLiKqqBm4udBJrbYKo4IZGKLoaIqwGjGQSa2WCqqAjxRO8jEFqliqzhPrB8ysQUqcAhTMVUsFa4iVKSKreKIQCa20AqGVjC0gqEVIBPrlvX6IRNbpIqt4ohAJrZABQlhKqYKVLAhXEWoSBFIvnp2uH5TV0O+tXAVtdrG+UG+tdgq6njq+dz6Id9aDBWmoiqoh3Xrh3xr4SpCBXywVciqjbOArGqxVOB4sACyqkWq2CqOCGRVi6ECFWB7kVUtlgocD3YUWdUiVWwVRwSyqsVQYSqmiqVCK0itAFm1cVEgqw7OD7LqCmRVi6HCVEwVS4WrCBWpQivYWsHRCo5WcLSCoxUcreBoBciqg9OIrGqxVRyKgaxqMVSggh/EVLFUoAKHCBWp4qvAfnfpI6Ky6olRYkGYiqlilTgQriJUfBVYTV8uDPg+cURUVlnd918Y8H3CVFQFdd9/YcD3CVdRFRiOp7Lqia2iKpjYxEqxJ4aKqqAG81Z9Ny7FUlEV1B30hTngJ1JFVTCxO/OIWD8VVcHC7lS+PTFVVAULu1P59kSoqAoch13v3544Iur9mzkKrfdvT5iKqsBRaGXiE66iKoi7dKrYKqqCwNKViU8MFVVBYOnKxCeWiqogsTuViU+kiqoAL0b1tbtPVCY+URUg8OsLeSmmiqpgY+nKxCdCRVVwe7sy8YkjojLRDtqsMvEJU/FVMH+4RisTn3AVoSJVbBVHRGXiE0OFqdAKjlZwtIKjFRxUgO09W8WhwKDzrOeaC4POT5iKqqCeHa763l4KV1EVIGowA/3EVnF4hWAG+omhwniFYAb6iaXCeYUYMrFFqti8QjAD3QKZ2KL2oJ6FrpqBppgqag9qbnrVN/pShIraA7v/Zqs4IioTJ2IQE9JPmIopZ24uFa4i5MzNVLFVHDlzlYlPDBUmZ25NFUtFVTCvCBWpoiqYKLQysYX/VFQFC4ddmfjEVFEVLBRamfhEqKgKkOSYoH7iiKhMnAu7E0OFqagKHEtXJj7hKqoCv0uniq2iKqiPigsT1E8MFVUBkry+U5hiqagKENH1ncIUqaIqSGxiZWKLysQnqoJEBZWJT0wVVQE+l2Ag+4lQURXsu/RWcUQgE283IhNbmIqqAG+CMZD9hKvAu8E6JfO+51sQpmKqWCpcRahIFVsFjqcuF8xd4xe5F+aunzAVU8VS4SpCRarYKo4I0wpMKzCtwLQC5BvebGMy+4lQkSq2iiMCn1xx5jCZ/YSpQAUTAj7YUaRYi63iiECKtRgqTMVUsVS4Cq1gaQVLK1hagWsFrhW4VuBagWsFrhW4VuBagWsFrhWEVhBaQWgFoRWEVhBaQWgFoRWEVhBaQWoFqRWkVpBaQWoFqRWkVpBaQWoFqRVsrWBrBVsr2FrB1gq2VrC1gq0VbK1gawVHKzhawdEKjlZwtIKjFRyt4GgFRys4UsH6/VQMFaZiqlgqXEWoSBVbhVYwtIKhFQytYGgFQysYWsHQCoZWMLSCoRWYVmBagWkFphWYVmBagWkFphWYVmBawdQKplYwtYKpFUytYGoFmolLM3FpJi7NxKWZuDQTl2bi0kxcNxMTwlWEilSxVRwRNxOvGCpMxVShFbhW4FqBawWuFbhWcDNxQwwVpmKqWCpcBSpwiFSxVRwRNxOvGCpMxVSxVLgKrSC1gtQKKhMXPhBiWP6JocJKYKsqE59YKrwE9qCSrxe4+XYgTEWtVoOuC4PvT7iKUJEqtoo6HnzgwOD7E0OFqUAFCbFUuApUsCFSxVaBCurgMCz/xFBhKqqCGqhdGJbHD6svjMTj188XRuKfOCIqxZ4oH3y8rO9jNvxw98Kw/DIcj8EHVVeKPREqUgUqQNV2RMyfiqGiKsCdOUzOr4lCK7jWRKEVXAufATE5v+ZdYKs4Iiq4nhgqTMVUURXg06FXcD2RvGDrG50ppEvqO50phgpTMVUsFa4iVGgFrhW4VhBaQWgFlVVr4dqprHpiqcBh4yxUVj2RKraKI6Ky6omhwlRMFUuFVpBaQaICXAe5VRwRyKoWQ4WpqAocu4OsauEqQkVV4LhgkWItjoh6/7ZwuxZ/CbAcl3Ll2xOoAA2IfGuBClAo8q1FqtgqDgX+RuCJocJUTBVLhasIFaliq9AKhlYwtIKhFQytYGgFQysYWsHQCoZWMLQC0wpMKzCtwLQC0wpMKzCtwLQC0wpMK5hawdQKplYwtYKpFUytYGoFUyuYWsHUCpZWgBisyeyFPxh4YqpYKpBIV4SKVLFVHBE3E68YKkzFVIEj3RBYDQL5hkcXgXxrYSqmiqXCVYSK8qm/xV6Ren5Sdyd1d5BVLUJF7U4NfS/8KcETRwSyqoVeIVsr2HqFbL1Ctl4hW6+QrVfIzSrUdrMK4mbVFXqFIKtubciqFkuFVqBZFZpVoVkVmlWpWZWaVfmTazR/U8VS4SqCteUvVWwVWoFmVWpWpWZValalZlVqVuWQ6yBvVl2xVchZwJ8sdG3IqhamQivQrErNqtSsSs2q1KxKzarUrMop10FOPQtTz8LUszD1LCCrcPsZfxrxBM7ChDgikFUthgrsAWpDVrVYKlxFqEgVW8URgawKHAKyqgWyCmcB79KQFPgDiIXHn/gDiCe2iiMi9GyHnu3Qsx1TxVLhKvSKDz3boWc79Gynnu3UK16TL1Ovt9TrLfV6u/l2II6Im29XlA8eD+APIBZmv/AHEE8sFa4iVKSKreKIQL61kHvEee+YXeEqQkWq2CoOxb53zK4YKkzFVLFUuIpQkSq2Cq1gaAVDKxhawdAKhlYwtIKhFQytYGgFQyswrcC0AtMKTCswrcC0AtMKTCswrcC0gqkVTK1gagX6rGBPrWBqBfN/M3VnCZKrOABFtxRMAva/sarUBXz/OP26jBhC6bAVtiNojqA5guYIuiPojqA7gu4IuiPojqA7gu4IuiPojmA4guEIhiMYjmA4guEIhiMYjmA4guEIwhGEIwhHEI4gHEE4gnAE4QjCEYQjmI5gOoLpCKYjmI5gOoLpCKYjmI5gOoLlCJYjWI5gOYLlCJYjWI5gOYLlCJYj2I5gO4LtCJwTl3Pick5czonLOXE5Jy7nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J/KbB55a2fnNw8M0lrEfBr95eChGNZrRjWGEMY1lOILiCIojKI6gOILiCMpXyTzObx4uprGMLfCbhwsi6KAazSCC82+GEQZzEGAZW+Db7kUxqtGMbgwjDEfQHEFzBN0RdEfQHUF3BN0RdEfQHUF3BHzbzWrHwS8oepZUjR/fdi+KUY1mdGMYYUxjGY4gvor2wW8rHqrxVbQPflvxMAwq2tmj1BFfLGML1BFfFKMazejGMBzBdAR8D84itcHvJPo6/yVndDFSvu1ehDEFvtMudjxX5harzZW5i2GEMY1l5Ppk9dngNw8PxahGM7oxjDCIoINlbIFcdUEEG1SDCrwJujGMMKaREeQvNQa/eehZfTb4zcNDMaqRc5BPHh/85qFvRkquughjGsvYArnqohjVaIYjICOdwZFDNvNGDrkI4+/fjN/5N8vYQuaQh2JUoxndGEYYjmA4guEIwhGEIwhHEI4gHEE4gnAE4QjCEYQjmI5gOoLpCCYRFNCN73c54/wW4WIaS1j0w+ZbHK2B7zc2g98VPEzj+43N4HcFF5ldHjInVgLNc6SHZnRjGGFMYxn7A78reChGNVi5DlifAKxPfrb5jcBDMarB0TbIo+UD1wb1/heZDx6KUY1m5PpkHcqg3v8hjGksYwvtZxSD8SzQjG4MgwgamEJnCAN0YxgcgIknbVx8P2EaVT9hGvX8hOmgGPTDkpACCoHyc6RxsIX4GRyNZeQ04qIZ/CCKfjiNuAhjGsvYAqcRF8WoRjMcwXQEk6UnUD7oZ8fn16TBJ5gy+oduDCOPVvmUbI7Gyu1qNKMbwwgj16cS9V7G/sAzyh+KUY1mdIMIGghjGssggtwUlNE/ZAT5q5hBSfzIR/gPSuIflrEFUsBFMarRjG4MwxHU7+dvg5L4hy207+dvg5L4h2rws6cBujGMMKaxjC3wM8iLYlTDEXRHQKZoLBanEY3/wmlEY6ScRlw0oxscjQXmlCCLugZF7A/VaEY3hpHr0wuYxjK2wCnBRTGq0QwiYOXmMMKYBhGwd+YWFhF0UIxqNCMj6MwoOeQijGksYwv7ZxSjGs1wBPv7Wdo4RewX0/h+ljZOETvo+nniOEXsnB+cIvaLZnRjGGFMYxlb4PLzhSMojoBTj/wV8KAgfeTjKQcF6SOrzwYF6Q/FqEYeLR8bOSguH/xxpbj8gtOIi2JUoxm5PlmkNigufwhjGsvYQv8ZxSCCAprRjWEQATNKdjkgu3B+QDn4CKaKLxwX01jGFsguF8WoRjO64Qji+8npoBz8YRnfT04H5eAPxeDHzx00oxvDCGMay9gCP36+KIYjWI6AHBIsFpki2FVkiuD/Rqa4qEYzOBrD5mwjSzUGpd0PxahGM7rB+mwQxjSWsQXONi6KUQ0iGKAbwwgjI8gSikHR90NGwBVair4filGNjIALrBR9PwwjjGksYwtkl4tiVMMRtO+n4YMK8Icwvp+GDyrAH7ZwfpTMoc+Pkg+q0YxuDCOMaSxjC8MRDEfAuQtnQpR2D07ZKO0e+cyeQWn3BXnnohh5NC4uUqY98sk8gzLthy1whnJRjGrk+nDZkTLth2GEMY1lbIEzlAvGwweDM5SLZnSDCJhRsssF/bAPyC4XxahGM7pBP6wPeeeCkbIKfP+5IIIMlGLsh4yAi3EUYz9kBPkT2kEx9kNGwJVGirEfMoK8NzUoxn7ICPInWYNi7AciGKAaRBCgG0QwQRhEsMAyiIBhk5Eu/iIIrotRjP3QEgw7M9LDSDDszEgPM8GwMyM9cC7GobkNflGMajSjG0TAJLYwpkEEzE5mpIvMSA/FqEYzujGMMKbhCLojGPTD+gyOxpLkmVBwvYonsT8sYwuZkR48nvB4wuMJjyc8nvB4wuMJjyc8nukZnY5gOoI5NOy5NOzp8SyPJzPSQzWa4fEsj2d5PMvjWR7P8ni2x7M9nu3xbM/odgTbEez1DZvC6jNsCqvPECisfujGMMLQeCisftB4KKx+KEY1mtGNYYThCIojONmFYZ8cwrCrx1M9njqNZWiHUCT9wA4poBqcU9DpOas5GEYY9JMpjYLn4DosBc887GVQ8PwwjDwal7XmeWzKwTIyJ3IpjILnh2JUoxndGEYY01iGIwhHQKbgHImy5uBkjrLm4LIwZc0PWyAfXHA0ZifPUKIyB3mG8rCMLZAPLoqR68MFVoqXH7oxjDCmsYwtkA+4AM7T2x+q0QwiYO+QDy6IYIBpLGN/oKz5oRjVaEY3hhEGezTAMrbANRQueJ2y5otq5B7lEuIpa74YRhjTWMYWKOG7KEY1HEF1BGSXynjIIex4SpSDTzAlyg/N6EYeLX81Oyg3Dq4eU278UI1mdGMYuT75s9tBufHDMrYwfkYxqtEMIviBYYQxDSJgRjkPOeA8hMu1lBs/ZASdA5BduNp6yo07q0Bp3UUY01jGFiituyhGNZrhCKYjIFflj14H5cYPy9gCueqiGNVoRjeGQQQsFrnqYhlbIFddFIN/w+DILoAC4YdiVKMZRL3BEDin4CooJb0P3ch/w/VRSnofppGrzQXJU9J7QD64yNXmSuMp6b1oRq52/vB3nJLeizCmsYwt8F3mohjVaIYjaI6Abyxc4qU8N87gyCFnCOSQi24Mg6OxWOQD7rlSavvQjG4MI4xcHy4hUmr7sAXywUUxqtGMbhDBBGFMYxlEwN7hPOSCCJhRvpdwpZFS24duDCOMaSxjC+SDi2I4AkptuSB5Sm0vhpF7lCuNp9T2Yhm5R4Olp9T2ohjVaEY3hhHGNJbxRRCU2j4w1wc5oxl1UDYb+QuxoGz2YQt8l7nIo+WDoIMS2MiLmEEJ7MMytlB/RjFyffJGb1AC+9CNYYQxjWVsgfOQvBIclMA+VKMZRDDBEMgHZ0LIBxdhTIPYWJLhOSBTXDSDfjYYRhjZz2KBh1dheBXCqxCOIBxBOAIyxcUwvA/C+yAcwXSnpIDFriIFXAwjD72YN1LAxTK2QApY9EMKuKhGM4hgAPphu/CH/2IL/OFf7AP+8F9UoxndGEYYRMAO4TTiYn+gTvWhGNVoRjfy0HkdNigzjbz0GpSZPjSjG8MII4eQF2WDMtOHLZAPLopRjWZ0gwg6CGMay9gC+eCifAtMmelDM7rBylWwNaN8SbkoRjUY3ACeRNLGxTLohwj4KnJRDPqZwMs4vIzDyzgcwXAEwxGQUA5IKBfeSOGNFI4g3Gl8Z09BmekFaeOiGBz64Dt7CopJH6bBEA62QNq4+Otn/lifVXWA1YxuOILlCJYjIKFcbIGEclEMR7DdaWaK+WMSM1M87A9Uls68PRBUlj5Uoxk90cEwwpgGEeRWpuZ0Zq1HUHP60Az6mWAYYUxjGVuoP4MIFqhGM7oxjDCmsYTMFDOvjwZlprMw8ZkcHqaxjC1k2njIIRSWpFejGd0YRhjTWAYRsIzjZxSjGs3oxtACjzCmsYRg5SpomtHoxjDCYHBsvulJnMWoBv0QwezGMOiHXTW9jNPLOL2MyxEsR7AcwWpGN7yRljfScgTLnZIp2kEzujEMDs1W5gQjr4sFFawPxWAIGzSjGzmEvHocVLC+A0xjGY6gOILiCEo1mtGNYTiC4k7JFFluHJSzPjQjB5fXlYNy1ocwppE7JAuRg3LWizz1eCgGEQxAPwHCmAb9TLAFEspFMarRjG4QwQJhTGMZWyChXBSjGnnoxnbJE4zJHqW29aEY1WhGN3IIjSUhbVxMYxlbIKFcFKMaRMAyklAuhhHGNJaxtcAklItiVIOVY1+TKc6MrmVsYf8MBsfm257EPYww6IcIOA+52B8oTZ156yIoTT0HoDT1oRndGEYY01iGNhKlqQ+OoLhTMgVZjAcnPyxjC5x6ZDF28Hhk7psFj0d+GAZDOAeYxjJyCJ1/0346QCtGNRxBcwTNEbQwprGMLXRH0N0pmaIziWSKi2nk4PKqe/Dc4wsyxUUxcofktfXguccP3RgGEQxAP+xEEspFMeiHPUpCuejGMMKYxjKIgB1CQrkoRjWa0Y1hhECmGCwJJxiDiSc5XAwjjGksI4cwWBLSxkUxqtGMbgwjDCJgGUkoF/sDVa8PxahG+xaYqteHYYTBymUepZz1zCjlrA/N6AaDG0CTSNHqBWnjgn6IgPOQi2bQzwTDBwhjGo6gOoLmCDgPuahGM7rhCJo75dSDL+xUo06+uVKN+tCMbgwjjGmQlRvYAhdHLopRjWZ0YxhfbVFQpzqD1SahXBSjGjnSYHZIKBfDCGMay9jCqQpjQmYxqtGMbgwjjGksYRVNyPJIyTsX3RiGR7o80uWRLo+UvHNRjGp4pNsj3R7p9ki3R7o9Ur4ZAWpbH4rRvwmhgvWMlArWh2ksQyOlgvWhGNVoRjeGoZFGmcYyPNLqkVaPtFajGd2YmpDqkVZ9fqhTfSiGR9o80uaRNo+0hTGNZXik3SPtHmn3SLtH2j3SPgzPdfdc87scbtLwaOCHajSDkVbw1boHdaoPWzgZqYFiVIMZ7aD7AMMIwxGEIwhHoGr7CFXbR6jaPuJU2x84gulO+TKUN5SDotWHYjC4CZrRjWGwXdijJwkdLGMLJwmxppzicGeV0tSHYWQ/3EzlOcEPy9gfeE7wQzGqQQQVdGMYYUxjGVsgCV1w6A44wADL2AKnOBfFqAZDmKAbwwhjGsvYAtnlgggWqEYzujGMMOa3wDzm92ELnAldsEcDDM0opzgX01gGh87NR9HqnUS+GV10I/shoVC0+jCN7IfPHEWr9wDhZQwvYziCcAThCDjFuQjDGym8kcIRTHdKpjiTyO9yLsKYBoNjK6/vV3JBbetDM3II3F2mtvUhDCaR9eH3wfcAW9g/wxFsR7Adwe7GMMKYhiJY+nFgULQ6udlN0erDMBjc+TfTWMYWyBTcXaZo9aEazSCCDbIfboxSmvqwBRIK9w4pTX2oRjO6MYwwiKCCZWyBhHJRjGo0oxscOrcLFayTW8BUsD40oxvDCIMhsCSkjYstcKnlohjVaEY3iIBlJKFcTGMZWyChXBQtMAnlohndYI8G2JpRrq5cFKMaHJrNNz2JXJS9WMZfP4ubwxSgPhSjJthVy8u4vIzLy7gcwXIEyxFwHnLAeciFN9L2RtqOYLtTMsVgW/ILPkCd6kMxGNwBv0dvIIxprPw3B1soP4NJ7KDqAKUZ3XAExREUR8Dv9C62cJ4xcFAMR1DdaWaKxc1uilYfttAY3ATFqEYzemKBYYQxDSLIrUw56+LGKOWsD83Ifrh3SDnrQxjTWMYWMqE8EAE7ZFSjGd0YRhjTWEJwaLZLcAAmPsKYxjK2MH8GQ2BJZjWa0Y1hhDGNZRABy0hCuShGNZrRjaEFXmFMYwmbPRqgaUZ3N4YRBof+23yTAlQmcfKs14dqZD9542DyrNeHYWQ/eQN2UrT6DrCMLRRHUBxBcQSlGd0YRhiOoLjT8xSkBZrRjWEwuAoyIzUmkScJXBQjh5B3lyd1qg/dYBI7CB9gGstwBN0RdEfAc0oumtGNYTiC7k7JFJVJJFNcNIPBTTCMMKaRO6Qy13nqcZGnHg/FIAJiI6E0diIJ5WIa2U9jj5JQDkgoF8WoRjO6QQTsEBLKxTSWsQUSykUxqsGh2S6LAzDxJIeLYlSjGd1gCCwJaeNiGsvYHyh0fShGNYhggW4MI4xpLGN/C8wDWR+KUQ32aID5zSglsA9bqD+DQ2+gSaTQ9SGM7KcTAechF1vgPCRvwE4KXe8BWjWa4QiaI2iOgPOQi2VoI1EP++AIujslU5C4zgNZL5axBU498mbdPI9dJW2cx65eDCOHkHeXJ4WuD8tgEumHp5GcA/A0kotqOIJwBOEIuKZ6MY1lbGE6gulOyRT9IIxpMDg+MmSKAzLFRTFyh3Q+GJx6XHRjGETAViahDHYiCeWiGNnPYI+SUC66MYwwprEMIsgdQj3sQzGq0YxuDCMEMkXed54Uuq68BTwpdH0YRhjTWAZDyCWh0PWhGNVoRjeGEQYRLLCMLZBQLopRjfYtMA9kfRhGGOzRzKOUwN4Z5bvMRTO6waE38CTyjeWAtHGR/QQRcB5y0YzsJ28gTQpd3wG8jMPLOBzBcAThCDgPuaiGN1J4I4UjCHfKqUewLTn1yFs+kxLYh2Z0YxhhTCNzVWG1edbRAc86uihGNZrRjWHkJAaDI6EckFAuilGNZnRjGGFMwxFsRUCl7EMxqtGMbgwjjGnkXOeX/Hme9XpwHvd8UAwiCMCM/kAY02CkE2yBvHPBSBeoOoAeBD3PU2AvHEF1BNURnAdBH2zhPAj6oBiOoLlTzlCCCSG7XGyBM5S8ozaplH2oRjNyGfPu2KRS9iGMaWQE+XvAST3syhs7k3rYh2bQD/uAvHMRxjSWsQXyzgURsEPIOxfN6MYwwpjGEsg7k+1CdplMPNnlYhrL2AKnKxc5hMWScLpy0YxuDCOMaSwjI1gsI3nnohjVaEY3hhaYvHMxjfWBGtqVNxInlbJnRqmUfRhGGAwuNx/1sGcSqYd9qAZDIAJOZC6GwSQOMH2AZWgZKZt9cATVEXAic9GNYYThCKo75QwlbxxMKmVX3sKaVMo+DCOMaSxjC1xD+THXXEO5qEYzujGMMKbAS202g+OlNhfVoB/2jl5IMbteSDG7Xkgxu15IMbteSDG7Xkgxu15IMbteSDG7XkgxeziCcAThCMIRhCMIRxCOYDqC6QimI5iOYDqC6QimI5iOYDoCXvua9/QmdbcPuZU3/zcy0kXut/t/68Ywcr9tPllkpIvcb5uPGRnpgIx0UQz6YceTXTZ7lBdSlPNf9geqax9KYoJqNKMnBhhGGNNYxhbKzyhGNZrhCIojIAnl/cZJqe1mGSm13XmzblJq+9CNYaxEfgApm91512pSNvvQjG4MI4yZYOLbMraQ2eWhGNVoRjeIoIIwprEMImC1x88ggg2q0YxuDCOMaSxjC/EzHAFvweBqHnW3D93IHdLOvwljGrlHudJI3e0Fz6W+KEY1mtGNYYQxDUcwHUFml82pLtW1u7BYmUN2YY9mDnlYxhY2R+Mjszka22WHMY1l7A9Uyj7k+vB9jqfAPjSjG8MIYxrLIIL8MFFD+1CMahDBBl3IM5TNHShKYB+qkQfgXg4lsA+5wHxd5iGuD9NYAgmlHnA0AuUlFnzpotD1YRocjSHwEosDXmJxkRuW73MUuj40oxvDCGMay9gCL8K5cATDEZAcuLxJoeuu57/kAnPHhkLXh2JUI4/GlXqKVjf3WChavciP80MxqtGMXJ/GYs1hhDGNZWxh/YxiMB5WbjWjG8MgAvYOKeCCCPhokgIO9s8oRjWa0Y1hhDENR8CpRz7XY1L1+lCM3CGcCVH1+tCN3KOcSlH1+jCNZWyBU4+LYlSjGd1wBMURFOY6tzIlsJu/MpTAbu7YUAL7MIww8mjc+6CcdXPrgnLWh24MI4xp5Ppw44By1gtOPS6KUY1mdGMYRFDANJaxBU49uEbMQ1wfuD3N7JxX5DA7fH252MJ5ec5BMarRjG4MIwxHwGkE10Oobb3gNOIi99tkh3AacdGM3G9cxaEE9iGMaSxjC7ze4qIY1WiGI1iOgBJYEtcpdOUG3yl05VN/Cl0vujEMjpaZnAeynvIBHsj60IxuDCOMXB92FbWtD1vgAutFMarRjG4QwQRhTGMZRJB7h6rXByLooBrN6EZGwKeEqteHaSxjC1x6vShGNZrRDUfAg6D58sDjXR+WsRMsPa+3uChGTXBoHh590Y1hhDGNZWyBh0dfFMMRDEfABRVuplICy5uOJiWwvMJoUgL7UI1mUODIPoivjHFS9fpQjGo0oxsUUg4QxjSWsQVu+VwUoxpEwAeDWz4XwwiDCJhRsssB2YX7jeuUxDNVpyT+YBn7wyl0vShGNZrRjWGEkbmXS6KUwD5sgbMNLkhSAvtQjcy9XG2lBPZhGGFMYxlbqD+jGNVwBNURkEO4MUrVK286mlS98gqjSdXrQzO68f1s4/+fhe/3C5Pa1odqNKMbw2B9NpjGMrbAj/YuilGNZhABC3xewHUQxjQyAq7u7/MiHHBehFNBMarRjIyAGwcUxz6EMY1lbIHsclGMajTDEfC4Z64sUBz7MI3MvVwyoDj2IrPLQ+Zevr1THPvQjG4MI4xpLGMLPN71whFsR8C5C2dCPKqVNx1NHtXKK4wWlbIPxagGP8T8ge/nlouq14vyM4pRjWbwc8sGhhHGNJaxBc5QLorBeDZoRjeGQQQdTKFx7s/scKXkohrN6MYw+PZBp+f7z0F++xhMPN9/Dvj+M5hEvv9cZAT513lRHPuQEQwmhO8/FxnBYHB8/7kgggG2wPef/Au4qKF9IIIJmkEEDJurKxdEwLC59HqREQTD5rrLAdddgmFz3eUiIwiGnRnpISMIhs0VmYuMIBh2ZqQHImDYXKs54AH0lf8bD6C/qEYzujEMImASuVZzsQwiYHa4VnNRjGo0oxvDCGMay3AE2xFwRWayPlx3mSwJ110mq8B1l4v9gVLbh2JoPJTaPnRjGGFMYxkaD6W2D8VwBMURlPiGTXXtGTbVtXcI1ePhustFM7rh8VSPp3o81eOpHk/zeJrH0zye5vE0z2hzBM0RkJHOsMk7Z9jd4+keD3nnIoxpeDzd4xkez/B4hsczPJ7h8QyPZ3g8wzM6HMFwBGSXM2xyyBl2eDzh8cQyvOOnd8j0DuF6b1bp/EczMod0IjgvsTgIYwpkijwTWtTQ7jw/WNTQtn4wjDA4WoBlbIEzlE4/nKFcVKMZ3RhGGNNYxv5Ade1DMdiJAVifBVifDbZAPrgoRh6NExnKZnfW1SzKZh+2QD64KEY1cn0426Bs9mEYYUxjGVsgH1wQwQ9UoxndIIIBwiCCCZaxBc5dLopRjWZ0YxhhOAKuofCHn7rbC66hXOQO4SyAutuHZuQe5QSDutuHMKaxjC3wAq6LYlSjGY4gHAHZZbGVySGbxSKHbP5v5JCLbgwjj7YZNucUm+3COcVFM7oxjDByfTYfQM4pLrbAOcVFMarRjG4QAQvMecjFNJZBBLl3KKh9+B/B//+lgGq0RAU90UCuzzz/JYxpLGMLvIDrohjVaEY3HEFxBH+56n+gAyxjC3+56kMxqtGMbgwjDCIIsIwttJ9RjGrkv8n6g5U1tB+KUY1mdCOjLixwD2Hwb5jE0Y1h8G86mMYyWO38W0I97EMxcrXJvdTDPnSD1V4gjGksYwt8l7koRjWa0Q1HMB3BZH1Y+sUq8MlazCj/t9WNYYSRR6sMe+fRKuuzm9GNYYQxjVyfyid47w9Z9fqhGNVoRjeGwXg2mMYytlCIoINiEMEERHD+TTeGEcY0lrEF8sFFMarhCHgBV149XlTKPoSRe5S/2zx69mELvICLsw0ePftQjWZ0YxhhTGMZW+iOoDsCckje9V1ZHPsfFeSMNpa+b2H8jGJwNA5NDmlMFTnkYgvxM4pRjVyfvJW5sgT2wzDCmMYytjB/BhGwR2c1mtENImDvzBC4H8yfj04Oyfuaq5NDLroxjDCmsYwt7J9RDEewHcF2BNsRbEewHcF2BFsRjN/PKEY1iOAHiKCBYYQxjWVsgbxzUYxqNMMRcGeID8bgztDFNCgvZDzcGTrgztBF7gOyC2WzD83oxjDCmMYytpB558ERNEfQmOsOmNEAzGhmscEZykUxqsHRODQ5hIu/gxxyQA65KEY1mpHrw2XhwbnLRRjTWMYWyDsXxWA8CzSjG8MgAvYOeeeCCAbYAnnnohjVaEY3hhHGNBwBtStngalduShG7pCzptSuXHQj9yiXWiibfZjGMrawf0YxqtGMbjiC7QjISFzdD/IOl+2DvMOV+iDvXAwjjDwa31yDHMI38SCHXHRjGGFMI9eHy/bBucsB5y4XxahGM7oxDCL4gWksYwt8l+HGQfBd5oIImF5yyEUY9MPEk10u6IfpJbtcFCP74bpl8P3nohvDCGMay9gCGemiGI5gOILhCIYjGI5gOILhCIYjCEcQjiAcQTiCcAThCMhIXOINMtLFMrZARrooxt8HsHCdIkg157NAqrlYhj8yi0Oz45c/MssfmeWPDCc/XD0OTn4ulsEQ2OSc/JwDcPJz4Q/tdgTbEWxHsP2h3f7QcvJzsT/M38+oBuszQBjTYHATbIGzmotisEMWaEY3hkEEG2Q/fC2f5J2LYmQ/XD2e5J2LbgwjjGksgwiYKvLORTGq0YxuDCMEUg2XkicJhS9Dk4RyMYwwprEMhsCSkFAuilGNZnRjGGEQActIQrnYAgnlohjVaFpgEsrFMMJgj2Y+mGSKM6Ocu1w0oxscms03PYmkjQPSxkX2wzXiybepi2ZkP1wWnsvLuLyMy8u4HMFyBNsRkFAuquGNtL2RtiPY6nSdr0kbFKMazWBwFXCa9wPL0Mn2Im1waXyRNi6qwSR20H2AYYThCIojKI6g/oxiVKMZjqC6UzLFZhLJFBfFYHATNKMbw8h+8seOa3HucrGMLZBQNuuTCaX8CDQTysMwIlHANJaxhUwoD8WoBhGwQ0Y3hhHGNJaxhfgZHJrtEhyAiY9lbGH+jGJUgyGwJLMbwwhjGsvYwvoZRMAyrmo0oxvDCGNqgdcytrB/Bns0wNCM7jCmsQwOnZsv627vJGbd7YduZD/cOMi62w/TyH64i5B1t+8A5WcUwxEUR1AcQRlGGNNYhiOo7rTqsuPm1OMijGkwuNzKu+my427VaEYOIX/wufIBsx/CYBI7WD6ALnxu0saFI+iOoDuCc7n2YBhhTMMRDHdKpuAOxyZTXAyDwU0wjWVsgUzBvY+su/1QjWYQAVuZhML9kk1CudgCCYUbIZuEclGNZnRjGGEQATuEhHKxBRLKRTGq0YxucGi2y+YATPyuRjO6MYwwGAJLQtq42A87C2o/FKMazegGESwQxjSWsQUSykV5C7x/JJSLZnSDPRpgvxndWV37oRjV4NAbfJO4s4b2wzKyn0YEeR7yUIzsJ68E76yufQdo3RiGI2iOoDmCtoX+M4pRDUfQ3SmZ4sxo3wJp46IYDK6C74bl/o0wppFDyHtG+0faOCBtXDCJrE9UHSCa0Q1HEI4gHAFfXy62wCWQi2I4gulOyRSNSSRTXGyBTNH4yJApLqrRjNwhjQ8Gpx4XYUyDCNjKJJTOYpFQLpqR/XTGQ0K5CGMay9gfCgnlgggqqEYzujGMMKaxBDJF3sf4Dw4wQBjTWMYWSBsXDGGCajSjG8MIYxrLIIJcxkJCuShGNZrRjfEtcCGhXExjCeSQPD/YhUxxZpTvMhfDCIND5+Yrw5PIN5aLamQ/gwg4D7kYRvYz2FXDyzi8jMPLGI4gHEE4As5DLrrhjRTeSOEIwp2e8rUGmtGNYTA4tjLF8psZpQT2ohg5hMEBSBsX3WASz78JH2Aay3AE2xFsR7Cr0YxuDMMRbHVayRR5o2pXMsVFMxjcBMMIYxq5Q/L+z66cehxw6nFRDCLYIPvJuyK7klAuppH95DXvXUkoBySUi2JUoxndIIIKwpjGMrZAQrkoRjU4NEvCCUYw8SSHi2JUoxndYAgsCWnjYhrL2AIJ5aIY1SAClpGEcjGMMKaxjK0FJqFcFKMa7NEAUzPKd5mLLfBd5oJDs/mmJ5FvLBdhZD+TCDgPudgC5yGTXbW8jMvLuLyMyxEsR7AcAechF8vwRtreSNsRbHdKplgESgnsxTL2h8apR95n2jw5lur0zZNjH4aRQ8i7SbuRNi6WwSTm+lDoeg9QilENR1AcQXEE/BTnYhrL2EJ1BNWdkinybtKmgvVhGgxugi2QKS6KkTskbyD9RzO6MQwi2CD7ybsIm6rXh2JkP2dNSSgX3RhGGNNYBhEwVSSUi2JUoxndGEYIZIrFduEEYzHxJIeLYYQxjWUwBJaEtHFRjGo0oxvDCIMIWEYSysUWSCgXxahG0wKTUC6GEQZ7NPNoI1OcGeW7zEUzusGh2Xzbk8g3FkCl7EP2k3eTNpWyD83IfvI+06ZS9h0gjGkswxEUR8B5yEU1mtENR1DcKaceec9oUwJbOOukBPahGd0YRhjT4OdIp9Mt8POdi2JUoxndGAb9sAokFM4gOwnlohjVYKQcjYRyMYwwprGMLfBDP/648kzZh2o0oxvDCGMaS+BnxGdCwiMl71x0YxgeaXik4ZGGR0reuShGNTzS6ZFOj3R6pNMjnR7p3MLyXC/PNT/sOROyPFKyy8U0luGRbo90e6TbI93eVdu7antXbY90e6TbI90a6fj9jGJUoxndmN+EUDZ7RkrZ7EX5GcXQSCmbfejGMMKYxjI80uqRVo+0eqTVI60eaR1GGJprimN5OsSmOPahGs3464f3iW+eNssDITZPm33YAm8wzl/jbZ42+1CNlmCueQjLPcAwwnAE3RF0R3DenH5QjGo0wxEMd8qrSDlBH+dl6QfFYHATNKMbw4jEAtNYxhZ4Yylfk3hY7DybPFPNwzCyn7MPeGPpxTK2wJvTL4pRDSJgh/DG0othhDGNZWyBN5ZecGi2y3klOhN/Xol+sD/EeSX6QTGqwRAm6MYwwpjGMrZwXol+QAQLVKMZ3RhGGPNb4DjvVD/Ywnmn+gF7NMD4ZjTOy9IPprEMDp2bL5on8bwS/aAb2Q8JhefQPkwj++EzF83L2L2M3cvYHUF3BN0RnDenH4QxjWU4guFOz+OamMTzuKaDMKbB4HIr8+hZHjK1efTsQzNyCPlcnM1DaR/CYBJZHx7KdA+wBR7KdOEIpiOYjuC8Of1gGGFMwxEsd0qm4AQ9zsvSD4bB4M6/mcYytkCm4EsXz6F9qEYziICtTELhWw5Pm33YH3jaLG8A3zxt9qEazejGMMIgggqWsQUSykUxqtGMbnDo3C7zvBJ9gGo0oxvDCIMhTLCMLZxXoh8UoxrN6AYRLBDGNJaxBRLKRdECn3eqHzSjG+zRAFszel6WflCManDoDTyJ55XoB8v464e3hm+eQ/tQjJpgV4WXMbyM4WUMRxCOIBzBeXM6OG9OP/BGmt5I0xFMd3oeDsm2PA+HBOfhkAfFYHAHmZG45TPPIyAPprHy3xxs4bzO+IBJZH149Ow5AI+eveiGI9iOYDuC8+b0g/1hnTenHxSjGt2YGegAy9jCeVn6BMWoRjN6YoFhhDENIsitzNNmeVv05mmzD83IfrLObvO02YcwprGMLfCCwQsiqKAazejGMMKYxhLOy9I74ABM/Hkl+sE0lrGF80r0A4bAkpxXoh80oxvDCGMayyAClpGEclGMajSjG0MLfN6pfjCNJfDqwXw6xF7nZenM6HlZ+sEwwuDQbL7lSTyvRD+oRvZDMQ/PlH0YRvZDvctaXsblZVxexu0ItiPYjuC8Of2gG95I2xtpO4KtTs+jZ6mEOY+evejGMBhcBZmRqJ7hAbMPxcgh5JMRNg+YfegGk9hB+ADTWIYjqI6gOoLz5vSDZnRjGI6gulMyBYVg+7ws/aAZDG6CYYQxjdwhFPdtXvR1wJsDL4pBBMRGQqGajufQPkwj+6HOjufQXpBQLopRjWZ0gwjYISSUi2ksYwsklItiVINDs13OK9GZ+PNK9INiVKMZ3WAILMl5JfrBNJaxhfNK9INiVIMIWEYSysUwwpjGMrYW+LxT/aAY1WCPBpia0fOy9IN9UX+/87L0Aw69wZvEPwwjjOznr4rqD8vYAuchf5Vxfyg6QKlGMxxBcQTFEZw3px8sYwv1ZziC6k7PyzIqmMYytsBt478fM/whr9D+PU3hD90YBteIJ5jGMrhKvRLnNRoc4LxG46AajqA7gu4Izms0DqaxjC0MRzDcKfeDN3uH+8EX0/gbXP2xD7LA5CJvGz8UoyaY67yx89CNYUSC2IJ+2OTzZxSDftgHsxndGEYY01gGEbBD1s8oRjWa0Y1hhLA5NNtlcwAmfndjGGFMYxk5hJJLQqHrQzGq0YxuDCOMjKBUsIwtlJ9RjGq0b4FL6cYwwmDYmbgogT0zSgnsQzO6weAa0CRS6HrRfgZDIIJWjWYwiQMMHyCMaTiC5gi6I+jFqEYzuuEIujslUzQmkfvBF9VoBoMLkBmpsSm463uxBdJGmaAY1WASWR8eK30PMIwwHEE4gnAE3yvA/lCMajTDEUx3SqYoTCKZ4qIYObjKvyFTXHRjGLlDKh+MvAX8sIwtkFAqW5mEUtmJJJSLYdAPe5SEcrGM/aGSUC6KUQ0iCNCNYYQxjWVsgYRywaEX4AAbLGML9WcUoxo5BFabQteHYYQxjWVsgYRykRG0CqrRjG4MI4z5LXAloVxsgYRywbB/YGhGexjTWAaDy81HoeudxNGMbjAEIhhhTINJZFcNL2N4GcPLGI4gHEE4As5DLsLwRgpvpHAE051y6tHYlpx6tAnCmMYytkBCuShG5qqzcudlgQfdGEYY01jGFvjGEkw8l0AuujGMMKaxjP2BR8I+FKMazejGMMKYxjIcQXEExRGcN4keNKMbw2C1F8gZ5Q/lqYe9KAaf+g2a0Y3cVXxRa3z/uQeYxjIcQXMEzRFQ5XbRjG4MwxE0d8oZCl8iqZR9aEYOju8lVMo+hDGN/Mj0DraQlbIPxSAC1oe80wmUvHMxDfqZYAvknYtiVKMZ3SACdgh552Iay9gC34wuilGNPPRgu5BdBhNPdrkoRjWa0Y0cwmBJOF25mMYytsDpykUxqkEELCMnMhfDCGMay9jfAlNQ+1CMarByFcxvRqmUfdgCZygXDG4ATSL1sA9h0A8RcCJzsQVOZMYEWkbKZh+a4QiqI6iOgBOZi2VoI/X2MxxBc6fnLegNTGMZW+AMZSyQGYmvff286/xgGAxhg2ksI4cQrM951zkHOO86P6iGIxiOYDiC867zg2ksYwvhCMKdkimCSSRTXEwjBxfMG5nigExxUYzcIUE/XEO56MYwiICtTEIJdiIJ5aIY9MMeJaFcdGMYYUxjGUTADiGhXBSjGs3oxjDiAw+LrfMH8gCzgG4MI4xpLCOHMHNJqG19KEY1mtGNYYRBBB0sYwsklItiVKN9CzxIKBfDCIOVyzw6yBRnRvnKc9GMbjC4ATyJfLE5IG1c0A8RcB5y0Qz6mcDL2L2M3cvYHUF3BMMRcB5yUQ1vpOGNNBzBcKeceky2Jacec4NqNKMbwwhjGnmuzJVtylkvuMtzUYxqNKMbw/jrpy/WNO/lXOS9nIdi5EgXmyK/5fTFMua3nIdp5GItJpG0cUDauMgZXezR/P5zD5Dffx664Qi2I9iOYC9jf6Dq9aEY1ehGLtZqYBlbIKEwb0FCuahGM3K7nH5IKBdhTIMIck15CmxdC1SjGfSzwTDCmMYytsB5yEVGsH+gGs3oxjDCmMYSSCi7Ag7AxJM2LqaxjC2QNi4YAktC2rhoRjeGEcY0lkEELCPZ5aIY1WhGN4YWmOxyMY0lcIayOmiaUc5DLoYRBoNj8y1PIuchF9WgHyLgPORiGPTDrlpexuVlXF7G7Qi2I9iOgPOQi254I21vpO0ItjqlnLUwiZSzPvwdunGLhMe7PoQxjWVsIRPKQ0lUUI1mEAGBlmGEQQQFLGMLeQ2lkKuoh32oRjO6MYwwprGMLeSVksIfSqpeHxgpE9+GEcY0lrGF/jOY6wDVaAYRTDCMMIiA8fRlbCG/GRVOiyiOfahGM7oxjDCmsYwtBCNdoBndYKSsQoQxjRxpYffm16SLTEKN+5o8LPahGhkBNyx5WOzDMMKYxjK2sIiAz8IqRjWa0Y1h5Fzz3Zka2sIFFWpoC9+DqaF9qEYzujGMMHJNuepBDe3D/kAN7QMRdFCNZnRjGGFMYxlbIFeVg2Z0gxkdIIxpsKYBtlBZ0wmKUQ0iWKAbwwhjGsvYQiOCDYpRjWZ0Yxh/c/3j5CcfMFt/5MR8wGz98Qd5Zb3LQzWa0Y1hhDETDSxjC+NnZAScnFKR+9CMbgwjjGksYwvhXRXeVeFdFd5V4V0V3lXhXRXeVdO7anpXTe+q6V01vaumd9X0rpreVdO7anpXLe+q5V21vKuWd9XyrlreVcu7anlXbe+q7V21vau2d9X2rtreVdu7antXbe+qrV21fz9Du4oq3odmdGMYYUxjGdpVPK62cWuWx9U+dGMYuabUEvC42odlbCHPq3589aWK96EazejGMMKYxhLISNxv5Km2D83oxjDCYKQLLGMLnFddEMEG1WhGRkDxC0+1fQgjI+BGPE+1bdwT35xXcUubR9w+FKMazehCcIABisEB2DskoQsOMMHfEPb5D6H2VHupvb925p/bpgfmklTCrUqeTbtPe6m9v3bmEb5q8Vza265qN7W72kPt7Jjbolmp+yHXgLuNWan7kF/THnIY3OPh+bR8neTxtHfS9jL2Q+HxtA+5Hnm3svB42odmdP+bYYQxjSWQGfKmZuG5sw/dyEP/Pe7wD2FMYxlb4CzmIgc3GAJnMRfN6EZGkOdehQfXPkwjI8g7W4UH17ZBp5zFXBSjGs3oxjDCmEZGkLeFCvW8F+SMvNtSeHDtQzWakREEgyNnXIQxjWVsgZxxUQwiYLXJGRfsA2Z0EMFBGNNYxhbIM8HmI89cNINhLzCMMLLTyfRysnORnU4mkZOdi2JkBH9PG/hDM7oxjDCmsQwiYPdysnNRjGo0oxvMAVuMhNSYg5OQ+L+dhHTgHLKdQ7ZzyO7GMMghrNzJYgfL2B/KyWIbFKMazejGMMKYxhK4iJT3lQoFwQ/N6MYwWNMJprGMLZDSLoqREeTtgELd8EM3hpER5ClN4dG5D8vICPLKfKGi+KEYRDAAEbA+pLRFoKS0izCmsYwt/CWuzgD+0tZt9q85vmZ8zfma5I28jFt4wO3DFvJkhcXOFHKa9Wu2r9m/5viaHBuQBPLrQsm63X7+9/Y1+9f8GwRx/H34b3N+zfU192v+fehvk/4YMh/5i1yczerykb8YRka/WV0+2Jutywf74i9+loaP9WYL8LG+CGMay9h37ijXPc3yNevXbF+zf835TTkFt2fKeQAt53+FB9A+MB8TdIMxLPB/DOM059dcX3O/5t8H9TbL1+TYBJcfuP4juL8PXJz/037Nvw/bbf4/Cn+ostL2NtvX7F9zfM34mvRXwDJ2Iled+tqHYvREAxytg2X8xc/E8rf/TB9/+y+q0Qx6GWAYYUwtE5/hiy2EIwhHEI4gHEE4gnAE4QjCEYQjCEcwHcF0BNMRTEfAicDFuJ8v6nHPZ4V63IdlbIHTgIPN4nK0XYxq/H2kWee/j/Rtjq8ZX3N+zfU1921mmextlq9Zv2b7mv1rjq8ZX3N+TTbdBlsoPyNHmdfBS5bFfmiJDroxjDCmsYwt5N/ph2JUwxFUR1AdQXUEpI282FZ4zuzDFtrPKEY1iCBAN4bxtwKnOb/m+pr7Nf8SyG2Wr8mxJ2AMCzAGVqtvYfyMYuQYKuuY6eOhG8MI428UTGgmj54/RinUy15k8njI/iv/JqrRDPpn0CSPC/pnBjJ5PCzj748Ix/pLHbdZvmb9mu1r9q/JsZndxRiYtjwl6HnNp1Aw+9CMbuQYGpOQFyweprGMLfzlnMHY/jLObdav+TcK5ugv29zm+JrxNefXXF+T/jIvUB77UIxuEH0Hy/hbgfx4ZD3sbZavycwFaEY3mLkFwqDvDZaRI8mLQIUq2c5JK1WyPS/1FKpkO4mQKtmHbmQ/7HMqXjsXV6h47Xw2OxmBvzGUv3bOITsZgVPSzgnEIAJOIC62kBcWOpdQeOhrZ2NS5NoH4yEHXHA0YiMHsLSdHHBRjGpk1GyoTg64GEYY01jGFsgCF/TD7PCJ5hoMBaudyy4UrHaup1Cw+tCMbkyBj20wo3xsLzga08uHk+spFJJ2LqFQSPpQDSJg3nY3hhHqZ0//l2XsD9SbPpRvdvJZqh+a0Q3NAfWmZ9jUm16Un9G+/UZVaeeMl6rSzgk0VaUP01jGFvgAXhSDGSVqPoAX3cgIuD5EVWnnKtDgo8l1G0pMO5ddBn/G+cgMPrQXxch+5sEwwsijZfFpoZC0T9bn78vziezvj/NtciQmkA/sZMh8YC+WsQU+sJPx84G9qEYzujGMMKbAx3IRNR9LLmtQENq5eDH4WHKJYvCxvKhGM/6mg0n6O/m+zfia82uur7lf8+/je5vla9av2b7m19v6eltfb+vrbX29ra+3/fW2v97219v+ettfb/vrbX+97ddb1nSyjbKi8zbb1+xfc3zN+Jrza66vuV/z75N8m19v5eutfL2Vr7fy9Va+3srXW/l6K19v9eutfr3Vr7f69Va/3vh4cmWL6s0LPp4Xubu42kD1JlWvherNztUXajQ711iCL9hcScmyTHZ3PmP0NvvXHF8zvub8mutr7tf8+0jeJpEQMB8uLoJkqSUXvrLQ8jb3a/594G6zfM36NdvX7F9zfE36m2AaS+BTyrdfaik7l0yopRxcMqGW8mEay9hC/ll9KEY1mtENR7AcwXIEiwhY8LWF/TOKUY1mdGMYYUzDEWxFkM8W/VCMajSDCBoYRhjTWMYWCv10wNEG+H80PiZZVnmb62v+Pw6fsCyovM3yNevXbF+zf01izK2Wjwj9jwWKUQ3mYoNuDCOMaSxjC/1nFKMajqA7gvyDPbikQbHkwzQygsIC5B/si/yDPbi6kMWS/8Fq5B/swXf2LJb80A0iIJwRRkZQmfg8wx58/85iycKHJR8x+tpF7ap2U7urTQ+ZTCmGHJVhZRYZlZHk3/qHZuRI+IpOMeRDGNNYAlmEL+8UNg6+elPYOPjqPckVF9NYxhbIFRfFqEYzMgK+u09yxUUYGUFjMcgVF/vDIldcZAR8q1/kiotm5PJ02kPtUHv+tRvtpfb+2uWndlG7qk3HB90YRhhbqAyDqGozONoAwwgjRzJpL7X3124/tYvaVe2mdld7qB1qq9+mfpv67eq3q9+ufrv67eq3q9+ufrv67eq3q18yCldBFhnlohpM9wLdGEZON5dEFhnlIvct1zqypPEhvxw8FKMaGQHXRyh2fMgIuFhCsePgYgnFjoOLJRQ7PmyBXMRlFIodH6rxN/2F4fylotceaofaU+31tclCXKihZHGM819yJFxnWWShi2ksI0fCV+pFFrooRjWakUPhYCQhru0skhAXUxZJ6IIAcgRZsVjI6lmWWCgdytrD0s//vtTeXzsvDow4KEY1mtGNYYQxjWVsoTqC6giqI6iOgHTD5ZZNurkIYxrL2EJmmTNnmWVuu6n9N69cXMzaxNcOtemug2VsgZOYi2JUgwEH6AYDHiCMaeSSM8RMOKf9l3Beu6hd1W5qd7WH2qH2VFv9DvUb6jfUb6jfUL+hfkP9hvoN9Rvql+zClS1KGR+KwYQv0IxuDIMJ56PHmQ5Xg7IAspD4sgDyttdP7eyey1pUQD40oxvDCGMay9gCSenCEWxHsB1BJiVS+t5D7VB7qr3U3rdds2jytYvaueqLdlO7q83AKwhjGstg4C1BdrsoRjc4GoGRqfKiTqVE8oJMdVEMjkbUZJ28hFApd3zYAt+mLopRjVyUvFhXKXd8GEYY01jGFkhEF0QwQTWa0Q0iYOJJRBdEwPTybepiC5mKggAyFd12Vbup3dUeatNDT3AGs1hNzmAWy8QZzEU3hsFIWE3OYC6WsQVyzEVGsImNHHPRjG4MI4yMYDMevk1dbIGrNRdEwHhIMxfNIAKiJs1sth1p5uIvgsgvkZXaxoedINBMMw/FqEYzujGMMKaxDEVAbeNDMarRjG4MI4xpLMMRFEdQHEFxBMURFEdQHEFxBMURFEdQHEF1BNURVEdQHUF1BNURVEdQHUF1BNURNEfQiKCCajSjG/kjk0E71J5qL7X31+Y3aqdd1K5qN7UZYAMMI/NIPjH1A8Pg34xqNKMbwwhjCkE/Abws4UmJYYQxDZZlgi3Mn1EMb4zpCKY3xvTGmN4Y0xtjemPMrdjWz/DGWN4Yqym21Y1hOILlCJYjcIoqTlHFKao4RZXtrbm9CtursL0KJ0UR2/YqbK1CdYqqTlHVKao6RVWnqOoUVZ2iqlNUPSmqAq1CLT+jGNUgggW6QQQbhDGNZWQEhUOToi6KUY1mdGMYYWQEebG28mTWi6aPGQ9jjbyMW3kY60MzuqHNx8NYH6axDC99/xnF8NJ3L3330ncvfffSdy99X4a2fx3efCSuvHpdKSR9GAbTy7yRuApRj2VsgZR2UYxqNKMbw6AfNh8p7YCUdlEM+mHzkdIuujEMzvsYNmddF8vYAmddF8WoRjP4JkOg5yvcwTK2QOLKmwO1ni9qRM017Ith5MpVVpv0dLGMnNG8flTbT99K2q8Y1WhGN4YRxjSWoe9FrTiC4k651MR3NgpNH6bB4DrYAnknb0VUCk0fqpHbJW9SVApNH4bB9BIbeediGVsgCeVthUqh6UM1mpER5G2F2kg1jcUi1VxsgVTTmBBSzUU1mtGNYYRBBMwoqeZiC6Sai2JUoxnd4NAsCTmkMfHkkItmdGMYYTAEloTscrEFsstFMarRjG5kBJ1l5ITpYhrL2AInTBdFC8wJ00UzusEeXWBrRkkoF8WoRh66s/m2J5GEcrEMhpARUGD6UIzsJy/Y/YeWkdLTh2GEMY1lbIHznYtiVMMRFHf6l1C4vl6z5PS2/9LJa+c1+KBd1W5q57DynknlmawPYUxjGVsglXA1jQrVh2pkAJt2V3uoHWpPtZfa+2vnrbLbLmpXtdVvV79d/Xb129VvV79d/Q71O9TvUL9D/Q71yzlNZyU4p7mYBjdWmDvukh1wl2ww+VxjuqgGd3bolGtMF0SwQBhEcP5vy9jCXz4qfLCzZva1q9pN7a72UDt7yDtelXLZyFtZlXLZGPzfyCoX3RhGjuSMnq9hF8vYAsnnggiYCpLPRTO6MYwwMoIgNtLSxf5A8e1DRpB3gyrFtw/NyAjy7krlMbCR9wQqj4F9IIINlpER5N2CSlnuQzGq0YxuDCOMaSzDEVRHUB1BdQTVEVRHUB1BdQTVEVRHUB1BcwTNETRH0BxBcwTNETRH0BxBcwTNEXRH0B1BdwTdEXRH0B1BdwScKOXtlEoJ8MMWOFG6IAL2GydKF83oxjDCmMYytsD5VJZvVh4dG9wL4dGxDxwtwDK2wFnTRTGq0Qz6mcDrszw75KqLajSD2eHTSK66CGMa3iHLEWzvkO0dsr1DtnfI9g7Z3iHkqhPo9g7Z3iFbOyR+P4MINqhGRpA13jXIVRfDCCMj4G4MT5h92AK56qIY1WhGN4iggzDWt/RBeuJrcpCeLopRjfYtY9RuDCOMaSxjC05P4fQUTk/h9BROT+H0FE5P4fQUTk8UOQe3onj27EMzmF7mjSTE3SeeSvswjWVsgSR0UYxqNIN+2HykmotlbIELQ5uR8qXuohrN4A8/25/0dBHGNJaxBdLTRTGqMW5NTg1Kik57qp0lRezCvN9/2nm//7YZI/+AlHXRjG4MI4zsvdJeau+vTb7aB8WoRtZSsZIUIJ32UDvUnmovtfdrZ7H0axe1q9pN7a72UDvUnmovtdVvUb9F/Rb1W9QvqSmf1VApqX4II3cUd1R5Vu1D7ihuok7y1EUx8ntJod3U7moPtUPt+bXJQ1nwXymvDu7ZUl4d3KalvPohjGn8jWT+zqG3kCdDD8WoRktU0I1h/I2GywhZXf3aS+2/VWxMan67u+2idlW7qd3VHmqH2lPtpbb6DfUbDJr1DwZNpNGMbgwjjGksYwvzZxTDEUxHMB3BdATTEUxHMB3BdASLCNhgqxjVaEY3hkEEHUxjGUTARt4/oxjdyIoj9jEVR6e9X3tRcXTaRe2qdlO7q804DnIcpNUswv6wjC3kmdJDMarRjG4MwxEUR1AcQXEElQgaKEY1mtGNYRDBD0xjGfl5ynWlgPu2i9pV7aZ2V5u+A4QxDfqeYAuksItiVKMZjJ4ISGEXYRDBAsvYwiACttBo/i//D8BVlyzGvs38x5XpzvOjh2JUoxndyPC5Q0Ep9sM0lkEEBEkyuigGETAwktFFNzIC7l3w3NmHaSwjI+AWB8+dndxt4Omy8+wOUs7FMMKgnwHoh31DymmMh5TDpXpKtR+q0YyMgAvy1Go/hDGNjICL3vmo2f/oIDvlQm0+avY/JshO2SFZ0/1hGGFMYxlbIENxmkvF94M26z5J6WAYYUxjGXSay0iR90MxcthcCqTI+6EbwwhjGsvYQvsZxXAEzRE0ImBJSE0XYUxjGVsgNVGxSN33QzWakRFwmZK674cwMoIgalITlyl5Iu0FqSmryCtPpH0gAgIlaV10YxhhTGMZWyC/XRTDEYQjCEcQjiAcQTiCcAThCKYjmI5gOoLpCKYjmI5gOoLpCKYjmI5gOYLlCJYjWI5gOYLlCJYjWI5gOYLlCLYj2I5gO4LtCLYj2I5gO4LtCMh8XBbnUbqg8Sjdh2L8nSXkZcFGXfhtd7WH2qH2VHupvb92fle8bQa4AWntIIeRV2QaFeEPWyCtXRSjGs3IfvJqXqMinOlqVITfeWieFFLURTNyWbL2vVER/hDGNJY7dQT9ZxSjGs3oxlBsJ0UdTGMZW7GRoi6K4QiGIxiOQCmq/ZSi2k8pqv2G52B4a4ZXIbwK4VUgRZ3YwqsQXoVwBOEIwhGEV2F6FaZXYXoOpvfBSVEHXoXpVZjeB6SoC6/CcgTLESxHsLwKy6uwvArLc7A8B8v7YHkVtldhexW2V4EUlfcxGrXkD6xCB2FMYxnMQcZGLflDMarRjG4MIwwiWGAZmakyUVAwfhIFBeMzr/Q3CsYfhhGGFruUZWixS/0ZxahGM7TYFIw/hDGNZWjDl/YzilGN7GcxO6S3i2lkP4t5I70toia9XRSjGs3oxjDCmML4LmY0KscfqtGMbgyDfjqYxjIY6UiQxC6KwUgDNKMbwwhjGsvYAknsohiOYDqC6QimI5iOYDqC6QimI1iOYDmC5QhIYostRhJbfH5IYhdhTGMZWyCJXRSjGs1wBHkxfhBaXoy/7an234nOYKvkZTDaWWj+2n+XYfLhby3LzF+7qd3VHmqH2lPtpfb+2nmCddvqt6hfclbe32nUic+8LdGoE595Ab5RJ/5QjGpwtAE4Gv2QZQ7IMhfFqEYzcjU2s0j+uQhjGsvYAvnnohhE0EEzujEMIthgGrk0hfb+2nmF/baL2lXtv87Xj6XJpLR+LE0mpYcwpvH3w5zKYmROWj/izZz0UIxqNKMbwwhjGstwBLNqbJP/QqDrZxQjf4rIRltN7a72UDvUnmovtffX3j+1i9rqd6vfrX63+t3qd6vfrX73128Wer92Ubuq3dTuag+1Q+2pNqsQYAt8A9u0i9pV7aY2Kz0BR8pPTdZzF7JIlnO/dlX770h5+7RlLfdrD7X/xkDKzULu115q76+dV7hvu6hd1W5qd7WH2uq3qd/ObjzIz0Mh0swGK6/0N2q0H8KYQp6NrLyI3ai3XnlzulFv/TCMMKaxjFyNwtLw+b4oRjWa0Y1hhEEE7Cw+3xdbmD+DCNgpfPIv8gCV/UEaOCANXOQBKhOfpwwPf78fbKfd1R5qh9r0wXJsjkSQ+VKzxuci32l220PtPBITkS80u+2l9t8vIPOKd8uK69cuale1m9pd7aF2qD3VXmqr36J+8+vKyp9dNJ7mu7IIuvE035V3HhpP833YQv0ZHG2DPFreOGjUSj8sYwv5p/+hGLkaWRjbeJrvQzeGEcY0lrEFPtJ5J6VlzfSHajSDCBoYBhEw14PxMFWjGs3oxjDCmMYytsCH/cIR/H3Y62Dl/z7rr93V/ttmg/D/PuivPdX+22aD8ea76U87X01/20XtqnZTu6s91A61p9rqd6pfMkBjafKrwersofxqsPI3Eo0K6IdlbIEs0Dn05mjMzQ5jGsvYH6hmfsjVyHr2RjXzQzO6MYwwprEMIsj9TTXzQzGqQQQTdIMINghjGsvICDhxpZr5oRjVaEY3hhHGNJbhCP6yTOVrdhYzv3ZV+29n8s0zK5lfe6j9tzP5Vp9lzK+91N5fO3/yfttF7ap2U7urPdRWv139cgIxWEFyyjj/hfljaOSUizCmQObgyyuPIl58Sx2cDFwMI4xpLCNXI58q3qhDfihGNZrRjWGEQQSsFmcTF1vgbOKCCNgp5JIL+slUQLXxCqZqF6MazejGMMKYxjL2B6qNH/62E6FlsfFrN7X/tlPee2xZafzaofbfdsqblS3LjF97f+08f7jtonZVu6nd1R5qh9rqt6hf8kPe/GwUDS+uKFM0vLgnRNHwwzSWwBkFV2opAF5cJ6UA+CGMaSxjC5w3cH2a0uCHajSjG8MIYxpE8ANb4NN/UQwiYKeQFy6IYIJhhDENImBGOdc4IGNcFKMazejGMMKYhiPIUw4uMGXN8GsXtf92JldjIk85brur/bczubiVhcSvPdVeau+vvX5qF7Wr2k3trrb6XeqXsxAulVMRvLhqzVOU12Jo5JSLYYTB0XLVeSLy4o8YT0R+6MYwwphGrkbWmjeeiHzBucZFMarRjG4Mgwg6mMYytsC5Bt/WKfl9yH64rjDJJRdhTGMZW+B7CyvHE5cfcqTsQ0qCH4iAQMk/F0TAYpF/LoiAiSf/HJB/svS4URL8QARMIvnnggiYEPLPxV8EmwtwPHH5YSUYduafi8w/m4uLPHH5oSYYduafh55g2Jl/HoiAYY9pEAHDHlvg1YZcgKJC+IEIGDYvOLz4+yjO0x5qh9pT7aX2/tq8hplLQdQGP1Qj++aCD7XBD8MIYxrL2AKvb74oRjUcwXIEi35Ymc3RWIzN0Zj/XY1mdGMYHs/2eLbHszUentL8UIxqNKMbwwhDEVAJfIZNve8ZNvW+ZwjU+z6EMY1leDzV46keT/V4qsdTPZ7q8VSPp3o8dRmOoDmC1jTsFhp283iax9O20H9GMTye7vF0j6d7PN3j6R5P93i6xzM8nuEZHY5gOALyyhk22eMMOzye8HiiGs3wDgnvEF7jnmXQjZLehzyJmLT31+bk5bSL2vRxwJEW+JuZ3/kP+2tnJrjtv4GQ61bmgdtuav/1QA6lWve2Q+2p9lJ7f+3MGbdd1K5qN7XV71a/JydkxqT2dnNBl9rbzQVaam8fujGMPBqXOKmj3dz14snJD83oxjDCyNXg4idFtQ9b4JN/UYxqNKMbRNBAGNNYBhHkClNU+5ARcF2VotqHZnRjGGFMYxlbIFtcOILMFnwGqam97a72X/d8siiove2p9l/ffLCppj3tzBK3XdSuaje1u9pD7VB7qq1+h/ola3BngXLY3c5/Yf4YGrnhYhlb4CyCOw2Utm6u41La+jCNZWyBc4ULVoOPG+cKF83oxjDCmMYyiIDV4vziohjVyAi4fktp60NGwKVUSlsfMoJ+DpARcCWU0ta8v9GpbL3tonZVu6nd1R5qh9pT7aW2+i3ql2yUDxf5j2o0oxvDCGMay9gC2eiCCDaoRjO6MYwQyB95Hb5T8fowjDCmsYyMOq9gdipeH/g3AyxjC5wf5BXMTo3qQzX+om70mR/+2x5q/4Xc6J2XNJ/2Uvuv77yN1ClOve2idlW7qd3VHmqH2lPtpbb6neqX7xqDhSZL5HXRTnXpzsuanerShy2QJS7yaMF08IkPxs0n/mIZW+ATf1GMXI3gM8En/qIbwwhjGsvYH6gU3XllsVMp+lCNZhDBBMPICPISW6dSdM/zb5axBb5rXBSjGs3oxjDCcAS8/JE4efcjbV79eNp/3ZMGKCC97ab2X9+d2eOtj6cdak+1l9r7a/NGudMuale1m9rqt6lf8kNWDncKQ3deyewUhu7J/43vHBfdGAZHY6jkh7yo2Cn/fGhGN4YRRq5G1rZ2yj8ftsB3jotiVKMZ3SACVpTziotpLIMI2Clct7jYmhA+/RfFqAaxsSTLc0BeuFgGEeSnn+LLh2IwByzw9ipsr8L2KmxHsB3BdgTkBcCjfh+KUY1mDIMFDrAFPvAXDG6BajSjG9nPoh8+8BfTWEZGkHVVnQrMndcpO0/qfehG9pMXLTtP6n2YxjK2wFeMi2IQQQPN6MYwwpjGMrbApz6vlHaKLvdm4jlfuFjGFjhfuCgGQ2BJyAcX3RhGGNNYxhbIB5tlJB9cVKMZ3RhGaIHJBxfL2AKXLrPKuvMI3jujfOm4CGMa/w/9d3adWJ5E0sZFM3r+GyL4+2rxIYyZYFctL+PyMm4v43YE2xFsR0BCuRiGN9L2RtqKgOfxPuhcqZ0ziINhhMHgQNG5UivFqEbLf3PQjWEwiQNMH2AZOlvjEbwPjqA6AhLKRTeGEYYjqO70L1P8faMCzegGg1sgjGksYyfyg5F1mx+KUY2MIJ+c0LNu8+8bG5jGMrKfvNjYs6LzQzGq0YxuDIMI2CFjGsvYQvyMYlSjGRya7TI5ABM/i1GNZnRjGAyBJZnTWMYW1s8oRjWaQQQsIwnlIoxpLGML+6cF3sWoRjPYoxMszejeH7IG9EMx8tBZ4tqz3PNOYtZ7fphG9pPXSnuWfD6Un5H95OXRns/WfQcozeiGIyiOoDiCsowt1J9RDEdQ3SmZoh0sYwucelwwuAa4ZjXBMMLIIeQl4t5JGxdbIG1U1udcw+QAfPu4aIYj6I6gO4I+jWVsYfwMRzDcKZmCi0ydTHGxDAaXH5lOprgoRjVyh2SJb89S0Q/DCCMjaGxlEkpjJ5JQLqqR/XAlo5NQLoYRxjSWsQUSChd2OgnlohrN6MYwwpgCmaKxXTYHYOJJDhdhTGMZ+8MgbWSNax+kjYtqNKMbwwhjGkSwwRZIKBfFqEYz+rfAg4RyEcY02KO5rweZghnNAtEP3RhGHjovGvcsA32T2H5GMbKfTgSch1x0I/vJitk+WvgA01iGI+iOoDsCzkMumtGNYTiC7k7JFGQxnlb70IxuMLgGuLPEjPKN5YBvLBc5hM4BSBsXzWASz78ZPkAY03AE4QimI5jFqEYzuuEIpjslU3DtaZApLqrB4PjIkCkuhhFG7hCumw9OPS62wKnHRUYw2MoklMFOJKFchJH9DPYoCeVifwgSykUxqtEMImhgGGFMYxlbIKFcFINDD8ABAmyBE4yLYlSjGQxhgWGEMY1lbIGEclEMItigGd0YRhjTWN8CBwnlgIRyUQz26AShGeW7zMUytsB3GW4gxPAk8o3lYhjZDzcQgvOQi2VkP1xwj/AyhpcxvIzhCMIRhCPgPORiGt5I4Y00HcF0p5x68IU9OPXgm2tw6nGxjC2QUC6KUQ1qTNg7p0brYBhhTGMZWzh1XQdfDVAPEkqw2iSUizCmwUiZHRIKmCSUi2JUoxndYKQdhDGNZWyh/IxiVKMZX3VQn0UjneSdiy2Qdy480uqRVo+0eqTknYswpuGRVo+0eaTNI20eafNI+WZ04blunutT8cWEdI+U7HJRjWZ4pN0j7R5p90j7MryrhnfV8EiHRzo80uGRDo90eKTDu2p4rofn+tSCMSHhkUY3hhGGRxoeaXik0yOd3lXTu2p6V02PdHqk0yOdHun0SKdHuryrlud6ea75VQw3aXii7MM0lsFI84/R3F81ep+7Gd1gRhcIYxrM6Ab7OwD1pA/FqEYzujGMMKaxDEdQ3Clfhrh9vDjFuQgjB8dt3UUSutgCSegitwt3SRdJ6KIZ3SCCDuhngC1winNBP4yHU5yLZnRjGGFMgwgm2AJJ6KIY1WhGN4bBoXO7LC7KLiaeU5yLbgwjjGnkELizujjFOeAU56IY1WhGN4ZBBCwj2eViGVsgu1wUo2qByS4X3RgGK5cnc4tTnDOjnOJcVKMZDI7NtzyJfDO62ALfjEgoi29GF9VgEtlV28u4vYzby7gdwXYEWxFsTnEuilGNZnQjDH5JlZPIs18filENDj3B96u1TmXqwzIYQmbLTdq4KAZD2KDpALUbw3AE1RFUR1C3wC9nLopRDUfQ3CmZgpvdm0xxQKa4yMFxR3qTKS6a0Y3cIdxd3pyuXExjGUSQW3mTULgxukkoF92gnwBhTGMZWyChXBSDCNghJJSLbgwjjGksYwtkCu47Z0XqX7UVmMYytpBp46EYNcGSZNp46MYwwpjGMrawiYBl3MWoRjO6MYzQApNQLpaxH8aPHJI34sePTJEzOn5cXbkIYxoMrifKN4kji0s/NIMhEEEZRhhMYoDlA2yh/gxHUB1BdQS1G8MIYxqOoLlTMkWWdg5qUB+GEQaHBvySLi/cDJ6t+lANhnDQjWEwBNanTx9gGVsYjmA4guEIzi/8D7oxjDAcwXCnmSlKYRIzUzx0IweXd6RHVqd+mMYycofkd6aRFaofilENImArk1AKO5GEcrEM+mGPklAuilGNZnRjGETADiGhXCxjCySUi2JUoxkcOrdL1qv+1WyCYlSjGd0YRg4h7/qOrFf9sIwtlJ9RjGo0gwgaGEYY01jGFkgoLHAhoVxUoxmsXAFLM1q3QNq4KAaD68CT2MKYBkMggraF/jOYxABexu5l7F7G7gi6I+iOoC9jC8MbaXgjDUcw3CmZorMK/Ob/Ygv85v+CQ0+QGakzifyy/yIMhrDAMrZA2qisD08JOQfgKSEXzXAE0xFMR8BTQi6WsQWeEnLhCJY7JVM0JpFMcbGMHFzjI0OmuChGNXKHNOaaU4+LYYRBBBlbJaHkjdFRSSgX1aCfAN0YRhjTWMYWSChZpjAqCeWiGs3oxjDCmAKZIu87j8oJRt4CHpXkcBHGNJaxBdJG3vUdlbRxUY1mdGMYYUyDCBrYAgnlohjVaEbXApNQLsKYBiuXebSSKc6MjmZ0YxgMjs03PInxM4rBEIiA85CLbjCJ7KrwMoaXMbyM4QimI5iOgPOQi2Z4I01vpOkIpjs9TydkQs7TCQ+a0Q0OzVbmymk7R9sCzyC6YAgLVKMZDIF+eF7IPUAY03AEWxFQ9fpQjGo0oxvDUKeNTDEOilGNHFzekR6UwD4MI4zcIXl3eTROPS62wKnHBRF0QD8DDCMM+gmwjC2QUC6KUY1mEMEEwwhjGsvYAgnlohgceoM8QDDxJIcDTjAuilGNZuQQgiUhbVyEMY1lbIGEclEMImAZSSgX3RhGGNNYWmASygEJ5aIYrFwBoRnlu8zFMrbAd5lg8y1PIt9YLobBEIiA85CLZTCJ7KrtZdxexu1l3I5gO4LtCDgPuZiGN9LWRqIe9qEaHHoCDr3ANJaxBRLKRTGqQVZuoBvDCGMay9jCeVbqQU7iZHAklIthhDGNZWyBhHJRjGo4guYImiNojqA5guYImiPojqA7gu4IziOTO+jGMMIggvww9fPI5AGKUQ1GWkE3hsFIWR89THl0PUx5nOerHoQjCEcQjuA8TPmgG8MIwxGEO+UMZTIhZJeLbjC4AGFMYxksIx8z8s5FMapBBHx+yDt5Y2dQD/uwjOxnsQ/IOxfFqEYzujGMjGCxQ8g7F8vYHyiofShGNZrBoXO7UA9b8hbWoB72oRrN6MYwGEKAaSxjC5yuXBSjGs0gggmGEcY0lrGFk3c2KEY1msEeHWBpRkkoBySUi2IwuAU8iXyxuZgG/RABJzIHnMhcZD95A2mM4WUcXsbhZRyOYDiC4Qg4kbnYQngjhTdSOIJwp5yhcONgcIaSt7DG4AzlgDOUi2JUoxndyFzFle3zpNWLaSxjC+f1DQfFqAb9sCmoKbmYxrqvMRjje1XDGN+rGsb4XtUwxveqhjG+VzWM8b2qYYzvVQ1jfK9qGON7VcMYW/1+r2oY8b2qYcT3qoYR36saRnyvahjxvaphxPeqhhHfqxpGfK9qGFk8+9rqt6jfon6L+i3ql7OavO01grOai9yw3I4K8s4Fu2qCLZB3LthVC1QjAzjtrvZQO9Smj/wkUj9bucMTvLGh0+5qD7X/jrQInTc2nPZS+28KySJZOPvaRe2qdlO7qz3UDrWn2ktt9TvUbyaVmr91HZTO1t/5LzPB0DJ1PGwhU8cDRwvA0VijmMYytjB/RjFYDZZmNqMbwwhjGsvYwiICVmsVoxrNyAi4WZXVsh8yAm5JZbXsh2VsIU9MHopRjWZ0YxiOIN8QcdtL7f3aWURbuSGWNbSvXdVuf+1Cu6s91A61p9pL7f218wnPt13Urmqr36J+CzNLcJX5G4D5C1CNZnSDo2VKyDrXv6cbgGJUoxndGEauRiXq/F7zsIwt5GnIQzGq0QwimGAYYUyDCNgFfQt5flG5NTVJEhfT4ABMPEni4C9J1E5of6cXr13VbmrTB8tBguAGT5aoVq7AZoXqa1e180jn/9/VHmr/7U4u62Zt6msvtffXzqct33ZRu6rd1O5qD7XV71K/fOi57zT5aHNNcvLR5oI4BakPYcwPWXb699gLwNE66MYwwpjGMnI1uLOSjzH9UIxqNKMbwwiDCCpYxhb4sF8QwQTVIIINujGMMKaxjC2QIC6KUQ1HkC934HJCFqe+dqj9tzu4SJCVqa+9v3a+3IHrGlmW+tpV7aZ2V3uoHWpPtZfa+2sP9TvUb34rqf0g548bSxSmVu4LUZh6wQnERTE42gAcjc3BCcTFFjiBuChGNXI1uD1BkenDMMKYxjK2wAnEBRHw0eEE4qIZ3SACdgonEBfcq2BCKGE/+5sS9otuDCOMaSxjf9jndstBMarxt824VZEFp6891P7bZlyf3nlKcNtL7X3fqjOyIvW1i9pV7aZ2V3uoHWpPtZfa6reqX8pQ86fJ4xSbsr9PsSl/sU6x6cUWKDa9aF/lAo80PbfweaTpwzJUEMAjTR+KQUlCgGZ0YxhhTGMZW+DyJx9rnm36UI1mEAE7hUKxCyLYYBrL2MJ5SQwzyuXPi2o0oxvDCGMay9jCdAR5GsLXu3xi6ms3tf92Jte/8kGqrx1qz/tWnZE1q6+9v3aehtx2Ubuq3dTuag+1Q231u9QvL5jh9iWPQV3nc0xOOR9YcsrFNNZD8LhTah+D55pSBBg82PQhjGksYwsUructm+Dxpg/VaEY3hhHGNIggwBbO66UOikEEBTSDflqCIvRgqihCv2hGN4YRxjSWsQVyyYUjyPOHE1qeP9x2V/tvO+XtwciC09eeaq/7Vp3IatPbzvOH2y5qV7Wb2l3toXaoPdVWv0P9kh+CpSELBHuILJA/4QoeevqwjC3M72cR//H9PiB48OnDNJaxhfUz+FECs8hlyotmdGMYYUxjGUTA/qa046IY1SACdgp54YII+IyTFy6msQwiyBnlYakPxahGM7oxjDCmsQxHkKcc+bOKyNrT165q/+3M/LVFZOHpaw+1475VJ7Lq9LWX2vtr5ynHbRe1q9pN7a72UFv9VvXLWUjerAqeesqbfYLHnvLKnuC5pw9hTIHMkX/bggef8gvD4MGnD8MIYxrL4MeL+aksnGtcFKMazejGMMIgAlaLc42LLXCucUEE7BRyyUWes+cJQRSuXlxMYxlb4HvLRX5rGKwP31su8lvDYBX43nJBBATK95YLImCx+N5yQQRMPN9bLohggmoQAZPI95YLImBC+N5ykRHwV5SK1IeMgL+IVKQ+ZATkbSpSHzIC/gpRkfqQEfC3h4rUByJg2HsZRJDDplb1gQgmqAYRLNCNv/2W9zUiS1Vfe6q91N5fO09jbpu+N6hGM7Lvef7NMMKYxjK2wLWUi2JUoxmOoDoCrphkYUNQslr5o0PJauVvBiWrD90YRhgeT/N4msfTPZ7u8XSPp3s83ePpHk/3jHZH0B3BKBo210POsIfHMzwerpRcLGML4fGExxMeT3g84fGExxMeT3g84fGEZ3Q6gukIyEVn2GScM+zp8UyPh4xzUQzvkOXxLI9neTzL41kez/J4lsezPZ7t8WzP6HYE2xGQVxh2I3sw7PbTeNqvGs3oxjDCoJ8Ay/jLIHmvIniC620Xtava9DEBRzr/5e9IlaHkF5rbLmr/Hakywvw2c9td7b8cmHcOgmew3vZUe6m9v3aeptx2Ubuq3dTuaqvfpn5PTsiMybNWaxbTBM9arZwHNT75F8MII4/GCQGFpnzHDwpNH7oxjDCmkauxWBo++Qd88i+KUY1mdGMYRMCK8sm/WMYW+ORz7kSh6UNGkAUrQdXpQzeGEcY0lrEFssVFMRxBfj/qp93VHmr/7Y7OHsjvRre91P7blY1Nk1+MbruoXdVuane1h9qh9lR7qf31m4Wpr83MFsD8NcD8dbCMLXCv5oKjBeBoE0xjGVvgXOGiGKwGUXOucNGNYYQxjWVsgfsuWSkSFJw+VKMZfxG0LOkICk4fIsHs5PnFw0qcA+wE85bfggb/Pi+f3HZVu6nd1R5qh9pT7aX2/tpD/Q71m9mI96sF5acP3RhGGNNYxhYyGz0UgwhYoGhGN4YRxhQyf/Bmq6Cu9CGMaSxjC5k/eLdXUFf6wL9hhdcW9s/g37DL8/zgoRm5yqc91A61c5WZs/zw3/Z+7awObXwdy+LQ165qN7W72kPtUHuqvdTeX7uo36J+C6tBcJklWv5qMygPbVl5EJSHXmSWeChGHo2zCko9z+kDpZ4PW2g/oxjVyNWoRM0n/mIYYUxjGVvoP4MIKqhGM7pBBBOEkRE0ZjS/UfBKpaBW9CJrRR+KUY1mdGMYYUzDEeQVEb5J8+zV2y5q/21LvlPng1dfu6v9ty35rs5TV297qr3U3l87b7ncdlG7qt3U7mqr36l+yQ8NLOaPSBfzx0KvbgwjDI7GB4T8wN/uQX646MYwwphGrgZnJjxD9YBnqD4UoxrN6MYwiGCCaSxjC4UIKihGVlaedh4sb1UGdZ0PWyBhXBSjGs3oxjDCcATVEVRH0BxBcwTNETRH0BxBcwTNETRHQJLJO8HB81R531TwPNWHYlSjGd0YRhjTWIYjyALRLKH93y5qV7X/ClM5FcuHsb72UPtvA3BamOWkr73U3l87fmoXtavaTe2u9lBb/Yb6nczsAfNHpJxqcB5FDelDGFPghIILs9SDNq7FUg/6MIwwprGMXA2u0lIP+lCMajSjG8MIgwj48JNkLvYHnqv6QAQBqkEEC3RjGGFMYxlbIMlcFKMajiBvzXCKMvPWzG2H2n+3SDglyaetvvb+2nlrJus3I8tJX7uq3dTuag+1Q+2p9lJ7f+2mfpv6JduMg5w/rplTQ9rIuNSQXpBTLoqRR+OPOPWg56819aAPW+Ak5KIY1cjV4Jr55CTkYhhhTGMZW+AryAURNFCNZnSDCNgpfAW5IAKml4xxUYzsh5u/PBH1IfvhAuEkl1yEkf1w6XDyteViC2SZi2JUoxndGEYYjmA5guUItiPYjmA7gu0ItiPYjmA7gu0ItiPYioBy1gci6KAazejGMML4+1NEQqeA9XwUKGB9aEY3OPIA+sRQpnpRfwYjCFCNZjCCCYYPEMY0HEF1BM0RtGJUoxndcATNnZJcuIrM01EfqpGH5hY0T0d9GEYY2Q+XaxcJ6WILJKSLjIDLtVSkNi5i8hDVhzDohzUl7VxsgbRzUYxqNIMImCrSzkUY01jGFkhIF8Xg0GwX8glXaClPvSCfXBSjGs3IIXCBlfLUhzCmsYwtkE8uipERcI2Th6g+dGMYYUxjaYHJJ4CHqD4Ugw/gBvHN6OZE5WIZW+BEhaILHpV6JnGTNi6GwRCIgC9KF8tgEnNX8RDVe4BajGo4guoIqiMgoVxMYxnaSLs5guZOyRScGG++AV1MYxkMLrcyj0o958I8KvWhG+yDAGFMg0lkfUgb5wCkjYtiOILhCIYjGMMIYxrLcAThTskUfL/i6agPYfwdunPdmqejPmwhM8VDSRRQjWZ0YyRYn0k/BDq3sH4G/bBHVzWa0Y1hhDENImCHrC3sn1GMajSjG8Pg0H/b5f8XHw6wQDO6MYwwppFDyJ8Gzixhfci08VCMajSjG8PICPK3cZOHqD4sYwv1ZxSjvgWePET1oRvD4AO4E+2nGW3FqEYzGFwFnsS2jC10hkAEvRjVYBI78DJ2L2P3MnZH0B1BdwTjZxTDG2l4Iw1HMNzp+C4o/v/S/DOKUQ0GN8B3QXHyqNSHZbAPIkHauCgGk8j6zKYDzG4MwxFMRzAdwbkQCzhDuShGNRzBcqdkisKEkCkOyBQXObjKR4ZMcdGMbuQOqXww8tTjYRrLyAjyBsDkIao973tMHqL60A366SCMaSxjCySUi2IQwQDN6MYwwpjGMrZApsi7GzPLUv/epgmmsYwtkDYuipFDyHsls5A2LroxjDCmsYwtkFDyN5WTh6g+VKMZ3RhGaIFJKBfL2AI5JC/8TB6Vemd0DCOMaTA4Nl94EqMazWAIRBDDCINJZFeFlzG8jNPLOB3BdATTEXAecjEMb6TpjTQdwXKnZIozo6sbwwiDwbGV93fjcVKY+lAN9kGAbgyDSWR99vQBlvHd+pwUpj4UoxrN6MYwwpiGOyVT8IeFutOHbuTgsrRmUnf6MI1l5A7Ju06TutOHYlQjI8h7S5OHqPa8fTJ5iOrDMuiH8ZBQLopRjWZ0YxhEMMA0lrEFEspFMarRDA6d26VygtGZeJLDRTWa0Y1h5BAGS0LauFjGFvI85KEY1WhGRjBYRhLKRRjTWMYWSChngUkoF9VoBh/ADZZmlO8yB6SNi2IwODbf8iTyjeViGgyBCDgPOeA85IJJZFdtL+P2Mm4v43YE2xFsR8B5yMX+QK3qQzGq0Q0KswIsYwun0OyAwQ1AAdgEwwiDfXAOsIwtkDYG/0YlaLOdErSDZjiC6giqI6jTWMYW2s9wBM2dkikGk0imuFhGDi5/GDF5OupDMaqROyRv/0wqWB+GEUZGkLd/Jg9R7XlTZPIQ1Ydq0E8H3RhGGNNYxhZIKMEOIaFcVKMZ3RhGGFMgUwRLwglGMPEkh4swprGMLZA2JktC2rioRjO6MYwwppERTJaRhHJAQrkoRjWa0bXAJJSLMKbBBzDzKI9KPTNKfepDN4bB4CrQJFKf+lAMhtBAM7rBJHYQPsA0luEIqiOojoDzkItmdGMYjqC6UzLFIlCKVS+a0Q0GNwBl2gdb4CcvF+yDANVoBpPI+vThA4QxDUfQHcFwBPwY5qIazeiGIxjulEwxmUQyxUU1cnB5A2lSd/owjDByh+QNpP9YxhY49bjICBZbmYSy2IkklIsw6Ic1JaFcbIGEclGMajSDCJgqEspFGNNYxhZIKBfF4NBsF04wFhNPcgA83PShGNVoRg4hbwbNQdq4CGMay9gCCeWiGBlB3iaaPB31oRvDCGMa61tgyl8vSCgXxeADuEF8M0ot7MMytsB3mbzPNKl4vZPIN5aLYTAEIuA85GIZTGLuKipe7wG6l7F7Gbsj6I6gOwLOQy6msQxvpOEIhjvl1CPvGU1KWTtnnZSyPixjCySUi2JUgx9s0en5Qd3BMMKYxjK2cH5Qd0A/rAIJhTPIQUK5CGMajPQcbQsklItiVKMZ3WCkbIrzU7uDaSxjC/tnFKMazQhNyPZIyTsX+wMFsQ8aKQWxD83oxjDCmIZGSkHsRfkZxahGM7oxjDD2NyHUyt6Rkl0uqtEMj7R6pNUjrR5pXYZ2VbSf4ZE2j7R5pM0jbR5p80jbNDzXzXN9fsjLhHSPtHdjGGF4pN0j7R7p8EiHd9XwrhreVcMjHR7p8EiHRzo80uGRhndVeK7Dc81DTfhTHTzU5GIay/jrhzdjz+ChJvkwhhmzGd0Y+W8YaWakh2msxAZbB+BxJxfFcATLESxHcN4BfhDGNJbhCLY75S29fM+iYPYhjBwcX18omH3YHyiYfSiJBqrRjG4QQQf0M8AWys+gnwDVaEY3hhHGNIhggi2cd4AfFKMazejGMDh0bheer8qbiifPV33oxjDCmEYOgbN1amMveGXvRTGq0YxuDIMIWEZe2XuxjC2Mn1GMqgXmZb4X3RgGK5cnpxTK3hnlLb0X1WgGg2PzhSfxvNz7YAvn5d5EcF7ufVANJpFdNb2M08s4vYzTEUxHMB0B7wC/KIY30vJGWo5gudPzYCQm8TwY6aAY1eDQbOXz+CM2xXn80cEyGEJmy3Ve7n1QDIawQfsOsM7jjw6GEcY0lrGF8w7wg2JUwxEUd0qm4HsWJbAXZIqLHBxfXyiBfWhGN3KH8CWFEtiHaSyDCHIrU+jKe48nha4P3aCfAGFMYxlbOO8APygGEUzQjG4MI4xpLGML57XfbBdeCPFj4nkhxMUytsALIS6KURMsCW+2uujGMMKYxjK2wHsjKCei0PWhGs3oxjBCC0xCuVjGFsghfMmnBPbO6BpGGNNgcGy+7Uk8L/c+aAZDIILzcu+DMJhEdtX2Mm4tI4WuD8WoRjO6MYwwpqEIKIF9yEzBTZrNQxcvhhEGhwbn0YoLFKMaDOGgG8NgCBtMH2AZW2iOoDmC5gjOO8APujGMMBxBc6e8YYZ6PkpgH7qRg6NMjhLYh2ksI3cIxXCUwD4UoxpE0AH9DDCNZdBP7tFNQrkoRjWa0Y1hEAE75LwD/GAZWzjvAD8oRjWawaHZLryYikIwCl0fqtGMbgwjh0BVGIWuD8vYAq+suihGNZpBBCwjCeUijGksYz/8P0H5vQVePxLKRTWawcoVsN6MLkpgL0gbF8VgcB18k7h+5+XeB9NgCERwXu4NeHXMBZMYoOoAtRndcATVEVRHwCurLrbQfkYxHEFzp+fx0KzCeTz0wRbO46EPOPQEmZE6k3geAn0QBkNYYBlbOC/3Zn3OQ6A5wHkI9EEzHMFwBMMRnIdAHyxjC+cd4AeOINwpmaIxiWSKi2Xk4LJMblEC+1CMauQOacw1px4XwwiDCIiNhNLYiSSUi2rQD3uUhHIxjDCmsYwtnHeAs0POO8APqtGMbgwjjPmhnNd+b5AHyEKwRaHrQxjTWMYWSBtZFbYodH2oRjO6MYwwpkEEDWyBhHJRjGo0o38LXEgoF2FMg5XLPEoJ7J1RXm530Y1hMLgOPInn5d4HxWAIRHBe7n3QDSYxgJexexm7l7E7guEIhiPgPOSiGd5IwxtpOILhTs8LJoiaK6cXzegGV4+ZRL16YhW9emIVvXpiUeg6fnSaaeOhGT3Bmp5XT5wDhDENRzAdwXIE59UTB9VoRjccwXKnmSnGj8/CLkY1GBxbbHdjGGHMBHOdpx4P+wMlsA9EEIB+JhhGGPSzwDK2UH5GMarRDCLYYBhhTGMZW6g/oxh5aE6lKHQdeVK/KHS9yBOMh2JUoxk5hDzDXxS6PoQxjWVsof+MYhABy9ib0Y1hhDGNpQXuWxg/oxisXAOhGR3TWMYWgsGx+cKTGN0YBv0QQUxjGfTDrppexullnF7G6QimI5iOYIYxDW+k6Y20HMFyp2QKzmrOo1cvprEMDs1W5q4vZ0LnAasX3cghcBJMoevDNHIIlfXhkc4c4DyU9aIY1WhGN4YRxjSW4QiKOyVT5HezRQnsQxgM7vybZWyBTHGRO4QvNpTAPjSjG0QQgH4m2AIJ5YJ+FqhGM7oxjDCmQQQbbIGEclGMajSjG8PIQ3MqRaHr4KSeQteHbgwjjGnkEM5qkzYOSBsXxahGM7oxDCJgGUkoF8vYAgnlohhVC0xCuejGMFi5/GxTAntndBWjGs1gcGy+5Ulcy9gC5yF8raDQ9aEa9MOu2l7G7WXcXsbtCLYj2Iqgcx5yUYxqNKMbYXDo3JaUwA7OVCmBfahGM7oxjDAyV7Fy57GuF1vgsa4XxahGM7qRp/uTTrkEcrGF89bug2JUoxndGEYYjqA5guYIuiPojqA7gu4IuiPojqA7gvNWzQWWsQUqZS9Y7QJyRvlDeephL8LIDcv3Ux7X+rAF8g5fPCmbvQfg+89FMxxBOIJwBFS5XSxjC3wzunAE051yhsL3UyplH5bB4DJtUCn7UIxq8JFhj5J3LoYRBhGwPuSdTqDknYtqZD+DfUDeuRhGGNNYxv5AQe3I30AtCmofqtGMbgwjjCmQd/K3SYt62JG/TVrUwz6EMY1lbIHTlfz5zqIe9qEazejGMMKYBhFMsAVOZC6KUY1m9G+BKah9CGMa7NH840ql7J1RzlAuujEMBreAJ5EvNhfFoB8i4ETmohvZT7CrhpdxeBmHl3E4gnAE4Qg4kblohjdSeCOFIwh3et7/zZqe938fNKMbDI6tfN7yzTKet3yD85bvgxxC/iBqUQ/70IwcQrA+fP+5BwhjGo5gOYLtCKiHvahGM7rhCLY6pQR25M+rFiWwD9VgcAG6MYwwcofE6WcZW+BE5oIIFqCfDYYRRvbD31MeF/uwBRLKRTGq0YyMIEt2FiWwD2FMYxlbIKFcFINDN8ABmHiSwwFfbC6KUY1mMASWhLRxEcY0lrEFEspFMYiAZSShXHRjGGFMY2mBSSgHJJSLYrBHBwjNKF95LpaxBb7yTDbf9CTyxeZiGPRDBJyHXCwj+1nsquVlXF7G5WVcjmA5guUIOA+5mIY30vJG2o5gu1NOPRbbklOPLFZclLM+LGN/oJz1oRjVIFf9QDeGEcY0lrEFauov/m7wzazSWVnO+mEYYTDS3BRZtPr/vwQoRjVysbIOclG0+jAMZpR+sqbkHWAZW2iOoDmC5ghaM7oxjDAcQXOnJJR10IxuMLgFwpjGMtgu+cGgnPWhGNXICDZrStrIYqtFBevDMrKfzX4jbVwUoxrN6MYwiIAdQna5WMYWyC4XxahGMzg024W0cdaHtHFRjWZ0YxgMgSUhbVwsYwukjYtiVKMZRMAykl0uwpjGMvYHql7PAlP1+lCNZrBHJ1jfjC7OQw44D7koxt+hg4TCQ1zPJC7OQy6msfLfEEGeh1zkechDSVSgZaS29aEbjqA6guoIOA+52EL7GcVwBM2d5jeW4EYI5awPW+g/g8F1UI1mdOMvVwV7J8tZP0xjGVvIF948FKMaIztlgTOhPExjGYyUCYmfUYxq/GXl87U8q14/DCOMaSxjC/mWiwdmlE0+uzGMMKaxhMV4mKrF0fgAZg6JQqeZQx6mkUfjHhhPdL3IHBLcGaLQ9aEaOZ7CRsoc8jCMMKaxjP2BQtfgFiOFrg/VaEY3hpEr1w72N2/Utj4Ug34GaEY3hhEGIw2wjC2Qai4YKRHUajQjI+BWGfWwD2FkBNxE48GvD1toRDBBRsBdK54CG9wRyHrY/2ASWzeGQT/MAXnngLxzUQz6YQ76+LYyJbAP01jC+Bn5ceb6dT7e9cMwclNwoyqrXj8sYwtZpPZQjGo0oxssCRHEMrYwfwZTxQFmNZrRDUbKys0wprGMLayfUYxqNCP7IT1lCewHRsr6kGoOSDUXxciRUs9HCexDN4YRxjRypOezzWu5EvvHe7kuilGNZnRjGGFMgVSTt8o29bAP1WgGI61gGGFMg5EOsIX6M4pRjWZ0Yxi5plkKsKmHvSChXDDSDqrRjG4MI4y/GeW3vpuy2YctZNnsQzGqQT+Mh4SSdy83xbEXZJcLjrZBNZrRjWGEMY1lbCF+hiMIRxCOIBxBOIJwBOEIwhGQdxpTRd65aEY3mFF2PCcyF9NYxhbWzyhGNYiAQDn5uRhGGBlB3j/d1NA+bIGMdFG09CcjHTSjG8MIYxreb1v7jWfKRt473DxT9qEb2U/eFNyU2kbeFNyU2j4sYwtkpLwLtym1fahGM4iAQMlIeUdtU2r7MI1lbIGTn4tiVKMZ3XAEfyc/edlmZ6Htba6v+b/vReh/Oeo2y9f83+tioH/Z6Tb71xxfM77m/Jrra+7X/MtHt1m+5tdb/3rjlCfvO21qamOw4OShwYLndZiHajQjjzY4NF+OBpPBl6OLYlSjGd3Iuc+bapsnyT5MYxlb4CznohjVIAL2LNnmYhhhEAH7gmxzkRHk3bJNgW0EU0W2uahGM7oxjDCmsYwtbEfwl23405RVuLfZvub/vjfj+Msytxlf83+vm738l19uc99mVt3eZvma9Wu2r9m/5via8TXn13y9UWMbeV9tU0kbecF/U0kbcf5vYUxjCWSFvNv0Hxxtg2GEMY1lbIHzlLy9symrfahGM7oxjDCmQQQTbIGvRBfFIIIKmkEEzChnMBdhTGMZWyCnXBSDCJh4cspFN4YRxjSWsYV8SeCPmcqXBN52Vbup3dUeatMDS0s2yXs5m+raB86R2FyzG8MIYxrL2ML6GcXIGVsESs5YrCY542Iay9gCOeOiGIyUjx5nKBfdGAYRdDCNZewPFOE+FKMaRDAAEQQYRhjTWMYWOHdhTanIfahGM7oxjDCmsQTnIipyH5rRDfqZQLmoORdRkfvAeDgAueiiGYzn/JvhA4QxDUfQHEF3BCcXHVSjGd1wBN2dkmQ2k0iSuahGHjpv32xqdR+GEUb2k7diNrW6D1vgZOeCCNijnNJs9iinNBdh0A+bj1RzsQVOaS6KUY1mEAE7hFOaizCmsYwtcEpzUQwOzZJkdpk/Jj6zy0Vml4diVKMZPcGSZHZ5CGMay9gfqMh9KAYRNNCMbgwjjGmsb4Ep3L0gu1wUg5UrIL4ZpSL3YRlbqAyuA00idbcPw2AIRFCnsQwmMXcVFbn3AK0Y1XAEzRE0R9DCmMYytJGoyH1wp2QKvpRQavswjWVw6NzKfegbSh/N6AZDWCCMaTAE1sffkbq/I3V/R+r+jtT9Han7O1I/35EOwpjGMhzBdKeZKWZhEjNTPISRgyt8ZDJTPGwhM8VD7pDCByO//Dw0oxtEwPqQUAqBklAOSCgX9MMeJaFcNKMbwwhjGkTADiGhAEptH4pRjWZ0YxgcOrcLj56decNl8+jZh24MI4xp5BDy7sum1PaCtHFRjGo0oxvDIIIGprGMLZBQLopRvwWm1PahG8Ng5TKP8lDaO6O9GNVoBoPrwJPYl7GFwRCIYBSjGkxiAC/j8DIOL+NwBMMRDEcQP6MY3kjhjRSOINxpcGi25eTQCxSjGs0Ig6MxvSSHizxao1NSADcoKIGd3HmgBPahGBkBdwQogX3oxlA/fNDvf5nGMvaHrJRtPM97Z6Xsh2o0Q3NAPewZNvWwD5qdfPBr4+ntmwe/Tm5QUA872/kvwwhjGsvYAp/6C2Y0QDWaQQQTEAGD41PP1XDqYSeXubMetvH8+J31sA9Z2PaQ88aVYB78OrkWTXHs5Fo0D359mMYytkAKuChGjpRL1pTNPnSDCIitEwHzRnLgkjVls7MzO1mU0s//LYtSHoqRVwnOFuNezkUY9MP0kgIucqRcxaU49qEYOVIu3FIp+9CNHCmnRdTQPkxjGVsgU3B1NcgUF9VoRjeGEcYUyCFcd+XBr/18Shb/htlZ01hGRs21WuphHzLqYN7ILhfNyKj/9fZ1u9LkxpHvMte6IJnJJOlXWRjGWB4vBAwkYywtsDD07lun+zsku/qrqKhi9t7YpzWaEIvMjCTz9+ldfabN9h82/yjzjzr/aOPHM222/3iuQJ4/0vxD5h86/8jzD5t/lLE7z+TYYj9+xPlHmn/I/OP5v5OfP/L8w+YfZf7x0PonpT26wPYfj0hx/xHnH2n+IfMPnX/k+cdzR+35o00/nneK7x9x/vH80vL8IfMPnX/k+cdDGx85Mu2ZNtt/1PlHm348I8XfP+L8I80/ZP7x3NEfP8r8o84/nl/63IPn1eP7R5x/PL70UczQnjm0/cfjS59O5GdL2P7D5h+PFTy9w8/s2v6jTT+evPP9I84/0vxD5h/PFTxl9Mk73z9s/lHmH3X+0aYfj2S45/jf9sihledE2VaeftjnM7Y8/bDfP2z+UeYfdf7Rph9PP+z3j/j433lKyCN3pf+Q+YfOP54reJ5CtflHmX/U+UebfrQw/4jzjzT/kPnH1/+OPL15z1TbUp5b9WSk7x9t/Him2vYfcf6R5h8y/3ieaX7+yPMPm3+U+Ud97E54/mjTj0eD2f4jzj/S/EPmHzr/yPMPm388v/TBB8+M3P4jzj+eX1qeP2T+ofOP55fW5w+bfzy/tD1/1PlHm348uerpCX5m5PYfaf4h8w+df+T5h80/Hit43kefibv9R5t+PO9I3z/i/CPNP557/TxtnaTq2W32Ww60zj9mqcqzVOVZqvIsVXmWqjxLVZ6lKs9SlWepyrNU5VmqbJYqm6XKZqmyWapsliqbpcp+SNU///mnX37/259//ftf/vbXf/v7H7/99su//E//D/77l3/5X//zy3/9+sdvf/37L//y13/8/vuffvk/v/7+j8d/6b//69e/Pv7/33/9Y/unG+xvf/2P7f9vgP/5l99/+/rrn38a/3Y4/ldjfFi4x78etyhz6xAx1BeQeAxSv5zfD4jN0T4Air0AJLCK8PXyfi4imB1CoA8JjzfTD4yNGA8/RMGHpO9lbJLeAYq+/Pv5+N9/5G49/v3tWj0WkPkF2DdAreFoAeX43394vx7//nb7uLOA9uVL+3GU+WgB7fjffxQoP/79XOqtBeRvgO1udrSAiISxy3Ot97bgy+r+kKMYD5cg4BRaF6OYDpeAhPnZU/y5iM33LsdaCaQxPWYXPUC2uPqkEDHQGFu07ptdtvtmnDDkFQMIZSzfipnC+BLZr6KCMw36E718QwBy2eq3VLR2E8H6iYSQjiHQZj5K+p6buXlZDjczAapMKX+TbdrCrwNDdmwr6FC/5WILjg0E40VLHun1P75EyvGXAIz8yIV+csXmiekYtoMwpCftmy3i5jM9hECMWTpdzLYrG41Q9fsztqvBMQIQrRS6AU2b/esYml4gJCDW+9ax2srhIgTwZnpcLJ+L2J4SQ8Dvnkc5Pg8kFSXEbkFCO4IQRbxXpfOexkOIvHqmYutnWpbPtKJLkfULxdffYxlf1EF/yqPN7o9PyfHoUxSIZ6rfhyrhEACTRbMuFlGOzlTTMoEjiI0uuzVs7dgaqiIdsdR1ZNqMtF8H2o36fSAWBoFvIndBMmobktGmU91LhgIJbY9RiU+zmqeViO2+pSLeCV1RNnfeOFn6VDaPxTeCxnJsVjO6cZV+79xeQZNRjK9GMQMGjZu/pu+pxskexfS6Hzmty0eWVfmA36ISQv8WmW+g+29BN9BYBgnWNn3Lq+ZnW5aP4sGCeEceRT8/dsSmr3nbEWTqLX/zWNpWNe1IecEwIKsSrLNQsHlX8ysG+prHUKkf8l7lGCOh1/K3lFWNxwhITvuzPyewBsSmSfuhJJs0rl4QD5YKzdap0MqqqMNjbbHTWEOH0tCWDipMQLxKWD3YEpcPFupJ7B4h2Z4Hx8uAT6XyLeSbyw7IKFrHo9H7EyNVsA7ApNr6OnIIx4eCGax28tlu6tMdf89gBQipxfa9qybp2MYVYPOf45t+WOxY72E8AlZPjM2TfIhRwckU65r/NQ9yuhO+WsoKdrU84u1PDJ2cdm8Y6F6ZxwVmWKeUdgiCLG33OaU0y8ceA3Dpo3vxU8Qk3EPorjOL+RABSpf0RZjG41tHLeit0PUtm4GbC9KV/Mj3+HENq0DOK6LSWLMM73oJB5TewqpRgJpSu2nSNnvXd1/S0rqmNFnXlKarmtLyuqY0W9UUiEBpCpRQ03GFs6xyfK5t9aWApCvHfuXIX//Lt7SthNyvYCWAu/VjfOPh0crwNM+ezbR3VgdZ1Te8Do3f5m27xYTDdaAHaYravyWWePggfQxpPHbTtm+NkzJ5zuNO4yDI9hL8vjWozGGtN5C6/qp9zE5cfNbCXa1D+Wdh3T/zEUaSgYFOJqblmAiKMpFBkairURG8GbVryxYTAJth0HHSQ7eqswOn7EAKuqmnLusyh3+vgDxnR/+wL7kBkOYg6yl8VNatO7GTvWzIBVm3fjKpqB0fLwo3kbKedFnWkQfZQdYfiaTPD2mAPCKKFqVQhjNdZkdj3oFUdBvrH1NKrvdAqo1sB8vxGESCg6yj0BMn65hCdLpARKD9gky/9PSJLXBkAEShJ7mT2XY4E8g+gSCvXkKgsDbpjsZW7J72t34wElI9FngYaeC0X9qy9qMA1Lr2S5DWvTjTC+htM1CoYnNldTEVmXXOLoA07RQSagAgSExz7VuyWbp4/ByLKBI1Ih6zkInkKytpcVpJamAlyI3bSlfeEOLxWmDoOPZN2d0Pd8qryP7bo8Llx8usTF7+3flA3Xv0NfvBRVmPVwLfVSOOvW1PPd7Y7PD0j9nh7R/z8uM/ZofXf8zLz38MQb3/IQ1s/+VuI15Ts/Zi5nFXteW7Khb3OnzkYQoZvIk7CkhtF97umtYpm6e1CxilJztYKQADyWkI/SkSNE/5DvtNRcz6mG/+pNY0eXfeQQzpbleZ7c4Yj9UOhaVy7lHcnGeQCzcrG+/uEsDNCgamchsR2Nyme+9O4Au8xMskaOl4JSg4panHt3TTwgEi+5VgM971N0xXVttnVqLwVKcADccpQrEAYbXcbxNmIRwGPyMKT21um5RGDHVS4H38EyuOdlfTV3/k6XB2ICiEQMs89GpyMo91j7SbMELF2k0UoiLtJopQ0XYTBalIuwkhOLuJ5YM9F/M4l7J+LtXjXNr6ubTlc4EPrNgvq5ICuHujOFXK/YGVoPLDQBUrIShSRUtIy8sS0sxBQlpZlhAI4XDjfVS8/ngTteOH72OQz+E6tKct5Tztx1sCfYjLtjuFtGq7E4pVsbY7Bf287Y69ZGXzjxzfVxOKNW1eCZ2ueAXBOFB8QiErVoETCllxCpxiWFfghKqiOAXGEA4Un/qWysu9eUfxKUIfTRpJpU2PzwUVsNASEh0uASmWdQmpHhLS1iVk/RKAnt9Fe9i75IlYd8/vhEqkRL53VKbH9y7lOKGIVR4OvFxmOdW6A4FegF4LKWFK/dmD4P2IbTxmYjveD0SqpacjxNml8VXL8QqCzHd3aWQNAKKuv+4SqpViX3cJRa24193JOkgCkeRAIMi3QhIIdnuTBIJiViSBQAiKQLCQkb63hGJWrO8tiYek6rqkioekqoek6rqkqoek6rqkqoOkovK+HuCp0z33jVFh7RT52k3qIR/ZwU+V8rKfKmUHP1XKy34qDEHKBzLb1pexuSrjsYSgONNGh93mhoZAioOY5eohZs1BzGA9BidmqM6GFjN0tyPFDEI4GEz23Y6CVRfe7R4u84TCVbyM1HUZaQ4yAgupOBmBEA6vMuu1NqWk41cIClVN5ZNfsx6Ob/8FFk/HqQZzfE3LOwyUAiCjLcocN09t54QoyKv66GH1A2TOa9L9SlCxS6vfD7Ptz+O6Q3yN6M0OXtrVvBF8aQ4uFY9iquRRTZXWy6mSRz1VWi+oSusVVfgKEEcRQJoL5fYSgkJVvIR4XAGqxxWgrV8BmscVoK1fAdr6FQCTmfasN53atryRWcsOz11YFsU9d3FKRJEeV5liIm8XkVbX7QwqrWLtjKBoFWtnBEWraDvTHDzmEhzSACUspwFKcEgDlLCcBoghSOWFXd5GKNImCXkXMwcfgEQHH4DEZR+ARAcfgMRlHwCGoA73RP05ZpbokAQocTkJ8GQdrJA5mH9Jy+ZfkoP5l7Rs/jGEA4OMl9n2oC3HDAIbdAXtAaIwB5nswhOxpd4WopXjAJHgdnzfZ1tzOVYY5BLJPSc6z1dd2W+Hh5jKupiKh5jKupjKupjC+xRr6MTjFiPmcbhl/XCrx+G29cNt6xyEbGXo1TvbMsKx6qtDpYqoxxVV16+o6nFF1fUrqtpnNZc1MChM5WJgRg2fhnwcHBYUpSINDIpSkQbGo6BK1guqxKOgStYLqiTbRzlIRycT3SKmQDo8XlLm8ZKy9ZeUebykbP0lZevRVNg/trc+y2aHPYFRyqA+WOG5oTq3lo/7VrrI6odedL+9Hec69XwB5JH8+h2ySwAEVv5RvbMFhZa45tkQguy0jAqp6FbLqJkK12sZxabYBtr8qRx30MbiEXVEdEFjBykwO4WpuRdUQ8XV3GMIrmcz3o7cg5eC+lwIjEuVHmbb/pxkXewCSO1d8zeMBkBkXW9RVInUWwRB6m11aJFeHXqkVwe9pU8F6C0Uj9YTl0ubrpZv4gHDUmTzexRSIs8WlVCxZ9t0+WwbrEulG+BjGLZFsDSHdunSlvuln/CQdTKr7SaZ1dgGiZTjGmiFdVRZR7Ocyaezn0WCCb71m+62/cd3Kg3rtKphmVYhBKd6GtZpVcMyrWpwoFX+VO5eh1rvPbAFhO1YPGJcFw8UlyLFIy4zs8LyKVI80FOIFI9oDuJBn8pt8Rjv5BDqvRfZRnK9b2BQIGOw5R83EEmTg5ymdTlN63KaHOQ0rctp8pDTtC6nJ9JBeTBQr74Ue0+4mGRK0t3lcao49EFTGJYiexepOExKUVkelQL9QqUXlH8NZz30CymKS1nqR2Mq4DaF4lItTpfUcHiZgsfLDsJRgf39e9tQTXN5PA8RpfXKhe1v0FhaFVYc95VscVI9WgmEkOE/mBvL7iHSp/eDHC6kip1UvXdgKfXwYzwGWMGoEqV2EMJ6v1+bUtKvQXQzZZPRfoeA3Qt7veF2KAnsBtzSUerzOjBlPxMM9qRIo6NjS5PL7YqY0XOfNMP0aW7wk2ZdfenidaTeEe6ln+P7OhBIHo2UcwYgeGPVpibXrYGNrct8BiE4PkPxKQ8+e9mPl/G0+/3AMOxULjXYn66PCtqC1bMClrsgxQFE010QbsqY4lAVN2ZMUR0VO2dMUVCEGzSmKMyk/U0zh+4uQeQeVclabkL0JBd7GQtxZS/yz7IPrkH0pkF16qF4F8LQocIgJjcVS1GUSqXfRTaakHsymvK4E73El99W4jA1Teu6lNZ1Ka3rUop3o9/v4tzoZwHEboJIv0Rsf9a7INZXMr+br4GMoXib2/vunsjwJGjIHiDtJsjD8/J9UYx3QWzcNs1ug4zPKXclVjuxRq13j1jbqIIO4ab69fkB2fQmRB35ZXIXovsim65CvKTrXqOiPg0O6S6CsPi9FyZteRXQbKN7EDmYM8NoCGljMoowcTYGQnA2BkNQNuZkNzgbcwHEboKQNuYEhLMxGIS2MehSNWaNvkwJvQQi1vMQxGpbXgmceoovmuQY2IzCVewcWP5ZVo7fdjnCIuqRiHQcFYHLKGMkSw3Hj92MwhEl94ddmS3EfrwMCovIKG7dNnXyAOzXgZL/RnRX5hSxNwykNTGMYZ9brCkffQ3e1tqdeNt7Jvzz3su99oy37U87BsFOkSEk29/A15RRJVXrZi+GqfVgLHJlKezM4YzKqdihw1mg14qbOoxByLHDWRwKVbI4VABkWa4AyOJQAZBluQIAQ3AjVeHhkpNys0e/vawOFQBZlysAsjpUAGRdrgDAEOuHSw+qhRKisXeX0Mn/fgkkP+o2fmxIkZuUSE7KzrCoih2VDUFKv7luf9a7IG2AtLsgY8zM9me6CdJG89851fNaXCKHfuv8ChHabZj+iP76u96FSVMCyvbQON4Z1AeQnEmKILigLYbggrZ4P9jp7hlVWLHj3TOsseJGPZ6sY0hJbFNMfg+CZgHH7hho8TAsiCFS/5SWUr0VFsx1cqEhG4xhbAzyjTanj70f8HK0FUNQ0dZcPhxtfd2PuLCtecAAvTmBiT2it/2NbtGo4Io8HQhBno59+HRe9iOX+6ejE8xdY2E6YraWFdwK6voAa+i65YwFhHAwFpurZujOyziAt/1YzryCEBtD9+GE29853AMp06jkYvEmSJ1mCtR7XG+1DHltEm7KawnTBwWQApJb+DhMSuPBJGH2jstNkJhugshw80nLAGQ5BwuvI+uYZGvx3sdsW9lrfMJLeG7vjIKTdHq10cbUc9bxzmnZ1ktSIcZmdbpzvMicMtx4EA2xu+m/ZorcA4ndTa9zX889iMFJVpQhxhCUITYY2KIMMd6N1PlV0/x+fNsNdCFoodcbtWQABD21ehNLm0Zz7+T0ZBk2ljE7Ga59y3iVv06AvwbSKxdCvr2r3auWg4Wb0i49p1wFgBhq6+cCwiZRG6o84K5YEIK7YmEI6oqFd4NMoj7ZUi6J2lBYi0+ihnZmTDt+nSJ/oRAjldzviw2AWIJl2OPSGWWu5sg7EFSTmnsSdc0vs7n3IHnZRkAIzkagkBZnI052w6YMzAJ2o63uBpaPoXfJarkpZK2XHaVW7B6IpH5xlpfg3F5SUTSL6zdiKJbF9RvBENzl7mRPOy3Lq83cb0dBr5F+U527Pr99S13f0ba+o81hR6F/c/gEk84CttNbFMmSkScw5W8Uu7CMNHpJiKCiRTw5tjNyqAF8S163Uhhki7Pk4QSPx42BT2DqqMDIc1ubyzDjDjBnlV+FGTuTWzyOnBoaZxVHs8HNeTy3+8hX1tLitJYEdgY1C4yte0lSCGAtcC5W6Be9FCaX3tUPKiMa1Wq6eUYWhsRsT7oK9sU+DpPiGCodxcD2IpAk48aXAwBpOIwzojjpJoh011HUoDdBptqsPMXb30BQYEt1PEB1juheOZyRFJmkHu8rrBNPU4bYUJ99xhy6nJClphCCdESn9VfSSdE8+UqCXeroVxLsVMVNc7eChlKT09wNNRCMRbvOlMmA7VorWFnvH2RluX8QhOAab1hZ7x9kZbl/kBWH/kH8qRRwKtD+dv6Ibbo67jEqnJ3eTdUW1G431zH6n4f57bpfBxyOM3rdgHNBoR92mAwEKaNfTpm/5RLIJsXf99dNkuQmyGjnbPMc1msguV/qzUIAIIhUN73rPsHt72ktu/5wZzBzr7qppuEaTByT2Le/p5ShqzBjktIGmQEMPOreNnejv3RXXrrRshoMgMAm0d+bq3O+XL5gbjaCDYNg6y0yeLm1Tv1I9xgwCsWRQWv4iTNdwY9JGsegqC3FR9vDg9spp5sKGMN4gsaXV9I1kY95aE4stxUwppHUNReu7GHwvbNnqM35nRevrj3RdC5I3Dv48atkJMrNzSIvvkrC6BiRosP7KN192W8kPxJ2XgzY7nVT4KwryguMISifeEFxEwcI0q1+4lvoMfGv7TWwpShMaGMlZXZp7XQGgsQ85VGFY2nFIDacP3Pl6TWQmkf7jHx3JaQDCYKwDiS8kqku6ZWmdyC4Wotzk2AQ0k2CQUg3SUENBkk3ycm+dqmPL47ca1vCcfTJlnAczR8OADmJj/U9SUWPQ1sFekuoMExZD2yV9cBWcQhswchnyaOwyaLdCyYX6x9TSq43I9Jx9J+RpDdjsJzd0+XMbPwp1l82FU0nKCi25QLCpqQU1MmOS0mBEJyzFUNQzla8G6Sz9WRLOWdrUQdnK04EyT0pLZkACYEdBjk/aYHRLM5PWuDsK8pPCiE4P2mBk684P2lB8Q3OT1pQORTrJ+VPpYBTict+0oIaC5J+0pN1UH7SgmJXnGukoEp+1k8KQVg/KV4J6SfFIKSfFIOQftICW+nQftIzGNJPimFoP+kZDOknPTlqzk96AsL5SaEGcU49qMiknxRjcH7SAlvZcGRQ6rqfFK6D3FJ8tJyf9ERWWT/pCQzrJz2DIf2k+MpI+UlPbp2MnxQ/Wuc8ElChUupy7mCpy7mDpS7nDmIIj2zMVMfU6Jen4m5H0UCsKG3q3Tw/WssOBPlZUx/vJWlurH0JRPrr6OXReg2kjAGBLeR7IJvXTDst5gZAyrIHHK+jC9pGkGgdaEIxkyIEEdjXc0XjsLjXM4TgXs8Ygns947gg+XrGW8q9nmuw9dcz1n+dSkPjsdbVUD8MstmH7svPL17NHUjEMz7G1LUy67/uQNDNiqoMxetoI4rWXj5Gr3xMJ/jt2VkAiK7au4rKoDh7hyE4ewe3Y7vl9oqO19qj/XbgkvfQVc9KbIeni0F6I5349QY9AkmweDiM4uGsx58Dxy8Nb88WCzvOE67JoWdbTQ4922pa7tlWk0PPtpqWe7ZhCKqtF5aQOvrIh5fqtL2EoGZapRf+bk+kIWa7wVgVD8bqNk/C9IDfj4+vKCm2xf7Ia2l6Wb2DQFHtErI9nY7rOiocjJX7UzHnGeTCjmivlN1ii7Py7j8me3yMrX+Mh/6jmixa/1FJFan/Ghz0H7UXJPUfQnD6j+WDPBf0dKfPBaWwsOdiHudS1s+lfJSXt4tqHx+TAriIZGj+u+s6QeVHPkBaQlCEhJYQFHUiJQQOxWIlBIWuSAmBEKTmQgnpZZ2bVwPYuowbxunUMK4gGIemrdUcmrZWW27aWs2haWu15aatGMKBRVLfUpmb/L+xiEFWTSNSOzW5eT+X4iEhHvbf1u1/8bD/Zd3+l3X7j67u2+t03A+nl+r+6l5gO7M4dTObUwriDgQxYr/+52mkxTuEOVyYS3G4MKOAFXlhLh4KUz0ota5TavWg1LpOqXWdUqGQse/Uag7v1OohqXVdUquHpDYPSW3rkto8JLWtS2pzkFQ0vr37/uaMkzdGbebwgGgu8uFh+tuy6W/BwfS3sGz6MQQpH8hs2wgQlRoPJaShtoEbHXabGxoCyeti1lCoihWzhhoHsmLWUJSJFbPmIGYomEGKGYRwMJjkO7XhFnfsO7VFdZARFGeiZQROxOJkJBYPGanrMlI/+wqxXkxQSjp8hTQUpppGWatVObz9twRD1XGahz2+puUdBkoWly5kSadyotR0B4IcVWO4V9I5D0n3K0G9JckkWnyNqKOXUwQEn8q6C6Gl6qC8UNJY5YWuN055YfsWVnlRUIVUXghBKS++AsTRjjnN0wj2EoLHYJESIh5XAPG4Asj6FUA8rgC6fgXQ5SvACZlpz6rQuTZyT2ZohhX73G2wwIp67kI7I603l9YwRWbeLiIoUsXaGRRlou2MVgc7g2qsWDtzcr6k8sJgFau8KFhFKi8KVdHKi4JVpPJCCFJ50afoKAh6mUS9F7NcPA63ehzuug/APHwAtu4DsGUfwIn6k8xs6sDMlpeZ2Txed+Zh/m3d/JuH+S/r5r+EzzLIeJklm3JM3xgE9aLLo6dsDnOQyS48EVuvddFWjgNEDb6HdGpgfqwwyCUyeqDPs59F9tvhIaZlXUyLh5jWdTGt62IK71Osoaset5jqkE/V6nI+Vavmcbhl/XDLOgchWxl6F59tGeFY9WGQij3c5nFFbetX1OZxRW3rV9Smn9Vc1sCgMJWLgQnSx5uHfBwcbihKxRmYGFCYirMwG4aDoH5VW6xKanxE1VdFdUNZltUTjHUm0jFIW9PUBmQvIzEEhwfVhlJdjritH3EMHkcc4/oRx/XIKvoYLWG00XsZUHehMkutz83UoseVWdvXwCQApjQrBhSr4mqzTjDI4ixYvZd7lXmyl+t72a+kre8IyqtkdwRieOzImNieSjCwI7BhXG5hjDJp8ajU7BRlmmTScj1GQXGAIlM9UkJfhLoCpti7Ar7kvcrbWlAnAK4VTgxpuU3whoH8q2TjlxgETmVhO7+c4NA9W84FZhrwkvVQYMRF7GS5BeuJuHD9vbaFwMAA1eBrA0GXA6rDF8bgWnzFAENYXI+vGFD8iWvytWHAamuuy9eFsyngbDCpUH2+YoBhLK7R1wmrkFEbjML22DpZC9lk6wSF7LJ1ypNka6tTniSbUp3tDdeV6gyFa0uFrRnXRAlrANmY6gSE60wVA+ofyNpmFNlie1PhldD7Ck+Y6051JrVse6ozHLY/1SkO2aDqrJ3CmEm3sU08NPEGU2a5pgwYhbtswMIu9nGIGzu00WampduNHbjg37YlDfmruuMs29ypfbcQ9HKYm39NNHmts0Pp1mx7iSAXAhwv4oISzcKQtXoXpZTRNL4lhAJzXvshq93EaL3TxHxLv4axMeB4wlhGKMiKcU3jTza2jSYvLSF5Q3Jfe+Lr9gg/7pwBed9G9w2bTrjtvwZVaHHd93AS73gWljzR2vs6UDLh6PI2XZji/sGAAl95cHSeJT5q3aPAOq++IxJKOETBNdoSR7+5l4aEexMIa7RIckTNwKpNMw5sdlrJBRgb8wlMBTR6gc1EesXI9sC1o68RHD/voZq5K+ElCGpP1RwMDgShTUX7OApvcCAKbXBaWzc4CIM1OLCLHmtwYkgOBgduLGtwYDUOy0gRFWyR2oNLpCkagBAcDZR1aoW1zSwNVI8bY8RNBT1QaBrAKCwNRFiwxdEAxCBpAGLwNIAqtlgawBtL0wBU4OE/nNaxq9h4Pr0Pv0ZGNp3MY1P2N6TmUMQeI3qEcmqMC3tJNcYgtAK6PEIhCq/GEIVWY1i6RaoxwmDVOFUPNUa1W7Qaw431UOPWPcNtcoy9qzGabZVjTwHfXm35UI1PavNYNV6/lOO6OlaNxcWOwuiXCwqvxhCFVmNN62qMMFg1hoOhaDVGDQdpNYYbS6oxrKBMAyTNu/KuyKiWY4thdHsc5wFze0XGXRRYRc5h3R43D3vsooKwmMsFhVdkiEIrMgo3sYqMMFhFRhi8IqOSLlqR4cZ6KLKMqKREK0CR4fCf2ue8apsDk3tFFhdFRqEq1iJ7KLKPLbXyaRRekSEKrcglrCsywmAVuQQPRUY1XrQiw41lFRn2AZEeX40yef939dlfcW30Of1r5jCE2QWM3Klgzji6iFG+40NbuOkmhvUBmBaDA0a+i9H3w27vh/X9sNv7Ufq3lNv7MWPc3Y8xErzc3o/S96Pc3o/av6Xe3o8Z4+5+1M4gtdxeR+mN8+rddTzcRE9Svb0fM8btdfTxLg1wEOwixGb44VZEbApzRCGQEvvRlDRnrLyjIDeslZ/w8lv5LfwcMifvBIRLesQgZM7jSVsUJhiDIahgzAkEddmETzX2suny3kvBPo1CXzYxCnvZTGE9JgsxyMsmxKAvmyk6xGTxxrKXzewRA0lxOSaLG5uw2mMeMZCE8jV9UHjtgSi09qS4rj0Ig9UemPVJaw9q6UVrD9xY+qkGu4vk0bZhStbfF39v34NGacY+TE/inHlmexAoKFMF0LS1+9q1hHOsvkOzNo85vQTRS0xsKna5CBH6ne9wFScNW9K3sObw8q7YLQPWZeU2mnqqC0g7AqF72JQQgZThCqIxslGlgs8p6Bndy7sszpMw30Dg3OeUu4cjSmguMDEdby4eEDy2BXTDI50cLR5e6mNCcSXyYVA8vJ3Fw9uZNH8ahTeh6pFGkHQ9jQBisCZUPdIIUnZII8AbS5tQ2BwnDKrOcxl52H8PCn70F75O9ex7j2lCY7GkP4h1Hr5qOx7APXrYyzS6kpOX6ebxFG0uT1GfKzlC4ZkAotBMYLLOBAiDZQKEwTOBmQMTWFhngpNN6ReUlm5vbG8+1EpePxyAgXVHennbporxJkga/XEloF0tLmICUaKMSkitt1H68WzR6ttrma5s0m6vJY/azjyVMV5FsVGXX9vtLxr6Iwl9UV0PyEIMlpiqR0A2VYeA7MnGjtEdksvdTSGJCWKQxEQeDsSAd1DyWyAG+S3kXRiRLHyqsCSLH00syTYXkm0uJNtcSLa5kGxzIdnmQrLNg2QlrJMsxCBJFmLQEifBg2SbB8niTeGICWNwxMQeDiQ36CsnSRZikCRL+uwRycL3G0uyOLhDkqxED5LFKCzJnqCQJItRWJLFKCzJnqCQJHvyRSzJJgeSTQ4km1xINjmQ7MnGsiSbHEg2OZBsciBZGM4nSRZikCRLphUgks0e7oLs4S4QcSFZcSFZcSFZcSFZcSFZcSFZcSFZdSBZdSBZdSFZ9SBZcSFZdSBZdSBZXSbZk7S4UaBp+XAyDobIPcAz9/e5lKzIdZc7ASGbEOKCBe5sMQZ3tmzhBDpb8XCfiIf7RGAjQ5oCIAptdDAKa3QgCm10cINH1uhgFNbo4C9ijY6tN9WAGKzRMY+mGmIOTTVONpY1OnBTSKMDMUijQx4OJDdY3kmSLMQgSZYsM0UkGzxINriQbHEh2eJCssWFZIsLyRYXki0uJFtcSLY6kGx1INnqQrLVg2SLC8lWB5KtDiRbHUgWNsMgSRZikCRLNuWAN9nocZONHiTbXEi2uZBscyHZ5kKyzYVkmwvJNg+S1bBOshCDJFmIQUucBg+SbR4kizeFIyaMwRETeziQ3NJ6tgXGIEk2rWdbBI9AYPAIBGr0IFmMwpLsCQpJshiFJVmMwpLsCQpJsidfxJJsciDZ5ECyyYVkkwPJnmwsS7LJgWSTA8kmB5KN69+CMUiSjcvfgnvxkiR70hWYJVlxIVlxIVlxIVlxIVlxIVlxIVlxIVl1IFl1IFl1IVn1IFlxIVl1IFl1IFldJybcrJwJBJ5AMIHAk8kY0b6Xsck7mK+hqNSrRxPLOFndL6Otp55gDO5g2SkD6GDhEAjW4uBxFKzFMY/uABiFtjgYhbU4EIW2OBCFtjgYhbU4+ItYi2PrxbQQg7U45lFMq8WhmPZkY1mLY+v+BoxBWhxb9jecTMmhLA6GYCzO2YCrPqjUppGp7U1AYAfsOnovlFrAvFOFhVW19YYHLc7TEdNuU1BO+JiN2ObRiF9Vz7ulLE89qCjZih3GhCDIYUyy/CHq0LoIg7B10lrrp1HoamuMwlZba1tvXQQxWFPRXC4nzaF1Ed5YdnwDalxN9yrQttyroJrHDCPzmGGUXUaoQBRaezAKqz05rPcqgBik9kAMWntycOhVgDeW1R70DqWNaA7rk2fr+iizuj7KzGFKZPOggeZCAzF/GoWngejRvCjH9fcWxGBpIHq8t3JyeG/hjWWbF8ERcawRzWm99ywKCtENf6LHiIKcPo7Ca0/yGHSQZb1QBmKw2iMehTJZHApl8May2oO8huyggyzrgw6yrA86wBjcoAOIQQ46oDHyXQxu0AHG4AYdQAxy0AGNcXc/yEEHGIMbdAAxyEEHNMbd/SAHHWAMbtABxCAHHdAYt9fBDTrQBsWUG3SAQOhBBzl7DDrIeX3QAfwcdtABBiEHHUAQdtCB5dWnGobgBh2YQ6t2jz6z5tFnNpt9GoW/bJrHoINs64MOIAZ72TSPQQe5OAw6wBvLXjZROzn+qVbWtaeag/ZUF7kv9dMovPYUj2hBruvRAojBak/1iBbk6hAtwBtLP9XQo54ddJCrw6CDXB0GHeS6POgAQ1CDDk4gmEEHMP5CDjrIzWHQwQWQ40EHWMrIQQe5OQw6yM1h0EFuLoMOrsCAQQfY20INOogBBU/ISQcWlicdbOtwaHB+gsLaPwv50yi0FcUorBW1sB4ugBikFYUYtBXdVHTdiuKN9Zh1oKGOKekTG7xFDS0uzzqwuDzrYFMej8lhFpcTCGKIwYMMokfw39LHUXgySB4pBJbWUwggBksGySOFwJJDCgHeWDaFAEpK7ZsiQafrX9wbU5SfGGu/MsU6ZTvrLiMQDYPhNRnlFZI5AGiKC50DAEFoDZSPo/B6DFFoPUYlLaweIwxWj13qygylS9J6DDeW1WNzsYO6noZaPNJQi4v9Uvs0Cq896uGWNV13y0IMVnvUwy37kMpl7VH7sBUU6UERkSnLf28FIYiGkQQQLAFTiuJePij2ME7foaLxQXYFo/WZaNZSuYkxXFwtH2PoepkbxuCqSVjFgfWLDt0rThiWLHMzFIHjVRiisGVuJyhkmRtGYcvcMApb5naCQpa5nXwRWeZmKPrFGo2S1o0GwuAlDsW+aKOBN5Ysc8ObQhJTWe9dxh4OxIB3avJbIAb5LeTdHpEsfHqxJIsfgSzJVheSrS4kW11ItrqQbHUh2epCstWFZJsDyTYHkm0uJNs8SLa6kGxzINnmQLLNgWTT+mhRjEF+C+kIhU0fosNV9sxpTtJsCR40i1FYmj1BIWkWo7A0i1FYmj1BIWn25ItImi1xnWYhBkmzEIOXuOhAsycbS9Is3hSOmjAGR03s4UB6C+vtJzAGSbOhrtNsEA+aDR5DmUpyodnkQrPJhWaTC80mF5pNLjSbXGhWHGhWHGhWXGhWPGg2udCsONCsONCsrNMszlDlvgVjcN/CZsqirsLVof3YSUo1S7LqQrLqQrLqQrLqQrLqQrLqQrLqQrLZgWSzA8lmF5LNHiSrLiSbHUg2O5BsdiBZWw9+YQySZG05+IVrregZzh5DiIpL8Ku4BL+KS/CruAS/ikvwq7gEv4pL8Ks4BL+KQ/CruAS/ikfwq7gEv4pD8Ks4BL/KevDrpBiVGi+KIajxorhEmBwvikHI8aK4TQhpdGR9vCjbrgSdLewmwxod3NeGNTrVI2kKo9BGB6OwRgei0EYHotBGB6OwRgd/EWt0UO0Xa3SarRsdWINGSxxq700bHbyxrNFp6yM5MQZpdMjDgeQW173UGIMk2bjspcYN79iMC9x6jyTZGjxIFqOwJHuCQpIsRmFJFqOwJHuCQpLsyReRJFvjOslCDJJkIQYvcdGBZE82liRZvCkcMWEMjpjYw4GDjNbnhdT1eSG4dy1J9WE974PtoYt21Dyo3lyoXjy6W2AUmurFY1AHRqGpXjwGdZygsFQvHoM6qqxXgkMMlurFoxK8qkMl+MnGslQv63dQjEFSvaxnSuD2+uTQkbYejmTb/MNpSB5lIuqRWgercnmRzy4km11INruQbHYh2exCstmFZLMDyWYHks0uJGseJJtdSDY7kGx2INm8/tDHY2q4aUiyfJ8OKAzCDr6DGOTgO4jB7ShKK6KpHoLQVF88WltgFJrqMQpL9RCFpnqIQlM9RmGpHn8RS/V1vZU8xGCpvnq0kq/VoZX8ycayVF/XA2cYg6T6uhw4ezThPowk5t593UZbmBSuQGjrEHoIAVtEcavAENQqckNX6UcryCe/vuhulAsg1npjjHmG3zWQOpi+hXwPZDMRvQFmSOhzUBfN0MPVEqrcA+HaFGAIqkvBCQTTpACfS5l6Rmq4ebgvIHoXJA0QOT6X2JCnUFL7lniRqAdbcoIh3eKJ1HKMkT+LobF/i6Z483h7t8hU5h4w106m92pNW8D1Lsi0ktsgtd/Btz9vg/RbBAZBhorjdwzB8buhyeQpdnuZjjkEQ/S2R9uf7QgCzSog9wJCcHuBMohy6XuRy9y3dtcdEoPU0RC4Tht6EaSOYTbzRItrIOO5Oc9MuAjSRX3Du7uSFr8lZPvz9p60PEDA6aC0Ks3jwry9ShxAit4Esf76VcvhLkjp/F6QsMGKp6F9G8OC/mkNb0q/422fNjk37NpSuFZuDaFwrdyyQLcC18oNg7BN2NrnUehWbhiFbeXWHGJazSGm1VxiWs0jpoU3lmzllqV5KLKqhyJ7DDeGHdNJRdbkoMgQhFZBbZ9G4RUZotCK7FDG1RzKuJpLGVfzKOPCG0srMmryH/rDPod0fOnavgel76Te7DynaWTIdnfageARYCM1f/Jp70BOPqf79XIoDXwOCmvRn4PSb1w+J/b+79ufN++QWWL/GklyEySNlaTsAlLugvQJfK+Hcw2k9GdCKvc31sbGprsgaYBoQAq4XifUHIox23oxJraAZKzuxBaTsbpWPJJOMQobqztBIWN1GIWN1WEUNlZ3gkLG6k6+iIzV4Ylx5PWirg8+gBi8xFWHwQcnG0vG6vCmkMRU15Ny2cOBGA55fM0hj6+t5/FhfwFLsuKRENFcyqcwCk2yzYVkmwvJNheSbS4k2xxINsH+WBzJYgyOZDEGK3EbigfJNgeSPdkUiphOMChiog8HEVPAyURd0vQl9J7vgrSbINqjK1El3gUZLhQ1uw0yPqeEuyDdTbbxo9wF6YMfYw5oJcDrl3Ptnja9CTGegE3uQvRHcdNVCAt3V1F6KDHUexAWu5tB2vIq9PhQFY1L4A4VQ1CHegLBHCoJgQ4VQ1CHCiG4Q2VXgQ41w4aW2m+Js9MnxbSzCrKc5XKCQWWobBj5sxhclgveVOlWMskLm79tKvK4dqe6xXDkW8Tr0JEoM99f3tehYdlVmgKKa5GuUvw5OXVZ3ZyLh59zApL7nmSrAAT1MckaOkgO90C4nD0MQeXsnUAwOXuKAmtcvg2GoPJtFE2NylZGScXU9sfkAkYJ3WdcplvlDiMF5CBN2mdgJZ3J8A0EX8PGoy4nAAKMfuk7UmVKLMl2AaN2Sa8WEQZq6Blaz3CLUzMl3dMQEtRq37RcW0ELqSho2i1mKtOYd7l/NiXdlBLpZmaTErsJktMgsylH9Q0ERbFyG5ldzdpdkJ5yi0Gw5tRB8BrBSvK60CMMVujRIEla6K2uCz3q9GhjEJ6FnIHQw2Fp/SohIYKPgYl7/fpvYbrS/GQhMDw/UvdiaHPxnLzhQE9Gr0VoOczbEvYocLBs6KdcpgDhJUmJ0lORYwabi3z5HudTbGSsFgXnw6O0uyg19tdmjfdRSr+61mp3UUYWRm5J78rt5tgZnmedUmh/IrdQ/s2G/JvZbZwi1nGKxfs4bfha6/QcvqiPJbXuWpzmdf5EH2mUdhulDVdpyzdRYgjTSYUKceAOt5FfFcN0pbx6UnXyildJ93F6BvYXDpJk3tzXY3Pf0B3XepZiOTSyJw+H1h8OJYJLVIPTZnuiiIYp9BF3zpgTFAnffKVzEOYnKPCWK939UBR9UFt/gMQQlu9iEIO8i8WQ1u9iEXnGybtYDOrxAKHPBj1AsJTYuLlUvQcisX+PxGlXroKEdRAZFyBp4S6IDT9mPQaJMa6/p05AyPcU/BztXSZErTqA3BW2zUHcK2W1FrAneIB8N6cv9SlvzyG4lNIdgFJMwFKqxxnXT59xieNzgBrHBJsT9cqf+GVr7u5sDx1KBeIW0UhF6UytAbFsUpQR0YsO4mvRwZWVaK/f00lMfrIl0KD3gITKFK96M+gxlXWPYkzVwaCntm7QEQZr0FHXNtqgo8ou1qCjqBVt0PmzKehsyrpHEYOQHsWIZk+zxHYi9JwzMIqDvIqDvKqHvKqDvKq4eM8iquuivWdR87L3DG8t6T171Fmsec/wzvL+nbMTYl/XJzi01+AEh/Y3neDQ/qYzHNbfhCWY9TddQGm3UUh/E0S54G86k0DWT3SBwcF90MKif+fkEqY6bnKTg+f9EoYiXDVoNyXTOcf9zhryK/ahMq0BjJOviSMpFfmI8EpMh6Sku0t55LA/7XycUH6ylOKwsXV5YzGGx5bkOGq9oqItKfGjQp9HRmnOzdBC4Buov8bm/lZhb6AdQmR4Hd106EuKyRsGrEJodRQQhOkWdg3l0ZXzmxyn5J+La8nDyDeL93alXzi0odNBXX88ML5M8jA8NR7vLEZhdxajsDt7gsLJCtZBm95BU2XGuw6iUq9YeuLt11C7CUX3KGVdC+FKRhXCV6sFtBL4PT0NILb5IfOGgrpmsVYDdhgnrQbudM5ZDbglz3/6PJyUAtoSdP+zMmp4rMR2eMgnKN2qb39PxTNvKOiLcs9MTDkr+iIgtHG8vbf/3nTT31XgpIj8ktu9PHdzOt9m31GQK0E7OxWdYgNvKAlFs6SXaMwumrcanBTgi3c0wEyhIRSUsdUfLhm0DznB6F59i6CiCEtK7bdzCXPvgr2kJNSbcBPavpQ5d6W9fY6hUEf3s0qe/UV7ZU6hIHHjutVsKCg4kLthzrkedQg/+Z7QS0AlaJ4ukvvviagHbpya+k3h5J+gRAclTDF5KGGUdSWM6qGEqKcuq4QQg1PCE5mlT6e6nE5bPx2U08GfTorrpwMxHChSYjeDkgK4HiQUFUu5e4cS5iXUIp+XlGQekoIcTLSkVBdJaQ6S0hz0GErKCMEmQVyNAmMx11GzvC0L4oiHrIh6yAosDSNlRcxDVmB0jJQVHGFzYJXU91XS3Bb2jVXgdKSYRmRrinC/n4663A7U5XagDrcDdbkdqMPtQD1uB4jzYxs32ulZ+Xa5VhTjLr1HWZxv6F8xux0KIsl+o81zJ603jBw8rvk5elzzUQ4se83PLsqTXWg2O9BsdqHZ7ECzeZ1msbTRjzBzeYSZi8yag8yai8yai8yag8yai8yag8yag8wilq3deffS6v2NZWHBGP3cKC5yUlwuBsXhYlBcLgbF4WJQHC4G0KZbX8jm1Y9IUipkyG6PQ4MozUPe4EQvWt5q9JC3mtblDTXF4+Wt6rq8QQwPW0o/b1Eo7MrztlYXWXGJKzSHuEJziSs0h7hCW48r4EeL9QSIUhJ4tDTUDGZEcNWqgKcCbAGnscubTgG1lvcgOL2385vO/Rzb/rkOq35kNHTUqfuR6NtaUEn5iI5vf4JMPnzLqCPcHwHtCw6Gkf4HCclBlQV3PyRVWVCNGKnKgoSfVmVB3kRSlTEGqcrwghDb8FRpQZLSPCQlelwQJHpcECSuXxAkelwQJK5fEDAGKSmY3nRUykyFFG/0JtEjgivRIYKL7I+MHG4NU+Tn7aIiKBrG2h9BgSza/khKDvZHUGkWbX9OjplVZRgQo1UZBcRYVYb51rQqp7quyhCDVWWYPT7GIr70aXyTN/HwH4h4+A9E1v0HIh7+A5F1/wHG4M74hA1YuoYTwGi6RmVeJF2frISVNnW5HKjD5UBdLgfqcDlQ/TCjjMdcsinx9J1RUKlYDr1jag5zHMuuvCtb7/yurYAQlMAHVGfIOnVufFeeDLufjJa8c4nYfkuyi8BmB4HNLgKbHQQ2qwM9Rg8TmF2uObm6nPF6bpeYR26X2HpuF8ZgSQmZ0Ud7ue+FBMAEMBBGn7G5XGXN4SprLldZc7jKWv2wHtOGB4XCfAxP6EMwdW4G+f6gRJEw1vCgSBhreIqLwBYHgS0uAlscBLbUz5LS9r7vUpKmoYTvUlJd3l7V5e1VHd5e1eXtVR3eXnX97QVrjrSEMe1b5uK0K8Vcar3eVYuCYi6pMN+AKuYSFAEji7kwhkcJ8HYkvd9uLLCJH0QZZ7y9jO6iyBgikKce828oguiAPh5zOB779PHkvhKzCLcEteDLo/X+V7upwyq5MxSZItHTuKsdiqIQmJl+a3IJBmrOFYXANI2+Ai/pwPK2FtQ7oo0nS4jHjd4URsC4HmAKC8JyH0RrNt2r31zEGnCd9tQKo03laW8tNTBOVB0d1tTKMQ4U3vKI5TyPWjSio4azw7kGoRphUIHrJ6YwDsb1Z4IYZH8mhVEwsj+TogAW2Z9JI+yIRPYT488G9BM7kRKuQSgEYRuEnoGEdRCyt6cmti1nTndXwrUqPVkJ14GS/xwEAj9He9X55pCOYCX28ZVw/U55kLu6w/Y7VTQ3nO53ipdC9jtVcZgRcgLiccZkv1NFsSu63+nJUrh+p4oqudi7Dgo70f1O4UrIfqenF1qbLrSHo+AUBcD4azFC4Qa5nVxnS5+dsv0JRBb2ZWNvSro+1gZisDcldRhro7o+1ka1edyU6LOBbA8fPd2gx9YAxWYXdkSvHjYxBqKUMcygzI+4ayg2BsFYqXIXZfiarRa5/46b2542u/+OG6lU25suIxy4N73NrhVNt3d4uDJqMISiy7wPNWBjhTBYod5To2e39B8gyLSbg+8AxcF4e2oe+wpPuIyxmTXdlf4YZGoFq/e9GDFP96ZyX4viGHy/YQItEjj7paf9jJPWfXPRk15XPab21evqsFmcwjk/bMcsxa0WqesKLOmnvfG461brFauxpftdt8isLIXRLOvxymzT3emtDRIKvyYZcZuJbC923SrdKG7+MxC50fpxlO1lGIbA1bsoZTSILi0hFFiD249Z7SZG6y3A5sv+NYwYJk+tZYSCHkFqo7vuNDI5XtrYMTBuUyAocCjIV0cH1xZQSzNkQGz0RbPpjPcgigrDuOm8J+VYwwG+OSQKWAicEZ66V2V6te+fHojy8+DqPAt91LpHQXn5oW+JhGnC9xsK7tYzvPkiL9G5vTVFdE1TJLrxbLLWTdj2dzu+aWBx0x5UNhUks7BwotcDb89lO/4gaDf6rPDtT72JwW0sbERG2x6IwlqNDIvCXFBo24NRWNuTQ122PRCDtD0Qg7Y9GQWyWNuDN5a2PbDQmmWmDCu6SAXCDXI4MoAYJBlgDPJbzIMMIAqtxj6UkoIHGUAUmgySrJNBknUySOJBBskcyABuLE0GsOeWTV3MJ0dG3K8EYKiMggeZpvS8X5iKR/+ijGrCWFWGfVxoVcajEVgllI+j8KoMUWhVRqEoVpURBqvKCINXZdQikVZluLEuqty627nlDFQZFYVtJn+MOJnnEexV+aTjAqvKsLshp8q4VwKryuJzudb6aRRelXHDRlaVcW0Yp8oIg1XlHD1UGVV10aoMN5ZWZeQZTQMlzdvyrsyoOGwLknS7HKfM+He7jLtmscqc27pdhv2uaLsMUWg1RH0SfVB4ZYYotDLjAjFOmREGq8wwQEcrMyrtopUZbqyLMssIfUo00OEmo+ux1j43TNsc/XyzzNFFmVE4i7XM0UOZMQqthsU+jcIrM0Shlbm0dWVGGKwyIwxemVGZGK3MxTyUGbZ7kx6FjTIFB/btdjIq8dKeeKZzlMLsAkbudDCnNl3EKN/xoy0edRPDwiiICg4Y+S5G3w+7vR/W98Nu70fp31Ju78eMcXc/5jGTd/ej9P0ot/ej9m+pt/djxri7H7VTSC2311F66+R6dx0tfBuJdns/Zozb6+iD+hriINgqks4lxA0n2Wouw3MM+uGUlCpCgUk25SfM/Fa4jr+Hzf87QSEzLDEKm2F50u2OitNgDC5Oc4LB3TthIzX63glR2BujxfxpFPreiVHYe6fF9aAtxCDvnRCDvndacgja4o1l750nve7Ih5ul9aAt7lJHK5BLXMN81BCh8AoEUWgFQnVhrAIhDFaBYH0arUCoKyKtQKm4PNxgg7g8+m1NNQJvfXpM4Ay2PiVZ4pymZnsQKClT4dG0t9sNagcCGM56m3vLchOiV7bYVGNzESL0C+DxKk567qVefhhenhm7daCGiJrb6OWuLiDtEIRuRLhdioGcodhX1DGNW6WC70HdMEKvK7M4Xc/fQZCwxkfCynMpUUJzgYkJ7C50v7SxL6jbMWyLONweLR5f8g2FnMiHAm5oSFvS7OECtayfRuEtafbIM7C8nmcAMVhLmj3yDMwc8gzwxvKWFHY1DIOw88S1+/zBh0vu0JL2R79O7X72emywHKy/kL96lw0+2XMBbq7I3qtRW0T2Xm0uD1NzuRFb+zQKzwYQhWYDPCWMYwOEwbIBwuDZoGQHNoAby7IB3pR+UWnp9sb2ZjSt5PXDQRhYeaQXx32N+LiLksYYBAloX6uLoECUKKMYU+ttlH5AWyz79lqmu5u022vJo7w0T2WQV1FstAao7fYXDQ2SBL9oPVYLMVhqqh6xWmsOsdqTjR1D3CSXu5tCUhPEIKmJPByIAW+i5LdADPJbyBsxpFn4YqFpFr+eSJotwYNmMQpLsycoJM1iFJZmMQpLsycoJM2efBFJsyWs0yzEIGkWYvASFx1o9mRjSZrFm8JRE8bgqIk9HEhv0HVO0izEIGmWdOFDmoUhFppmcbiHpdnkQrPJhWaTC80mF5pNLjSbXGg2udBscqDZ5ECzyYVmxYNmkwvNJgeaTQ40mxxoFob4SZqFGCTNkqkGkGaTi9MgeTgNirrQrLrQrLrQrLrQrLrQrLrQrLrQrDrQrDrQrLrQbPagWXWhWXWgWXWgWV2n2ZN8uVHNafl47CHGGN2B5w5B13IZyU53JyhkR0Rc1cCdL8bgzpetrsDn6+JIiS6OFDMPIoAotOnBKKzpMfMwPRCFNj0YhTU9+ItY01PWe3FADNb0FI9eHKU49OI42VjW9MBNIU0PxCBND3k4kN5gJShJsxCDpFmyIhVh4IphlmZPqpdZmq0uNFtdaLa60Gx1odnqQrPVhWarC802B5ptDjTbXGi2edBsdaHZ5kCzzYFmmwPNwu4ZJM1CDJJmyS4e8DYLu6zQt1nc8YWk2Ro8aBajsDR7gkLSLEZhaRajsDR7gkLS7MkXkTRb4zrNQgySZiEGL3HRgWZPNpakWbwpHDVhDI6a2MOB9Cbr2RcYg6RZWc++wH3p6Nts8QgL1uRCs8mFZpMLzSYXmk0uNJtcaDa50Kw40Kw40Ky40Kx40GxyoVlxoFlxoFlxoNm0/i0Yg6TZtP4tuJMvTbO4qzBLs+pCs+pCs+pCs+pCs+pCs+pCs+pCs9mBZrMDzWYXms0eNKsuNJsdaDY70Gz2oKa0HBY8waDCgnjQRrQ+jTVVMK6j2uKgKDwkgLQ6YT0ZhR1WAI8Wdn6nrQ4ebMFaneLRQgCj0FYHo7BWB6LQVgei0FYHo7BWB38Ra3XKeqktxGCtTvEota3VodT2ZGNZq1PW/Q4Yg7Q6xcHvENaTUU4wuGSUk6lZfYyqTQNd25uMwP7ZdTRoKLWAaawV1lzV1rsitDjPbtzNvUqoq2sboxvbPLnxqyz6dS3NYXRC9GhTVFFkhOw3doLRLwY513gPg+tZdoJB7qrLQIro0eKhtvZpFLo0HKOwpeEtrJeGQwzSejWXUrQWHErD8cbSjSKgz48lg+YxqU1chjOJR5voFuOnUWgFwii0AsX1KaEQg1Wg6DEldDOS6wqEN5ZWIPOw6w295lgFQp3w2UltEIOc1IYxyG9xIQNzIYP0cRSeDJJH5/nmUP/VHOq/mkv9V/Oo/8IbS5NB9Zi53WR9qFJqLjO3m4sdlPppFF6BxGOoUtP1oUoQg1Ug9Riq1NRhqBLeWLqFLhyYSI5uaApvB9ToBohBjm7AGNzoBohBjm6gMfJdDG50A8bgRjdADHJ0A41xdz/I0Q0YgxvdADHI0Q00xt39IEc3YAxudAPEIEc30Bi318GNbhA4UJcd3QBR6NENDTVMo0c3NDjxi+zICr+HHd1wgkKObsAo9OgGacsPN4xBjm6Q9fl/oi79ctWjX24r5dMo/L2zeHSeb3W98zzEYO+d1SNs3KpD53m8sfS9EzYiph9u1aPFbPBQIPOYLt9q+zQKr0DVJY7QHOIIzSGO0FziCM0hjoA3ln+4IU8BO7qhNTiGkxvd0HDEiRrdICEABaJGN5xAMKMbziCo0Q1oJik5umFbB/IQcKMbroAczyg4kTNudMO2FGQ0uNENGwiaq8GNbthAkLCyoxsuwYDRDSfuF3J0Ayo74UY3SEAFQexDobg0a/e4REqI9mkU1pKeoJCWdENZjiFgDM6SYgzWkkpI6zGEk411Gd2goY6J8BMf7AOK8iD2Q0vKjG7YINAcJXJ0Q3XINdpW4jBTsLqMRKvqoccSP43Cs4FEDzYQXWcD0XU2EPVgAykObCAe6QUR9WRIte+KBJ3ugHFvThXZ9dpvTbFOCdq6z2BM2UOX1SE7APEBH9xM1UMLNX8ahddlzR66rHVdl7Wu67JWD13O0UGX1WM+aFIXY5jX54MmdUlWVRdjmMunUXgFysVDgSysK5CFdQWy4KFAJg4KlMunjaFID5SITOUJe2OIUTSM/IBgCZhUFBDzQbGadQSQxhfZFYzWZ71ZS+UmxvB3tQwwlvvyn2BQhTC06sBCGHVpwKEODTgkFPNQ4+JQGX6GwtXonaCQNXonKGSN3hkKV6N39kVcjZ6EulwZjjFYw1HFQ+KqORiO4lAZfrIpJDVVWacm8nAghtb1b9G6/i3qUQpdPWgWPwdZmm0uNNtcaLa50GxzodnmQrPNhWabB83GsE6zEIOkWYhBS1wMHjTbPGgWbwpHTRiDoyb2cCC9QW8kSbMQg6RZ0isKu3ZWlylT1eM2G6MHzWIUlmZPUEiaxSgszWIUlmZPUEiaPfkilmaTA80mB5pNLjSbHGj2ZGNZmk0ONJscaDY50Gxs6zQb2zrNkqFoSLPFZcpUcZgyJVFcaFZcaFZcaFZcaFZcaFZcaFZcaFYdaFYdaFZdaFY9aFZcaFYdaFYdaFaXafYkZ5VrUoQxuCZFbO4spFnz6J92kmfN0mx2odnsQrPZhWazC81mF5rNLjSbXWjWHGjWHGjWXGjWPGg2u9CsOdCsOdCsOdBsXR9NjTFImq3rITBcg0XTrDpMVJLoEgKLLiGw6BICiy4hsOgSAosuIbDoEgKLDiGw6BACiy4hsOgRAosuIbDoEAKLDiGwuB4COytU5WamYgyqTeVJETE5M/UEhZyZituJkKZH16dMsW1NYFgQtp2hw4K4BQ5pelLwSKLCKKzpOUEhTQ9GYU0PRmFNzwkKaXpOvog0PSksd0jGGKTpgRi8xMX1DslnG0uaHrwpnOnBGJzpYQ8H0ltaH02NMUiaTev+atwej6ZZcxh/IrCdPS/0yYVmkwvNJheaTS40m1xoNrnQbHKg2eRAs8mFZsWDZpMLzSYHmk0ONJuKAzU5jD+x9fEnuOUtSfdR1+k+rmeB4NbINN2LC91r8lA+iELTPUZh6R6i0HQPUWi6xygs3eMvYule1+vEIQZL9+pRJw5HKtF0jzeWpXtdz5zAGCTd6/pNFLfmJ2k2OIQnyREBkGajS+lI9Ei2gyaQF3pzoVlzoVlzoVlzoVlzoVlzoVlzoFlzoFlzodniQbPmQrPmQLPmQLO2TrMnc26oW/UJBjdUsK7fqjEGR/cYgx2Z5eKrDi6+6urR/QKj0HSPUVi6hyg03UMUmu4xCkv3+ItYum9xne5bXKf7Fj0krqkD3eONZem+xXW6b3Gd7tt6GC3iLq2t9XYGMYSBY1dQYhgSu523HaCIIIIT6cojUsstDI3te9SOplgOvwZnkrB7gnNA6D3JcC01TGu5h8LuCipUby2PduVzZxILl1CG0LY5HP6GkmHbl9Abj21/T6bjGg7XWuEEg2qtcIbBtFbYAlficD4nKOT5hBZczgfikOeDMbjzOcHgzgddznPr/bW2P9u0I3IJJY3OmRoOUQRmPWjvkZI0jvv5HkNQO8SobVx1ph5D7yAolau3R60y1rHdoi5gVP0myGoRYaAOXaH11sQxzBPa9iCA8at9k2xtBS0Edjoq/ZJfppbAcv9syvHZ4ASbbjM2IbF7GLnPYUhZ5FhGUJO83MZrslm7CzJpHwCBjcE5YUWNO7fHUhlPHgXjIDBMqLH3rw5VbsO0Ml10Jia4CFOkNxYOxeJtmDYeCjVUAINCiyW1fi22Ywt2AaTdBWnjkt8yAMFHPT2fqiSwK5Dya3dB5OnB/qZE6PI2DzQ65kjY67WV3q28zSQpe5JU2J146t6ugBG0ONgv2AeRtF8Ig7VfOTjYL9QGkbVfKPjF2y/6bAo6G9hquTfXj60B45Pzut04WUl3xaR5SNP7SsCeSD9hDfB00DuDnGiEV6KxN302QUJvUGDDENh6b1/T5jXsIBXcY1EIgN1XWHCVWxc1CwqkHq2E3FfErzX2xvo1Tgf8xq/QbpEvyRMQ7iEJQfh35NN39GkcshUjxuBaMZ5gUO9ROD+2jDBPPWZYdXhFluxghZGrjbXCCIO1wqU6WOHS1q1wDR5WmD6bck9GyEekOrwhkeOffkNiEO4ukJcltbq8IKvLk616vNjU4cGmDu81dXiuqY/Bqh7vcrgWWlLwF7GuBozi8kW01J6gkFKLShpYqeUx2k0MTmrNPKT2RFJYT4WuOyoU9TukHBUo/XK7KnxT/Wasp8k28W0ZaFRd6tZvc07q0VUPY3BBUYV1XlT4D+6H9efadvHIYD8iQKlBu/WbpD2GPQYKUPVC2NZuY/TD3aQ9HYIgVxh5N0IDI8Y0XktTpkhoPEK/s84D994QYL5Kz0yKee65f2kr0tiKJIcYorC+paV+stvf09m+SmleDv4jhCitP2q2v+eZVunta2Rd8yEGqflpOfB/4tAr/SkxDc3YIciqnEMESs5zWpdziEHLOR75RMo5ilam0F9VaZLRFBOPkfumppwBBvoW1f5Y3f6evuVdW9CriNUWiEFqC5zptc4fLzuSZ4fibkcymqlsqZ+vySxp5SZGWceYRwDtMOBomP7i1WmybIqZRsjd1/WSl3kFoXRvmYZjBHRz6R7Rmss9hD5ssc6ZlPcQTA4RkENHpWcdqtRjDIMh/WEPLOZDDFEUr4opdy5N08vnJyhxVbYwBiddJxiUfJ3tSO1ZzGkeK7WAYndRJPSHnIR6G8VGXnaRuyh5uB+y3t4XGdd1DdkFpd1F0T5tO25XhdsoY5iZmt1HGV9UbsuudnqMWm+ftPbZ39t1LdzVxVx7XEPvYtTU/bxyGyN0DF3GsHB7HT0SYFiTAYbF3sJK2vo6AEeWsMr2CIHjeojA3STaOs/zGHYPg+R4jMExPMQg+R3ea1oZo+BrvYUh1v2O25/HUo7vy7lHRK0c35cFVpxRzku4jFL6tb0GQctAPtRcvg+mzBQW6x4EJa1IHa+yOZz5thIUVh2JPDL7695BkJzFoCMaMtch7T4I7mztLoBUXx7NFx5VtXsftz/tGAM+M4eQbH/Dhzcq1GydlLeYzARSXr2YKOatD0/rU/fmLID9QhBGll7blWce2WMgSdvsS0+ML3N92BUM64L2khRxCaNJv4C0ef7o/v0fobeqP7y/PFd2F2WUDm1/15soafJ0b4R/LGoZtU3I3WTZfP/e+fAwBudJPMGgfImYSepUktXCYRpQRiGqFvt1psVjfxXGSN2Gt5TqHX9VrtOlu9lNSbMwfJo2Z768ywiKU5F+QIzB+QFzTB/1A77uSLy/r3mgpHQTJfaaoe1vRRqMBhPRp2MOp1M/ezovO5LL7dPRCeWYX1tb5TSIwEVH4JeUNKR1Hmr+LiFJV2NFGGOjRelnU2y6ZF1DKT3ha/vb4l2UwfRlTqS7Imu1DClpchxRjMhsxRKmDwq13YN5dkN+npCE+Q0sN0FiugmSe35wyhbvgWyfkPrL4MXxtAex5WwAPGAzxP4CnfthxF17AgwS+xN04zg9BJGMglgsTUMMkqZR83SOpvGGpE4Fmub7+NuGoG7j2kLvHDE3bPgJCrq/9vy17YJz+Bg+WchoYdHmZ87FzxkPnZDqfZSe/x3y/a1tPa02WABij+y59JQLFQiybEYxBGVH4aewaQYYhM0zyDBbgcwziGhq9ubj6Mno81Li3vWbs64zEsQgGSnbMiPhDbEpEFzQhiznBWb4Uuq3ga9K8Gkde0JC883IfLyM4sFkPh7GIC2wBgcM2H5wPIaTzru6FzNDnuThrZyiR2UnZTCjjtVdnNpXOjlvj5Op7ZjsiRXDVBkegqrtPsygxjmB4R0GVkNrRwkv+d95B4J6LIRuLNKGB0DgB41S5u3vucLt0r5YGNtrYbo6ypslLv8fcF5KKsUO9+YEJUl/IaTpCfcTlIIdbcPPlu6iyKjN1Lk28xrKlNeVp7SXd5Tq0Akeb+6IuiWpx5sbcRRihFTiUZApIuNB3rggBHfjys3hxgVB6BsX8vyzrA2bPLKtDTL0UJNFlRn1PCJL1SAGWVSZUdcVtqgyo0AXWVSZG/ZucUWV/NkcFw5gISE7G+SGA1VMNWMKKDF7NKezl0pxuQBSQvyWtDJ3R7gEwnY2wCC1h4g3rx0CgQ1Wx6P46+/Jhr71PoO9UVWH9dMp7nYVJuqAUdSJDW5vL8K1ounuGZFD7MJykwTcSJfrPYExyNYTBmNVXOsJizCCR7aeMFwhxu2qx6BDLK5BpjrR+XJ+TepjHsoTy20djKMp8AZ5rDz4mpP7TWlO3L52U+rZc3NW41vkG1+E+zqilNvXaQ2jwCFFj0t5ijefYBbCCOO9mI79hdocirXMoVjLUv4sBunjOnnZjva3Nrec/cm2Ir+ujaWUCNrIQJQvn8NYDJBajGJxBDhnX9c1lJq71NZ8ey2tBwRTCPEmCuvEOFnLlEf2Stp7FMkOD3WMwj7UMQr7UDep6w/1k83tChBf/G8Xt4Wk7ZNtIWmbPyJE24iiWE8t2tqS+x17C+7PMb18wZkfR0WVJP3nTWc+ydq6XHgY0ZDBav2GXue5HW87gopTSZ8OhOB8OhIcfDoSHHw6hiqP+Sga8jfnHoBOJsdHI4YKdlnPkKEQGOsZMtT/j/QMQQzSM2TQh0l6hgzGwDjPkMGaSNYzxJ9NQWeT111DZg6Nrk5WwjW9NNSZhn0hW1l3UmEU1kt1sha2ASdGIf1UJyi5m79NQwJAKXB8XJu6/rQk4J5/gkO6zU5waL/ZKQ7pODs7cc5zdobCuc6wNpENRqFas41bMQjrPUO9TlluqMnDe1bj+r7iE+bcZ2dSy/rPznBYB9opDutBg5dKzoOG76WMBy3iIc3cwyXC7EzpGaspzxlV5QJI6YWs0l66cV0A2Z7Y2vUnt0OQ7XmznNu1eQVWQ9FpPRSd1kPR0SMUHT1C0SU4NNOKgt4+OmWcx3IsZQJTmYaLtun8UNcLIKUX5MeXqQE7kG1TAAqZ7VbQIC0y2w1jsJlqSEysjOFiVuLxAaOReiUMB620e2ej1ktHtCg6m7ieiVjieiYixiDPBulNyt1ape3Kd0ysJTpIa3SQ1uggrbjGf/Q8/7pxHQ3UiyV7XOwVho+7q3pzus0yv7tmlQT7a0svXil6/Mp+3P1XfTElrc8kghikL6bA0i/SF1OQZ5j0xRQ0hIv2xfBnU9DZQCnpyeLbUvQeiMT+PVv4rdwGCesgYuOqN+UdvoFIIl1LOd1dybgySru9Eq4lPP85CAR+jnZbLnNU5X0l5eMr6cO/ZYujOYDc1Z3tXVE6SAUSq7D2crS1LgkyClpK6VFfKQbIXsVB2jCIxxmXOD4HsRKcaBTK5B7It3e211tIReKGxmeRbqCizcENBFfCuYHObkqjw/0mM4fJKAV3u21TzcY8ufsKChmUhO4fMmZVssOImJLXR8RADPaelB1GxJS8PiKmmMeIGP5sjrkeCwkZsiq2To0RFVawgSIIwsaJ8ErIMBEGIaNE+NVFh2XOHm9kNOVkX7hgygkIF0uJaE42yfUlLUdSMAYZSCmw9R1pQeG0e9qCwkZ+5K7qehzlRFzZMMoJDBtFOYNhgygnPsNRPGmgJ0qpAlF6g7MvlHwLhbxboBJo1vEYYXeWNnz2LR0XTUZ0Udo24VvkitXjOtttS1ATPJNvU5ptTi7dLQTOBZjKLudemqldACndgG1urnAIsl3e46dRoo0mxzY1FLqIUsbsqbm50U9QkGHv1rTMEaJLGNNMzFxvYsQw5VtM6vcTFBT9IxNc8ca2EYRoCcibwcaAPX9ycxMPy9EuYNjoGWU2nfAOY/NarUeIDXap6M0wRcqc6bcf/oYqaUgmQBsSq025xzZ7/9/sIOKk3FuzbC8vO1oJhBjB2e1PvQdB7QdsIcsyIwRhOa3G8GkUmhkxCsuMFY3TIpkRYpDMCDFoZqyoRSHLjHhjSWZMqXqwCcoo4LQnoVxqjgYwBEUDJxDch+g6DWAQWoFT/jQKTwMQhaYBWJNB0gDCYGkAlt3QNIDyxWgagBtL0wDsSj08W9M6ctx/DcrSkP6CVJmrQ/S1X1RCD0j6nVPFltUYzqRj1RgPtmMVUNqnUXg1hii0GqMMCVaNEQarxrAZF63GqGEUrcZwYz3UuHXXZcsZqDGKMOXYQ6t5cxkdqzFqQsSrcV63xsgJRKsxBKEVMH8chVdjiEKrMQx4kWqMMFg1hlVNtBqjiBetxriYj1Rj9D1pgKR5V94VGb3PN0d7t8cv3eH3ioxiibwiw2IvTpFh/RuryObhMayojMIHhVdkiEIrMho5xSoywmAVGWHwigzjZqwiw431UGQZoTOJ81iTN0VGcS+tvYGCtjl69maRXRR53U2Wmociu7j+a/04Cq/I1SOAUOt6AAFisIpcPQIItToEEPDGsooMW5/KGF4h0wzLtquurw125px6xI+PMbuAkTsVzKkwFzH6BI08DTm8hmG93cBLq/rbGPkuRt8Pu70f1vfDbu9H6d9Sbu/HjHF3P+bBfnf3Y0xYKbf3o/Zvqbf3Y8a4ux+1M0gtt9dRvgmx1rvraOHbRrTb+zFj3F5Hr3JrgINScehSAEHoxgANhUBK7EdT5uFkP0FBblgrP+FlEb3wOWzvyuLQuAGDsP1Fmy0HYyAEF4xpy15cCQ7ZKhiEvSa2FD6NQl82MQp72WxpPSYLMcjLJsSgL5stOcRk8caSl00JHjGQlpZjshIdYiAYhJZ7+TgKrz0QhdYe1OeO1R6EwWoP7LdHa49HM0O8sfRTDbH10J5k8+DytisWb6isS2LvKSBR59vWHoQtTZmnQZc9COp53Fto2NzL4xJEL36weULvNYjQ73zHq0Bx6hzSmOP18q7YLwN5BHKv5tK5icYCSDsCOZGyXguSytRS5F3KMmwgODpXqNTjz0H5xRZ63ZHFuYfGGwhsopP6XPkYN/PkAhPT8eZCb0sb2zLpzd7bgjI0JidHi4eX+u1rbPVhIOLg7cQgtPHL7dMovAnNHmkEzdbTCCAGa0LNI42gmUMaAd5Y2oSi5OAQBlXnuaFO2H8PSi3sL3ydmnrsdbihUlXpD2JNs9dkh6EehROtxOXLtHo8RdXlKVr00yg8ExT1YALokyKZAGGwTABnDtBM4DHCC28s+xTFm9IvKPNY24sYvUVJK3n9cBAG1B3pdVibKsabIKn21AwJaFerj5jA2XUySva03kbpx7NFq2+vZbqySbu9ljyKEPNUb3cVxUbB+DTF/OoXDf2RhL7IoaKrOVR0NZeKruZR0XWysf1FGyWXu5tCEhPEIImJPByIAe+g5LdADPJbyLswwoBPFZZk8aOJI1l9zOZZFfkTFJJkz1A4kj1BIUn2BIUk2TMUjmTPvogjWQ1xmWQxBkeyGIOXuLhOsmcby5HsyaZQxHSCQRETfTiQ3KCvnCRZiEGSLOmzRxgwpMKSLA7usCSbXEg2uZBsciHZ5EKyyYVkkwvJJheSFQeSFQeSFReSFQ+STS4kKw4kKw4kKw4kC8P5JMlCDJJkybQChBE83AXBwV2gQV1IVl1IVl1IVl1IVl1IVl1IVl1INjuQbHYg2exCstmDZNWFZLMDyWYHks3LJHuSFjcKNOcpfJcy60an2LkRzaVkRXIUc/EYOYQLFjijgzE4o8MWTsCzdXCfnFTYsEYHhbx4CoAotNHBKKzRgSi00YEotNHBKKzRwV/EGp1S141OqetGp1QPiavRwejgjWWNDtwU0uhADNLokIcDyQ2Wd5IkCzFIkiXLTBHJmgfJmgvJNheSbS4k21xItrmQbHMh2eZCss2FZJsDyTYHkm0eJBuDB8k2F5JtDiTbHEi2OZAsbIZBkizEIEmWbMqBSBb2TGFJFndvIUk2Rg+SxSgsyZ6gkCSLUViSxSgsyZ6gkCR78kUkyT46KiySLMQgSRZi8BKXHEj2ZGNJksWbwpEsxuBIlj0cSG66nm2BMUiSJRuYIZLNDoHAk053LMmKC8mKC8mKC8mKC8mKC8mKC8mKC8mKA8mKA8mKC8mqB8mKC8mKA8mKA8mKA8mmuk6yqa6TbFr+FtyLlyVZ3BWYJdnsQrLZhWSzC8lmF5LNLiSbXUg2u5BsdiDZ7ECy2YVkzYNkswvJZgeSzQ4kmx2IKSwHAjEEFQhEU3klWh/FmaZA4L47ncKhhD2YWMbB6j4IGNczTzAGaXDicuYJngFBGpyTaRSswSnZQ/3xcCnW4GAU1uBAFNrgQBTa4GAU1uDgL2INTk3rBqemdYNTk4fE1exgcPDGsganpnWDU9O6wanL7oaTITmMwTmBYAzO2SCmPkLTplmebb8bDTbArqP1QqnleBLnhoMSpWrr/Q5anGf4pd0XoZTwMcKvzRP8voqed0tZbpcVUdNbchYThOBmMWEIbhaTQ+ciDEKWSW/H9HEUttj6BIUstt5QljsXYQzSVEAM2lSksN656GRj2bYLqGaHbVWgKS63KkhwfBjbotljBtn2NfppFF57onpoTyzr2hPLuvZEj6TylIKD9kSHVgUJei1ZI5rS8lzEpOuTzHR9kpmuz05Rj0lm6qLAqX0ahaeB1DxoQNbfWxCDpQHxeG8lcXhv4Y1lacDMw4jK+pwD5NHiB5a4yL3GT6Pw2qPRQ3t0vU4GYrDaox51Mkkd6mTwxrLaA7MDuTkHmvLynAOMwc05OMGg5hxgDG7OAY+R72JQcw5OMKg5BxiDm3PAY9zdD27OwQkGNecAY3BzDniMu/vBzTk4waDmHGAMbs4Bj3F7HdScA0E5zuycAwjCzjnQVBzmHGwoy3MO8OeQcw5OQLg5BxiEnHMgcdnfiSGop9oJBNVcMnm0mU0u18QaPo3CXzarw5wDhVno7GWzLs85wBj8ZbOuzzk42Vi2uSTsgE8/1er6nAOpDtoDQWi5b+nTKLz2NJdoQXOIFjSHaEFziRY0j2hB84gWNOQaIOccKDSj5JyDDWR9zoE+8loODToz5+AEgplzcAbBzDlAE+zJOQfbMtbnHFwBOZ5zgKWMm3OgEtfnHGwg63MOFHY9o+ccXIIBcw6wt4Wbc4CqN7g5B9vXrM85yB7dzbNDd/Pta9qnUWgTilFYEyppPVYAMUgTCjFoEwoHwbAmFG+sx5wDDXVMSJ+o4C1kCCeNUHMONoj1OQfZYWiYws675GXaHFJvMAitw6KfRuGZQDySB0TWkwcgBssE4pE8IOqQPIA3lmSCiNyFqfZNkaDTxS/u7SgakhVrvyzFOuU56y4XECUm8nqMxhSQKXQonZBOoYMgtAZq/TQKr8cQhdZjVMvC6jHCYPXYpaBMUFM7Wo/hxrIWPXq4lCQvO2RTdHApYRBa7i18GoXXHvNwyIqtO2QhBqs95uGQFXNwyOKN9bCCIj0csjlu46EVhCAaRvg/WAKmtHwcxWrWESQaH2RXMFofhmYtlZsYw7nV8jGGLRe4nWBwdSSs4qDCxehQ4HbCsGSBm5TmocIQhS1wO0EhC9wwClvghlHYArcTFLLA7eSLyAI3QXEv1mhUWzcaCIOXOBT1oo0G3liywA1vCklM1daJiTwciAHv1OS3QAzyW8i7PSrWg08vtooYPwJZkm0uJNtcSLa5kGxzIdnmQrLNhWSbB8lqWCdZiEGSLMSgJU6DB8k2D5LFm8IRE8bgiIk9HEhuUtZJVso6yZKOUNTuwTwmMZlHAzaNHiSLUViSPUEhSRajsCSLUViSPUEhSfbki1iSTQ4kmxxINrmQbHIg2ZONZUk2OZBsciDZ5ECyab3tBMYgSZaMOyOSzR6TmLLHJCYVF5IVF5IVF5IVF5IVF5IVF5IVF5JVB5JVB5JVF5JVD5IVF5JVB5JVB5LVdZLFeanct2AM7lvY/Fg4uNnBJ3uSSM2SbHYh2exCstmFZLMLyWYXks0uJJtdSNYcSNYcSNZcSNY8SDa7kKw5kKw5kKw5kGxdD3xhDJJk63LgC1dYsSSbPCYPqUvgS10CX+oS+FKXwJe6BL7UJfClLoEvdQh8qUPgS10CX+oR+FKXwJc6BL7UIfCl64GvkxJUprPjCQTT2fGkMJibKXoCws0UPWkOQhodXZ8XyzYpgePumkO2Be5mQxqdHDwSpjAKa3ROUEijg1FYo4NRWKNzgkIanZMvIo1ORhVfpNGBGKTRgRi8xKGm3qzROdlY0ujgTeGICWNwxMQeDiQ3WfdRYwySZGXZR43b3LEkqx5DQnJyIdnkQrLJhWSTC8kmF5JNLiSbXEhWHEhWHEhWXEhWPEg2uZCsOJCsOJCshHViWh8SostDQk461pJUH9dzPtjOuTB7OThQPW6xzFK9evS0wCg01avHeA6MQlO9eoznOEFhqV49xnPkvF4CDjFYqs8eJeA5O5SAn2wsS/V5/Q6KMUiqz8t30JOm+iTJBodwZFgOR+LZC/QMJI/EumwuJGsuJGsuJGsuJGsuJGsuJGsuJFscSLY4kGxxIdniQbLmQrLFgWSLA8mWZZI9GU5DzUCydU95acv+6RMMbtwdxuB21CO9L7qk9+Xq0dYCo9BUj1FYqocoNNVDFJrqMQpL9fiLWKpv6w3kc1tvIA8xeIlrDg3kTzaWpfp1YjrBIKnegZjQbBvLvee6jZYwKVyB0NYh9BgCFSGRq4AQ5CrQVTrX7+k66UV3o1wAsdabYsyT+66B1MH0LeR7IJuJ6G0vQzr+HMmo9ZCEHq+WUOUmCtek4ASDalJwhsE0KcBnU6ZukRpuHvALiN4FSQNEjo9mI05AifJo3/g8YIl6sCUnGNKtnkgtxxjtsxga+7d8uUjvHW9vFJnK3APm2sn0Lq2ptLtMMq/kNkjt9/Dtz9sg/SYBQdoyxbdlhpcMSzsfnZV+mG7AIRijtz3a/mzHGGl1N04wqP1At6Fc+m7kMres3fWGxBhdSrc/b2LU0U64TqdyDaOOSTjzOIxLGOPROs9buIbRdWWDu7mOFr8lbPvz7n60PDCOzwUNMt7cJv3Kvb1r1jGK3sOw/npWy+EmRummoSAZgwN5utpuUg86rxny6W93+r4jFibXiF1aCdcDznS5BxzKF2dbwEEMtneb5fBpFLoDHEZhO8A95Gnx+Q4xyOc7xKCf75YdOsDhjSU7wKHBBLwSoxIWVolPVkIqsS23M24Ofc2bR1vz7a7yaRReic2jmbHZejNjiMEqsXl4fa04NDPGG0sqMbLmOYQxgCId37K2z0GDkFPvjZ7TNF5kuy7tQJBLoaSR0D95wncg+Gu6MzCH0tDXmMfXlM9+TezN4rc/790a82PUxhNDktzDSGMdKXtglJsYfU7f67lcwij9RZDK7T21safpJkYaGBqApNp6ohzG4PznLLECjOYQ12seYb2HZ3md4CEKG9Y7QSHDehiFDethFDasd4JChvVOvogM6xmaqMNeKRAGe6WAk31YiSuolI2+UuCNJcN6eFNIWoIYJC2RhwMx8npBOcYgv4V8gAIM6B4gKRa7KUiKLdGDYjEKS7EnKCTFYhSWYjEKS7EnKCTFnnwRSbElrlMsxCApFmLwEpccKPZkY0mKxZvC0RLG4GiJPRyAYbgTQxc0fQnR55sY7R6G9thJVIk3MYbDZLsx38UY31LCTYzuENuYUW5i9IGQMYfjdSA3R861e9T0HsJ48jW5idAfwE0XESzcXEPpEcZQbyFY7N4EaatrUCBVsnqaEIE6TYzAnCaHgE4TIlCniRC40yTXAE4TJ8Fqvw7OXp0U047/0SAmMukFY3AJKwVPo1nH4JJecHZyN4dJXrh7v6cZnm3PaYjhyHEIl6Eja2a+p/xkGXndDVpQtIp0g8KvedTwPr9m8x0efg3GyH1Hsh3viCgcEZk1dJQcbqKQKXzqkMKn6yl8SFC55BuIQKXeoCQAbg0QgVoDbFzX+nWrtTn+uIthYoxxk25zO6MdxuYshhnioU+H3f6e3rPXcFgZDQ4yGpZlVODLr05PvyqgURRG6ZlEXyhyiILSRFg5wRiknEjzkROIQ8oJxuDk5ATjUE7+dfvx65//8se//f63P//697/87a//vf17//yC+uMvv/7777/9+Pmf//jrn6d/+vf/+1/f/+Tf//jL77//5X//23/98bc///Yf//jjty+kr3/2S/jxf/7Xdglq9qfUWiz/+qdfZPtPNr9HTtvf8cc/3m4n2/8t+vUfxcd/1DZPw9f/lX/959ci/x8=" }, { "name": "public_dispatch", @@ -7008,15 +7165,6 @@ "error_kind": "string", "string": "HashlockAlreadySet" }, - "2830029349304997821": { - "error_kind": "fmtstring", - "length": 27, - "item_types": [ - { - "kind": "field" - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" @@ -7045,10 +7193,23 @@ "error_kind": "string", "string": "attempt to multiply with overflow" }, + "9174444391250494040": { + "error_kind": "string", + "string": "Function get_htlc_public can only be called statically" + }, "9323748002447105156": { "error_kind": "string", "string": "NotPassedTimelock" }, + "10492081608786484886": { + "error_kind": "fmtstring", + "length": 27, + "item_types": [ + { + "kind": "field" + } + ] + }, "10870837545714573535": { "error_kind": "string", "string": "HTLCAlreadyExists" @@ -7061,10 +7222,6 @@ "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "15001264570739363109": { "error_kind": "string", "string": "Function lock_public_solver can only be called internally" @@ -7073,10 +7230,6 @@ "error_kind": "string", "string": "Function add_lock_public_user can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17618083556256589634": { "error_kind": "string", "string": "Initialization hash does not match" @@ -7091,11 +7244,8 @@ } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "public_dispatch" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "redeem_private", @@ -7177,7 +7327,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -7233,7 +7383,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -7262,7 +7412,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -7456,7 +7606,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -7734,351 +7884,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -8087,30 +8336,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -8167,26 +8412,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -8195,53 +8455,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -8250,50 +8537,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -8302,17 +8598,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -8335,7 +8631,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -8391,7 +8687,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -8420,7 +8716,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -8614,7 +8910,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -8753,6 +9049,18 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, + "1004672304334401604": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "1186437190978851533": { "error_kind": "string", "string": "Non-zero hint for zero hash" @@ -8761,41 +9069,20 @@ "error_kind": "string", "string": "Hint values do not match hash" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -8804,6 +9091,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -8812,33 +9103,14 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6485997221020871071": { "error_kind": "string", "string": "call to assert_max_bit_size" }, + "7136043998373234005": { + "error_kind": "string", + "string": "Field failed to decompose into specified 40 limbs" + }, "7233212735005103307": { "error_kind": "string", "string": "attempt to multiply with overflow" @@ -8855,45 +9127,79 @@ "error_kind": "string", "string": "Proving public value inclusion failed" }, - "11418088424205762236": { + "10676044680617262041": { "error_kind": "fmtstring", "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -8909,17 +9215,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -8928,47 +9226,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "storage_read", - "get_public_data_witness", - "field_less_than", - "decompose_hint", - "lte_hint", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "load", - "store_in_execution_cache_oracle_wrapper", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "redeem_public", @@ -9055,14 +9326,6 @@ "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17814817983036354427": { "error_kind": "string", "string": "Function redeem_public can only be called internally" @@ -9073,11 +9336,8 @@ } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "redeem_public" - ] + "bytecode": "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HwYtCAEfJwIiBAkACAEiAScDHwQBACIcAiIAIgYCJQAiHwImQD8AJgAlACItDh8SLQoLAyMAABHNDCoDGQYkAgAGAAATASMAABHfLQshBi0IARIAAAECAS0OExItCAEcAAABAgEtDhMcLQoLAyMAABIGDSIAA4BMAB8kAgAfAAASuSMAABIbLgiATAADIwAAEiYMKgMeHyQCAB8AABJxIwAAEjgtCxIDLQscBi0LGBIKKhIDHCQCABwAABJWJQAAQe4tCxoDCioDBhIkAgASAAASbCUAAEHuIwAAFX0tCxwfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABKkJQAAQgAtDh8cASIAA4BQAB8tCh8DIwAAEiYtCxIfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABLsJQAAQgAtDh8SASIAA4BQAB8tCh8DIwAAEgYtCxIcACIcAiIAKiIDJS0LJR8cCh8cACcCIgEALQgBHycCJQQFAAgBJQEnAx8EAQAiHwIlJwImBARDA6IAHIBOACYAIgAlBSiATQADABwtCgsGIwAAE1gNIgAGgE0AIiQCACIAABN+IwAAE20BIgADgFAABi0KBgMjAAARzQAqHAYiDiocIiUkAgAlAAATlSUAAEIAACIfAiYAKiYGJy0LJyUtCyEmDCoiHickAgAnAAATuSUAAEISLgIAJoADKACABAQAISUAAEEYLgiABQAnACInAigAKigiKS0OJSktDichASIABoBQACItCiIGIwAAE1gtCxIcDSIAA4BMAB8kAgAfAAAUDSUAAEISLgIAHIADKACABAQAESUAAEEYLgiABQAfACIfAiEAKiEDIi0OCyItDh8SASIAA4BQABwtChwDIwAAEMotCAEiAAABAgEtDgsiBSIABoBNACUHIgAlgE0AJwoqJwYmJAIAJgAAFHclAABCJC0KCxwjAAAUgA0iAByATQAmJAIAJgAAFO0jAAAUlS0LIhwtCyEiDSIABoBMACUkAgAlAAAUsiUAAEISLgIAIoADKACABAQAESUAAEEYLgiABQAlACIlAiYAKiYGJy0OHCctDiUhASIABoBQABwtChwGIwAAEDEAKiUcJw4qJScoJAIAKAAAFQQlAABCAAwqJx4oJAIAKAAAFR8jAAAVFi0K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FCctCyIoLQslKQwqISgqJAIAKgAAOFwjAAA4uAAiJwIrACorISwtCywqACImAiwAKiwhLS0LLSsAKiorLC4CACeAAygAgAQEAAUlAABBGC4IgAUAKgAiKgIrACorIS0tDiwtLQ4mBy0OKhQtDigiLQ4pJSMAADi4ASIAIYBQACYtCiYhIwAAGLotCwcmLQsUJy0LIigtCyUpDCohKCokAgAqAAA46yMAADlHACInAisAKishLC0LLCoAIiYCLAAqLCEtLQstKwAqKissLgIAJ4ADKACABAQABSUAAEEYLgiABQAqACIqAisAKishLS0OLC0tDiYHLQ4qFC0OKCItDiklIwAAOUcBIgAhgFAAJi0KJiEjAAAYBi0LByYtCxQnLQsiKC0LJSkMKiEoKiQCACoAADl6IwAAOdYAIicCKwAqKyEsLQssKgAiJgIsACosIS0tCy0rACoqKywuAgAngAMoAIAEBAAFJQAAQRguCIAFACoAIioCKwAqKyEtLQ4sLS0OJgctDioULQ4oIi0OKSUjAAA51gEiACGAUAAmLQomISMAABcHLQsSHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6GiUAAEIALQ4cEgEiAAOAUAAcLQocAyMAABXNLQsGHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6YiUAAEIALQ4cBgEiAAOAUAAcLQocAyMAABWtLQsiJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA6qiUAAEIALQ4lIgEiAAaAUAAlLQolBiMAAA8cLQshJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA68iUAAEIALQ4lIQEiAAaAUAAlLQolBiMAAA78LQscIgAiIgImAComBictCyckHAokIgAnAiYBAC0IASQnAicEBQAIAScBJwMkBAEAIiQCJycCKAQEQwOiACKATgAoACYAJwUogE0ABgAiLQoLISMAADteDSIAIYBNACYkAgAmAAA7hCMAADtzASIABoBQACEtCiEGIwAADr4AKiIhJg4qIiYnJAIAJwAAO5slAABCAAAiJAIoACooISktCyknLQslKAwqJh4pJAIAKQAAO78lAABCEi4CACiA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", + "debug_symbols": "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" }, { "name": "refund_private", @@ -9159,7 +9419,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -9215,7 +9475,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -9244,7 +9504,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -9438,7 +9698,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -9679,352 +9939,451 @@ }, { "name": "include_by_timestamp", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -10033,30 +10392,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -10113,26 +10468,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -10141,105 +10511,141 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } - } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -10248,17 +10654,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -10281,7 +10687,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -10337,7 +10743,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -10366,7 +10772,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -10560,7 +10966,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -10699,6 +11105,18 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, + "1004672304334401604": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "1186437190978851533": { "error_kind": "string", "string": "Non-zero hint for zero hash" @@ -10707,41 +11125,20 @@ "error_kind": "string", "string": "Hint values do not match hash" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -10750,6 +11147,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -10758,37 +11159,23 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6485997221020871071": { "error_kind": "string", "string": "call to assert_max_bit_size" }, + "7136043998373234005": { + "error_kind": "string", + "string": "Field failed to decompose into specified 40 limbs" + }, "7233212735005103307": { "error_kind": "string", "string": "attempt to multiply with overflow" }, + "7542496824365424242": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, "7764445047318889914": { "error_kind": "string", "string": "Public data tree index doesn't match witness" @@ -10801,50 +11188,79 @@ "error_kind": "string", "string": "Proving public value inclusion failed" }, - "11091894166229312484": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] - }, - "11418088424205762236": { + "10676044680617262041": { "error_kind": "fmtstring", "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -10860,17 +11276,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -10879,24 +11287,14 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" }, "18313900523101689315": { "error_kind": "string", @@ -10904,26 +11302,9 @@ } } }, - "bytecode": "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", - "debug_symbols": "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bUe2HXnnYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg23nYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYRw7aNaBu4A2yQTfYhrahLxg5OKFs2JFlR5YdWXbkkYNWBtiGtqEvGDk4oWygDXUDb5ANO7LuyLoj645sO7LtyLYj245sO7LtyLYj245sO7LtyG1Hbjty25Hbjtx25LYjtx257chtR247ct+R+47cd+S+I/cdue/IfUfuO3LfkfuKXK7rCipBFFSDOEiCNMiCWlBolNAooVFCo4RGCY2RkyZOGmRBQ6M59U0jMReVIAqqQRwkQRpkQaFBoVFDo4ZGDY0aGjU0amjU0KihUUOjhgaHBocGhwaHBocGhwaHBocGhwaHhoSGhIaEhoSGhIaEhoSGhIaEhoSGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhoWGhYaFhoWGhYaFhoWGhYaFRguNFhotNFpotNBoodFCo4VGC40WGj00emj00Oih0UOjh0YPjR4aPTT61ijXFVSCKKgGcZAEaZAFtaDQKKFRQqOERgmNEholNEpolNCIPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "get_note_internal", - "storage_read", - "get_public_data_witness", - "field_less_than", - "decompose_hint", - "lte_hint", - "call_private_function_internal", - "load", - "store_in_execution_cache_oracle_wrapper", - "directive_invert", - "directive_to_radix", - "directive_integer_quotient" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "TJ3JjjTNjlzf5a61SB9Ip+tVtBA0NhpodAMaVg29uypoTpptbh3771d+PAYyIyO9Iv/9H//9f/zX//tP//mf//V//tv//sd//E///o//+r/++V/+5Z//6T//y7/9t//yf/753/7177/++z9+3/+M/Y//uKaN//cf/jG+vP/+d/yHf+yJHws/Nn4Yfjh+HPwI/Lj5w374gVEMoxhGMYxiGMUwimEUwyiGURyjOEZxjOIYxTGKYxTHKI5RHKM4RjkY5WCUg1EORjkY5WCUg1EORjkY5WCUwCiBUQKjBEYJjBIYJTBKYJTAKIFRLka5GOVilItRLka5GOVilItRLka5GGX8fu/neD/n+7nez/1+2vvp7+d5P+P9fOONN95444033njjjTfeeOONN954442/8ez7efFz/t7P8X7O93O9n/v9tPfT38/zfr7x5htv/Y3n38/xfs73c72f+/2099Pfz7/x7vfz2971wX2wfwWjYBasgm+rzwdW4AWn4Bs5PrgP8tRP+Eb+9k6e/gmr4G/kuT+wAi84BVFwH3zlABgFs2AV1MheI3uN7DXyVx7z2z1fgSR8JQIYBbNgFewCK/CCU1Ajnxo5auSokaNGjho5auSokaNGjho5auSokW+NfGvkWyPfGvnWyLdG/spqfkfnKyxAFFzA/KoLMApmwSrYBVbgBacgCmrkUSOPGnnUyKNGHjXyqJFHjTxq5FEjjxp51sizRp418qyRZ408a+RZI88aedbIs0ZeNfKqkVeNvGrkVSOvGnnVyKtGXjXyqpF3jbxr5F0j7xp518i7Rt418q6Rd428a2Srka1GthrZamSrka1GthrZamSrka1G9hrZa+SvBtf4YBXsAivwglMQBffBV4OAUVAjnxr51MinRv5qcO0PTkEUfCP/db/51SBgFMyCVbALrMALTkEU1Mi3Rr418q2R7+tI8+4CK/CCUxAFr9et369gFMyCVbALrMAL/kbe84MouA++GgSMglmwCnaBFXhBjTxq5FEjzxp51shfDe71wSrYBVbgBacgCu6DrwYBo6BGXjXyqpFXjfzVoP0+OAVRcB98NQgYBbNgFewCK6iRd428a+RdI1uNbDWy1chWI1uNbDWy1chWI1uNbDWy18heI3uN7DWy18heI3uN7DWy18heI58a+dTIp0Y+NfKpkU+NfGrkUyOfGvnUyFEjR40c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Xeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9c51iXlauWsc9AtyjoHjabZtJp2kzV5UztOO047oh3RjmhHtCPaEe2IdkQ7oh3RjtuO247bjtuO247bjtuO247bjlsOLFwCjabZtJp2kzV502mKpnaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsdlg7rB3WDmuHtcPaYe2wdlg7rB3eDm+Ht8Pb4e3wdng7us531/nuOt9d57vrPBdA+UhaTbvJmrzpNEXTLfrq/NFoake0I9oR7Yh2RDuiHdGO247bjtuO247bjtuO247bjtuOW45cHPVoNM2m1bSb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", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "refund_public", @@ -10976,21 +11357,14 @@ "error_kind": "string", "string": "Index out of bounds" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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ABwKCxkAHAoKCwAcCgIKAC0IAQInAhoEDAAIARoBJwMCBAEAIgICGi0KGhstDgQbACIbAhstDggbACIbAhstDh4bACIbAhstDgkbACIbAhstDhQbACIbAhstDhUbACIbAhstDhYbACIbAhstDhgbACIbAhstDhkbACIbAhstDgsbACIbAhstDgobHAoXBAAcCg8IABwKEAkAHAoRCgAcChILABwKEw8AHAoNEAAcCgwNAC0IAQwnAhEEDAAIAREBJwMMBAEAIgwCES0KERItDgUSACISAhItDgQSACISAhItDg4SACISAhItDggSACISAhItDgkSACISAhItDgoSACISAhItDgsSACISAhItDg8SACISAhItDhASACISAhItDg0SACISAhItDgMSLgiARQAqIwAAC8MNIgAqgEwAAyQCAAMAAA75IwAAC9gtCwcDLQsDBAAiBAIELQ4EAy0IAQQnAgUEBAAIAQUBJwMEBAEAIgQCBS0KBQcuDIBGAAcAIgcCBy4MgEYABwAiBwIHLgyARgAHKwIABQAAAAAAAAAAFwAAAAAAAAAALQgBBycCCAQFAAgBCAEnAwcEAQAiBwIILQoICS4MgEYACQAiCQIJLgyARgAJACIJAgkuDIBGAAkAIgkCCS0OBQktCAEFAAABAgEtDgQFLQgBBAAAAQIBLQ4HBC0IAQcAAAECAS4MgEUABy0IAQgAAAECAS4MgEQACC0LAwkAIgkCCS0OCQMuCIBFAAIjAAAMxw0iAAKATQAJJAIACQAADq8jAAAM3CcCCgQLLQgACy0KBQwtCgQNLQoHDi0KCA8ACAAKACUAABcoLQIAAC0KDAktCAEEJwIFBBkACAEFAScDBAQBACIEAgUnAgcEGAAqBwUHLQoFCAwqCAcKFgoKCiQCAAoAAA1OLgyARgAIACIIAggjAAANLS0IAQUAAAECAS0OBAUuCIBFAAIjAAANZg0iAAKATQAEJAIABAAADmIjAAANey0LBQMnAgQEGC4CAAOAAygAgAQEABklAAAXnC4IgAUABwAqBwQILQ4JCC0OBwUuCIBFAAIjAAANtAwqAgQDJAIAAwAADjMjAAANxikCAAIALRfGuCcCBAQCJwIGBAMAKgQGBS0IAQMACAEFAScDAwQBACIDAgUtDgQFACIFAgUtDgQFJwIFBAMAKgMFBC0KBAUtDgIFACIFAgUtDgEFACIDAgQtCwQCJwIFBAIAKgQFATcLAAEAAiYcCgIDAAAqBgMFACIHAggAKggCCS0LCQMwCgADAAUBIgACgEgAAy0KAwIjAAANtAAiAwIHACoHAggtCwgELQsFBy4CAAeAAygAgAQEABklAAAXnC4IgAUACAAiCAIKACoKAgstDgQLLQ4IBQEiAAKASAAELQoEAiMAAA1mACIDAgoAKgoCCy0LCwknAgoECy0IAAstCgUMLQoEDS0KBw4tCggPLQoJEAAIAAoAJQAAGCotAgAAASIAAoBIAAktCgkCIwAADMcBIgAqgEgAAwAiAgIFACoFKggtCwgELQsHBQ0iAAOATQAIJAIACAAADyglAAAZTi4CAAWAAygAgAQEABglAAAXnC4IgAUACAAiCAIJACoJAwotDgQKASIAA4BMAAQOKgMEBSQCAAUAAA9oJQAAFhYAIgwCCQAqCSoKLQsKBQ0iAASATQAJJAIACQAAD4slAAAZTi4CAAiAAygAgAQEABglAAAXnC4IgAUACQAiCQIKACoKBAstDgULLQ4JBy0KAyojAAALwygAgAQEeAANAAAAgASAAyQAgAMAAA/mKgEAAQX3ofOvpa3UyjwEAgEmKgEAAQW+Hj//PqT2+jwEAgEmKgEAAQUxdnHEg87uxjwEAgEmJQAAD74cCgIFACsCAAYAAAAAAAAAAAEAAAAAAAAAAAQqBQYHLQgBBScCBgQEAAgBBgEnAwUEAQAiBQIGLQoGCC4MgEYACAAiCAIILgyARgAIACIIAgguDIBGAAgtCAEGJwIIBAUACAEIAScDBgQBACIGAggtCggJLgyARgAJACIJAgkuDIBGAAkAIgkCCS4MgEYACQAiCQIJLQ4HCS0IAQcAAAECAS0OBQctCAEFAAABAgEtDgYFLQgBBgAAAQIBLgyARQAGLQgBCAAAAQIBLgyARAAILQsBCQAiCQIJLQ4JAS4IgEUABCMAABD4DSIABIBKAAkkAgAJAAAReCMAABENJAIAAwAAERojAAARTCcCAQQJLQgACS0KBwotCgULLQoGDC0KCA0uCIBJAA4ACAABACUAABgqLQIAACMAABFMJwICBAktCAAJLQoHCi0KBQstCgYMLQoIDQAIAAIAJQAAFygtAgAALQoKASYMKgQCCSQCAAkAABGKIwAAEcgAIgECCgAqCgQLLQsLCScCCgQLLQgACy0KBwwtCgUNLQoGDi0KCA8tCgkQAAgACgAlAAAYKi0CAAAjAAARyAEiAASASAAJLQoJBCMAABD4KgEAAQUC3G4ngHYSnTwEAgEmJQAAD74tCAEGJwIHBBgACAEHAScDBgQBACIGAgcnAggEFwAqCAcILQoHCQwqCQgKFgoKCiQCAAoAABI3LgyARgAJACIJAgkjAAASFi0IAQcAAAECAS0OBgcuCIBFAAUjAAASTw0iAAWATQABJAIAAQAAEmkjAAASZC0LBwEmHAoFAQAAKgQBAi8KAAIAAS0LBwIuAgACgAMoAIAEBAAYJQAAF5wuCIAFAAMAIgMCBgAqBgUILQ4BCC0OAwcBIgAFgEgAAS0KAQUjAAASTyUAAA++LQgBBgAAAQIBLQ4EBi4IgEUABSMAABLVDSIABYBNAAMkAgADAAAS7yMAABLqLQsGASYtCwEDLQsCBA0iAASATQAHJAIABwAAEwwlAAAZTgAiAwIIACoIBAktCwkHASIABIBIAAgOKgQICSQCAAkAABM0JQAAFhYtDgMBLQ4IAi0LBgMuAgADgAMoAIAEBAAYJQAAF5wuCIAFAAQAIgQCCAAqCAUJLQ4HCS0OBAYBIgAFgEgAAy0KAwUjAAAS1SUAAA++ASIAAoBMAAQOKgIEBSQCAAUAABOaJQAAFhYNKIBNAAQABQsiAAWARAAEJAIABAAAE7clAAAZYC0IAQQnAgUEDAAIAQUBJwMEBAEAIgQCBScCBgQLACoGBQYtCgUHDCoHBggWCggIJAIACAAAE/4uDIBGAAcAIgcCByMAABPdLQgBBQAAAQIBLQ4EBS4IgEUAAyMAABQWDSIAA4BMAAQkAgAEAAAUMCMAABQrLQsFASYAKgMCBA4qAwQGJAIABgAAFEclAAAWFg0iAASATQAGJAIABgAAFFwlAAAZTgAiAQIHACoHBAgtCwgGLQsFBC4CAASAAygAgAQEAAwlAAAXnC4IgAUABwAiBwIIACoIAwktDgYJLQ4HBQEiAAOASAAELQoEAyMAABQWJQAAD74BIgABgEgAAy0LAwIBIgABgEoABC0LBAMcCgMFBhwKBQQAHAoEAwYBIgABgEMABS0LBQQBIgABgEsABi0LBgUcCgUHBhwKBwYAHAoGBQYnAgYEBQAqAQYILQsIBxwKBwgGHAoIBgAcCgYHBicCBgQGACoBBgktCwkIHAoICQYcCgkGABwKBggGJwIGBAcAKgEGCi0LCgkcCgkKBhwKCgYAHAoGCQYnAgYECAAqAQYLLQsLChwKCgsGHAoLBgAcCgYKBicCBgQJACoBBgwtCwwLHAoLDAYcCgwGABwKBgsGJwIGBAoAKgEGDS0LDQwcCgwNBRwKDQYAHAoGDAUBIgABgEwADS0LDQYcCgYNAhwKDQEAHAoBBgItCgIBLQoDAi0KBAMtCgUELQoHBS0KCQctCgsJLQoGCy0KCAYtCgoILQoMCiYqAQABBVVFTwUJdio6PAQCASYqAQABBYFkm2itHhyEPAQCASYqAQABBUWnynEZQeQVPAQCASYlAAAPvi0IAQQAAAECAS4MgEkABCcCBgQCJwIHAQEtCAEFJwIIBCEACAEIAScDBQQBACIFAggnAgkEIEMDqgACAAYACQAHAAgnAgoEIC4CAAiAAy4CAAqABCUAABlyJwICBCEnAgYEIC4IgEgAAyMAABabDCoDAgckAgAHAAAWsiMAABatLQsEASYtCwQHBCoHBwgCKgYDBw4qAwYJJAIACQAAFtIlAAAZ8gwqBwYJJAIACQAAFuQlAAAZTgAiBQIKACoKBwstCwsJHAoJBwAEKggBCQQqBwkKAyiASQAHAAkEKgkIBwAqCgcILQ4IBAEiAAOASAAHLQoHAyMAABabJQAAD74tCwQFCyIABYBEAAYkAgAGAAAXSicCBwQAPAYHAScCBQQGLQgABi0KAQctCgIILQoDCS0KBAoACAAFACUAABoELQIAAC0LAQUtCwIGLQsDBy0OBQEtDgYCLQ4HAy4MgEcABAEiAAaASAACLQsCASYuAYADgAYLAIAGAAKAByQAgAcAABe3IwAAF8IuAIADgAUjAAAYKS4AAAGABQEAAAGABAABAQCAA4AEgAkuAIADgAouAIAFgAsLAIAKgAmADCQAgAwAABgVLgGACoAILgSACIALAQCACgACgAoBAIALAAKACyMAABfkKAGABQQAAQMAgAYAAoAGIwAAGCkmJQAAD74tCwQGCyIABoBEAAckAgAHAAAYTCcCCAQAPAYIAS0LAwYLIgAGgEMAByQCAAcAABjfIwAAGGUtCwMGLQsBBy0LAggtCwQJDSIABoBDAAokAgAKAAAYiiUAABlOLgIAB4ADKACABAQABCUAABecLgiABQAKACIKAgsAKgsGDC0OBQwBIgAGgEgABQ4qBgUHJAIABwAAGMolAAAWFi0OCgEtDggCLQ4FAy0OCQQjAAAZTScCBgQHLQgABy0KAQgtCgIJLQoDCi0KBAsACAAGACUAABoELQIAAC0LAQYtCwIHLQsECC4CAAaAAygAgAQEAAQlAAAXnC4IgAUACQEiAAmASAAKLQ4FCi0OCQEtDgcCLgyASAADLQ4IBCMAABlNJioBAAEFxWvEWg4QAAI8BAIBJioBAAEF9C7lhLv0IdE8BAIBJigAgAYEAAIHAIAEgAaABS4AgASACCgAgAkEAAANAIAJgAWAChcAgAqACiQAgAoAABnxAwCACAACgAgBAIADgAmACy4BgAuABgEAgAOACIALLgGAC4AHAQCAA4AJgAsuBIAHgAsBAIADgAiACy4EgAaACwEAgAkAAoAJIwAAGY4mKgEAAQUohpKwR9z9QzwEAgEmJQAAD74uCIBFAAUjAAAaFA0iAAWAQwAGJAIABgAAGn8jAAAaKS0LAgUtCwUGACIGAgYtDgYFLQgBBicCBwQFAAgBBwEnAwYEAQAiBQIHJwIIBAQAIgYCCT8PAAcACS0LAQUtCwMHLQsECC0OBQEtDgYCLQ4HAy0OCAQmLQsDBgwqBQYHJAIABwAAGpUjAAAbAS0LAgYAIgYCCAAqCAUJLQsJBy0LAQgAIggCCgAqCgULLQsLCQAqBwkKLQsDBy0LBAkuAgAGgAMoAIAEBAAFJQAAF5wuCIAFAAsAIgsCDAAqDAUNLQ4KDS0OCAEtDgsCLQ4HAy0OCQQjAAAbAQEiAAWASAAGLQoGBSMAABoU", - "debug_symbols": "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", - "brillig_names": [ - "refund_public" - ] + "bytecode": "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CgUfHAoFNQAcCh82AAQqNQY3BCo2BwYAKjcGBxwKBQYGHAofNwYEKgYhOAQqNywhACo4ISwEKjUiIQQqNi0iACohIi0EKgYkIQQqNy4iACohIiQEKgYlIQQqNxQiACohIhQEKgYmIQQqNxYiACohIhYEKgYnIQQqNxgiACohIhgEKgYoIQQqNxoiACohIhoEKgYpIQQqNxwGACohBhwcCgUGBRwKHyEFBCoGKiIEKiEeBgAqIgYeHAoFBgIcCh8FAgQqBisfBCoFIAYAKh8GBS0IAQYnAh8EGAAIAR8BJwMGBAEAIgYCHycCIAQXACogHyAtCh8hDCohICIWCiIiJAIAIgAAEqktDgMhACIhAiEjAAASii0IAR8AAAECAS0OBh8cCjQGAC0IASAAAAECAScCIQABLQ4hIC0IASInAiUEIQAIASUBJwMiBAEAIiICJS0KJSYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgImACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmJwIlBCEnAiYEIC0KDTIjAAAUFwwqMiUnJAIAJwAAI3MjAAAUKS0LICcEKjAnIAAqBiAnLQgBBgAAAQIBLQ4hBi0IASAnAigEIQAIASgBJwMgBAEAIiACKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNIiMAABWEDCoiJSgkAgAoAAAjAyMAABWWLQsGIgQqMSIGAConBiIcCjMGAC0IAScAAAECAS0OISctCAEoJwIpBCEACAEpAScDKAQBACIoAiktCikqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKi0KDSAjAAAW9gwqICUpJAIAKQAAIpMjAAAXCC0LJygEKgYoJwAqIicGLQgBIgAAAQIBLQ4hIi0IAScnAigEIQAIASgBJwMnBAEAIicCKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgIpACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNICMAABhjDCogJSgkAgAoAAAiIyMAABh1LQsiJwQqDiciACoGIg4cCi8GAC0IASIAAAECAS0OISItCAEnJwIo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", + "debug_symbols": "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" }, { "name": "sync_private_state", @@ -11006,18 +11380,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -11025,22 +11396,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -11057,19 +11422,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -11080,57 +11464,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -11146,13 +11522,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -11161,279 +11533,23 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "sync_private_state" - ] + "bytecode": "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", + "debug_symbols": "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" } ], "outputs": { "globals": { - "notes": [ - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "kind": "string", - "value": "UintNote" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "value", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000002" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - }, - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "kind": "string", - "value": "UintNote" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "value", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000002" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - }, - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "kind": "string", - "value": "HTLC_Private" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - } - ], "storage": [ { "fields": [ @@ -12074,7 +12190,7 @@ "type": { "fields": [ { - "name": "Id", + "name": "id", "type": { "kind": "field" } @@ -12579,333 +12695,333 @@ } }, "file_map": { - "101": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", - "source": "use crate::{\n macros::{\n authwits::AUTHWIT_TYPES,\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::{generate_note_export, NOTES},\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n },\n messages::discovery::private_notes::MAX_NOTE_PACKED_LEN,\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n let contract_library_method_compute_note_hash_and_nullifier =\n generate_contract_library_method_compute_note_hash_and_nullifier();\n let note_exports = generate_note_exports();\n let public_dispatch = generate_public_dispatch(m);\n let sync_private_state = generate_sync_private_state();\n let process_message = generate_process_message();\n generate_authwit_exports();\n\n quote {\n $note_exports\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n let notes = NOTES.entries();\n\n if notes.len() > 0 {\n let max_note_packed_len = notes.fold(\n 0,\n |acc, (_, (_, len, _, _)): (Type, (TypeDefinition, u32, Field, [(Quoted, u32, bool)]))| {\n if len > acc {\n len\n } else {\n acc\n }\n },\n );\n\n if max_note_packed_len > MAX_NOTE_PACKED_LEN {\n panic(\n f\"One of the notes has packed len {max_note_packed_len} but the maximum is {MAX_NOTE_PACKED_LEN}\",\n );\n }\n\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..notes.len() {\n let (typ, (_, packed_note_length, _, _)) = notes[i];\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable<_> },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret it's raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = $packed_note_length;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_authwit_exports() {\n let authwits = AUTHWIT_TYPES.values();\n authwits.for_each(|(s): TypeDefinition| { s.add_attribute(\"abi(authwits)\"); });\n}\n\ncomptime fn generate_note_exports() -> Quoted {\n let notes = NOTES.values();\n // Second value in each tuple is `note_packed_len` and that is ignored here because it's only used when\n // generating partial note helper functions.\n notes\n .map(|(s, _, note_type_id, fields): (TypeDefinition, u32, Field, [(Quoted, u32, bool)])| {\n generate_note_export(s, note_type_id, fields)\n })\n .join(quote {})\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" - }, - "102": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", + "100": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", "source": "use super::utils::{compute_fn_selector, size_in_fields};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let mut parameters_size = 0;\n for param in parameters {\n parameters_size += size_in_fields(param.1);\n }\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $parameters_size] = dep::aztec::context::public_context::calldata_copy(1, $parameters_size);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[public]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" }, - "105": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", - "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n size_in_fields,\n};\nuse std::meta::{type_of, unquote};\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n let is_void = f.return_type() == type_of(());\n\n if is_fn_private(f) {\n if is_static_call {\n if is_void {\n create_private_static_void_stub(f)\n } else {\n create_private_static_stub(f)\n }\n } else {\n if is_void {\n create_private_void_stub(f)\n } else {\n create_private_stub(f)\n }\n }\n } else if is_fn_public(f) {\n if is_static_call {\n if is_void {\n create_public_static_void_stub(f)\n } else {\n create_public_static_stub(f)\n }\n } else {\n if is_void {\n create_public_void_stub(f)\n } else {\n create_public_stub(f)\n }\n }\n } else {\n if is_void {\n create_utility_void_stub(f)\n } else {\n create_utility_stub(f)\n }\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_private_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" + "104": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", + "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n};\nuse std::meta::unquote;\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n\n if is_fn_private(f) {\n if is_static_call {\n create_private_static_stub(f)\n } else {\n create_private_stub(f)\n }\n } else if is_fn_public(f) {\n if is_static_call {\n create_public_static_stub(f)\n } else {\n create_public_stub(f)\n }\n } else {\n create_utility_stub(f)\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" }, - "106": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", + "105": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" }, - "109": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", - "source": "use crate::macros::{\n functions::{abi_export::create_fn_abi_export, call_interface_stubs::stub_fn, stub_registry},\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_noinitcheck, get_fn_visibility, is_fn_contract_library_method,\n is_fn_initializer, is_fn_internal, is_fn_private, is_fn_public, is_fn_test, is_fn_utility,\n is_fn_view, modify_fn_body, module_has_initializer, module_has_storage,\n },\n};\nuse protocol_types::meta::generate_serialize_to_fields;\nuse std::meta::type_of;\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[private] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n let to_prepend = quote {\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n\n fn_abi\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[public] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n let args_len = original_params\n .map(|(name, typ): (Quoted, Type)| {\n generate_serialize_to_fields(name, typ, false).0.len()\n })\n .fold(0, |acc: u32, val: u32| acc + val);\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len] = dep::aztec::context::public_context::calldata_copy(1, $args_len);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n\n fn_abi\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Check if function is marked as unconstrained\n if !f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[utility] but not marked as unconstrained, add unconstrained keyword\",\n );\n }\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // Inject context creation, storage initialization, and message discovery call at the beginning of the function\n // body.\n let to_prepend = quote {\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n\n fn_abi\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call == true, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + "108": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", + "source": "use crate::macros::{\n functions::{\n auth_registry::AUTHORIZE_ONCE_REGISTRY, call_interface_stubs::stub_fn, stub_registry,\n },\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_authorize_once, fn_has_noinitcheck, get_fn_visibility,\n is_fn_contract_library_method, is_fn_initializer, is_fn_internal, is_fn_private,\n is_fn_public, is_fn_test, is_fn_utility, is_fn_view, modify_fn_body, module_has_initializer,\n module_has_storage,\n },\n};\nuse std::meta::{ctstring::AsCtString, type_of};\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n $authorize_once_check\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n\n let args_len_quote = if original_params.len() == 0 {\n // If the function has no parameters, we set the args_len to 0.\n quote { 0 }\n } else {\n // The following will give us ::N + ::N + ...\n original_params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::protocol_types::traits::Serialize>::N\n }\n })\n .join(quote {+})\n };\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len_quote] = dep::aztec::context::public_context::calldata_copy(1, $args_len_quote);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $authorize_once_check\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Injects an authwit verification check of the form:\n/// ```\n/// if (!from.eq(context.msg_sender())) {\n/// assert_current_call_valid_authwit::(&mut context, from);\n/// } else {\n/// assert(authwit_nonce, \"Invalid authwit nonce. When 'from' and 'msg_sender' are the same, authwit_nonce must be zero\");\n/// }\n/// ```\n/// where `from` and `authwit_nonce` are the names of the parameters that are expected to be present in the function definition.\n/// This check is injected by the `#[authorize_once(\"from_arg_name\", \"nonce_arg_name\")]`, which allows the user to define\n/// which parameters to use.\npub(crate) comptime fn create_authorize_once_check(f: FunctionDefinition) -> Quoted {\n let maybe_authorize_once_args = AUTHORIZE_ONCE_REGISTRY.get(f);\n let authorize_once_args = if maybe_authorize_once_args.is_some() {\n maybe_authorize_once_args.unwrap()\n } else {\n // We need to for authorize_once to have already executed so that we can retrieve its params - this depends on\n // the order in which the attributes are applied.\n panic(\n f\"Functions marked with #[authorize_once] must have the #[private] or #[public] attribute placed last\",\n )\n };\n\n let (from_arg_name, nonce_arg_name) = authorize_once_args;\n let name: Quoted = f.name();\n\n let from_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{from_arg_name}\".quoted_contents());\n let (from_arg_name_quoted, from_arg_type) = if from_arg_candidates.len() == 1 {\n from_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {from_arg_name} parameter. Please specify which one to use in #[authorize_once(\\\"...\\\", \\\"authwit_nonce\\\")]\",\n )\n };\n if from_arg_type\n != quote { dep::protocol_types::address::aztec_address::AztecAddress }.as_type() {\n panic(\n f\"Argument {from_arg_name_quoted} in function {name} must be of type AztecAddress, but is of type {from_arg_type}\",\n )\n }\n\n let nonce_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{nonce_arg_name}\".quoted_contents());\n let (nonce_arg_name_quoted, nonce_arg_type) = if nonce_arg_candidates.len() == 1 {\n nonce_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {nonce_arg_name}. Please specify which one to use in #[authorize_once(\\\"from\\\", \\\"...\\\")]\",\n )\n };\n if nonce_arg_type != quote { Field }.as_type() {\n panic(\n f\"Argument {nonce_arg_name_quoted} in function {name} must be of type Field, but is of type {nonce_arg_type}\",\n );\n }\n\n let nonce_check_quote = f\"{nonce_arg_name_quoted} == 0\".quoted_contents();\n\n let fn_call = if is_fn_private(f) {\n // At this point, the original args of the fn have already been altered by the macro\n // to include PrivateContextInputs, so we need to adjust the args_len accordingly.\n let args_len = f.parameters().len() - 1;\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit::<$args_len> }\n } else {\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit_public }\n };\n let invalid_nonce_message = f\"Invalid authwit nonce. When '{from_arg_name}' and 'msg_sender' are the same, '{nonce_arg_name}' must be zero\"\n .as_ctstring()\n .as_quoted_str();\n quote { \n if (!$from_arg_name_quoted.eq(context.msg_sender())) {\n $fn_call(&mut context, $from_arg_name_quoted);\n } else {\n assert($nonce_check_quote, $invalid_nonce_message);\n }\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + }, + "110": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", + "source": "use crate::note::note_getter_options::PropertySelector;\nuse std::{collections::bounded_vec::BoundedVec, meta::{ctstring::AsCtString, type_of}};\n\n/// Maximum number of note types within 1 contract.\ncomptime global MAX_NOTE_TYPES: u32 = 128;\n\n/// A BoundedVec containing all the note types within this contract.\npub comptime mut global NOTES: BoundedVec = BoundedVec::new();\n\ncomptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < MAX_NOTE_TYPES,\n f\"A contract can contain at most {MAX_NOTE_TYPES} different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_type_impl(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n let typ = s.as_type();\n let note_type_name: str<_> = f\"{name}\".as_ctstring().as_quoted_str!();\n let max_note_packed_len = crate::messages::discovery::private_notes::MAX_NOTE_PACKED_LEN;\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n // This static assertion ensures the note's packed length doesn't exceed the maximum allowed size.\n // While this check would ideally live in the Packable trait implementation, we place it here since\n // this function is always generated by our macros and the Packable trait implementation is not.\n // Note: We set the note type name and max packed length as local variables because injecting them\n // directly into the error message doesn't work.\n let note_type_name = $note_type_name;\n let max_note_packed_len: u32 = $max_note_packed_len; // Casting to u32 to avoid the value to be printed in hex.\n let note_packed_len = <$typ as Packable>::N;\n std::static_assert(note_packed_len <= $max_note_packed_len, f\"{note_type_name} has a packed length of {note_packed_len} fields, which exceeds the maximum allowed length of {max_note_packed_len} fields\");\n\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::traits::Packable::pack(self).concat( [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::context::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates the core note functionality for a struct:\n///\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - NoteHash trait implementation: Handles note hash and nullifier computation\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Have an `owner` field\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Generated Code\n///\n/// For detailed documentation on the generated implementations, see:\n/// - `generate_note_properties()`\n/// - `generate_note_type_impl()`\n/// - `generate_note_hash_trait_impl()`\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n\n quote {\n $note_properties\n $note_type_impl\n $note_hash_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// Unlike the `#[note]` macro, there is no requirement for an `owner` field.\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_type_id = get_next_note_type_id();\n let note_properties = generate_note_properties(s);\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n\n quote {\n $note_properties\n $note_type_impl\n }\n}\n\n/// Asserts that the given note implements the `Packable` trait.\n///\n/// We require that notes have the `Packable` trait implemented because it is used when emitting a note in a log or as\n/// an offchain message.\ncomptime fn assert_has_packable(note: TypeDefinition) {\n let packable_constraint =\n quote { crate::protocol_types::traits::Packable }.as_trait_constraint();\n let note_name = note.name();\n\n assert(\n note.as_type().implements(packable_constraint),\n f\"{note_name} does not implement Packable trait. Either implement it manually or place #[derive(Packable)] on the note struct before #[note] macro invocation.\",\n );\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n let note_name = note.name();\n\n assert(\n has_owner,\n f\"{note_name} does not have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" }, "111": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", - "source": "use crate::{macros::utils::AsStrQuote, note::note_getter_options::PropertySelector};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse protocol_types::meta::{derive_packable_and_get_packed_len, generate_serialize_to_fields};\nuse std::{\n collections::umap::UHashMap,\n hash::{BuildHasherDefault, Hash, Hasher},\n meta::{type_of, unquote},\n};\n\n/// A map from note type to (note_struct_definition, note_packed_len, note_type_id, fields).\n/// `fields` is an array of tuples where each tuple contains the name of the field/struct member (e.g. `amount`\n/// in `TokenNote`), the index of where the packed member starts in the packed note and a flag indicating\n/// whether the field is nullable or not.\npub comptime mut global NOTES: UHashMap> =\n UHashMap::default();\n\npub comptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < 128 as u32,\n \"A contract can contain at most 128 different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates a quote that implements `Packable` for a given struct `s`.\n/// If the note struct already implements `Packable`, we return an empty quote.\ncomptime fn derive_packable_if_not_implemented_and_get_len(s: TypeDefinition) -> (Quoted, u32) {\n // We try to get the packed length of the note struct. If it does not implement `Packable`, we get Option::none()\n let packed_len_typ = std::meta::typ::fresh_type_variable();\n // We don't care about the result of the implements check. We just want the get the packed length.\n let _ = s.as_type().implements(\n quote { crate::protocol_types::traits::Packable<$packed_len_typ> }.as_trait_constraint(),\n );\n let maybe_packed_length = packed_len_typ.as_constant();\n\n if maybe_packed_length.is_some() {\n // We got some packed length meaning that the note struct implements `Packable`. For this reason we return\n // an empty quote for the implementation and the packed length.\n (quote {}, maybe_packed_length.unwrap())\n } else {\n // We didn't manage to get the packed length which means the note struct doesn't implement `Packable`\n // so we derive it and return it along with the packed length.\n derive_packable_and_get_packed_len(s)\n }\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_interface(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::utils::arrays::array_concat(aztec::protocol_types::traits::Packable::pack(self), [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::prelude::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates note export for a given note struct `s`. The export is a global variable that contains note type id,\n/// note name and information about note fields (field name, index and whether the field is nullable or not).\n///\n/// Example:\n/// ```\n/// struct TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField,\n/// owner: aztec::note::note_field::NoteField\n/// }\n///\n/// #[abi(notes)]\n/// global TokenNote_EXPORTS_5695262104: (Field, str<8>, TokenNoteFields_5695262104) = (\n/// 0,\n/// \"TokenNote\",\n/// TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField { index: 0, nullable: false },\n/// owner: aztec::note::note_field::NoteField { index: 1, nullable: false }\n/// }\n/// );\n///\n/// Randomly looking value at the end of the export name is generated by hashing the note struct type and is included\n/// to prevent naming collisions in case there are multiple notes with the same name imported in a contract.\npub(crate) comptime fn generate_note_export(\n s: TypeDefinition,\n note_type_id: Field,\n fields: [(Quoted, u32, bool)],\n) -> Quoted {\n let name = s.name();\n let mut hasher = Poseidon2Hasher::default();\n s.as_type().hash(&mut hasher);\n let hash = hasher.finish() as u32;\n let global_export_name = f\"{name}_EXPORTS_{hash}\".quoted_contents();\n let note_fields_name = f\"{name}Fields_{hash}\".quoted_contents();\n let (note_name_as_str, _) = name.as_str_quote();\n let note_name_str_len = unquote!(quote { $note_name_as_str.as_bytes().len() });\n\n let mut note_fields = &[];\n let mut note_field_constructors = &[];\n for field in fields {\n let (name, index, nullable) = field;\n note_fields = note_fields.push_back(quote { $name: aztec::note::note_field::NoteField });\n note_field_constructors = note_field_constructors.push_back(\n quote { $name: aztec::note::note_field::NoteField { index: $index, nullable: $nullable }},\n );\n }\n\n let note_fields = note_fields.join(quote {,});\n let note_field_constructors = note_field_constructors.join(quote {,});\n\n quote {\n pub struct $note_fields_name {\n pub $note_fields\n }\n\n #[abi(notes)]\n global $global_export_name: (Field, str<$note_name_str_len>, $note_fields_name) = ($note_type_id, $note_name_as_str, $note_fields_name { $note_field_constructors });\n }\n}\n\n/// Registers a note struct `note` with the given `note_packed_len`, `note_type_id`, `fixed_fields` and\n/// `nullable_fields` in the global `NOTES` map.\ncomptime fn register_note(\n note: TypeDefinition,\n note_packed_len: u32,\n note_type_id: Field,\n fixed_fields: [(Quoted, Type, u32)],\n nullable_fields: [(Quoted, Type, u32)],\n) {\n let mut fields = &[];\n for field in fixed_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, false));\n }\n for field in nullable_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, true));\n }\n\n NOTES.insert(note.as_type(), (note, note_packed_len, note_type_id, fields));\n}\n\n/// Separates note struct members into fixed and nullable ones. It also stores the index of where each struct member\n/// starts in the serialized note. Note that each struct member can occupy multiple fields (as in Field type).\ncomptime fn index_note_fields(\n s: TypeDefinition,\n nullable_fields: [Quoted],\n) -> ([(Quoted, Type, u32)], [(Quoted, Type, u32)]) {\n let mut indexed_fixed_fields: [(Quoted, Type, u32)] = &[];\n let mut indexed_nullable_fields = &[];\n let mut counter: u32 = 0;\n for field in s.fields_as_written() {\n let (name, typ, _) = field;\n if nullable_fields.all(|field| field != name) {\n indexed_fixed_fields = indexed_fixed_fields.push_back((name, typ, counter));\n } else {\n indexed_nullable_fields = indexed_nullable_fields.push_back((name, typ, counter));\n }\n let (serialization_fields, _) = generate_serialize_to_fields(name, typ, true);\n // Each struct member can occupy multiple fields so we need to increment the counter accordingly\n counter += serialization_fields.len();\n }\n (indexed_fixed_fields, indexed_nullable_fields)\n}\n\n/// Generates the following:\n/// - NoteTypeProperties\n/// - NoteType trait implementation\n/// - NoteHash trait implementation\n/// - Packable implementation\n///\n/// Registers the note in the global `NOTES` map.\n///\n/// For more details on the generated code, see the individual functions.\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_interface_impl = generate_note_interface(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n quote {\n $note_properties\n $note_interface_impl\n $note_hash_impl\n $packable_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - Packable implementation: Enables serialization/deserialization of the note\n///\n/// # Registration\n/// Registers the note in the global `NOTES` map with:\n/// - Note type ID\n/// - Packed length\n/// - Field indices and nullability\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n let note_type_id = get_next_note_type_id();\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n let note_properties = generate_note_properties(s);\n let note_interface_impl = generate_note_interface(s, note_type_id);\n\n quote {\n $note_properties\n $note_interface_impl\n $packable_impl\n }\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n assert(\n has_owner,\n \"Note must have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", + "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields = storage_layout_fields.push_back(\n quote { pub $name: dep::aztec::state_vars::storage::Storable },\n );\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::state_vars::storage::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" }, - "112": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", - "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields =\n storage_layout_fields.push_back(quote { pub $name: dep::aztec::prelude::Storable });\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::prelude::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" + "113": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", + "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" }, "114": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", - "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", + "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" }, "115": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", - "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", + "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" }, "116": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", - "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", + "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__EVENT_COMMITMENT,\n hash::poseidon2_hash_with_separator_bounded_vec, traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" }, "117": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", - "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n prelude::AztecAddress,\n utils::array,\n};\nuse protocol_types::{\n constants::GENERATOR_INDEX__EVENT_COMMITMENT, hash::poseidon2_hash_with_separator_bounded_vec,\n traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private_log` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", + "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" }, "118": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", - "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", + "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" }, "119": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", - "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", + "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" }, "12": { "path": "std/convert.nr", - "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n quote { Field },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n impls.join(quote {})\n}\n" + "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u16 {\n fn from(value: u8) -> u16 {\n value as u16\n }\n}\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u32 {\n fn from(value: u16) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u16) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u16) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u16) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i16 {\n fn from(value: i8) -> i16 {\n value as i16\n }\n}\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i32 {\n fn from(value: i16) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i16) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u16 {\n fn from(value: bool) -> u16 {\n value as u16\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for u128 {\n fn from(value: bool) -> u128 {\n value as u128\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i16 {\n fn from(value: bool) -> i16 {\n value as i16\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n\n let u_types =\n [quote { bool }, quote { u8 }, quote { u16 }, quote { u32 }, quote { u64 }, quote { u128 }];\n\n for type2 in u_types {\n let body = quote { self as Field };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive for $type2 {\n fn as_(self) -> Field {\n $body\n }\n }\n },\n );\n }\n\n for type1 in u_types {\n let body = if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for Field {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n\n impls.join(quote {})\n}\n" }, "120": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", - "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", + "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\n/**\n * Computes N close-to-uniformly-random 256 bits from a given ECDH shared_secret.\n *\n * NEVER re-use the same iv and sym_key.\n * DO NOT call this function more than once with the same shared_secret.\n *\n * This function is only known to be safe if shared_secret is computed by combining a \n * random ephemeral key with an address point. See big comment within the body of the function.\n * See big comment within the body of the function.\n */\nfn extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [[u8; 32]; N] {\n /*\n * Unsafe because of https://eprint.iacr.org/2010/264.pdf Page 13, Lemma 2 (and the * two paragraphs below it).\n *\n * If you call this function, you need to be careful and aware of how the arg\n * `shared_secret` has been derived.\n *\n * The paper says that the way you derive aes keys and IVs should be fine with poseidon2\n * (modelled as a RO), as long as you _don't_ use Poseidon2 as a PRG to generate the * two exponents x & y which multiply to the shared secret S:\n *\n * S = [x*y]*G.\n *\n * (Otherwise, you would have to \"key\" poseidon2, i.e. generate a uniformly string K\n * which can be public and compute Hash(x) as poseidon(K,x)).\n * In that lemma, k would be 2*254=508, and m would be the number of points on the * grumpkin curve (which is close to r according to the Hasse bound).\n *\n * Our shared secret S is [esk * address_sk] * G, and the question is: * Can we compute hash(S) using poseidon2 instead of sha256?\n *\n * Well, esk is random and not generated with poseidon2, so that's good.\n * What about address_sk?\n * Well, address_sk = poseidon2(stuff) + ivsk, so there was some\n * discussion about whether address_sk is independent of poseidon2.\n * Given that ivsk is random and independent of poseidon2, the address_sk is also\n * independent of poseidon2.\n *\n * Tl;dr: we believe it's safe to hash S = [esk * address_sk] * G using poseidon2,\n * in order to derive a symmetric key.\n *\n * If you're calling this function for a differently-derived `shared_secret`, be\n * careful.\n *\n */\n\n /* The output of this function needs to be 32 random bytes.\n * A single field won't give us 32 bytes of entropy.\n * So we compute two \"random\" fields, by poseidon-hashing with two different\n * generators.\n * We then extract the last 16 (big endian) bytes of each \"random\" field.\n * Note: we use to_be_bytes because it's slightly more efficient. But we have to\n * be careful not to take bytes from the \"big end\", because the \"big\" byte is\n * not uniformly random over the byte: it only has < 6 bits of randomness, because\n * it's the big end of a 254-bit field element.\n */\n\n let mut all_bytes: [[u8; 32]; N] = std::mem::zeroed();\n // We restrict N to be < 2^8, because of how we compute the domain separator\n // from k below (where k <= N must be 8 bits). In practice, it's extremely\n // unlikely that an app will want to compute >= 256 ciphertexts.\n std::static_assert(N < 256, \"N too large\");\n for k in 0..N {\n // We augment the domain separator with the loop index, so that we can\n // generate N lots of randomness.\n let k_shift = (k as u16 << 8);\n let separator_1 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY as u16;\n let separator_2 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY_2 as u16;\n\n let rand1: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_1);\n let rand2: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_2);\n\n let rand1_bytes: [u8; 32] = rand1.to_be_bytes();\n let rand2_bytes: [u8; 32] = rand2.to_be_bytes();\n\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n // We take bytes from the \"little end\" of the be-bytes arrays:\n let j = 32 - i - 1;\n bytes[i] = rand1_bytes[j];\n bytes[16 + i] = rand2_bytes[j];\n }\n\n all_bytes[k] = bytes;\n }\n\n all_bytes\n}\n\nfn derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(\n many_random_256_bits: [[u8; 32]; N],\n) -> [([u8; 16], [u8; 16]); N] {\n // Many (sym_key, iv) pairs:\n let mut many_pairs: [([u8; 16], [u8; 16]); N] = std::mem::zeroed();\n for k in 0..N {\n let random_256_bits = many_random_256_bits[k];\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n many_pairs[k] = (sym_key, iv);\n }\n\n many_pairs\n}\n\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [([u8; 16], [u8; 16]); N] {\n let many_random_256_bits: [[u8; 32]; N] = extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret,\n );\n\n derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(many_random_256_bits)\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PlaintextLen],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n // It is safe to call the `unsafe` function here, because we know the `shared_secret`\n // was derived using an AztecAddress (the recipient). See the block comment\n // at the start of this unsafe target function for more info.\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, body_iv, body_sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PlaintextLen * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, header_iv, header_sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n\n // Derive symmetric keys:\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext =\n aes128_decrypt_oracle(header_ciphertext_bvec, header_iv, header_sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, body_iv, body_sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let env = TestEnvironment::new();\n\n // Log decryption requires oracles that are only available during private execution\n env.private_context(|_| {\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"utilityGetSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(\n decrypted,\n plaintext_bvec,\n \"Decrypted bytes should match original plaintext\",\n );\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n });\n }\n}\n" }, - "121": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", - "source": "use dep::protocol_types::{\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n prelude::AztecAddress,\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign, point_to_bytes},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> [u8; 32] {\n let rand1: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY,\n );\n let rand2: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY_2,\n );\n let rand1_bytes: [u8; 16] = rand1.to_le_bytes();\n let rand2_bytes: [u8; 16] = rand2.to_le_bytes();\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n bytes[i] = rand1_bytes[i];\n bytes[i + 1] = rand2_bytes[i];\n }\n bytes\n}\n\n// TODO(#10537): Consider nuking this function.\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> [u8; 32] {\n let shared_secret_bytes: [u8; 32] = point_to_bytes(shared_secret);\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret_bytes.len() {\n shared_secret_bytes_with_separator[i] = shared_secret_bytes[i];\n }\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256::digest(shared_secret_bytes_with_separator)\n}\n\nfn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret: Point,\n randomness_extraction_fn: fn(Point) -> [u8; 32],\n) -> ([u8; 16], [u8; 16]) {\n let random_256_bits = randomness_extraction_fn(shared_secret);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n (sym_key, iv)\n}\n\n// TODO(#10537): Consider nuking this function.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256,\n )\n}\n\n// TODO(#10537): This function is currently unused. Consider using it instead of the sha256 one.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2,\n )\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PLAINTEXT_LEN],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, iv, sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PLAINTEXT_LEN * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n // TODO: consider nuking the header altogether and just have a fixed-size ciphertext by padding the plaintext.\n // This would be more costly constraint-wise but cheaper DA-wise.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // TODO: this is insecure and wasteful:\n // \"Insecure\", because the esk shouldn't be used twice (once for the header,\n // and again for the proper ciphertext) (at least, I never got the\n // \"go ahead\" that this would be safe, unfortunately).\n // \"Wasteful\", because the exact same computation is happening further down.\n // I'm leaving that 2nd computation where it is, because this 1st computation\n // will be imminently deleted, when the header logic is deleted.\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, iv, sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret and symmetric key\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext = aes128_decrypt_oracle(header_ciphertext_bvec, iv, sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, iv, sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let mut env = TestEnvironment::new();\n // Advance 1 block so we can read historic state from private\n env.advance_block_by(1);\n\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"getSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(decrypted, plaintext_bvec, \"Decrypted bytes should match original plaintext\");\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n }\n}\n" + "127": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", + "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(note, storage_slot, recipient, PRIVATE_NOTE_MSG_TYPE_ID)\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content = [0; 1 + ::N];\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" }, "128": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", - "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PRIVATE_NOTE_MSG_TYPE_ID,\n )\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content: [Field; N + 1] = std::mem::zeroed();\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, sender, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient, sender);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" - }, - "129": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", - "source": "use crate::{\n oracle::notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n prelude::AztecAddress,\n};\n\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(indexed_tagging_secret);\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, sender, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", + "source": "use crate::oracle::notes::{\n get_app_tag_as_sender, get_sender_for_tags, increment_app_tagging_secret_index_as_sender,\n};\nuse dep::protocol_types::address::AztecAddress;\n\n// TODO(#14565): Add constrained tagging\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe {\n let sender = get_sender_for_tags().expect(\n f\"Sender for tags is not set when emitting a private log. Set it by calling `set_sender_for_tags(...)`.\",\n );\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n get_app_tag_as_sender(sender, recipient)\n };\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test(should_fail)]\n unconstrained fn no_tag_sender() {\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles - note privateGetSenderForTags returns none\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::::none());\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let _ = prefix_with_tag(log_without_tag, recipient);\n }\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::some(sender));\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" }, - "137": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", + "136": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" }, - "142": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", - "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" + "141": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", + "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" }, - "144": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", - "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" + "143": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", + "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n pub emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" }, - "147": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", - "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" + "145": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PreprocessorArgs) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PreprocessorArgs,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; M];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" }, - "150": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", - "source": "use protocol_types::traits::Serialize;\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" + "148": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", + "source": "use protocol_types::traits::{Packable, Serialize};\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize, Packable)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" }, - "152": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr", - "source": "use crate::{note::note_metadata::NoteMetadata, utils::array::subarray::subarray};\nuse protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n};\n\n// Number of fields a RetrievedNote adds to the packed or serialized representation of a note\n// +1 for the contract address\n// +2 for the note metadata\npub global RETRIEVED_NOTE_OVERHEAD: u32 = 1 + 2;\n\n/// A container of a note and the metadata required to prove its existence, regardless of whether the note is\n/// pending (created in the current transaction) or settled (created in a previous transaction).\n#[derive(Eq)]\npub struct RetrievedNote {\n pub note: NOTE,\n pub contract_address: AztecAddress,\n pub metadata: NoteMetadata,\n}\n\nimpl Serialize for RetrievedNote\nwhere\n NOTE: Serialize,\n{\n fn serialize(self) -> [Field; N + RETRIEVED_NOTE_OVERHEAD] {\n array_concat(\n array_concat(self.note.serialize(), [self.contract_address.to_field()]),\n self.metadata.serialize(),\n )\n }\n}\n\n// This function is not part of the Packable trait implementation because in the case of the retrieved note, the pack\n// functionality resides in TS (oracle.ts and txe_service.ts).\npub fn unpack_retrieved_note(\n packed_retrieved_note: [Field; N + RETRIEVED_NOTE_OVERHEAD],\n) -> RetrievedNote\nwhere\n NOTE: Packable,\n{\n let contract_address = AztecAddress::from_field(packed_retrieved_note[0]);\n let note_nonce = packed_retrieved_note[1];\n let nonzero_note_hash_counter = (packed_retrieved_note[2] as u1) != 0;\n\n let packed_note = subarray(packed_retrieved_note, RETRIEVED_NOTE_OVERHEAD);\n let note = NOTE::unpack(packed_note);\n\n RetrievedNote {\n note,\n contract_address,\n metadata: NoteMetadata::from_raw_data(nonzero_note_hash_counter, note_nonce),\n }\n}\n" - }, - "153": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", + "151": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullify(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullify_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullify`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullify_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify = compute_note_hash_for_nullify(retrieved_note, storage_slot);\n let inner_nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" }, + "155": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(privateCallPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + }, + "156": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", + "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle(contract_address, slot, ::N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(utilityStoreCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(utilityLoadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(utilityDeleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(utilityCopyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n });\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n });\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n });\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n copy(contract_address, SLOT, SLOT, 1);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n });\n }\n}\n" + }, "157": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(privateNotifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(privateNotifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(privateNotifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" }, "158": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", - "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle::(contract_address, slot, N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(storeCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(loadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(deleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(copyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n unconstrained fn setup() -> AztecAddress {\n let env = TestEnvironment::new();\n env.contract_address()\n }\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let contract_address = setup();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let contract_address = setup();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let contract_address = setup();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let contract_address = setup();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let contract_address = setup();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let contract_address = setup();\n\n copy(contract_address, SLOT, SLOT, 1);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(utilityGetContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(utilityGetBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(utilityGetTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(utilityGetChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(utilityGetVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" }, "159": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(notifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", + "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(privateStoreInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(privateLoadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" }, "16": { "path": "std/embedded_curve_ops.nr", - "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2)[0]\n}\n" + "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars, true)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n _predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2, true)[0]\n}\n" }, "160": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", + "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(utilityGetContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" }, - "161": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", - "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(storeInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(loadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" + "164": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", + "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(utilityGetPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" }, - "162": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", - "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" + "165": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", + "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(utilityGetKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" }, "166": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", - "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" - }, - "167": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", - "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(utilityGetPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" }, "168": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", - "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", + "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(utilityFetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(utilityValidateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(utilityBulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" }, "17": { "path": "std/field/bn254.nr", "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n" }, "170": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", - "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(fetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(validateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(bulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", + "source": "use crate::note::{note_interface::NoteType, retrieved_note::RetrievedNote};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(privateNotifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(privateNotifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(privateNotifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(utilityGetNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to as Packable>::N. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; as Packable>::N], MaxNotes>\nwhere\n // TODO(https://github.com/noir-lang/noir/issues/9399): `Note: Packable` should work here.\n RetrievedNote: Packable,\n{}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MaxNotes]\nwhere\n Note: NoteType + Packable,\n{\n let packed_retrieved_notes: BoundedVec<[Field; as Packable>::N], MaxNotes>\n = get_notes_oracle::(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MaxNotes,\n as Packable>::N,\n );\n\n let mut notes = BoundedVec::<_, MaxNotes>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = RetrievedNote::unpack(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MaxNotes];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(utilityCheckNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n// TODO: Oracles below are generic private log oracles and are not specific to notes. Move them somewhere else.\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(utilityGetIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(privateIncrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Gets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// The value persists through nested calls, meaning all calls down the stack will use the same\n/// 'senderForTags' value (unless it is replaced).\npub unconstrained fn get_sender_for_tags() -> Option {\n get_sender_for_tags_oracle()\n}\n\n#[oracle(privateGetSenderForTags)]\nunconstrained fn get_sender_for_tags_oracle() -> Option {}\n\n/// Sets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// Account contracts typically set this value before calling other contracts. The value persists\n/// through nested calls, meaning all calls down the stack will use the same 'senderForTags'\n/// value (unless it is replaced by another call to this setter).\npub unconstrained fn set_sender_for_tags(sender_for_tags: AztecAddress) {\n set_sender_for_tags_oracle(sender_for_tags);\n}\n\n#[oracle(privateSetSenderForTags)]\nunconstrained fn set_sender_for_tags_oracle(_sender_for_tags: AztecAddress) {}\n" }, "172": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", - "source": "use crate::note::{\n note_interface::NoteType,\n retrieved_note::{RETRIEVED_NOTE_OVERHEAD, RetrievedNote, unpack_retrieved_note},\n};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(notifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> {}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MAX_NOTES]\nwhere\n Note: NoteType + Packable,\n{\n // N + 3 because of the contract address, note nonce, and note_hash_counter that are stored out of the packed note.\n let packed_retrieved_notes: BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> = get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MAX_NOTES,\n NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD,\n );\n\n let mut notes = BoundedVec::<_, MAX_NOTES>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = unpack_retrieved_note(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MAX_NOTES];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", + "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(utilityGetRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" }, - "174": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", - "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" + "173": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", + "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(utilityGetSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" }, "175": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", - "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(getSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", + "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(utilityStorageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" }, - "177": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", - "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" + "176": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/version.nr", + "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called and\n/// if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 1;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(utilityAssertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. PXE is using version '1', but got a request for '318183437'.\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n" }, "179": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", - "source": "use crate::state_vars::storage::Storage;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because nothing is stored at said slot: it is only\n// used to derive the storage slots of nested state variables, which is expected to never result in collisions or slots\n// being close to one another due to these being hashes. This mirrors the strategy adopted by Solidity mappings.\nimpl Storage<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/delayed_public_mutable.nr", + "source": "use dep::protocol_types::{\n delayed_public_mutable::{\n delayed_public_mutable_values::{unpack_delay_change, unpack_value_change},\n DelayedPublicMutableValues,\n ScheduledDelayChange,\n ScheduledValueChange,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::HasStorageSlot,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct DelayedPublicMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl HasStorageSlot for DelayedPublicMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// DelayedPublicMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. DelayedPublicMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to InitialDelay, but can be changed by calling\n// `schedule_delay_change`.\nimpl DelayedPublicMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(self, new_value: T) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::::N>(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`DelayedPublicMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private delayed public mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(DelayedPublicMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let time_horizon =\n value_change.get_time_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the time horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(time_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: DelayedPublicMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let dpmv: DelayedPublicMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n dpmv.svc.get_current_at(current_timestamp)\n }\n}\n" }, "18": { "path": "std/field/mod.nr", - "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" + "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" }, - "181": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", - "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl Storage<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" + "180": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", + "source": "use crate::state_vars::storage::HasStorageSlot;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n/// Map\n///\n/// A key-value storage container that maps keys to state variables, similar\n/// to Solidity mappings.\n///\n/// `Map` enables you to associate keys (like addresses or other identifiers)\n/// with state variables in your Aztec smart contract. This is conceptually\n/// similar to Solidity's `mapping(K => V)` syntax, where you can store and\n/// retrieve values by their associated keys.\n///\n/// You can declare a state variable contained within a Map in your contract's\n/// #[storage] struct.\n///\n/// For example, you might use\n/// `Map, Context>` to track\n/// token balances for different users, similar to how you'd use\n/// `mapping(address => uint256)` in Solidity.\n///\n/// > Aside: the verbose `Context` in the declaration is a consequence of\n/// > leveraging Noir's regular syntax for generics to ensure that certain\n/// > state variable methods can only be called in some contexts (private,\n/// > public, utility).\n///\n/// The methods of Map are:\n/// - `at` (access state variable for a given key)\n/// (see the method's own doc comments for more info).\n///\n/// ## Generic Parameters\n/// - `K`: The key type (must implement `ToField` trait for hashing)\n/// - `V`: The value type:\n/// - any Aztec state variable:\n/// - `PublicMutable`\n/// - `PublicImmutable`\n/// - `PrivateMutable`\n/// - `PrivateImmutable`\n/// - `PrivateSet`\n/// - `DelayedPublicMutable`\n/// - `Map`\n/// - `Context`: The execution context (handles private/public function\n/// contexts)\n///\n/// ## Usage\n/// Maps are typically declared in your contract's #[storage] struct and\n/// accessed\n/// using the `at(key)` method to get the state variable for a specific key.\n/// The resulting state variable can then be read from or written to using its\n/// own methods.\n///\n/// ## Advanced\n/// Internally, `Map` uses a single base storage slot to represent the\n/// mapping\n/// itself, similar to Solidity's approach. Individual key-value pairs are\n/// stored at derived storage slots computed by hashing the base storage\n/// slot\n/// with the key using Poseidon2. This ensures:\n/// - No storage slot collisions between different keys\n/// - Uniform distribution of storage slots across the storage space\n/// - Compatibility with Aztec's storage tree structure\n/// - Gas-efficient storage access patterns similar to Solidity mappings\n///\n/// The storage slot derivation uses `derive_storage_slot_in_map(base_slot,\n/// key)` which computes `poseidon2_hash([base_slot, key.to_field()])`,\n/// ensuring cryptographically secure slot separation.\n///\n/// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because\n// nothing is stored at said slot: it is only used to derive the storage slots\n// of nested state variables, which is expected to never result in collisions\n// or slots being close to one another due to these being hashes. This mirrors\n// the strategy adopted by Solidity mappings.\nimpl HasStorageSlot<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n /// Initializes a new Map state variable.\n ///\n /// This function is usually automatically called within the #[storage]\n /// macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`.\n /// The Context determines which methods of this struct will\n /// be made available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this Map within the contract.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart\n /// contract dev shouldn't have to worry about this, as\n /// it's managed behind the scenes.\n /// * `state_var_constructor` - A function that creates the value type (V)\n /// given a context and storage slot. This is\n /// typically the constructor of the state\n /// variable type being stored in the Map.\n ///\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n /// Returns the state variable associated with the given key.\n ///\n /// This is equivalent to accessing `mapping[key]` in Solidity. It returns\n /// the state variable instance for the specified key, which can then be\n /// used to read or write the value at that key.\n ///\n /// Unlike Solidity mappings which return the value directly, this returns\n /// the state variable wrapper (like PrivateMutable, PublicMutable, etc.)\n /// that you then call methods on to interact with the actual value.\n ///\n /// # Arguments\n ///\n /// * `key` - The key to look up in the map. Must implement the ToField\n /// trait (which most basic Noir & Aztec types do).\n ///\n /// # Returns\n ///\n /// * `V` - The state variable instance for this key. You can then call\n /// methods like `.read()`, `.write()`, `.get_note()`, etc. on this\n /// depending on the specific state variable type.\n ///\n /// # Example\n ///\n /// ```noir\n /// // Get a user's balance (assuming PrivateMutable)\n /// let user_balance = storage.balances.at(user_address);\n /// let current_note = user_balance.get_note();\n ///\n /// // Update the balance\n /// user_balance.replace(new_note);\n /// ```\n ///\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" }, - "190": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable.nr", - "source": "use dep::protocol_types::{\n shared_mutable::{\n ScheduledDelayChange,\n ScheduledValueChange,\n shared_mutable_values::{unpack_delay_change, unpack_value_change},\n SharedMutableValues,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::Storage,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct SharedMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl Storage for SharedMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// SharedMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl SharedMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(\n self,\n new_value: T,\n ) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`SharedMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private shared mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(SharedMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let timestamp_horizon =\n value_change.get_timestamp_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the timestamp horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(timestamp_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: SharedMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let smv: SharedMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n smv.svc.get_current_at(current_timestamp)\n }\n}\n" + "182": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", + "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::HasStorageSlot;\n\n/// PrivateImmutable\n///\n/// PrivateImmutable is a private state variable type for values that are set once\n/// and remain permanently unchanged.\n///\n/// You can declare a state variable of type PrivateImmutable within your contract's\n/// #[storage] struct:\n///\n/// E.g.:\n/// `your_variable: PrivateImmutable`\n///\n/// The value is represented as a single note that persists for the lifetime of\n/// the state variable. Once initialized, this note is never nullified or replaced\n/// through the state variable interface - it can only be read.\n///\n/// The PrivateImmutable type facilitates: inserting the permanent note during\n/// initialization, and reading that note.\n///\n/// The methods of PrivateImmutable are:\n/// - `initialize`\n/// - `get_note`\n/// (see the methods' own doc comments for more info).\n///\n/// ## Example.\n///\n/// A contract's configuration parameters can be represented as a PrivateImmutable.\n/// Once set during contract deployment or initial setup, these parameters remain\n/// constant for the lifetime of the contract.\n///\n/// ## Privacy\n///\n/// PrivateImmutable has the same privacy properties as PrivateMutable (see\n/// PrivateMutable documentation), including the same privacy considerations\n/// regarding the initialization nullifier potentially leaking information about\n/// which storage slot was initialized.\n///\n/// # Generic Parameters:\n///\n/// * `Note` - A single note of this type will represent the PrivateImmutable's\n/// value at the given storage_slot.\n/// * `Context` - The execution context (PrivateContext or UtilityContext).\n///\n/// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl HasStorageSlot<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a new PrivateImmutable state variable.\n ///\n /// This function is usually automatically called within the #[storage] macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`. The\n /// Context determines which methods of this struct will be made\n /// available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this state variable within the\n /// contract. The permanent note for this PrivateImmutable\n /// state variable will have this `storage_slot`.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart contract\n /// dev shouldn't have to worry about this, as it's managed\n /// behind the scenes.\n ///\n /// docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n /// Computes the nullifier that will be created when this PrivateImmutable is\n /// initialized.\n ///\n /// This function is primarily used internally by the `initialize` method, but\n /// may also be useful for contracts that need to check if a PrivateImmutable\n /// has been initialized.\n ///\n /// **IMPORTANT PRIVACY CONSIDERATION:**\n /// This computation has the same privacy implications as PrivateMutable's\n /// initialization nullifier (see PrivateMutable documentation for detailed\n /// explanation). The initialization nullifier can leak information about which\n /// storage slot was initialized.\n ///\n /// See https://github.com/AztecProtocol/aztec-packages/issues/15568 for ideas to\n /// improve this privacy footgun in future.\n ///\n /// # Returns\n ///\n /// * `Field` - The nullifier that will be emitted when this PrivateImmutable is\n /// initialized.\n ///\n /// # Advanced\n ///\n /// The computation uses the Poseidon2 hash function with a specific generator\n /// index to hash the storage slot, creating a deterministic nullifier based on\n /// the storage location.\n ///\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a PrivateImmutable state variable instance with a permanent note.\n ///\n /// This function inserts the single, permanent note for this state variable. It can\n /// only be called once per PrivateImmutable. Subsequent calls will fail because\n /// the initialization nullifier will already exist.\n ///\n /// Unlike PrivateMutable, this note will never be nullified or replaced through\n /// the state variable interface - it persists for the lifetime of the state variable.\n ///\n /// # Arguments\n ///\n /// * `note` - The permanent note to store in this PrivateImmutable. This note\n /// contains the unchanging value of the state variable.\n ///\n /// # Returns\n ///\n /// * `NoteEmission` - A type-safe wrapper that requires you to decide\n /// whether to encrypt and send the note to someone.\n /// You can call `.emit()` on it to encrypt and log\n /// the note, or `.discard()` to skip emission.\n /// See NoteEmission for more details.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Creates and emits an initialization nullifier to mark this storage slot\n /// as initialized. This prevents double-initialization.\n /// - Inserts the provided note into the protocol's Note Hash Tree.\n /// - Returns a NoteEmission type that allows the caller to decide how to encrypt\n /// and deliver the note to its intended recipient.\n ///\n /// The initialization nullifier is deterministically computed from the storage\n /// slot and can leak privacy information (see `compute_initialization_nullifier`\n /// documentation).\n ///\n /// docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n /// Reads the permanent note of a PrivateImmutable state variable instance.\n ///\n /// If this PrivateImmutable state variable has not yet been initialized,\n /// no note will exist: the call will fail and the transaction will not\n /// be provable.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Retrieves the note from the PXE via an oracle call\n /// - Validates that the note exists and belongs to this contract address and\n /// storage slot by pushing a read request to the context\n /// - Returns the note content directly without nullification\n ///\n /// Since the note is immutable, there's no risk of reading stale data or\n /// race conditions - the note never changes after initialization.\n ///\n /// docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n /// Checks whether this PrivateImmutable has been initialized.\n ///\n /// # Returns\n ///\n /// * `bool` - `true` if the PrivateImmutable has been initialized (the initialization\n /// nullifier exists), `false` otherwise.\n ///\n /// docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n /// Returns the permanent note in this PrivateImmutable without consuming it.\n ///\n /// This function is only available in a UtilityContext (unconstrained environment)\n /// and is typically used for off-chain queries, view functions, or testing.\n ///\n /// Unlike the constrained `get_note()`, this function does not push read requests\n /// or perform validation. It simply reads the note from the PXE's database.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::::N>::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" }, - "202": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", - "source": "/// Appends two `BoundedVec`s together, returning one that contains all of the elements of the first one followed by all\n/// of the elements of the second one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" - }, - "205": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", - "source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(\n src: [T; SRC_LEN],\n offset: u32,\n) -> [T; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"DST_LEN too large for offset\");\n\n let mut dst: [T; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + "19": { + "path": "std/hash/mod.nr", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{\n if crate::runtime::is_unconstrained() {\n // Temporary measure while Barretenberg is main proving system.\n // Please open an issue if you're working on another proving system and running into problems due to this.\n crate::static_assert(\n N <= 1024,\n \"Barretenberg cannot prove blake3 hashes with inputs larger than 1024 bytes\",\n );\n }\n __blake3(input)\n}\n\n#[foreign(blake3)]\nfn __blake3(input: [u8; N]) -> [u8; 32] {}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars, true)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn poseidon2_permutation(input: [Field; N], state_len: u32) -> [Field; N] {\n assert_eq(input.len(), state_len);\n poseidon2_permutation_internal(input)\n}\n\n#[foreign(poseidon2_permutation)]\nfn poseidon2_permutation_internal(input: [Field; N]) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n type H = H;\n\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u8 as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u16 as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u32 as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u64 as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n" }, "206": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", - "source": "use crate::utils::array;\n\n/// Returns `DST_MAX_LEN` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DST_LEN` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DST_LEN` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", + "source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" + }, + "209": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", + "source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + }, + "210": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", + "source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" }, - "208": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", + "212": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" }, - "209": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", + "213": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" }, - "211": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", + "215": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", "source": "use std::option::Option;\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\npub unconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\n// Returns (false, 0) if there is no square root.\n// Returns (true, sqrt) if there is a square root.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nfn test_sqrt() {\n let x = 9;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_some());\n let sqrt = maybe_sqrt.unwrap_unchecked();\n assert((sqrt == 3) | (sqrt == -3));\n}\n\n#[test]\nfn test_non_square() {\n let x = 5;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_none());\n}\n\n#[test]\nunconstrained fn test_known_non_residue_is_actually_a_non_residue_in_the_field() {\n assert(!is_square(KNOWN_NON_RESIDUE));\n}\n\n#[test]\nfn test_sqrt_0() {\n let x = 0;\n let sqrt = sqrt(x).unwrap();\n assert(sqrt == 0);\n}\n\n#[test]\nfn test_sqrt_1() {\n let x = 1;\n let sqrt = sqrt(x).unwrap();\n assert((sqrt == 1) | (sqrt == -1));\n}\n\n#[test(should_fail_with = \"The claimed_sqrt 0x04 is not the sqrt of x 0x09\")]\nfn test_bad_sqrt_hint_fails() {\n validate_sqrt_hint(9, 4);\n}\n\n#[test(should_fail_with = \"The hint 0x04 does not demonstrate that 0x0a is not a square\")]\nfn test_bad_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(10, 4);\n}\n\n#[test(should_fail_with = \"0 has a square root; you cannot claim it is not square\")]\nfn test_0_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test]\nunconstrained fn test_is_square() {\n assert(is_square(25));\n}\n\n#[test]\nunconstrained fn test_is_not_square() {\n assert(!is_square(10));\n}\n" }, - "213": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", + "217": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", "source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\n/// Uses the x coordinate and sign flag (+/-) to reconstruct the point.\n/// The y coordinate can be derived from the x coordinate and the \"sign\" flag by solving the grumpkin curve\n/// equation for y.\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n\n // If y > MOD_DIV_2 and we want positive sign (or vice versa), negate y\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n\n Point { x, y: final_y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign);\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2);\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n}\n" }, - "214": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", + "218": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" }, - "218": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", - "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `N` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `N`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; N],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + N as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n for i in 0..N {\n result[i] = self.packed[i];\n }\n result[N] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; N + 1]) -> Self {\n let mut value_packed: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_packed[i] = packed[i];\n }\n let hash = packed[N];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n oracle::random::random,\n test::{\n helpers::{cheatcodes, test_environment::TestEnvironment},\n mocks::mock_struct::MockStruct,\n },\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::{mem, test::OracleMock};\n\n global storage_slot: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n let result = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n\n // We should get zeroed value\n let expected: MockStruct = mem::zeroed();\n assert_eq(result, expected);\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n // We write the value with hash to storage\n cheatcodes::direct_storage_write(\n env.contract_address(),\n storage_slot,\n value_with_hash.pack(),\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let result = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n\n assert_eq(result, value);\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn test_bad_hint_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n env.advance_block_to(6);\n\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let _ = OracleMock::mock(\"storageRead\")\n .with_params((\n address.to_field(), storage_slot, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should revert because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn test_bad_hint_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value_packed = MockStruct { a: 5, b: 3 }.pack();\n\n // We write the value to storage\n cheatcodes::direct_storage_write(env.contract_address(), storage_slot, value_packed);\n\n // Now we write incorrect hash to the hash storage slot\n let incorrect_hash = random();\n let hash_storage_slot = storage_slot + (value_packed.len() as Field);\n cheatcodes::direct_storage_write(\n env.contract_address(),\n hash_storage_slot,\n [incorrect_hash],\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let _ = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n }\n}\n" + "222": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", + "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `M` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `M`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; M],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + M as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\n// Note: I don't derive Packable on `WithHash` because `derive_serialize` function does not support setting \"N = M\"\n// as I do here 3 lines below. This could be worked around by placing the \"where\" clause directly on the `WithHash`\n// struct, but Jake mentioned that the syntax is not expected to be supported at least until Noir 1.0.\n// Relevant discussion on Slack:\n// https://aztecprotocol.slack.com/archives/C04QF64EDNV/p1752593876160699?thread_ts=1752589887.955379&cid=C04QF64EDNV\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n let N: u32 = M + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n result[i] = self.packed[i];\n }\n result[M] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n let mut value_packed = [0; M];\n for i in 0..M {\n value_packed[i] = packed[i];\n }\n let hash = packed[M];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::test::OracleMock;\n\n global STORAGE_SLOT: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n\n assert_eq(result, std::mem::zeroed());\n });\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n env.public_context(|context| { context.storage_write(STORAGE_SLOT, value_with_hash); });\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n assert_eq(result, value);\n });\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn bad_hint_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let block_header = context.historical_header;\n let address = context.this_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n let _ = OracleMock::mock(\"utilityStorageRead\")\n .with_params((\n address.to_field(), STORAGE_SLOT, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should fail because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n STORAGE_SLOT,\n );\n });\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn bad_hint_initialized_value() {\n let env = TestEnvironment::new();\n\n env.public_context(|context| {\n // Write the value and hash separately so that the hash is wrong\n let value = MockStruct { a: 5, b: 3 };\n context.storage_write(STORAGE_SLOT, value);\n\n let incorrect_hash = 13;\n let hash_storage_slot = STORAGE_SLOT + (value.pack().len() as Field);\n context.storage_write(hash_storage_slot, [incorrect_hash]);\n });\n\n env.private_context(|context| {\n let _ = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n });\n }\n}\n" }, - "225": { + "229": { "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" }, - "243": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", - "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\n\npub struct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n pub inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" + "248": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", + "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\nuse std::meta::derive;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct FunctionSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n pub inner: u32,\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" }, - "286": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", - "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n" + "294": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", + "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n" }, "3": { "path": "std/array/mod.nr", "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" }, - "301": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", + "308": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Empty, Hash},\n};\n\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Eq for PublicDataTreeLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.slot == other.slot)\n & (self.value == other.value)\n & (self.next_slot == other.next_slot)\n & (self.next_index == other.next_index)\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: u32) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" }, - "303": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", - "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" + "310": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", + "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" }, - "304": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", - "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::{arrays::array_concat, field::{field_from_bytes, field_from_bytes_32_trunc}},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a u128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" + "312": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr", + "source": "use crate::{\n delayed_public_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n hash::poseidon2_hash,\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// DelayedPublicMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct DelayedPublicMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl DelayedPublicMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n DelayedPublicMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * M + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, M + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n let N: u32 = 2 * ::N + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result = [0; Self::N];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..::N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + ::N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" }, - "305": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", - "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" + "315": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_delay_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_time_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading delayed mutable state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" }, - "314": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", - "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" + "317": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'time horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the time horizon (see `get_time_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the time horizon\n /// computed using the same historical timestamp.\n pub fn get_time_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The time horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the time horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the time horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our time horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp time horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the time horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp time horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical time horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" }, - "318": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", - "source": "use super::traits::{Deserialize, Packable, Serialize};\n\n/// Returns the typed expression of a trait method implementation.\n///\n/// This helper function is preferred over directly inlining with `$typ::target_method()` in a quote,\n/// as direct inlining would result in missing import warnings in the generated code (specifically,\n/// warnings that the trait implementation is not in scope).\n///\n/// # Note\n/// A copy of this function exists in `aztec-nr/aztec/src/macros/utils.nr`. We maintain separate copies\n/// because importing it there from here would cause the `target_trait` to be interpreted in the context\n/// of this crate, making it impossible to compile code for traits from that crate (e.g. NoteType).\ncomptime fn get_trait_impl_method(\n typ: Type,\n target_trait: Quoted,\n target_method: Quoted,\n) -> TypedExpr {\n let trait_constraint = target_trait.as_trait_constraint();\n typ\n .get_trait_impl(trait_constraint)\n .expect(f\"Could not find impl for {target_trait} for type {typ}\")\n .methods()\n .filter(|m| m.name() == target_method)[0]\n .as_typed_expr()\n}\n\n/// Generates code that deserializes a struct, primitive type, array or string from a field array.\n///\n/// # Parameters\n/// - `name`: The name of the current field being processed, used to identify fields for replacement.\n/// - `typ`: The type of the struct or field being deserialized (e.g., a custom struct, array, or primitive).\n/// - `field_array_name`: The name of the field array containing serialized field data (e.g., `\"values\"`).\n/// - `num_already_consumed`: The number of fields already processed in previous recursion calls.\n/// - `should_unpack`: A boolean indicating whether the type should be unpacked (see description of `Packable`\n/// and `Serialize` trait for more information about the difference between packing and serialization).\n///\n/// # Returns\n/// A tuple containing:\n/// - `Quoted`: A code that deserializes a given struct, primitive type, array, or string from the field array.\n/// - `u32`: The total number of fields consumed during deserialization (used for recursion).\n///\n/// # Nested Struct Example\n/// Given the following setup:\n/// ```\n/// struct UintNote {\n/// value: u128,\n/// owner: AztecAddress,\n/// randomness: Field,\n/// }\n///\n/// struct AztecAddress {\n/// inner: Field,\n/// }\n/// ```\n///\n/// If `UintNote` is the input type, the function will generate the following deserialization code:\n/// ```\n/// UintNote {\n/// value: fields[0] as u128,\n/// owner: AztecAddress {\n/// inner: fields[1],\n/// },\n/// randomness: fields[2],\n/// }\n/// ```\n/// # Nested Struct Example with Unpacking\n/// - given the same setup as above and given that u128, AztecAddress and Field implement the `Packable` trait\n/// the result we get is:\n/// ```\n/// UintNote {\n/// value: aztec::protocol_types::traits::Packable::unpack([fields[0]]),\n/// owner: aztec::protocol_types::traits::Packable::unpack([fields[1]]),\n/// randomness: aztec::protocol_types::traits::Packable::unpack([fields[2]]),\n/// }\n/// ```\n///\n/// # Panics\n/// - If the deserialization logic encounters a type it does not support.\n/// - If an incorrect number of fields are consumed when deserializing a string.\npub comptime fn generate_deserialize_from_fields(\n name: Quoted,\n typ: Type,\n field_array_name: Quoted,\n num_already_consumed: u32,\n should_unpack: bool,\n) -> (Quoted, u32) {\n let mut result = quote {};\n // Counter for the number of fields consumed\n let mut consumed_counter: u32 = 0;\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint = quote { Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_unpack & typ.implements(packable_constraint)) {\n // Unpacking is enabled and the given type implements the `Packable` trait so we call the `unpack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We copy the packed fields into a new array and pass that to the unpack function in a quote\n let mut packed_fields_quotes = &[];\n for i in 0..packed_len {\n let index_in_field_array = i + num_already_consumed;\n packed_fields_quotes =\n packed_fields_quotes.push_back(quote { $field_array_name[$index_in_field_array] });\n }\n let packed_fields = packed_fields_quotes.join(quote {,});\n\n // Now we call unpack on the type\n let unpack_method = get_trait_impl_method(typ, quote { Packable<_> }, quote { unpack });\n result = quote { $unpack_method([ $packed_fields ]) };\n\n consumed_counter = packed_len;\n } else if typ.is_bool() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] != 0 };\n consumed_counter = 1;\n } else if typ.is_field() | typ.as_integer().is_some() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] as $typ };\n consumed_counter = 1;\n } else if typ.as_data_type().is_some() {\n // The field is a struct so we iterate over each struct field and recursively call\n // `generate_deserialize_from_fields`\n let (nested_def, generics) = typ.as_data_type().unwrap();\n let nested_name = nested_def.name();\n let mut deserialized_fields_list = &[];\n\n // Iterate over each field in the struct\n for field in nested_def.fields(generics) {\n let (field_name, field_type, _) = field;\n // Recursively call `generate_deserialize_from_fields` for each field in the struct\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n field_name,\n field_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `value: u128 { lo: fields[0], hi: fields[1] }`\n deserialized_fields_list =\n deserialized_fields_list.push_back(quote { $field_name: $deserialized_field });\n }\n\n // We can construct the struct from the deserialized fields\n let deserialized_fields = deserialized_fields_list.join(quote {,});\n result = quote {\n $nested_name {\n $deserialized_fields\n }\n };\n } else if typ.as_array().is_some() {\n // The field is an array so we iterate over each element and recursively call\n // `generate_deserialize_from_fields`\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n let mut array_fields_list = &[];\n\n // Iterate over each element in the array\n for _ in 0..array_len {\n // Recursively call `generate_deserialize_from_fields` for each element in the array\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n element_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n array_fields_list = array_fields_list.push_back(deserialized_field);\n }\n\n // We can construct the array from the deserialized fields\n let array_fields = array_fields_list.join(quote {,});\n result = quote { [ $array_fields ] };\n } else if typ.as_str().is_some() {\n // The field is a string and we expect each byte of the string to be represented as 1 field in the field\n // array. So we iterate over the string length and deserialize each character as u8 in the recursive call\n // to `generate_deserialize_from_fields`.\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let mut byte_list = &[];\n\n // Iterate over each character in the string\n for _ in 0..str_len {\n // Recursively call `generate_deserialize_from_fields` for each character in the string\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n quote {u8}.as_type(),\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n\n // We should consume just one field in the recursion so we sanity check that\n assert_eq(\n num_consumed_in_recursion,\n 1,\n \"Incorrect number of fields consumed in string deserialization\",\n );\n\n // We increment the consumed counter by 1 as we have consumed one field\n consumed_counter += 1;\n\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `fields[6] as u8`\n byte_list = byte_list.push_back(deserialized_field);\n }\n\n // We construct the string from the deserialized fields\n let bytes = byte_list.join(quote {,});\n result = quote { [ $bytes ].as_str_unchecked() };\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (result, consumed_counter)\n}\n\n/// Generates code that serializes a type into an array of fields. Also generates auxiliary variables if necessary\n/// for serialization. If `should_pack` is true, we check if the type implements the `Packable` trait and pack it\n/// if it does.\n///\n/// # Parameters\n/// - `name`: The base identifier (e.g., `self`, `some_var`).\n/// - `typ`: The type being serialized (e.g., a custom struct, array, or primitive type).\n/// - `should_pack`: A boolean indicating whether the type should be packed.\n///\n/// # Returns\n/// A tuple containing:\n/// - A flattened array of `Quoted` field references representing the serialized fields.\n/// - An array of `Quoted` auxiliary variables needed for serialization, such as byte arrays for strings.\n///\n/// # Examples\n///\n/// ## Struct\n/// Given the following struct:\n/// ```rust\n/// struct MockStruct {\n/// a: Field,\n/// b: Field,\n/// }\n/// ```\n///\n/// Serializing the struct:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_mock_struct }, MockStruct, false)\n/// // Returns:\n/// // ([`my_mock_struct.a`, `my_mock_struct.b`], [])\n/// ```\n///\n/// ## Nested Struct\n/// For a more complex struct:\n/// ```rust\n/// struct NestedStruct {\n/// m1: MockStruct,\n/// m2: MockStruct,\n/// }\n/// ```\n///\n/// Serialization output:\n/// ```rust\n/// generate_serialize_to_fields(quote { self }, NestedStruct, false)\n/// // Returns:\n/// // ([`self.m1.a`, `self.m1.b`, `self.m2.a`, `self.m2.b`], [])\n/// ```\n///\n/// ## Array\n/// For an array type:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_array }, [Field; 3], false)\n/// // Returns:\n/// // ([`my_array[0]`, `my_array[1]`, `my_array[2]`], [])\n/// ```\n///\n/// ## String\n/// For a string field, where each character is serialized as a `Field`:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_string }, StringType, false)\n/// // Returns:\n/// // ([`my_string_as_bytes[0] as Field`, `my_string_as_bytes[1] as Field`, ...],\n/// // [`let my_string_as_bytes = my_string.as_bytes()`])\n/// ```\n///\n/// ## Nested Struct with packing enabled\n/// - u128 has a `Packable` implementation hence it will be packed.\n///\n/// For a more complex struct:\n/// ```rust\n/// struct MyStruct {\n/// value: u128,\n/// value2: Field,\n/// }\n/// ```\n///\n/// # Panics\n/// - If the type is unsupported for serialization.\n/// - If the provided `typ` contains invalid constants or incompatible structures.\npub comptime fn generate_serialize_to_fields(\n name: Quoted,\n typ: Type,\n should_pack: bool,\n) -> ([Quoted], [Quoted]) {\n let mut fields = &[];\n let mut aux_vars = &[];\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint =\n quote { crate::traits::Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_pack & typ.implements(packable_constraint)) {\n // Packing is enabled and the given type implements the `Packable` trait so we call the `pack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We collapse the name to a one that gets tokenized as a single token (e.g. \"self.value\" -> \"self_value\").\n let name_at_one_token = collapse_to_one_token(name);\n let packed_struct_name = f\"{name_at_one_token}_aux_var\".quoted_contents();\n\n // We add the individual fields to the fields array\n let pack_method = get_trait_impl_method(\n typ,\n quote { crate::traits::Packable<$packed_len> },\n quote { pack },\n );\n let packed_struct = quote { let $packed_struct_name = $pack_method($name) };\n for i in 0..packed_len {\n fields = fields.push_back(quote { $packed_struct_name[$i] });\n }\n\n // We add the new auxiliary variable to the aux_vars array\n aux_vars = aux_vars.push_back(packed_struct);\n } else if typ.is_field() {\n // For field we just add the value to fields\n fields = fields.push_back(name);\n } else if typ.as_integer().is_some() | typ.is_bool() {\n // For integer and bool we just cast to Field and add the value to fields\n fields = fields.push_back(quote { $name as Field });\n } else if typ.as_data_type().is_some() {\n // For struct we pref\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n let struct_flattened = params.map(|(param_name, param_type, _)| {\n let maybe_prefixed_name = if name == quote {} {\n // Triggered when the param name is of a value available in the current scope (e.g. a function\n // argument) --> then we don't prefix the name with anything.\n param_name\n } else {\n // Triggered when we want to prefix the param name with the `name` from function input. This\n // can typically be `self` when implementing a method on a struct.\n quote { $name.$param_name }\n };\n generate_serialize_to_fields(quote {$maybe_prefixed_name}, param_type, should_pack)\n });\n let struct_flattened_fields = struct_flattened.fold(\n &[],\n |acc: [Quoted], (fields, _): (_, [Quoted])| acc.append(fields),\n );\n let struct_flattened_aux_vars = struct_flattened.fold(\n &[],\n |acc: [Quoted], (_, aux_vars): ([Quoted], _)| acc.append(aux_vars),\n );\n fields = fields.append(struct_flattened_fields);\n aux_vars = aux_vars.append(struct_flattened_aux_vars);\n } else if typ.as_array().is_some() {\n // For array we recursively call `generate_serialize_to_fields(...)` for each element\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n for i in 0..array_len {\n let (element_fields, element_aux_vars) =\n generate_serialize_to_fields(quote { $name[$i] }, element_type, should_pack);\n fields = fields.append(element_fields);\n aux_vars = aux_vars.append(element_aux_vars);\n }\n } else if typ.as_str().is_some() {\n // For string we convert the value to bytes, we store the `as_bytes` in an auxiliary variables and\n // then we add each byte to fields as a Field\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let as_member = name.as_expr().unwrap().as_member_access();\n let var_name = if as_member.is_some() {\n as_member.unwrap().1\n } else {\n name\n };\n let as_bytes_name = f\"{var_name}_as_bytes\".quoted_contents();\n let as_bytes = quote { let $as_bytes_name = $name.as_bytes() };\n for i in 0..str_len {\n fields = fields.push_back(quote { $as_bytes_name[$i] as Field });\n }\n aux_vars = aux_vars.push_back(as_bytes);\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (fields, aux_vars)\n}\n\n/// From a quote that gets tokenized to a multiple tokens we collapse it to a single token by replacing all `.` with `_`.\n/// E.g. \"self.values[0]\" -> \"self_values_0_\"\ncomptime fn collapse_to_one_token(q: Quoted) -> Quoted {\n let tokens = q.tokens();\n\n let mut single_token = quote {};\n for token in tokens {\n let new_token = if ((token == quote {.}) | (token == quote {[}) | (token == quote {]})) {\n quote {_}\n } else {\n token\n };\n single_token = f\"{single_token}{new_token}\".quoted_contents();\n }\n single_token\n}\n\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, false);\n let aux_vars_for_serialization = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let field_serializations = fields.join(quote {,});\n let serialized_len = fields.len();\n let serialize_trait: TraitConstraint =\n quote { Serialize<$serialized_len> }.as_trait_constraint();\n quote {\n impl $serialize_trait for $typ {\n #[inline_always]\n fn serialize(self) -> [Field; $serialized_len] {\n $aux_vars_for_serialization\n [ $field_serializations ]\n }\n }\n }\n}\n\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, _) = generate_serialize_to_fields(quote { self }, typ, false);\n let serialized_len = fields.len();\n let (deserialized, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { serialized }, 0, false);\n quote {\n impl Deserialize<$serialized_len> for $typ {\n #[inline_always]\n fn deserialize(serialized: [Field; $serialized_len]) -> Self {\n $deserialized\n }\n }\n }\n}\n\n/// Generates `Packable` implementation for a given struct and returns the packed length.\n///\n/// Note: We are having this function separate from `derive_packable` because we use this in the note macros to get\n/// the packed length of a note as well as the `Packable` implementation. We need the length to be able to register\n/// the note in the global `NOTES` map. There the length is used to generate partial note helper functions.\npub comptime fn derive_packable_and_get_packed_len(s: TypeDefinition) -> (Quoted, u32) {\n let packing_enabled = true;\n\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, packing_enabled);\n let aux_vars_for_packing = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let (unpacked, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { packed }, 0, packing_enabled);\n\n let field_packings = fields.join(quote {,});\n let packed_len = fields.len();\n let packable_trait: TraitConstraint = quote { Packable<$packed_len> }.as_trait_constraint();\n (\n quote {\n impl $packable_trait for $typ {\n fn pack(self) -> [Field; $packed_len] {\n $aux_vars_for_packing\n [ $field_packings ]\n }\n\n fn unpack(packed: [Field; $packed_len]) -> Self {\n $unpacked\n }\n }\n },\n packed_len,\n )\n}\n\npub(crate) comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let (packable_impl, _) = derive_packable_and_get_packed_len(s);\n packable_impl\n}\n\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct Smol {\n a: Field,\n b: Field,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct HasArray {\n a: [Field; 2],\n b: bool,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n}\n\nfn main() {\n assert(false);\n}\n\n#[test]\nfn smol_test() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n}\n\n#[test]\nfn has_array_test() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n}\n\n#[test]\nfn fancier_test() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n}\n" + "319": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", + "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n // Q: shouldn't we be checking whether the _whole_ nullifier is empty?\n // A: We don't have to. The init and inner circuits add contract address to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n // Q: I don't understand this comment. We could still compute a siloed nullifier from a zero contract address.\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert_eq(input[in_len - remainder + i], 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" }, "320": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", - "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n fn pack(self) -> [Field; POINT_LENGTH] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; POINT_LENGTH]) -> Self {\n Self::deserialize(packed)\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", + "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" }, - "321": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", - "source": "use crate::constants::TWO_POW_64;\n\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" + "329": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", + "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" }, - "331": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", - "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] != 0,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] != 0,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] != 0,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] != 0,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n" + "333": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", + "source": "/// Generates the generic parameter declarations for a struct's trait implementation.\n///\n/// This function takes a struct type definition and generates the generic parameter declarations\n/// that go after the `impl` keyword. For example, given a struct with generics `N: u32` and `T`,\n/// it generates ``.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate generic declarations for\n///\n/// # Returns\n/// A quoted code block containing the generic parameter declarations, or an empty quote if the struct\n/// has no generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// This function generates:\n/// ```\n/// \n/// ```\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\n/// Generates the `where` clause for a trait implementation that constrains non-numeric generic type parameters.\n///\n/// This function takes a struct type definition and a trait name, and generates a `where` clause that\n/// requires all non-numeric generic type parameters to implement the specified trait.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the where clause for\n/// - `trait_name`: The name of the trait that non-numeric generic parameters must implement\n///\n/// # Returns\n/// A quoted code block containing the where clause, or an empty quote if the struct has no non-numeric\n/// generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// And trait name \"Serialize\", this function generates:\n/// ```\n/// where T: Serialize\n/// ```\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl Serialize for Log {\n/// let N: u32 = <[Field; N] as Serialize>::N + ::N;\n///\n/// #[inline_always]\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut result = [0; _];\n/// let mut offset = 0;\n///\n/// let serialized_member = Serialize::serialize(self.fields);\n/// let serialized_member_len = <[Field; N] as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// let serialized_member = Serialize::serialize(self.length);\n/// let serialized_member_len = ::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// result\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Serialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the serialized member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // For multiple struct members, generate serialization code that:\n // 1. Serializes each member\n // 2. Copies the serialized fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let serialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let serialized_member = $crate::traits::Serialize::serialize(self.$param_name);\n let serialized_member_len = <$param_type as $crate::traits::Serialize>::N;\n for i in 0..serialized_member_len {\n result[i + offset] = serialized_member[i];\n }\n offset += serialized_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; _];\n let mut offset = 0;\n\n $serialization_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Serialize::serialize(self.$param_name)\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = ::N + ::N;\n///\n/// fn deserialize(serialized: [Field; Self::N]) -> Self {\n/// let mut offset = 0;\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let x = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let y = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Deserialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as Deserialize>::N];\n for i in 0..<$param_type as Deserialize>::N {\n member_fields[i] = serialized[i + offset];\n }\n let $param_name = <$param_type as Deserialize>::deserialize(member_fields);\n offset += <$param_type as Deserialize>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Deserialize::deserialize(serialized) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Packable` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Packable` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Packable for MyStruct {\n/// let N: u32 = 2;\n///\n/// fn pack(self) -> [Field; 2] {\n/// let mut result: [Field; 2] = [0_Field; 2];\n/// let mut offset: u32 = 0_u32;\n/// let packed_member: [Field; 1] = self.x.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// let packed_member: [Field; 1] = self.y.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// result\n/// }\n///\n/// fn unpack(packed: [Field; 2]) -> Self {\n/// let mut offset: u32 = 0_u32;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let x: AztecAddress = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let y: Field = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// Self { x: x, y: y }\n/// }\n/// }\n/// ```\npub comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Packable` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_packable_clause = get_where_trait_clause(s, quote {Packable});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Packable>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the packed member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let pack_function_body = if params.len() > 1 {\n // For multiple struct members, generate packing code that:\n // 1. Packs each member\n // 2. Copies the packed fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let packing_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let packed_member = $crate::traits::Packable::pack(self.$param_name);\n let packed_member_len = <$param_type as $crate::traits::Packable>::N;\n for i in 0..packed_member_len {\n result[i + offset] = packed_member[i];\n }\n offset += packed_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; Self::N];\n let mut offset = 0;\n\n $packing_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Packable::pack(self.$param_name)\n }\n };\n\n // For structs containing a single member, we can enhance performance by directly unpacking the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let unpack_function_body = if params.len() > 1 {\n // For multiple struct members, generate unpacking code that:\n // 1. Unpacks each member\n // 2. Copies packed fields into member array at correct offset\n // 3. Updates offset for next member\n let unpacking_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as $crate::traits::Packable>::N];\n for i in 0..<$param_type as $crate::traits::Packable>::N {\n member_fields[i] = packed[i + offset];\n }\n let $param_name = <$param_type as $crate::traits::Packable>::unpack(member_fields);\n offset += <$param_type as $crate::traits::Packable>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n $unpacking_of_struct_members\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Packable::unpack(packed) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Packable for $typ\n $where_packable_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n $pack_function_body\n }\n\n #[inline_always]\n fn unpack(packed: [Field; Self::N]) -> Self {\n $unpack_function_body\n }\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Packable, Serialize};\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Smol {\n a: Field,\n b: Field,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct HasArray {\n a: [Field; 2],\n b: bool,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n }\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct HasArrayWithGenerics {\n pub fields: [T; N],\n pub length: u32,\n }\n\n #[test]\n fn serde_on_smol() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n }\n\n #[test]\n fn serde_on_has_array() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n }\n\n #[test]\n fn serde_on_fancier() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n }\n\n #[test]\n fn serde_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let serialized = struct_with_array_of_generics.serialize();\n assert(serialized == [1, 2, 3, 3], serialized);\n let deserialized = HasArrayWithGenerics::deserialize(serialized);\n assert(deserialized == struct_with_array_of_generics);\n }\n\n #[test]\n fn packable_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let packed = struct_with_array_of_generics.pack();\n assert(packed == [1, 2, 3, 3], packed);\n\n let unpacked = HasArrayWithGenerics::unpack(packed);\n assert(unpacked == struct_with_array_of_generics);\n }\n\n}\n" }, - "335": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_delay_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_timestamp_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading mutable shared state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" + "334": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", + "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn serialize(self: Self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n let N: u32 = POINT_LENGTH;\n\n fn pack(self) -> [Field; Self::N] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n Self::deserialize(packed)\n }\n}\n" }, - "337": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_value_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'timestamp horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the timestamp horizon (see `get_timestamp_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the timestamp horizon\n /// computed using the same historical timestamp.\n pub fn get_timestamp_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The timestamp horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the timestamp horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the timestamp horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our timestamp horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp timestamp horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the timestamp horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp timestamp horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical timestamp horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" + "335": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", + "source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" }, - "339": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr", - "source": "use crate::{\n hash::poseidon2_hash,\n shared_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// SharedMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct SharedMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl SharedMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n SharedMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * N + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, N + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable<2 * N + 1> for SharedMutableValues\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; 2 * N + 1] {\n let mut result = [0; 2 * N + 1];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; 2 * N + 1]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for SharedMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" + "345": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", + "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::{default::Default, meta::derive};\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nmod test {\n use crate::{\n point::POINT_LENGTH,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Serialize},\n };\n use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\n #[test]\n unconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n }\n\n #[test]\n unconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash =\n 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n }\n\n #[test]\n unconstrained fn serde() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n // We use the PUBLIC_KEYS_LENGTH constant to ensure that there is a match between the derived trait\n let serialized: [Field; POINT_LENGTH * 4] = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys, deserialized);\n }\n}\n" }, - "342": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", + "347": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" }, - "356": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", - "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n}\n\nimpl Empty for Option {\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Type Parameters\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// fn serialize(self) -> [Field; N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n #[inline_always]\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// T = type of item in BoundedVec\n// M = max length of BoundedVec\n// O = field length of T\n// O * M + 1 = total serialized length of BoundedVec (the +1 is for length of the BoundedVec)\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n #[inline_always]\n fn deserialize(fields: [Field; O * M + 1]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[O * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; O];\n for j in 0..O {\n nested_fields[j] = fields[i * O + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize<0> for () {\n fn deserialize(_fields: [Field; 0]) -> Self {\n ()\n }\n}\n\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n #[inline_always]\n fn serialize(self) -> [Field; O * M + 1] {\n let mut fields = [0; O * M + 1];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..O {\n fields[i * O + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[O * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Type Parameters\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// fn deserialize(fields: [Field; N]) -> Self {\n/// str::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n #[inline_always]\n fn deserialize(fields: [Field; N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Type Parameters\n/// * `N` - The length of the Field array, known at compile time.\n#[derive_via(derive_packable)]\npub trait Packable {\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" - }, - "361": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", - "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n fn pack(self) -> [Field; BOOL_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; BOOL_PACKED_LEN]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n fn pack(self) -> [Field; U8_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U8_PACKED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n fn pack(self) -> [Field; U16_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U16_PACKED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n fn pack(self) -> [Field; U32_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U32_PACKED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n fn pack(self) -> [Field; U64_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U64_PACKED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n fn pack(self) -> [Field; U128_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U128_PACKED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n fn pack(self) -> [Field; FIELD_PACKED_LEN] {\n [self]\n }\n\n fn unpack(fields: [Field; FIELD_PACKED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n fn pack(self) -> [Field; I8_PACKED_LEN] {\n [self as u8 as Field]\n }\n\n fn unpack(fields: [Field; I8_PACKED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n fn pack(self) -> [Field; I16_PACKED_LEN] {\n [self as u16 as Field]\n }\n\n fn unpack(fields: [Field; I16_PACKED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n fn pack(self) -> [Field; I32_PACKED_LEN] {\n [self as u32 as Field]\n }\n\n fn unpack(fields: [Field; I32_PACKED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n fn pack(self) -> [Field; I64_PACKED_LEN] {\n [self as u64 as Field]\n }\n\n fn unpack(fields: [Field; I64_PACKED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; N]\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].pack();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n\n fn unpack(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" + "360": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", + "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty(self, msg: str) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty(self, msg: str) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl Empty for Option\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; Self::N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let bytes = self.as_bytes();\n let mut fields = [0; Self::N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n/// Implementation of Deserialize for BoundedVec.\n///\n/// This implementation deserializes a BoundedVec from an array of Fields. The array contains:\n/// 1. The serialized items, each taking up T::N Fields\n/// 2. The length of the BoundedVec as the last Field\n///\n/// # Type Parameters\n/// * `T` - The type of items stored in the BoundedVec, must implement Deserialize\n/// * `M` - The maximum length of the BoundedVec\n///\n/// # Fields Array Layout\n/// [item1_field1, item1_field2, ..., item2_field1, item2_field2, ..., length]\n/// Where:\n/// - itemN_fieldM: The M-th Field of the N-th item (T::N Fields per item)\n/// - length: The number of items in the BoundedVec (1 Field)\n///\n/// Total length N = T::N * M + 1, where:\n/// - T::N is the number of Fields needed to deserialize one item\n/// - M is the maximum length of the BoundedVec\n/// - +1 is for storing the length\n///\n/// # Note\n/// Not deriving this because it's not supported to call derive_deserialize on a \"remote\" struct (and it will never\n/// be supported).\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[::N * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; ::N];\n for j in 0..::N {\n nested_fields[j] = fields[i * ::N + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(_fields: [Field; Self::N]) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M + 1; // +1 for the length of the BoundedVec\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut fields = [0; Self::N];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..::N {\n fields[i * ::N + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[::N * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// let N: u32 = M;\n///\n/// #[inline_always]\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// str::::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" }, "362": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", - "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U8_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n fn serialize(self) -> [Field; U16_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n fn deserialize(fields: [Field; U16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n fn serialize(self) -> [Field; U128_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; FIELD_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n fn serialize(self) -> [Field; I8_SERIALIZED_LEN] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n fn deserialize(fields: [Field; I8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n fn serialize(self) -> [Field; I16_SERIALIZED_LEN] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n fn deserialize(fields: [Field; I16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n fn serialize(self) -> [Field; I32_SERIALIZED_LEN] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n fn deserialize(fields: [Field; I32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n fn serialize(self) -> [Field; I64_SERIALIZED_LEN] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n fn deserialize(fields: [Field; I64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; N]\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].serialize();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; N]\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N + 1]) -> Self {\n if fields[0] == 1 {\n let mut value_serialized: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_serialized[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_serialized))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", + "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * ::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..::N {\n result[i * ::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" }, - "380": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", - "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate. If the element\n// is not found, the function returns N as the index.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays where validate_array(array) returns true,\n// which ensures that:\n// 1. All elements before the first empty element are non-empty\n// 2. All elements after and including the first empty element are empty\n// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn array_concat(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to find the index of the last element in an array, allowing empty elements.\n// e.g. useful for removing trailing 0s from [1, 0, 2, 0, 0, 0] -> [1, 0, 2]\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn find_last_value_index(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut index = N;\n for i in 0..N {\n let j = N - i - 1;\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & !is_empty(array[j]) {\n index = j;\n }\n }\n index\n}\n\n// Routine which returns the length of an array right padded by empty elements\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\n// See smoke_validate_array_trailing for examples.\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn unsafe_padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let index = find_last_value_index(array);\n if index == N {\n 0\n } else {\n index + 1\n }\n}\n\n// Routine which validates that zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\npub fn padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // Safety: this value is constrained in the below loop.\n let length = unsafe { unsafe_padded_array_length(array) };\n // Check the elt just before length is non-zero:\n if length != 0 {\n assert(!is_empty(array[length - 1]), \"invalid right padded array\");\n }\n // Check all beyond length are zero:\n let mut check_zero = false;\n for i in 0..N {\n check_zero |= i == length;\n if check_zero {\n assert(is_empty(array[i]), \"invalid right padded array\");\n }\n }\n length\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test]\nfn smoke_validate_array_trailing() {\n let valid_array: [Field; 0] = [];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [0];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [3];\n assert(padded_array_length(valid_array) == 1);\n\n let valid_array = [1, 0, 3];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 0, 3, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [0, 0, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concatenated = array_concat(array0, array1);\n assert_eq(concatenated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" + "363": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", + "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; _] = std::mem::zeroed();\n for i in 0..M {\n let serialized_t = self[i].serialize();\n for j in 0..::N {\n result[i * ::N + j] = serialized_t[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..::N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n if fields[0] == 1 {\n let mut value_fields = [0; ::N];\n for i in 0..::N {\n value_fields[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_fields))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" }, - "381": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", - "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimised to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" + "379": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", + "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod find_index;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped,\n assert_array_appended_reversed_to_empty_dest, assert_array_appended_reversed_up_to_some_length,\n assert_array_appended_scoped, assert_array_appended_to_empty_dest,\n assert_array_appended_to_empty_dest_and_scoped, assert_array_appended_to_empty_dest_scoped,\n};\npub use assert_array_prepended::{assert_array_prepended, assert_array_prepended_up_to_some_length};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use find_index::{find_first_index, find_last_index};\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use get_sorted_tuple::{get_sorted_tuple, SortedTuple};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Deserialize, Empty, Serialize};\nuse super::for_loop::{for_i_in_0_, for_i_only_in_0_};\n\n//**********************************************************************************\n// ARRAY\n//**********************************************************************************\n\n// TODO: Consider making this a part of the noir stdlib.\npub fn subarray(\n src: [Field; SrcLen],\n offset: u32,\n) -> [Field; DstLen] {\n let mut dst: [Field; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper fn to create a subarray from a given array\n// TODO: rename to `slice`. This is not a splice.\n// TODO: looks very similar to `subarray` above.\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n if find(array[i]) {\n index = Option::some(i);\n break;\n }\n }\n index\n}\n\n// Helper function to find the index of the first element (starting from the back) of an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint_in_reverse(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n let j = N - i - 1;\n if find(array[j]) {\n index = Option::some(j);\n break;\n }\n }\n index\n}\n\n//**********************************************************************************\n// FREE ARRAY FUNCTIONS (to deprecate or make into methods of array wrappers)\n//**********************************************************************************\n\n/// Deprecated.\n///\n/// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n/// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n/// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if array[i].is_empty() {\n seen_empty = true;\n } else {\n assert_eq(seen_empty, false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n/// Deprecated.\n///\n/// Helper function to count the number of non-empty elements in a validated array.\n/// Important: Only use it for validated arrays where validate_array(array) returns true,\n/// which ensures that:\n/// 1. All elements before the first empty element are non-empty\n/// 2. All elements after and including the first empty element are empty\n/// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let maybe_length = unsafe { find_index_hint(array, |elem: T| elem.is_empty()) };\n\n let mut length = N;\n if maybe_length.is_some() {\n length = maybe_length.unwrap_unchecked();\n\n array[length].assert_empty(\"Expected array empty\");\n\n if length != 0 {\n assert(!array[length - 1].is_empty());\n }\n }\n\n length\n}\n\n// Returns an array length defined by fully trimming _all_ \"empty\" items\n// from the RHS.\npub unconstrained fn trimmed_array_length_hint(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let maybe_index_of_last_nonempty =\n find_index_hint_in_reverse(array, |elem: T| !elem.is_empty());\n let length: u32 = if maybe_index_of_last_nonempty.is_some() {\n 1 + maybe_index_of_last_nonempty.unwrap_unchecked()\n } else {\n 0\n };\n length\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n/// Helper function to convert a validated array to BoundedVec.\n/// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n//**********************************************************************************\n// ARRAY WRAPPERS\n//**********************************************************************************\n\n/*\n *\n *\n * \n * |-----------------------------------------|------------------------------| \n * | LHS | RHS |\n * |-----------------------------------------|------------------------------|\n * ClaimedLengthArray | Interspersed 0s possible. | Unvalidated. |\n * | Possibly not fully trimmed. | Nonempty elements possible. |\n * |-----------------------------------------|------------------------------|\n * EmptyRHSArray | Interspersed 0s possible. | All 0s (validated). |\n * | Possibly not fully trimmed. | |\n * |-----------------------------------------|------------------------------|\n * TrimmedArray | Interspersed 0s possible. | All 0s (validated) |\n * | Last lhs element validated as nonempty. | |\n * | (I.e. fully trimmed) | |\n * |-----------------------------------------|------------------------------|\n * DenseTrimmedArray | Dense (validated). | All 0s (validated) |\n * |-----------------------------------------|------------------------------|\n *\n *\n * | What guarantees do we have? |\n * |--------|--------|--------------------------------| \n * | Dense? | RHS | Length vs Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n * ClaimedLengthArray | ? | ? | ? |\n * | | | |\n * |--------|--------|--------------------------------|\n * EmptyRHSArray | ? | All 0s | Length >= Fully Trimmed Length |\n * | | | |\n * |--------|--------|--------------------------------|\n * TrimmedArray | ? | All 0s | Length == Fully Trimmed Length |\n * | | | |\n * | | | |\n * |--------|--------|--------------------------------|\n * DenseTrimmedArray | Yes | All 0s | Length == Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n *\n *\n * An ClaimedLengthArray is distinct from a regular array [T; N], because it carries a length.\n * \n */\n\n/// ClaimedLengthArray - An array interpreted by Kernel circuits.\n/// Its `length` is merely a claim that must eventually be validated.\n/// Validation must include:\n/// - Asserting all items to the LHS of the length are nonempty (dense).\n/// - Asserting all items to the RHS of the length are empty.\n#[derive(Deserialize, Serialize)]\npub struct ClaimedLengthArray {\n pub array: [T; N],\n pub length: u32,\n}\n\nimpl ClaimedLengthArray\nwhere\n T: Empty,\n{\n // No constructor. Append to an empty one.\n\n // For constrained append functions, see the dedicated file: assert_array_appended.nr\n\n pub fn push(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub fn assert_dense_trimmed(self) {\n for_i_in_0_(\n self.length,\n self.array.len(),\n |i| {\n assert(!self.array[i].is_empty(), \"LHS of input array is not dense\")\n // Requires Noir #9002:\n // self.array[i].assert_not_empty(\"LHS of input array is not dense\"); // LHS of input array is not dense.\n },\n |i| self.array[i].assert_empty(\"RHS of input array is not empty\"),\n false,\n );\n }\n\n pub fn assert_empty(self, msg: str) {\n for i in 0..N {\n self.array[i].assert_empty(msg);\n }\n assert_eq(self.length, 0);\n }\n\n pub unconstrained fn push_hint(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let mut next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub unconstrained fn pop_hint(&mut self) -> T {\n assert(self.length != 0, \"Array empty\");\n\n let mut top_index = self.length - 1;\n let popped_item = self.array[top_index];\n self.array[top_index] = T::empty();\n self.length -= 1;\n popped_item\n }\n\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(self.length, self.array.len(), |i| f(self.array[i]), false);\n }\n\n // E.g.\n // dest.for_each_i(|source_item, i| { assert_eq(dest.array[i], source_item, \"bad copy\"); })\n pub fn for_each_i(self, f: fn[Env](T, u32) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(\n self.length,\n self.array.len(),\n |i| f(self.array[i], i),\n false,\n );\n }\n\n pub fn from_bounded_vec(vec: BoundedVec) -> Self {\n Self { array: vec.storage(), length: vec.len() }\n }\n}\n\n// TODO: compiler bug. No idea why this is needed, if we have #[derive(Eq)] above the struct definition.\nimpl Eq for ClaimedLengthArray\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.array == other.array) & (self.length == other.length)\n }\n}\n\nimpl Empty for ClaimedLengthArray\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { array: [T::empty(); N], length: 0 }\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.unwrap_unchecked(), 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.is_none(), true);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" }, - "383": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", - "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n" + "380": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", + "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimized to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" }, - "393": { - "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.1.2/src/sha256.nr", - "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\nmod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n let num_blocks = N / BLOCK_SIZE;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n }\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let (msg_block, _) = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let (new_msg_block, new_msg_byte_ptr) = build_msg_block(msg, message_size, msg_start);\n\n (new_msg_block, new_msg_byte_ptr)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" + "383": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", + "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n" }, - "414": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", - "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[custom_note]\n#[derive(Eq, Serialize)]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` from `sender` so that they can\n /// discover the note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n sender: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient, sender);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n array_concat(self.pack(), [storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n array_concat(note_completion_log, padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable},\n utils::arrays::array_concat,\n },\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n let partial_note = PartialUintNote { commitment };\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(\n array_concat(private_log_without_public_tag, public_log_without_tag),\n note.pack(),\n );\n }\n}\n" + "399": { + "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.2.1/src/sha256.nr", + "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks::(message_size, h, msg_block)\n }\n}\n\npub(crate) unconstrained fn __sha_var(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, message_size, msg)\n}\n\n// Helper function to finalize the message block with padding and length\npub(crate) unconstrained fn finalize_last_sha256_block(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n (new_msg_block, modulo)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n __sha_var(msg, message_size, INITIAL_STATE)\n}\n\npub(crate) fn process_full_blocks(\n msg: [u8; N],\n message_size: u32,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [h; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n // verify the 0 padding is correct for the last block\n let final_block = blocks[first_partially_filled_block_index];\n verify_msg_block_zeros(final_block, message_size % BLOCK_SIZE, INT_BLOCK_SIZE);\n (states[first_partially_filled_block_index], final_block)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) {\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = msg_item << 8;\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n }\n }\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, 0);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], 0);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = msg_item << 8;\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u32) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = (item << 8) + b1 as u32;\n item = (item << 8) + b2 as u32;\n item = (item << 8) + b3 as u32;\n item\n}\n\nglobal BIT_SHIFT_TABLE: [u32; 4] = [1, TWO_POW_8, TWO_POW_16, TWO_POW_24];\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item * BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\n#[inline_always]\nfn rshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n if shifts >= 4 {\n 0\n } else {\n item >> (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item / BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n msg_block[INT_SIZE_PTR] = (len_bytes[0] as u32) << 24\n | (len_bytes[1] as u32) << 16\n | (len_bytes[2] as u32) << 8\n | (len_bytes[3] as u32);\n\n msg_block[INT_SIZE_PTR + 1] = (len_bytes[4] as u32) << 24\n | (len_bytes[5] as u32) << 16\n | (len_bytes[6] as u32) << 8\n | (len_bytes[7] as u32);\n\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n std::static_assert(\n INT_SIZE_PTR + 2 == INT_BLOCK_SIZE,\n \"INT_SIZE_PTR + 2 must equal INT_BLOCK_SIZE\",\n );\n let reconstructed_len_hi = msg_block[INT_SIZE_PTR] as Field;\n let reconstructed_len_lo = msg_block[INT_SIZE_PTR + 1] as Field;\n\n let reconstructed_len: Field =\n reconstructed_len_hi * TWO_POW_32 as Field + reconstructed_len_lo;\n let len = 8 * (message_size as Field);\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let mut msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n // Safety: separate verification function\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (mut h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks::(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" }, "42": { "path": "std/option.nr", "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" }, + "420": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", + "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[derive(Eq, Serialize, Packable)]\n#[custom_note]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n pub fn get_owner(self) -> AztecAddress {\n self.owner\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` so that they can discover the\n /// note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n self.pack().concat([storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n note_completion_log.concat(padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{address::AztecAddress, traits::{Deserialize, FromField, Packable}},\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n // The following is a misuse of the `deserialize` function, but this is just a test and it's better than\n // letting devs manually construct it when they shouldn't be able to.\n let partial_note = PartialUintNote::deserialize([commitment]);\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(private_log_without_public_tag.concat(public_log_without_tag), note.pack());\n }\n}\n" + }, "43": { "path": "std/panic.nr", "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" }, "5": { "path": "std/cmp.nr", - "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n}\n" + "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n if result {\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let self_len = self.len();\n let other_len = other.len();\n let min_len = if self_len < other_len {\n self_len\n } else {\n other_len\n };\n\n let mut result = Ordering::equal();\n for i in 0..min_len {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n\n if result != Ordering::equal() {\n result\n } else {\n self_len.cmp(other_len)\n }\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use super::{Eq, max, min, Ord};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n\n #[test]\n fn correctly_handles_unequal_length_slices() {\n let slice_1 = &[0, 1, 2, 3];\n let slice_2 = &[0, 1, 2];\n assert(!slice_1.eq(slice_2));\n }\n\n #[test]\n fn lexicographic_ordering_for_slices() {\n assert(&[2_u32].cmp(&[1_u32, 1_u32, 1_u32]) == super::Ordering::greater());\n assert(&[1_u32, 2_u32].cmp(&[1_u32, 2_u32, 3_u32]) == super::Ordering::less());\n }\n}\n" }, "50": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", @@ -12913,63 +13029,67 @@ }, "51": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", - "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n use dep::aztec::messages::logs::note::encode_and_encrypt_note;\n use dep::aztec::protocol_types::traits::{Deserialize, Packable, Serialize};\n use dep::aztec::state_vars::{private_immutable::PrivateImmutable, SharedMutable};\n use dep::sha256;\n use dep::token::Token;\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n use aztec::prelude::{AztecAddress, Map};\n use std::meta::derive;\n\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner, htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(\n htlc_public.src_receiver,\n htlc_public.src_receiver,\n )\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender(), context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(Id: Field) -> bool {\n storage.contracts_private.at(Id).is_initialized()\n }\n\n #[view]\n #[utility]\n unconstrained fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" + "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use std::meta::derive;\n\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n\n use dep::aztec::{\n messages::logs::note::encode_and_encrypt_note,\n protocol_types::{address::AztecAddress, traits::{Deserialize, Packable, Serialize}},\n state_vars::{DelayedPublicMutable, map::Map, private_immutable::PrivateImmutable},\n };\n use dep::sha256;\n use dep::token::Token;\n\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n #[derive(Packable)]\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_public.src_receiver)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(id: Field) -> bool {\n storage.contracts_private.at(id).is_initialized()\n }\n\n #[view]\n #[public]\n fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" }, "52": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", - "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::prelude::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenCommitted {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable<5> for TokenLockAdded {\n fn pack(self) -> [Field; 5] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; 5]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable<2> for TokenRefunded {\n fn pack(self) -> [Field; 2] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; 2]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable<6> for TokenRedeemed {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenLockedFirst {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable<6> for TokenLockedSecond {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" + "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::protocol_types::address::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenCommitted {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable for TokenLockAdded {\n let N: u32 = 5;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable for TokenRefunded {\n let N: u32 = 2;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable for TokenRedeemed {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenLockedFirst {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable for TokenLockedSecond {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" }, "6": { "path": "std/collections/bounded_vec.nr", - "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n}\n" + "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_slice() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec = BoundedVec::new();\n let mut vec2: BoundedVec = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_slice out of bounds\")]\n fn extend_slice_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n let other: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_slice(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n" }, "63": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", - "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n use protocol_types::address::AztecAddress;\n\n global SLOT: Field = 1230;\n\n unconstrained fn setup() -> AztecAddress {\n TestEnvironment::new().utility().this_address()\n }\n\n #[test]\n unconstrained fn empty_array() {\n let contract_address = setup();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n }\n\n #[test]\n unconstrained fn array_push() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n }\n\n // TODO: uncomment this test once OracleMock::count is implemented in the stdlib.\n // #[test]\n // unconstrained fn for_each_remove_all_no_copy() {\n // let contract_address = setup();\n // let array = CapsuleArray::at(contract_address, SLOT);\n\n // array.push(4);\n // array.push(5);\n // array.push(6);\n\n // // We test that the copyCapsule was never called, which is the expensive operation we want to avoid.\n // let mock = OracleMock::mock(\"copyCapsule\");\n\n // array.for_each(|index, _| {\n // array.remove(index);\n // });\n\n // assert_eq(mock.count(), 0);\n // }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", + "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n\n global SLOT: Field = 1230;\n\n #[test]\n unconstrained fn empty_array() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n });\n }\n\n #[test]\n unconstrained fn array_push() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n });\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n });\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all_no_copy() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We test that the utilityCopyCapsule was never called, which is the expensive operation we want to avoid.\n let mock = std::test::OracleMock::mock(\"utilityCopyCapsule\");\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(mock.times_called(), 0);\n });\n }\n}\n" }, "64": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{\n gas::GasOpts, private_context::PrivateContext, public_context::PublicContext,\n returns_hash::ReturnsHash,\n};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\nuse crate::test::helpers::cheatcodes;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateVoidCallInterface\n\npub struct PrivateVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticVoidCallInterface\n\npub struct PrivateStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicVoidCallInterface\n\npub struct PublicVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticVoidCallInterface\n\npub struct PublicStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\n// UtilityVoidCallInterface\n\npub struct UtilityVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\npub trait TXEPublicCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPublicCallInterface for PublicCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEPrivateCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPrivateCallInterface for PrivateCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEUtilityCallInterface {\n unconstrained fn call_with_txe(self) -> T;\n}\n\nimpl TXEUtilityCallInterface for UtilityCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n returns\n }\n}\n\nimpl TXEUtilityCallInterface for UtilityVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n returns\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n /// Makes the call to this private function.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (see https://github.com/AztecProtocol/aztec-packages/pull/16433)\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n\n /// Makes a _read-only_ call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// See `call` for more general info on private function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n /// Makes a read-only call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the call to this public function.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Makes a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a call to this public function, to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n /// Enqueues a call to this public function, and designates it to be the\n /// teardown function for this tx. Only one teardown function call can be\n /// made by a tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a hefty function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n /// See `enqueue` for more information about enqueuing public function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n" }, "71": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", - "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n include_by_timestamp::IncludeByTimestamp,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::array_concat,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: IncludeByTimestamp,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp =\n IncludeByTimestamp::min_with_u64(self.include_by_timestamp, include_by_timestamp);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n ReturnsHash::new(returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", + "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n logs::notify_created_contract_class_log,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, MAX_CONTRACT_CLASS_LOGS_PER_CALL,\n MAX_ENQUEUED_CALLS_PER_CALL, MAX_INCLUDE_BY_TIMESTAMP_DURATION,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::poseidon2_hash,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::{ClaimedLengthArray, trimmed_array_length_hint},\n};\n\n/// # PrivateContext\n///\n/// The **main interface** between a #[private] function and the Aztec blockchain.\n///\n/// An instance of the PrivateContext is initialized automatically at the outset\n/// of every private function, within the #[private] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it is always be available within\n/// the body of every #[private] function in your smart contract.\n///\n/// > For those used to \"vanilla\" Noir, it might be jarring to have access to\n/// > `context` without seeing a declaration `let context = PrivateContext::new(...)`\n/// > within the body of your function. This is just a consequence of using\n/// > macros to tidy-up verbose boilerplate. You can use `nargo expand` to\n/// > expand all macros, if you dare.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PrivateContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// > Advanced users might occasionally wish to push data to the context\n/// > directly for lower-level control. If you find yourself doing this, please\n/// > open an issue on GitHub to describe your use case: it might be that\n/// > new functionality should be added to aztec-nr.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a private function:\n/// - Data relating to how this private function was called.\n/// - msg_sender\n/// - this_address - (the contract address of the private function being\n/// executed)\n/// - See `CallContext` for more data.\n/// - Data relating to the transaction in which this private function is\n/// being executed.\n/// - chain_id\n/// - version\n/// - gas_settings\n/// - Provides state access:\n/// - Access to the \"Anchor block\" header.\n/// Recall, a private function cannot read from the \"current\" block header,\n/// but must read from some historical block header, because as soon as\n/// private function execution begins (asynchronously, on a user's device),\n/// the public state of the chain (the \"current state\") will have progressed\n/// forward. We call this reference the \"Anchor block\".\n/// See `BlockHeader`.\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to functions of other smart contracts:\n/// - Private function calls\n/// - Enqueueing of public function call requests\n/// (Since public functions are executed at a later time, by a block\n/// proposer, we say they are \"enqueued\").\n/// - Writes data to the blockchain:\n/// - New notes\n/// - New nullifiers\n/// - Private logs (for sending encrypted note contents or encrypted events)\n/// - New L2->L1 messages.\n/// - Provides args to the private function (handled by the #[private] macro).\n/// - Returns the return values of this private function (handled by the\n/// #[private] macro).\n/// - Makes Key Validation Requests.\n/// - Private functions are not allowed to see master secret keys, because we\n/// do not trust them. They are instead given \"app-siloed\" secret keys with\n/// a claim that they relate to a master public key. They can then request\n/// validation of this claim, by making a \"key validation request\" to the\n/// protocol's kernel circuits (which _are_ allowed to see certain master\n/// secret keys).\n///\n/// ## Advanced Responsibilities\n///\n/// - Ultimately, the PrivateContext is responsible for constructing the\n/// PrivateCircuitPublicInputs of the private function being executed.\n/// All private functions on Aztec must have public inputs which adhere\n/// to the rigid layout of the PrivateCircuitPublicInputs, in order to be\n/// compatible with the protocol's kernel circuits.\n/// A well-known misnomer:\n/// - \"public inputs\" contain both inputs and outputs of this function.\n/// - By \"outputs\" we mean a lot more side-effects than just the\n/// \"return values\" of the function.\n/// - Most of the so-called \"public inputs\" are kept _private_, and never leak\n/// to the outside world, because they are 'swallowed' by the protocol's\n/// kernel circuits before the tx is sent to the network. Only the\n/// following are exposed to the outside world:\n/// - New note_hashes\n/// - New nullifiers\n/// - New private logs\n/// - New L2->L1 messages\n/// - New enqueued public function call requests\n/// All the above-listed arrays of side-effects can be padded by the\n/// user's wallet (through instructions to the kernel circuits, via the\n/// PXE) to obscure their true lengths.\n///\n/// ## Syntax Justification\n///\n/// Both user-defined functions _and_ most functions in aztec-nr need access to\n/// the PrivateContext instance to read/write data. This is why you'll see the\n/// arguably-ugly pervasiveness of the \"context\" throughout your smart contract\n/// and the aztec-nr library.\n/// For example, `&mut context` is prevalent. In some languages, you can access\n/// and mutate a global variable (such as a PrivateContext instance) from a\n/// function without polluting the function's parameters. With Noir, a function\n/// must explicitly pass control of a mutable variable to another function, by\n/// reference. Since many functions in aztec-nr need to be able to push new data\n/// to the PrivateContext, they need to be handed a mutable reference _to_ the\n/// context as a parameter.\n/// For example, `Context` is prevalent as a generic parameter, to give better\n/// type safety at compile time. Many `aztec-nr` functions don't make sense if\n/// they're called in a particular runtime (private, public or utility), and so\n/// are intentionally only implemented over certain\n/// [Private|Public|Utility]Context structs. This gives smart contract\n/// developers a much faster feedback loop if they're making a mistake, as an\n/// error will be thrown by the LSP or when they compile their contract.\n///\n#[derive(Eq)]\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: u64,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let max_allowed_include_by_timestamp =\n inputs.historical_header.global_variables.timestamp + MAX_INCLUDE_BY_TIMESTAMP_DURATION;\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: max_allowed_include_by_timestamp,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// TODO(https://github.com/AztecProtocol/aztec-packages/issues/14025) - we\n /// are considering making msg_sender: Option, since\n /// a returned value of `Option:none` will be clearer to developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the smart contract that called\n /// this function (be it an app contract or a user's account contract).\n /// Returns `-1` for the first function call of the tx.\n ///\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n /// Returns the contract address of the current function being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n /// Returns the gas settings for the current transaction.\n ///\n /// This provides information about gas limits and pricing for the\n /// transaction, similar to `tx.gasprice` and gas limits in Ethereum.\n /// However, Aztec has a more sophisticated gas model with separate\n /// accounting for L2 computation and data availability (DA) costs.\n ///\n /// # Returns\n /// * `GasSettings` - Struct containing gas limits and fee information\n ///\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n /// Returns the function selector of the currently executing function.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to access this.\n ///\n /// This is similar to `msg.sig` in Solidity, which returns the first 4\n /// bytes of the function signature. In Aztec, the selector uniquely\n /// identifies which function within the contract is being called.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// Only #[private] functions have a function selector as a protocol-\n /// enshrined concept. The function selectors of private functions are\n /// baked into the preimage of the contract address, and are used by the\n /// protocol's kernel circuits to identify each private function and ensure\n /// the correct one is being executed.\n ///\n /// Used internally for function dispatch and call verification.\n ///\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: You shouldn't need to call this. The #[private]\n /// macro calls this, and it makes the arguments neatly available to the\n /// body of your private function.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n /// # Advanced\n /// * Arguments are hashed to reduce proof size and verification time\n /// * Enables efficient argument passing in recursive function calls\n /// * The hash can be used to retrieve the original arguments from the PXE.\n ///\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n /// Pushes a new note_hash to the Aztec blockchain's global Note Hash Tree\n /// (a state tree).\n ///\n /// A note_hash is a commitment to a piece of private state.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note hashes.\n ///\n /// # Arguments\n /// * `note_hash` - The new note_hash.\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// note_hash into the protocol's \"note hash tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `note_hash` with the contract address of this function,\n /// to yield a `siloed_note_hash`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure uniqueness of the `siloed_note_hash`, to prevent Faerie-Gold\n /// attacks, by hashing the `siloed_note_hash` with a unique value, to\n /// yield a `unique_siloed_note_hash` (see the protocol spec for more).\n ///\n /// In addition to calling this function, aztec-nr provides the contents\n /// of the newly-created note to the PXE, via the `notify_created_note`\n /// oracle.\n ///\n /// > Advanced users might occasionally wish to push data to the context\n /// > directly for lower-level control. If you find yourself doing this,\n /// > please open an issue on GitHub to describe your use case: it might be\n /// > that new functionality should be added to aztec-nr.\n ///\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n /// Pushes a new nullifier to the Aztec blockchain's global Nullifier Tree\n /// (a state tree).\n ///\n /// See also: `push_nullifier_for_note_hash`.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// A nullifier can only be emitted once. Duplicate nullifier insertions are\n /// rejected by the protocol.\n ///\n /// Generally, a nullifier is emitted to prevent an action from happening\n /// more than once, in such a way that the action cannot be linked (by an\n /// observer of the blockchain) to any earlier transactions.\n ///\n /// I.e. a nullifier is a random-looking, but deterministic record of a\n /// private, one-time action, which does not leak what action has been\n /// taken, and which preserves the property of \"tx unlinkability\".\n ///\n /// Usually, a nullifier will be emitted to \"spend\" a note (a piece of\n /// private state), without revealing which specific note is being spent.\n ///\n /// (Important: in such cases, use the below `push_nullifier_for_note_hash`).\n ///\n /// Sometimes, a nullifier might be emitted completely unrelated to any\n /// notes. Examples include initialization of a new contract; initialization\n /// of a PrivateMutable, or signalling in Semaphore-like applications.\n /// This `push_nullifier` function serves such use cases.\n ///\n /// # Arguments\n /// * `nullifier`\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// nullifier into the protocol's \"nullifier tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `nullifier` with the contract address of this function,\n /// to yield a `siloed_nullifier`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure the `siloed_nullifier` is unique (the nullifier tree is an\n /// indexed merkle tree which supports efficient non-membership proofs).\n ///\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n /// Pushes a nullifier that corresponds to a specific note hash.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// This is a specialized version of `push_nullifier` that links a nullifier\n /// to the specific note hash it's nullifying. This is the most common\n /// usage pattern for nullifiers.\n /// See `push_nullifier` for more explanation on nullifiers.\n ///\n /// # Arguments\n /// * `nullifier`\n /// * `nullified_note_hash` - The note hash of the note being nullified\n ///\n /// # Advanced\n /// Important: usage of this function doesn't mean that the world will _see_\n /// that this nullifier relates to the given nullified_note_hash (as that\n /// would violate \"tx unlinkability\"); it simply informs the user's PXE\n /// about the relationship (via `notify_nullified_note`). The PXE can then\n /// use this information to feed hints to the kernel circuits for\n /// \"squashing\" purposes: If a note is nullified during the same tx which\n /// created it, we can \"squash\" (delete) the note and nullifier (and any\n /// private logs associated with the note), to save on data emission costs.\n ///\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n /// Returns the anchor block header - the historical block header that this\n /// private function is reading from.\n ///\n /// A private function CANNOT read from the \"current\" block header,\n /// but must read from some historical block header, because as soon as\n /// private function execution begins (asynchronously, on a user's device),\n /// the public state of the chain (the \"current state\") will have progressed\n /// forward.\n ///\n /// # Returns\n /// * `BlockHeader` - The anchor block header.\n ///\n /// # Advanced\n /// * All private functions of a tx read from the same anchor block header.\n /// * The protocol asserts that the `include_by_timestamp` of every tx\n /// is at most 24 hours beyond the timestamp of the tx's chosen anchor\n /// block header. This enables the network's nodes to safely prune old txs\n /// from the mempool. Therefore, the chosen block header _must_ be one\n /// from within the last 24 hours.\n ///\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n /// Returns the header of any historical block at or before the anchor\n /// block.\n ///\n /// This enables private contracts to access information from even older\n /// blocks than the anchor block header.\n ///\n /// Useful for time-based contract logic that needs to compare against\n /// multiple historical points.\n ///\n /// # Arguments\n /// * `block_number` - The block number to retrieve (must be <= anchor\n /// block number)\n ///\n /// # Returns\n /// * `BlockHeader` - The header of the requested historical block\n ///\n /// # Advanced\n /// This function uses an oracle to fetch block header data from the user's\n /// PXE. Depending on how much blockchain data the user's PXE has been set\n /// up to store, this might require a query from the PXE to another Aztec\n /// node to get the data.\n /// > This is generally true of all oracle getters (see `../oracle`).\n ///\n /// Each block header gets hashed and stored as a leaf in the protocol's\n /// Archive Tree. In fact, the i-th block header gets stored at the i-th\n /// leaf index of the Archive Tree. Behind the scenes, this\n /// `get_block_header_at` function will add Archive Tree merkle-membership\n /// constraints (~3k) to your smart contract function's circuit, to prove\n /// existence of the block header in the Archive Tree.\n ///\n /// Note: we don't do any caching, so avoid making duplicate calls for the\n /// same block header, because each call will add duplicate constraints.\n ///\n /// Calling this function is more expensive (constraint-wise) than getting\n /// the anchor block header (via `get_block_header`). This is because the\n /// anchor block's merkle membership proof is handled by Aztec's protocol\n /// circuits, and is only performed once for the entire tx because all\n /// private functions of a tx share a common anchor block header. Therefore,\n /// the cost (constraint-wise) of calling `get_block_header` is effectively\n /// free.\n ///\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n /// Sets the hash of the return values for this private function.\n ///\n /// Very low-level function: this is called by the #[private] macro.\n ///\n /// # Arguments\n /// * `returns_hasher` - A hasher containing the return values to hash\n ///\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n /// Builds the PrivateCircuitPublicInputs for this private function, to\n /// ensure compatibility with the protocol's kernel circuits.\n ///\n /// Very low-level function: This function is automatically called by the\n /// #[private] macro.\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.note_hash_read_requests,\n ),\n nullifier_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.nullifier_read_requests,\n ),\n key_validation_requests_and_generators: ClaimedLengthArray::from_bounded_vec(\n self.key_validation_requests_and_generators,\n ),\n note_hashes: ClaimedLengthArray::from_bounded_vec(self.note_hashes),\n nullifiers: ClaimedLengthArray::from_bounded_vec(self.nullifiers),\n private_call_requests: ClaimedLengthArray::from_bounded_vec(self.private_call_requests),\n public_call_requests: ClaimedLengthArray::from_bounded_vec(self.public_call_requests),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: ClaimedLengthArray::from_bounded_vec(self.l2_to_l1_msgs),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: ClaimedLengthArray::from_bounded_vec(self.private_logs),\n contract_class_logs_hashes: ClaimedLengthArray::from_bounded_vec(\n self.contract_class_logs_hashes,\n ),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n /// Designates this contract as the fee payer for the transaction.\n ///\n /// Unlike Ethereum, where the transaction sender always pays fees, Aztec\n /// allows any contract to voluntarily pay transaction fees. This enables\n /// patterns like sponsored transactions or fee abstraction where users\n /// don't need to hold fee-juice themselves. (Fee juice is a fee-paying\n /// asset for Aztec).\n ///\n /// Only one contract per transaction can declare itself as the fee payer,\n /// and it must have sufficient fee-juice balance (>= the gas limits\n /// specified in the TxContext) by the time we reach the public setup phase\n /// of the tx.\n ///\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n /// Declares the end of the \"setup phase\" of this tx.\n ///\n /// Only one function per tx can declare the end of the setup phase.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase enables such a payment to\n /// be made, because the setup phase _cannot revert_: a reverting function\n /// within the setup phase would result in an invalid block which cannot\n /// be proven. Any side-effects generated during that phase are guaranteed\n /// to be inserted into Aztec's state trees (except for squashed notes &\n /// nullifiers, of course).\n ///\n /// Even though the end of the setup phase is declared within a private\n /// function, you might have noticed that _public_ functions can also\n /// execute within the setup phase. This is because any public function\n /// calls which were enqueued _within the setup phase_ by a private\n /// function are considered part of the setup phase.\n ///\n /// # Advanced\n /// * Sets the minimum revertible side effect counter of this tx to be the\n /// PrivateContext's _current_ side effect counter.\n ///\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n /// Sets a deadline (an \"include-by timestamp\") for when this transaction\n /// must be included in a block.\n ///\n /// Other functions in this tx might call this setter with differing\n /// values for the include-by timestamp. To ensure that all functions'\n /// deadlines are met, the _minimum_ of all these include-by timestamps will\n /// be exposed when this tx is submitted to the network.\n ///\n /// If the transaction is not included in a block by its include-by\n /// timestamp, it becomes invalid and it will never be included.\n ///\n /// This expiry timestamp is publicly visible. See the \"Advanced\" section\n /// for privacy concerns.\n ///\n /// # Arguments\n /// * `include_by_timestamp` - Unix timestamp (seconds) deadline for inclusion.\n /// The include-by timestamp of this tx will be\n /// _at most_ the timestamp specified.\n ///\n /// # Advanced\n /// * If multiple functions set differing `include_by_timestamp`s, the\n /// kernel circuits will set it to be the _minimum_ of the two. This\n /// ensures the tx expiry requirements of all functions in the tx are met.\n /// * Rollup circuits will reject expired txs.\n /// * The protocol enforces that all transactions must be included within\n /// 24 hours of their chosen anchor block's timestamp, to enable safe\n /// mempool pruning.\n /// * The DelayedPublicMutable design makes heavy use of this functionality,\n /// to enable private functions to read public state.\n /// * A sophisticated Wallet should cleverly set an include-by timestamp\n /// to improve the privacy of the user and the network as a whole.\n /// For example, if a contract interaction sets include-by to some\n /// publicly-known value (e.g. the time when a contract upgrades), then\n /// the wallet might wish to set an even lower one to avoid revealing that\n /// this tx is interacting with said contract.\n /// Ideally, all wallets should standardise on an approach in order to\n /// provide users with a large anonymity set -- although the exact apprach\n /// will need to be discussed. Wallets that deviate from a standard might\n /// accidentally reveal which wallet each transaction originates from.\n ///\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp = std::cmp::min(self.include_by_timestamp, include_by_timestamp);\n }\n\n /// Makes a request to the protocol's kernel circuit to ensure a note_hash\n /// actually exists.\n ///\n /// \"Read requests\" are used to prove that a note hash exists without\n /// revealing which specific note was read.\n ///\n /// This can be used to prove existence of both settled notes (created in\n /// prior transactions) and transient notes (created in the current\n /// transaction).\n /// If you need to prove existence of a settled note _at a specific block\n /// number_, use `note_inclusion::prove_note_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note_hash read\n /// requests.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to read and verify\n ///\n /// # Advanced\n /// In \"traditional\" circuits for non-Aztec privacy applications, the merkle\n /// membership proofs to check existence of a note are performed _within_\n /// the application circuit.\n ///\n /// All Aztec private functions have access to the following constraint\n /// optimisation:\n /// In cases where the note being read was created earlier in the same tx,\n /// the note wouldn't yet exist in the Note Hash Tree, so a hard-coded\n /// merkle membership check which then gets ignored would be a waste of\n /// constraints.\n /// Instead, we can send read requests for all notes to the protocol's\n /// kernel circuits, where we can conditionally assess which notes actually\n /// need merkle membership proofs, and select an appropriately-sized\n /// kernel circuit.\n ///\n /// For \"settled notes\" (which already existed in the Note Hash Tree of the\n /// anchor block (i.e. before the tx began)), the kernel does a merkle\n /// membership check.\n ///\n /// For \"pending notes\" (which were created earlier in _this_ tx), the\n /// kernel will check that the note existed _before_ this read request was\n /// made, by checking the side-effect counters of the note_hash and this\n /// read request.\n ///\n /// This approach improves latency between writes and reads:\n /// a function can read a note which was created earlier in the tx (rather\n /// than performing the read in a later tx, after waiting for the earlier tx\n /// to be included, to ensure the note is included in the tree).\n ///\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n /// Requests to read a specific nullifier from the nullifier tree.\n ///\n /// Nullifier read requests are used to prove that a nullifier exists without\n /// revealing which specific nullifier preimage was read.\n ///\n /// This can be used to prove existence of both settled nullifiers (created in\n /// prior transactions) and transient nullifiers (created in the current\n /// transaction).\n /// If you need to prove existence of a settled nullifier _at a specific block\n /// number_, use `nullifier_inclusion::prove_nullifier_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifier read\n /// requests.\n ///\n /// # Arguments\n /// * `nullifier` - The nullifier to read and verify\n ///\n /// # Advanced\n /// This approach improves latency between writes and reads:\n /// a function can read a nullifier which was created earlier in the tx\n /// (rather than performing the read in a later tx, after waiting for the\n /// earlier tx to be included, to ensure the note is included in the tree).\n ///\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// Advanced function: Only needed if you're designing your own notes and/or\n /// nullifiers.\n ///\n /// Contracts are not allowed to compute nullifiers for other contracts, as\n /// that would let them read parts of their private state. Because of this,\n /// a contract is only given an \"app-siloed secret key\", which is\n /// constructed by hashing the user's master nullifier secret key with the\n /// contract's address.\n /// However, because contracts cannot be trusted with a user's master\n /// nullifier secret key (because we don't know which contracts are honest\n /// or malicious), the PXE refuses to provide any master secret keys to\n /// any app smart contract function. This means app functions are unable to\n /// prove that the derivation of an app-siloed nullifier secret key has been\n /// computed correctly. Instead, an app function can request to the kernel\n /// (via `request_nsk_app`) that it validates the siloed derivation, since\n /// the kernel has been vetted to not leak any master secret keys.\n ///\n /// A common nullification scheme is to inject a nullifier secret key into\n /// the preimage of a nullifier, to make the nullifier deterministic but\n /// random-looking. This function enables that flow.\n ///\n /// # Arguments\n /// * `npk_m_hash` - A hash of the master nullifier public key of the user\n /// whose PXE is executing this function.\n ///\n /// # Returns\n /// * The app-siloed nullifier secret key that corresponds to the given\n /// `npk_m_hash`.\n ///\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// See `request_nsk_app` and `request_sk_app` for more info.\n ///\n /// The intention of the \"outgoing\" keypair is to provide a second secret\n /// key for all of a user's outgoing activity (i.e. for notes that a user\n /// creates, as opposed to notes that a user receives from others). The\n /// separation of incoming and outgoing data was a distinction made by\n /// zcash, with the intention of enabling a user to optionally share with a\n /// 3rd party a controlled view of only incoming or outgoing notes.\n /// Similar functionality of sharing select data can be achieved with\n /// offchain zero-knowledge proofs. It is up to an app developer whether\n /// they choose to make use of a user's outgoing keypair within their\n /// application logic, or instead simply use the same keypair (the address\n /// keypair (which is effectively the same as the \"incooming\" keypair)) for\n /// all incoming & outgoing messages to a user.\n ///\n /// Currently, all of the exposed encryption functions in aztec-nr ignore\n /// the outgoing viewing keys, and instead encrypt all note logs and event\n /// logs to a user's address public key.\n ///\n /// # Arguments\n /// * `ovpk_m_hash` - Hash of the outgoing viewing public key master\n ///\n /// # Returns\n /// * The application-specific outgoing viewing secret key\n ///\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n /// Pushes a Key Validation Request to the kernel.\n ///\n /// Private functions are not allowed to see a user's master secret keys,\n /// because we do not trust them. They are instead given \"app-siloed\" secret\n /// keys with a claim that they relate to a master public key.\n /// They can then request validation of this claim, by making a \"key\n /// validation request\" to the protocol's kernel circuits (which _are_\n /// allowed to see certain master secret keys).\n ///\n /// When a Key Validation Request tuple of (sk_app, Pk_m, app_address) is\n /// submitted to the kernel, it will perform the following derivations\n /// to validate the relationship between the claimed sk_app and the user's\n /// Pk_m:\n ///\n /// (sk_m) ----> * G ----> Pk_m\n /// | |\n /// v We use the kernel to prove this\n /// h(sk_m, app_address) | sk_app-Pk_m relationship, because app\n /// | circuits must not be trusted to see sk_m.\n /// v |\n /// sk_app - - - - - - - - -\n ///\n /// The function is named \"request_\" instead of \"get_\" to remind the user\n /// that a Key Validation Request will be emitted to the kernel.\n ///\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element).\n /// This content has a very specific layout.\n /// docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2).\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree;\n /// messages never technically get deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target L2 contract. The message will need to be manually\n /// consumed by the target contract through a separate Aztec transaction.\n /// The message will not be available for consumption immediately. Messages\n /// get copied over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// Validates message existence in the L1-to-L2 message tree and nullifies\n /// the message to prevent double-consumption.\n ///\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n /// Emits a private log (an array of Fields) that will be published to an\n /// Ethereum blob.\n ///\n /// Private logs are intended for the broadcasting of ciphertexts: that is,\n /// encrypted events or encrypted note contents.\n /// Since the data in the logs is meant to be _encrypted_, private_logs are\n /// broadcast to publicly-visible Ethereum blobs.\n /// The intended recipients of such encrypted messages can then discover and\n /// decrypt these encrypted logs using their viewing secret key.\n /// (See `../messages/discovery` for more details).\n ///\n /// Important note: This function DOES NOT _do_ any encryption of the input\n /// `log` fields. This function blindly publishes whatever input `log` data\n /// is fed into it, so the caller of this function should have already\n /// performed the encryption, and the `log` should be the result of that\n /// encryption.\n ///\n /// The protocol does not dictate what encryption scheme should be used:\n /// a smart contract developer can choose whatever encryption scheme they\n /// like.\n /// Aztec-nr includes some off-the-shelf encryption libraries that\n /// developers might wish to use, for convenience. These libraries not only\n /// encrypt a plaintext (to produce a ciphertext); they also prepend the\n /// ciphertext with a `tag` and `ephemeral public key` for easier message\n /// discovery. This is a very dense topic, and we will be writing more\n /// libraries and docs soon.\n ///\n /// > Currently, AES128 CBC encryption is the main scheme included in\n /// > aztec.nr.\n /// > We are currently making significant changes to the interfaces of the\n /// > encryption library.\n ///\n /// In some niche use cases, an app might be tempted to publish\n /// _un-encrypted_ data via a private log, because _public logs_ are not\n /// available to private functions. Be warned that emitting public data via\n /// private logs is strongly discouraged, and is considered a \"privacy\n /// anti-pattern\", because it reveals identifiable information about _which_\n /// function has been executed. A tx which leaks such information does not\n /// contribute to the privacy set of the network.\n ///\n /// * Unlike `emit_raw_note_log`, this log is not tied to any specific note\n ///\n /// # Arguments\n /// * `log` - The log data that will be publicly broadcast (so make sure\n /// it's already been encrypted before you call this function).\n /// Private logs are bounded in size (PRIVATE_LOG_SIZE_IN_FIELDS), to\n /// encourage all logs from all smart contracts look identical.\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields). Although the input log has a max size of\n /// PRIVATE_LOG_SIZE_IN_FIELDS, the latter values of the array might all\n /// be 0's for small logs. This `length` should reflect the trimmed length\n /// of the array. The protocol's kernel circuits can then append random\n /// fields as \"padding\" after the `length`, so that the logs of this\n /// smart contract look indistinguishable from (the same length as) the\n /// logs of all other applications. It's up to wallets how much padding\n /// to apply, so ideally all wallets should agree on standards for this.\n ///\n /// # Advanced\n ///\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n // TODO: rename.\n /// Emits a private log that is explicitly tied to a newly-emitted note_hash,\n /// to convey to the kernel: \"this log relates to this note\".\n ///\n /// This linkage is important in case the note gets squashed (due to being\n /// read later in this same tx), since we can then squash the log as well.\n ///\n /// See `emit_private_log` for more info about private log emission.\n ///\n /// # Arguments\n /// * `log` - The log data as an array of Field elements\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields).\n /// * `note_hash_counter` - The side-effect counter that was assigned to the\n /// new note_hash when it was pushed to this\n // `PrivateContext`.\n ///\n /// Important: If your application logic requires the log to always be\n /// emitted regardless of note squashing, consider using `emit_private_log`\n /// instead, or emitting additional events.\n ///\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_contract_class_log(&mut self, log: [Field; N]) {\n let contract_address = self.this_address();\n let counter = self.next_counter();\n\n let log_to_emit: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS] =\n log.concat([0; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - N]);\n // Note: the length is not always N, it is the number of fields we want to broadcast, omitting trailing zeros to save blob space.\n // Safety: The below length is constrained in the base rollup, which will make sure that all the fields beyond length are zero.\n let length = unsafe { trimmed_array_length_hint(log_to_emit) };\n // We hash the entire padded log to ensure a user cannot pass a shorter length and so emit incorrect shorter bytecode.\n let log_hash = poseidon2_hash(log_to_emit);\n // Safety: the below only exists to broadcast the raw log, so we can provide it to the base rollup later to be constrained.\n unsafe {\n notify_created_contract_class_log(contract_address, log_to_emit, length, counter);\n }\n\n self.contract_class_logs_hashes.push(LogHash { value: log_hash, length: length }.count(\n counter,\n ));\n }\n\n /// Calls a private function on another contract (or the same contract).\n ///\n /// Very low-level function.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (feature not built yet - see github).\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n /// Makes a read-only call to a private function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See `call_private_function` for more general info on private function\n /// calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n /// Calls a private function that takes no arguments.\n ///\n /// This is a convenience function for calling private functions that don't\n /// require any input parameters. It's equivalent to `call_private_function`\n /// but slightly more efficient to use when no arguments are needed.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n /// Makes a read-only call to a private function which takes no arguments.\n ///\n /// This combines the optimisation of `call_private_function_no_args` with\n /// the safety of `static_call_private_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n /// Low-level private function call.\n ///\n /// This is the underlying implementation used by all other private function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args_hash` - Pre-computed hash of the function arguments\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values\n ///\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1; // TODO: call `next_counter` instead, for consistency\n ReturnsHash::new(returns_hash)\n }\n\n /// Enqueues a call to a public function to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See also `call_public_function` for more important information about\n /// making private -> public function calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Enqueues a call to a public function that takes no arguments.\n ///\n /// This is an optimisation for calling public functions that don't\n /// take any input parameters. It's otherwise equivalent to\n /// `call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function with no arguments.\n ///\n /// This combines the optimisation of `call_public_function_no_args` with\n /// the safety of `static_call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Low-level public function call.\n ///\n /// This is the underlying implementation used by all other public function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// Advanced function: Most developers should use `call_public_function`\n /// or `static_call_public_function` instead. This function is exposed for\n /// performance optimization and advanced use cases.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n /// Enqueues a public function call, and designates it to be the teardown\n /// function for this tx. Only one teardown function call can be made by a\n /// tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a heft function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Low-level function to set the public teardown function.\n ///\n /// This is the underlying implementation for setting the teardown function\n /// call that will execute at the end of the transaction. Instead of taking\n /// raw arguments, it accepts a hash of the arguments.\n ///\n /// Advanced function: Most developers should use\n /// `set_public_teardown_function` instead.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the teardown\n /// function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n /// Increments the side-effect counter.\n ///\n /// Very low-level function.\n ///\n /// # Advanced\n ///\n /// Every side-effect of a private function is given a \"side-effect counter\",\n /// based on when it is created. This PrivateContext is in charge of\n /// assigning the counters.\n ///\n /// The reason we have side-effect counters is complicated. Consider this\n /// illustrative pseudocode of inter-contract function calls:\n /// ```\n /// contract A {\n /// let x = 5; // pseudocode for storage var x.\n /// fn a1 {\n /// read x; // value: 5, counter: 1.\n /// x = x + 1;\n /// write x; // value: 6, counter: 2.\n ///\n /// B.b(); // start_counter: 2, end_counter: 4\n ///\n /// read x; // value: 36, counter: 5.\n /// x = x + 1;\n /// write x; // value: 37, counter: 6.\n /// }\n ///\n /// fn a2 {\n /// read x; // value: 6, counter: 3.\n /// x = x * x;\n /// write x; // value: 36, counter: 4.\n /// }\n /// }\n ///\n /// contract B {\n /// fn b() {\n /// A.a2();\n /// }\n /// }\n /// ```\n ///\n /// Suppose a1 is the first function called. The comments show the execution\n /// counter of each side-effect, and what the new value of `x` is.\n ///\n /// These (private) functions are processed by Aztec's kernel circuits in an\n /// order that is different from execution order:\n /// All of A.a1 is proven before B.b is proven, before A.a2 is proven.\n /// So when we're in the 2nd execution frame of A.a1 (after the call to\n /// B.b), the circuit needs to justify why x went from being `6` to `36`.\n /// But the circuit doesn't know why, and given the order of proving, the\n /// kernel hasn't _seen_ a value of 36 get written yet.\n /// The kernel needs to track big arrays of all side-effects of all\n /// private functions in a tx. Then, as it recurses and processes B.b(), it\n /// will eventually see a value of 36 get written.\n ///\n /// Suppose side-effect counters weren't exposed:\n /// The kernel would only see this ordering (in order of proof verification):\n /// [ A.a1.read, A.a1.write, A.a1.read, A.a1.write, A.a2.read, A.a2.write ]\n /// [ 5, 6, 36, 37, 6, 36 ]\n /// The kernel wouldn't know _when_ B.b() was called within A.a1(), because\n /// it can't see what's going on within an app circuit. So the kernel\n /// wouldn't know that the ordering of reads and writes should actually be:\n /// [ A.a1.read, A.a1.write, A.a2.read, A.a2.write, A.a1.read, A.a1.write ]\n /// [ 5, 6, 6, 36, 36, 37 ]\n ///\n /// And so, we introduced side-effect counters: every private function must\n /// assign side-effect counters alongside every side-effect that it emits,\n /// and also expose to the kernel the counters that it started and ended\n /// with.\n /// This gives the kernel enough information to arrange all side-effects in\n /// the correct order.\n /// It can then catch (for example) if a function tries to read state\n /// before it has been written (e.g. if A.a2() maliciously tried to read\n /// a value of x=37) (e.g. if A.a1() maliciously tried to read x=6).\n ///\n /// If a malicious app contract _lies_ and does not count correctly:\n /// - It cannot lie about its start and end counters because the kernel\n /// will catch this.\n /// - It _could_ lie about its intermediate counters:\n /// - 1. It could not increment its side-effects correctly\n /// - 2. It could label its side-effects with counters outside of its\n /// start and end counters' range.\n /// The kernel will catch 2.\n /// The kernel will not catch 1., but this would only cause corruption\n /// to the private state of the malicious contract, and not any other\n /// contracts (because a contract can only modify its own state). If\n /// a \"good\" contract is given _read access_ to a maliciously-counting\n /// contract (via an external getter function, or by reading historic\n /// state from the archive tree directly), and they then make state\n /// changes to their _own_ state accordingly, that could be dangerous.\n /// Developers should be mindful not to trust the claimed innards of\n /// external contracts unless they have audited/vetted the contracts\n /// including vetting the side-effect counter incrementation.\n /// This is a similar paradigm to Ethereum smart contract development:\n /// you must vet external contracts that your contract relies upon, and\n /// you must not make any presumptions about their claimed behaviour.\n /// (Hopefully if a contract imports a version of aztec-nr, we will get\n /// contract verification tooling that can validate the authenticity\n /// of the imported aztec-nr package, and hence infer that the side-\n /// effect counting will be correct, without having to re-audit such logic\n /// for every contract).\n ///\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: 0,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" }, "72": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", - "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl PublicContext {\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index) } == 1\n }\n\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n pub fn fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_l2_gas()\n }\n }\n pub fn fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_da_gas()\n }\n }\n\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> u128 {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> u128 {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> Field {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", + "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\n/// # PublicContext\n///\n/// The **main interface** between a #[public] function and the Aztec blockchain.\n///\n/// An instance of the PublicContext is initialized automatically at the outset\n/// of every public function, within the #[public] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it will always be available\n/// within the body of every #[public] function in your smart contract.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PublicContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a public function:\n/// - Data relating to how this public function was called:\n/// - msg_sender, this_address\n/// - Data relating to the current blockchain state:\n/// - timestamp, block_number, chain_id, version\n/// - Gas and fee information\n/// - Provides state access:\n/// - Read/write public storage (key-value mapping)\n/// - Check existence of notes and nullifiers\n/// (Some patterns use notes & nullifiers to store public (not private)\n/// information)\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to other public smart contract functions:\n/// - Writes data to the blockchain:\n/// - Updates to public state variables\n/// - New public logs (for events)\n/// - New L2->L1 messages\n/// - New notes & nullifiers\n/// (E.g. pushing public info to notes/nullifiers, or for completing\n/// \"partial notes\")\n///\n/// ## Key Differences from Private Execution\n///\n/// Unlike private functions -- which are executed on the user's device and which\n/// can only reference historic state -- public functions are executed by a block\n/// proposer and are executed \"live\" on the _current_ tip of the chain.\n/// This means public functions can:\n/// - Read and write _current_ public state\n/// - Immediately see the effects of earlier transactions in the same block\n///\n/// Also, public functions are executed within a zkVM (the \"AVM\"), so that they\n/// can _revert_ whilst still ensuring payment to the proposer and prover.\n/// (Private functions cannot revert: they either succeed, or they cannot be\n/// included).\n///\n/// ## Optimising Public Functions\n///\n/// Using the AVM to execute public functions means they compile down to \"AVM\n/// bytecode\" instead of the ACIR that private functions (standalone circuits)\n/// compile to. Therefore the approach to optimising a public function is\n/// fundamentally different from optimising a public function.\n///\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl Eq for PublicContext {\n fn eq(self, other: Self) -> bool {\n (self.args_hash == other.args_hash)\n // Can't compare the function compute_args_hash\n }\n}\n\nimpl PublicContext {\n /// Creates a new PublicContext instance.\n ///\n /// Low-level function: This is called automatically by the #[public]\n /// macro, so you shouldn't need to be called directly by smart contract\n /// developers.\n ///\n /// # Arguments\n /// * `compute_args_hash` - Function to compute the args_hash\n ///\n /// # Returns\n /// * A new PublicContext instance\n ///\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n /// Emits a _public_ log that will be visible onchain to everyone.\n ///\n /// # Arguments\n /// * `log` - The data to log, must implement Serialize trait\n ///\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n /// Checks if a given note hash exists in the note hash tree at a particular\n /// leaf_index.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to check for existence\n /// * `leaf_index` - The index where the note hash should be located\n ///\n /// # Returns\n /// * `bool` - True if the note hash exists at the specified index\n ///\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message\n /// tree at a particular leaf index.\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// This function should be called before attempting to consume an L1-to-L2\n /// message.\n ///\n /// # Arguments\n /// * `msg_hash` - Hash of the L1-to-L2 message to check\n /// * `msg_leaf_index` - The index where the message should be located\n ///\n /// # Returns\n /// * `bool` - True if the message exists at the specified index\n ///\n /// # Advanced\n /// * Uses the AVM l1_to_l2_msg_exists opcode for tree lookup\n /// * Messages are copied from L1 Inbox to L2 by block proposers\n ///\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n // TODO(alvaro): Make l1l2msg leaf index a u64 upstream\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1\n }\n\n /// Checks if a specific nullifier has been emitted by a given contract.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. An example is to check\n /// whether a contract has been published: we emit a nullifier that is\n /// deterministic, but whose preimage is _not_ private. This is more\n /// efficient than using mutable storage, and can be done directly\n /// from a private function.\n ///\n /// Nullifiers can be tested for non-existence in public, which is not the\n /// case in private. Because private functions do not have access to\n /// the tip of the blockchain (but only the anchor block they are built\n /// at) they can only prove nullifier non-existence in the past. But between\n /// an anchor block and the block in which a tx is included, the nullifier\n /// might have been inserted into the nullifier tree by some other\n /// transaction.\n /// Public functions _do_ have access to the tip of the state, and so\n /// this pattern is safe.\n ///\n /// # Arguments\n /// * `unsiloed_nullifier` - The raw nullifier value (before siloing with\n /// the contract address that emitted it).\n /// * `address` - The claimed contract address that emitted the nullifier\n ///\n /// # Returns\n /// * `bool` - True if the nullifier has been emitted by the specified contract\n ///\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2) -- effectively\n /// marking it as \"read\".\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree,\n /// using the `l1_to_l2_msg_exists` method. Messages never technically get\n /// deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1. It will not be available for consumption immediately. Messages\n /// get copied-over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// * Validates message existence in the L1-to-L2 message tree\n /// * Prevents double-consumption by emitting a nullifier\n /// * Message hash is computed from all parameters + chain context\n /// * Will revert if message doesn't exist or was already consumed\n ///\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element)\n ///\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n /// Calls a public function on another contract.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Arguments to pass to the function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Makes a read-only call to a public function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Useful for querying data from other contracts safely.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Array of arguments to pass to the called function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Adds a new note hash to the Aztec blockchain's global Note Hash Tree.\n ///\n /// Notes are ordinarily constructed and emitted by _private_ functions, to\n /// ensure that both the content of the note, and the contract that emitted\n /// the note, stay private.\n ///\n /// There are however some useful patterns whereby a note needs to contain\n /// _public_ data. The ability to push a new note_hash from a _public_\n /// function means that notes can be injected with public data immediately\n /// -- as soon as the public value is known. The slower alternative would\n /// be to submit a follow-up transaction so that a private function can\n /// inject the data. Both are possible on Aztec.\n ///\n /// Search \"Partial Note\" for a very common pattern which enables a note\n /// to be \"partially\" populated with some data in a _private_ function, and\n /// then later \"completed\" with some data in a public function.\n ///\n /// # Arguments\n /// * `note_hash` - The hash of the note to add to the tree\n ///\n /// # Advanced\n /// * The note hash will be siloed with the contract address by the protocol\n ///\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n\n /// Adds a new nullifier to the Aztec blockchain's global Nullifier Tree.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. Hence why you're seeing this\n /// function within the PublicContext.\n /// An example is to check whether a contract has been published: we emit\n /// a nullifier that is deterministic, but whose preimage is _not_ private.\n ///\n /// # Arguments\n /// * `nullifier` - A unique field element that represents the consumed\n /// state\n ///\n /// # Advanced\n /// * Nullifier is immediately added to the global nullifier tree\n /// * Emitted nullifiers are immediately visible to all\n /// subsequent transactions in the same block\n /// * Automatically siloed with the contract address by the protocol\n /// * Used for preventing double-spending and ensuring one-time actions\n ///\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n /// Returns the address of the current contract being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases, and is enforced by the protocol's kernel circuits.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the account or contract that called\n /// this function\n ///\n /// # Examples\n /// ```rust\n /// #[aztec(public)]\n /// fn transfer(context: &mut PublicContext, to: AztecAddress, amount: u64) {\n /// let sender = context.msg_sender();\n /// // Only the sender can transfer their own tokens\n /// assert(sender == get_token_owner(), \"Unauthorized\");\n /// }\n /// ```\n ///\n /// # Advanced\n /// * Value is provided by the AVM sender opcode\n /// * In nested calls, this is the immediate caller, not the original\n /// transaction sender\n /// * Globally visible unlike private execution where it's contract-local\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n\n /// Returns the function selector of the currently-executing function.\n ///\n /// This is similar to `msg.sig` in Solidity, returning the first 4\n /// bytes of the function signature.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// * Extracted from the first element of calldata\n /// * Used internally for function dispatch in the AVM\n ///\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: The #[public] macro uses this internally.\n /// Smart contract developers typically won't need to access this\n /// directly as arguments are automatically made available.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n\n /// Returns the \"transaction fee\" for the current transaction.\n /// This is the final tx fee that will be deducted from the fee_payer's\n /// \"fee-juice\" balance (in the protocol's Base Rollup circuit).\n ///\n /// # Returns\n /// * `Field` - The actual, final cost of the transaction, taking into account:\n /// the actual gas used during the setup and app-logic phases,\n /// and the fixed amount of gas that's been allocated by the user\n /// for the teardown phase.\n /// I.e. effectiveL2FeePerGas * l2GasUsed + effectiveDAFeePerGas * daGasUsed\n ///\n /// This will return `0` during the \"setup\" and \"app-logic\" phases of\n /// tx execution (because the final tx fee is not known at that time).\n /// This will only return a nonzero value during the \"teardown\" phase of\n /// execution, where the final tx fee can actually be computed.\n ///\n /// Regardless of _when_ this function is called during the teardown phase,\n /// it will always return the same final tx fee value. The teardown phase\n /// does not consume a variable amount of gas: it always consumes a\n /// pre-allocated amount of gas, as specified by the user when they generate\n /// their tx.\n ///\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n /// Returns the current block number.\n ///\n /// This is similar to `block.number` in Solidity.\n ///\n /// Note: the current block number is only available within a public function\n /// (as opposed to a private function).\n ///\n /// Note: the time intervals between blocks should not be relied upon as\n /// being consistent:\n /// - Timestamps of blocks fall within a range, rather than at exact regular\n /// intervals.\n /// - Slots can be missed.\n /// - Protocol upgrades can completely change the intervals between blocks\n /// (and indeed the current roadmap plans to reduce the time between\n /// blocks, eventually).\n /// Use `context.timestamp()` for more-reliable time-based logic.\n ///\n /// # Returns\n /// * `u32` - The current block number\n ///\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n\n /// Returns the timestamp of the current block.\n ///\n /// This is similar to `block.timestamp` in Solidity.\n ///\n /// All functions of all transactions in a block share the exact same\n /// timestamp (even though technically each transaction is executed\n /// one-after-the-other).\n ///\n /// Important note: Timestamps of Aztec blocks are not at reliably-fixed\n /// intervals. The proposer of the block has some flexibility to choose a\n /// timestamp which is in a valid _range_: Obviously the timestamp of this\n /// block must be strictly greater than that of the previous block, and must\n /// must be less than the timestamp of whichever ethereum block the aztec\n /// block is proposed to. Furthermore, if the timestamp is not deemed close\n /// enough to the actual current time, the committee of validators will not\n /// attest to the block.\n ///\n /// # Returns\n /// * `u64` - Unix timestamp in seconds\n ///\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n\n /// Returns the fee per unit of L2 gas for this transaction (aka the \"L2 gas\n /// price\"), as chosen by the user.\n ///\n /// L2 gas covers the cost of executing public functions and handling\n /// side-effects within the AVM.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of L2 gas\n ///\n /// Wallet developers should be mindful that the choice of gas price (which\n /// is publicly visible) can leak information about the user, e.g.:\n /// - which wallet software the user is using;\n /// - the amount of time which has elapsed from the time the user's wallet\n /// chose a gas price (at the going rate), to the time of tx submission.\n /// This can give clues about the proving time, and hence the nature of\n /// the tx.\n /// - the urgency of the transaction (which is kind of unavoidable, if the\n /// tx is indeed urgent).\n /// - the wealth of the user.\n /// - the exact user (if the gas price is explicitly chosen by the user to\n /// be some unique number like 0.123456789, or their favourite number).\n /// Wallet devs might wish to consider fuzzing the choice of gas price.\n ///\n pub fn base_fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_l2_gas()\n }\n }\n\n /// Returns the fee per unit of DA (Data Availability) gas (aka the \"DA gas\n /// price\").\n ///\n /// DA gas covers the cost of making transaction data available on L1.\n ///\n /// See the warning in `fee_pre_l2_gas` for how gas prices can be leaky.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of DA gas\n ///\n pub fn base_fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_da_gas()\n }\n }\n\n /// Returns the remaining L2 gas available for this transaction.\n ///\n /// Different AVM opcodes consume different amounts of gas.\n ///\n /// # Returns\n /// * `u32` - Remaining L2 gas units\n ///\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n\n /// Returns the remaining DA (Data Availability) gas available for this\n /// transaction.\n ///\n /// DA gas is consumed when emitting data that needs to be made available\n /// on L1, such as public logs or state updates.\n /// All of the side-effects from the private part of the tx also consume\n /// DA gas before execution of any public functions even begins.\n ///\n /// # Returns\n /// * `u32` - Remaining DA gas units\n ///\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n\n /// Checks if the current execution is within a staticcall context, where\n /// no state changes or logs are allowed to be emitted (by this function\n /// or any nested function calls).\n ///\n /// # Returns\n /// * `bool` - True if in staticcall context, false otherwise\n ///\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n /// Reads raw field values from public storage.\n /// Reads N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to read from\n ///\n /// # Returns\n /// * `[Field; N]` - Array of N field values from consecutive storage slots\n ///\n /// # Generic Parameters\n /// * `N` - the number of consecutive slots to return, starting from the\n /// `storage_slot`.\n ///\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n /// Reads a typed value from public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to read from\n ///\n /// # Returns\n /// * `T` - The deserialized value from storage\n ///\n /// # Generic Parameters\n /// * `T` - The type that the caller expects to read from the `storage_slot`.\n ///\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n /// Writes raw field values to public storage.\n /// Writes to N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// Public storage writes take effect immediately.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to write to\n /// * `values` - Array of N Fields to write to storage\n ///\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n /// Writes a typed value to public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to write to\n /// * `value` - The typed value to write to storage\n ///\n /// # Generic Parameters\n /// * `T` - The type to write to storage.\n ///\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn base_fee_per_l2_gas() -> u128 {\n base_fee_per_l2_gas_opcode()\n}\nunconstrained fn base_fee_per_da_gas() -> u128 {\n base_fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> u1 {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\n\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeBaseFeePerL2Gas)]\nunconstrained fn base_fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeBaseFeePerDaGas)]\nunconstrained fn base_fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> u1 {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" }, "73": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", - "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.hash, 0);\n }\n\n pub fn raw(self) -> Field {\n self.hash\n }\n\n /// This is only used during private execution, since in public it is the VM itself that keeps track of return\n /// values.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n\n Deserialize::deserialize(preimage)\n }\n\n pub fn get_preimage_and_assert_empty(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n assert_eq(self.hash, 0);\n\n Deserialize::deserialize(preimage)\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", + "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\n/// A hash that represents a private contract function call's return value. Call `get_preimage` to get the underlying\n/// value.\n///\n/// The kernels don't process the actual return values but instead their hashes, so it is up to contracts to populate\n/// oracles with the preimages of these hashes on return to make them available to their callers.\n///\n/// Public calls don't utilize this mechanism since the AVM does process the full return values.\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n /// Fetches the underlying return value from an oracle, constraining that it corresponds to the return data hash.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it. If `T`\n // is `()`, then `preimage` must be an array of length 0 (since that is `()`'s deserialization length).\n // `hash_args_array` handles empty arrays following the protocol rules (i.e. an empty args array is signaled\n // with a zero hash), correctly constraining `self.hash`.\n let preimage = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage), \"Preimage mismatch\");\n\n Deserialize::deserialize(preimage)\n }\n}\n\nmod test {\n use crate::{\n hash::hash_args_array,\n oracle::execution_cache,\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use super::ReturnsHash;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn retrieves_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test]\n unconstrained fn retrieves_empty_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = ();\n let serialized = [];\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test(should_fail_with = \"Preimage mismatch\")]\n unconstrained fn rejects_bad_preimage() {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let mut bad_serialized = serialized;\n bad_serialized[0] += 1;\n\n let hash = hash_args_array(serialized);\n\n let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns(bad_serialized);\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n }\n\n // This test passes due to a Noir bug.\n // #[test(should_fail_with=\"Preimage mismatch\")]\n // unconstrained fn rejects_bad_empty_preimage() {\n // let value = ();\n // let serialized = [];\n\n // let hash = hash_args_array(serialized);\n\n // let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns([1]);\n // assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n // }\n}\n" }, "74": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", - "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", + "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" }, - "77": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", - "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n // TODO(#2707): Consider making this a u64 as we already cast this to that when encoding the message. This would decrease\n // the likelihood of collisions without any extra cost.\n inner: u32,\n}\n\nimpl Eq for EventSelector {\n fn eq(self, other: EventSelector) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl Serialize<1> for EventSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for EventSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" + "76": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", + "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n inner: u32,\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" }, - "79": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/hash.nr", + "78": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/hash.nr", "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n" }, - "91": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", - "source": "use dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n hash::poseidon2_hash_with_separator, utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" + "90": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", + "source": "use dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress,\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" }, - "94": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", + "93": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ecdh shared secret using the address public key of the given address:\n/// [ephemeral_secret] * recipient_address_public_key = shared_secret.\n/// The intention is that the _creator_ of a shared secret would call this function,\n/// given the address of their intended recipient.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Point {\n derive_ecdh_shared_secret(ephemeral_secret, recipient_address.to_address_point().inner)\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n" }, - "95": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", + "94": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" }, - "96": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", - "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n" + "95": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", + "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n\nmod test {\n use super::get_public_keys;\n\n use crate::test::helpers::test_environment::TestEnvironment;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n global KEY_ORACLE_RESPONSE_LENGTH: u32 = 13; // 12 fields for the keys, one field for the partial address\n\n #[test(should_fail_with = \"Invalid public keys hint for address\")]\n unconstrained fn get_public_keys_fails_with_bad_hint() {\n let mut env = TestEnvironment::new();\n let account = env.create_light_account();\n\n // Instead of querying for some unknown account, which would result in the oracle erroring out, we mock a bad oracle\n // response to check that the circuit properly checks the address derivation.\n let mut random_keys_and_partial_address = [0; KEY_ORACLE_RESPONSE_LENGTH];\n // We use randomly generated points on the curve, and a random partial address to ensure that\n // this combination does not derive the address and we should see the assertion fail.\n // npk_m\n random_keys_and_partial_address[0] =\n 0x292364b852c6c6f01472951e76a39cbcf074591fd0e063a81965e7b51ad868a5;\n random_keys_and_partial_address[1] =\n 0x0a687b46cdc9238f1c311f126aaaa4acbd7a737bff2efd7aeabdb8d805843a27;\n random_keys_and_partial_address[2] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ivpk_m\n random_keys_and_partial_address[3] =\n 0x173c5229a00c5425255680dd6edc27e278c48883991f348fe6985de43b4ec25f;\n random_keys_and_partial_address[4] =\n 0x1698608e23b5f6c2f43c49a559108bb64e2247b8fc2da842296a416817f40b7f;\n random_keys_and_partial_address[5] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ovpk_m\n random_keys_and_partial_address[6] =\n 0x1bad2f7d1ad960a1bd0fe4d2c8d17f5ab4a86ef8b103e0a9e7f67ec0d3b4795e;\n random_keys_and_partial_address[7] =\n 0x206db87110abbecc9fbaef2c865189d94ef2c106202f734ee4eba9257fd28bf1;\n random_keys_and_partial_address[8] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // tpk_m\n random_keys_and_partial_address[9] =\n 0x05e3bd9cfe6b47daa139613619cf7d7fd8bb0112b6f2908caa6d9b536ed948ed;\n random_keys_and_partial_address[10] =\n 0x051066f877c9df47552d02e7dc32127ff4edefc8498e813bca1cbd3f5d1be429;\n random_keys_and_partial_address[11] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // partial address\n random_keys_and_partial_address[12] =\n 0x236703e2cb00a182e024e98e9f759231b556d25ff19f98896cebb69e9e678cc9;\n\n let _ = OracleMock::mock(\"utilityGetPublicKeysAndPartialAddress\").returns(\n random_keys_and_partial_address.serialize(),\n );\n let _ = get_public_keys(account);\n }\n}\n" + }, + "99": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", + "source": "use crate::macros::{\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::NOTES,\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n // We generate `_compute_note_hash_and_nullifier`, `sync_private_state` and `process_message`\n // functions only if they are not already implemented. If they are implemented we just insert empty\n // quotes.\n let contract_library_method_compute_note_hash_and_nullifier = if !m.functions().any(|f| {\n f.name() == quote { _compute_note_hash_and_nullifier }\n }) {\n generate_contract_library_method_compute_note_hash_and_nullifier()\n } else {\n quote {}\n };\n let sync_private_state = if !m.functions().any(|f| f.name() == quote { sync_private_state }) {\n generate_sync_private_state()\n } else {\n quote {}\n };\n let process_message = if !m.functions().any(|f| f.name() == quote { process_message }) {\n generate_process_message()\n } else {\n quote {}\n };\n let public_dispatch = generate_public_dispatch(m);\n\n quote {\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n if NOTES.len() > 0 {\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..NOTES.len() {\n let typ = NOTES.get(i);\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret its raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = <$typ as $crate::protocol_types::traits::Packable>::N;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" } } } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts index 81f63bcb..a360bd34 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts @@ -57,8 +57,7 @@ export class AztecBlockchainActivities implements IAztecBlockchainActivities { } public async GetBalance(request: BalanceRequest): Promise { - let result: BalanceResponse = { amount: 1000000000000 } - return result; + return { amount: 1000000000000 }; } public async GetLastConfirmedBlockNumber(request: BaseRequest): Promise { @@ -73,11 +72,6 @@ export class AztecBlockchainActivities implements IAztecBlockchainActivities { }; } - public async ValidateAddLockSignature(request: AddLockSignatureRequest): Promise { - - return true; - } - public async GetEvents(request: EventRequest): Promise { const result = await TrackBlockEventsAsync(request.network, request.fromBlock, request.toBlock, request.walletAddresses); @@ -129,14 +123,14 @@ export class AztecBlockchainActivities implements IAztecBlockchainActivities { public async publishTransaction(request: AztecPublishTransactionRequest): Promise { - const parsed = JSON.parse(request.signedTx) as { signedTx: string }; + const parsed = JSON.parse(request.signedTx); const buf = Buffer.from(parsed.signedTx, "hex"); const signedTx = Tx.fromBuffer(buf); const provider = createAztecNodeClient(request.network.nodes[0].url); await provider.sendTx(signedTx); - const txHash = (await signedTx.getTxHash()).toString() + const txHash = signedTx.getTxHash().toString(); return txHash; } @@ -208,4 +202,8 @@ export class AztecBlockchainActivities implements IAztecBlockchainActivities { await lock.release().catch(() => { }); } } + + ValidateAddLockSignature(request: AddLockSignatureRequest): Promise { + throw new Error("Method not implemented."); + } } diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts index be98d3a9..91906e72 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts @@ -2,6 +2,7 @@ import { AztecAddress, createAztecNodeClient } from '@aztec/aztec.js'; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; +import { ensureHexPrefix, removeHexPrefix } from '../../../Blockchain.Abstraction/Extensions/StringExtensions'; export default async function TrackBlockEventsAsync( network: DetailedNetworkDto, @@ -10,6 +11,7 @@ export default async function TrackBlockEventsAsync( solverAddresses: string[], ): Promise { + const MinBlockInterval = 3; const tokenCommittedSelector = 2050960156; const tokenLockAddedSelector = 3251955602; @@ -20,7 +22,9 @@ export default async function TrackBlockEventsAsync( }; try { - if (fromBlock == toBlock) fromBlock = fromBlock - 3; + if (fromBlock == toBlock) { + fromBlock = fromBlock - MinBlockInterval + }; const provider = createAztecNodeClient(network.nodes[0].url); @@ -43,6 +47,7 @@ export default async function TrackBlockEventsAsync( const blockNumber = await provider.getBlock(id.blockNumber) const txId = blockNumber.body.txEffects[id.txIndex].txHash.toString(); + //In all events, these values order are fixed let commitId = fields[1].toString(); let timelock = fields[4].toNumber() @@ -67,7 +72,7 @@ export default async function TrackBlockEventsAsync( amount: amount.toString(), receiverAddress: receiverAddress, sourceNetwork: network.name, - senderAddress: '0', + senderAddress: '', sourceAsset: sourceAsset, destinationAddress: destAddress, destinationNetwork: destNetwork, @@ -102,9 +107,7 @@ export default async function TrackBlockEventsAsync( } function readLowest30BytesAsString(hex: string): string { - if (hex.startsWith('0x')) { - hex = hex.slice(2); - } + removeHexPrefix(hex) const byteLength = hex.length / 2; @@ -138,5 +141,5 @@ function hashLockToHexValidated(high: bigint, low: bigint): string { // Convert to hex and pad to 64 characters const hexString = combined.toString(16).padStart(64, '0'); - return '0x' + hexString; + return ensureHexPrefix(hexString); } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts index 94925760..ae6634db 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts @@ -1,4 +1,4 @@ -import { decodeJson } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; +import { decodeJson, ensureHexPrefix, toHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { HTLCLockTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCLockTransactionPrepareRequest"; import { HTLCRedeemTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCRedeemTransactionPrepareRequest"; import { HTLCRefundTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCRefundTransactionPrepareRequest"; @@ -7,6 +7,7 @@ import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/Detai import { AztecAddress, Fr } from "@aztec/aztec.js"; import { PrepareTransactionResponse } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; import crypto from 'crypto'; +import { TransferPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferPrepareRequest"; export async function createRefundCallData(network: DetailedNetworkDto, args: string): Promise { @@ -27,10 +28,8 @@ export async function createRefundCallData(network: DetailedNetworkDto, args: st args: [refundRequest.commitId], } - const json = JSON.stringify(functionInteraction); - return { - data: json, + data: JSON.stringify(functionInteraction), amount: "0", asset: network.nativeToken.symbol, callDataAsset: token.symbol, @@ -81,21 +80,19 @@ export async function createCommitCallData(network: DetailedNetworkDto, args: st }] } - const json = JSON.stringify(functionInteraction); - return { - data: json, + data: JSON.stringify(functionInteraction), amount: "0", asset: network.nativeToken.symbol, callDataAsset: token.symbol, - callDataAmount: "0", + callDataAmount: commitRequest.amount.toString(), toAddress: htlcContractAddress, }; } export async function createRedeemCallData(network: DetailedNetworkDto, args: string): Promise { - const redeemRequest = decodeJson(args); + const redeemRequest = decodeJson(args); const token = network.tokens.find(t => t.symbol === redeemRequest.asset); if (!token) { @@ -106,8 +103,7 @@ export async function createRedeemCallData(network: DetailedNetworkDto, args: st ? network.htlcNativeContractAddress : network.htlcTokenContractAddress - const toHex = (n: bigint) => '0x' + n.toString(16); - const [secretHigh, secretLow] = hexToU128Limbs(toHex(BigInt(redeemRequest.secret))); + const [secretHigh, secretLow] = hexToU128Limbs(toHex((BigInt(redeemRequest.secret)))); const [ownershipKeyHigh, ownershipKeyLow] = hexToU128Limbs(toHex(BigInt(redeemRequest.secret))); let functionInteraction: FunctionInteraction = { @@ -122,10 +118,8 @@ export async function createRedeemCallData(network: DetailedNetworkDto, args: st ], } - const json = JSON.stringify(functionInteraction); - return { - data: json, + data: JSON.stringify(functionInteraction), amount: "0", asset: network.nativeToken.symbol, callDataAsset: token.symbol, @@ -148,7 +142,7 @@ export async function createLockCallData(network: DetailedNetworkDto, args: stri ? network.htlcNativeContractAddress : network.htlcTokenContractAddress - const randomness = BigInt('0x' + crypto.randomBytes(31).toString('hex')).toString() + const randomness = BigInt(ensureHexPrefix(crypto.randomBytes(31).toString('hex'))).toString() const hashlock = hexToU128Limbs(lockRequest.hashlock); const ownershipHash = hexToU128Limbs(normalizeHex(lockRequest.receiver)); @@ -181,18 +175,44 @@ export async function createLockCallData(network: DetailedNetworkDto, args: stri }] } - const json = JSON.stringify(functionInteraction); - return { - data: json, - amount: (lockRequest.amount + lockRequest.reward).toString(), - asset: lockRequest.sourceAsset, + data: JSON.stringify(functionInteraction), + amount: lockRequest.amount.toString(), + asset: network.nativeToken.symbol, callDataAsset: lockRequest.sourceAsset, - callDataAmount: (lockRequest.amount + lockRequest.reward).toString(), + callDataAmount: lockRequest.amount.toString(), toAddress: htlcContractAddress, }; } +export async function createTransferCallData(network: DetailedNetworkDto, args: string): Promise { + + const transferRequest = decodeJson(args); + const token = network.tokens.find(t => t.symbol === transferRequest.asset); + + if (!token) { + throw new Error(`Token not found for network ${network.name} and asset ${transferRequest.asset}`) + }; + + let functionInteraction: FunctionInteraction = { + interactionAddress: token.contract, + functionName: "transfer", + args: [ + transferRequest.toAddress, + transferRequest.amount + ], + } + + return { + data: JSON.stringify(functionInteraction), + amount: transferRequest.amount.toString(), + asset: token.symbol, + callDataAsset: token.symbol, + callDataAmount: transferRequest.amount.toString(), + toAddress: transferRequest.toAddress, + }; +} + interface FunctionInteraction { interactionAddress: string, functionName: string, diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts deleted file mode 100644 index ff873643..00000000 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/FPC.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - type ContractInstanceWithAddress, - Fr, - type PXE, - getContractInstanceFromDeployParams, -} from '@aztec/aztec.js'; -import { SPONSORED_FPC_SALT } from '@aztec/constants'; -import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; - -export async function getSponsoredFPCInstance(): Promise { - return await getContractInstanceFromDeployParams( - SponsoredFPCContract.artifact, - { - salt: new Fr(SPONSORED_FPC_SALT), - }, - ); -} - -export async function getSponsoredFPCAddress() { - return (await getSponsoredFPCInstance()).address; -} - -export async function getDeployedSponsoredFPCAddress(pxe: PXE) { - const fpc = await getSponsoredFPCAddress(); - const contracts = await pxe.getContracts(); - if (!contracts.find((c) => c.equals(fpc))) { - throw new Error('SponsoredFPC not deployed.'); - } - return fpc; -} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts deleted file mode 100644 index cc1c8aa1..00000000 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/Train.ts +++ /dev/null @@ -1,220 +0,0 @@ -/* Autogenerated file, do not edit! */ - -/* eslint-disable */ -import { - AztecAddress, - type AztecAddressLike, - Contract, - type ContractArtifact, - ContractBase, - ContractFunctionInteraction, - type ContractInstanceWithAddress, - type ContractMethod, - type ContractStorageLayout, - type ContractNotes, - DeployMethod, - type FieldLike, - Fr, - loadContractArtifact, - loadContractArtifactForPublic, - type NoirCompiledContract, - NoteSelector, - PublicKeys, - type Wallet, -} from '@aztec/aztec.js'; -import TrainContractArtifactJson from "../ABIs/train.json"; -export const TrainContractArtifact = loadContractArtifact( - TrainContractArtifactJson as NoirCompiledContract, -); - -/** - * Type-safe interface for contract Train; - */ -export class TrainContract extends ContractBase { - private constructor(instance: ContractInstanceWithAddress, wallet: Wallet) { - super(instance, TrainContractArtifact, wallet); - } - - /** - * Creates a contract instance. - * @param address - The deployed contract's address. - * @param wallet - The wallet to use when interacting with the contract. - * @returns A promise that resolves to a new Contract instance. - */ - public static async at(address: AztecAddress, wallet: Wallet) { - return Contract.at( - address, - TrainContract.artifact, - wallet, - ) as Promise; - } - - /** - * Creates a tx to deploy a new instance of this contract. - */ - public static deploy(wallet: Wallet) { - return new DeployMethod( - PublicKeys.default(), - wallet, - TrainContractArtifact, - TrainContract.at, - Array.from(arguments).slice(1), - ); - } - - /** - * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. - */ - public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet) { - return new DeployMethod( - publicKeys, - wallet, - TrainContractArtifact, - TrainContract.at, - Array.from(arguments).slice(2), - ); - } - - /** - * Creates a tx to deploy a new instance of this contract using the specified constructor method. - */ - public static deployWithOpts( - opts: { publicKeys?: PublicKeys; method?: M; wallet: Wallet }, - ...args: Parameters - ) { - return new DeployMethod( - opts.publicKeys ?? PublicKeys.default(), - opts.wallet, - TrainContractArtifact, - TrainContract.at, - Array.from(arguments).slice(1), - opts.method ?? 'constructor', - ); - } - - /** - * Returns this contract's artifact. - */ - public static get artifact(): ContractArtifact { - return TrainContractArtifact; - } - - /** - * Returns this contract's artifact with public bytecode. - */ - public static get artifactForPublic(): ContractArtifact { - return loadContractArtifactForPublic( - TrainContractArtifactJson as NoirCompiledContract, - ); - } - - public static get storage(): ContractStorageLayout< - 'contracts_private' | 'contracts_public' - > { - return { - contracts_private: { - slot: new Fr(1), - }, - contracts_public: { - slot: new Fr(2), - }, - } as ContractStorageLayout<'contracts_private' | 'contracts_public'>; - } - - public static get notes(): ContractNotes<'UintNote' | 'HTLC_Private'> { - return { - UintNote: { - id: new NoteSelector(0), - }, - HTLC_Private: { - id: new NoteSelector(1), - }, - } as ContractNotes<'UintNote' | 'HTLC_Private'>; - } - - /** Type-safe wrappers for the public methods exposed by the contract. */ - declare public methods: { - /** add_lock_private_user(Id: field, hashlock: array, timelock: integer) */ - add_lock_private_user: (( - Id: FieldLike, - hashlock: (bigint | number)[], - timelock: bigint | number, - ) => ContractFunctionInteraction) & - Pick; - - /** commit_private_user(Id: field, src_receiver: struct, timelock: integer, token: struct, amount: integer, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: field) */ - commit_private_user: (( - Id: FieldLike, - src_receiver: AztecAddressLike, - timelock: bigint | number, - token: AztecAddressLike, - amount: bigint | number, - src_asset: string, - dst_chain: string, - dst_asset: string, - dst_address: string, - randomness: FieldLike, - ) => ContractFunctionInteraction) & - Pick; - - /** constructor() */ - constructor: (() => ContractFunctionInteraction) & - Pick; - - /** get_htlc_public(key: field) */ - get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & - Pick; - - /** is_contract_initialized(Id: field) */ - is_contract_initialized: ((Id: FieldLike) => ContractFunctionInteraction) & - Pick; - - /** lock_private_solver(Id: field, hashlock: array, amount: integer, ownership_hash: array, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ - lock_private_solver: (( - Id: FieldLike, - hashlock: (bigint | number)[], - amount: bigint | number, - ownership_hash: (bigint | number)[], - timelock: bigint | number, - token: AztecAddressLike, - randomness: FieldLike, - src_asset: string, - dst_chain: string, - dst_asset: string, - dst_address: string, - ) => ContractFunctionInteraction) & - Pick; - - /** process_message(message_ciphertext: struct, message_context: struct) */ - process_message: (( - message_ciphertext: FieldLike[], - message_context: { - tx_hash: FieldLike; - unique_note_hashes_in_tx: FieldLike[]; - first_nullifier_in_tx: FieldLike; - recipient: AztecAddressLike; - }, - ) => ContractFunctionInteraction) & - Pick; - - /** public_dispatch(selector: field) */ - public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & - Pick; - - /** redeem_private(Id: field, secret: array, ownership_key: array) */ - redeem_private: (( - Id: FieldLike, - secret: (bigint | number)[], - ownership_key: (bigint | number)[], - ) => ContractFunctionInteraction) & - Pick; - - /** refund_private(Id: field) */ - refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & - Pick; - - /** sync_private_state() */ - sync_private_state: (() => ContractFunctionInteraction) & - Pick; - }; -} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts b/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts index 6dd521cf..b1e868b2 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Worker/AztecWorker.ts @@ -1,13 +1,11 @@ import { Worker, NativeConnection } from '@temporalio/worker'; -import * as dotenv from 'dotenv'; import 'reflect-metadata'; import { extractActivities as ExtractActivities } from '../../../TemporalHelper/ActivityParser'; import { container } from 'tsyringe'; import { AddCoreServices } from '../../Blockchain.Abstraction/Infrastructure/AddCoreServices'; import { AztecBlockchainActivities } from '../Activities/AztecBlockchainActivities'; -export default async function run( taskQueue: string): Promise { - dotenv.config(); +export default async function run(taskQueue: string): Promise { try { await AddCoreServices(); @@ -21,6 +19,7 @@ export default async function run( taskQueue: string): Promise { const connection = await NativeConnection.connect({ address: process.env.TrainSolver__TemporalServerHost, }); + const namespace = process.env.TrainSolver__TemporalNamespace; if (!namespace) { diff --git a/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts index 41d3e73e..755611bf 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts @@ -1,4 +1,4 @@ -import { ApplicationFailure, continueAsNew, proxyActivities, uuid4 } from '@temporalio/workflow'; +import { proxyActivities } from '@temporalio/workflow'; import { IAztecBlockchainActivities } from '../Activities/IAztecBlockchainActivities'; import { InvalidTimelockException } from '../../Blockchain.Abstraction/Exceptions/InvalidTimelockException'; import { HashlockAlreadySetException } from '../../Blockchain.Abstraction/Exceptions/HashlockAlreadySetException'; @@ -9,7 +9,6 @@ import { TransactionResponse } from '../../Blockchain.Abstraction/Models/Receipt import { TransactionExecutionContext } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionExecutionContext'; import { TransactionRequest } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionRequest'; import { NetworkType } from '../../Blockchain.Abstraction/Models/Dtos/NetworkDto'; -import { buildProcessorId } from '../../Blockchain.Abstraction/Extensions/StringExtensions'; const defaultActivities = proxyActivities({ startToCloseTimeout: '1 hour', @@ -73,7 +72,6 @@ export async function AztecTransactionProcessor( } ); - // sign transaction const publishedTransaction = await nonRetryableActivities.publishTransaction({ network: request.network, signedTx: signedRawData @@ -96,7 +94,6 @@ export async function AztecTransactionProcessor( ) return transactionResponse; - } catch (error) { @@ -107,18 +104,6 @@ export async function AztecTransactionProcessor( currentNonce: nextNonce } ) - - if ((error instanceof ApplicationFailure && error.type === 'TransactionFailedException')) { - - const processorId = buildProcessorId(uuid4(), request.network.name, request.type); - - await continueAsNew(AztecTransactionProcessor, { - args: [request, context], - workflowId: processorId, - }); - } - else { - throw error; - } + throw error; } } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts index eba3cc9c..ae418182 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts @@ -35,12 +35,12 @@ export async function FuelTransactionProcessor( context: TransactionExecutionContext ): Promise { - const nextNonce = await defaultActivities.GetNextNonce({ - address: request.fromAddress, - network: request.network - }); + const nextNonce = await defaultActivities.GetNextNonce({ + address: request.fromAddress, + network: request.network + }); - try { + try { await defaultActivities.CheckCurrentNonce( { @@ -77,7 +77,6 @@ export async function FuelTransactionProcessor( } ); - // sign transaction const publishedTransaction = await nonRetryableActivities.PublishTransaction({ network: request.network, signedRawData: signedRawData @@ -104,7 +103,7 @@ export async function FuelTransactionProcessor( } catch (error) { - await defaultActivities.UpdateCurrentNonce( + await defaultActivities.UpdateCurrentNonce( { address: request.fromAddress, network: request.network, diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts index 3f6124f1..5a1fb160 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts @@ -6,7 +6,7 @@ import { TokenCommittedEvent as TokenCommittedEvent } from "../../Models/Starkne import { formatAddress} from "../StarknetBlockchainActivities"; import { formatUnits } from "ethers/lib/utils"; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; -import { BigIntToAscii, ToHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; +import { BigIntToAscii, toHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; @@ -52,7 +52,7 @@ export async function TrackBlockEventsAsync( const data = eventData as unknown as TokenCommittedEvent; const receiverAddress = solverAddresses.find( - x => formatAddress(x) === formatAddress(ToHex(data.srcReceiver)) + x => formatAddress(x) === formatAddress(toHex(data.srcReceiver)) ); if (!receiverAddress) { @@ -61,11 +61,11 @@ export async function TrackBlockEventsAsync( const commitMsg: HTLCCommitEventMessage = { txId: parsed.transaction_hash, - commitId: ToHex(data.Id), + commitId: toHex(data.Id), amount: Number(data.amount).toString(), receiverAddress: receiverAddress, sourceNetwork: network.name, - senderAddress: formatAddress(ToHex(data.sender)), + senderAddress: formatAddress(toHex(data.sender)), sourceAsset: BigIntToAscii(data.srcAsset), destinationAddress: data.dstAddress, destinationNetwork: BigIntToAscii(data.dstChain), @@ -80,8 +80,8 @@ export async function TrackBlockEventsAsync( const lockMsg: HTLCLockEventMessage = { txId: parsed.transaction_hash, - commitId: ToHex(data.Id), - hashLock: ToHex(data.hashlock), + commitId: toHex(data.Id), + hashLock: toHex(data.hashlock), timeLock: Number(data.timelock), }; diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 1d09598f..46b71242 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -8,11 +8,11 @@ "name": "train-treasury", "version": "1.0.0", "dependencies": { - "@aztec/accounts": "1.1.3", - "@aztec/aztec.js": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-contracts.js": "1.1.3", - "@aztec/pxe": "1.1.3", + "@aztec/accounts": "^2.0.3", + "@aztec/aztec.js": "^2.0.3", + "@aztec/kv-store": "^2.0.3", + "@aztec/noir-contracts.js": "^2.0.3", + "@aztec/pxe": "^2.0.3", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", @@ -202,15 +202,15 @@ } }, "node_modules/@aztec/accounts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-1.1.3.tgz", - "integrity": "sha512-Q754MHkDojefx1m5KzsmDYUhir+NbqVzXdthFkI5GRpUOJmpRLD44sG58t33QOMbcs/Smtp35DzIS95coukYXA==", - "dependencies": { - "@aztec/aztec.js": "1.1.3", - "@aztec/entrypoints": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-2.0.3.tgz", + "integrity": "sha512-RNOQOgkRVQT6exmZ9IvqerTq5R/D/ptVXjIEuWmtu0pw/nAYypUAuF05vsTv7KP7ZhMvrUh40pSgAbgQSXFH9A==", + "dependencies": { + "@aztec/aztec.js": "2.0.3", + "@aztec/entrypoints": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -218,17 +218,17 @@ } }, "node_modules/@aztec/aztec.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-1.1.3.tgz", - "integrity": "sha512-WjKKL/PUvk2xUj+ZgKP68xZYyHdeuN6xV+PHRaRVSBD0YIMSaWIEDirdhjTBd6kQK1soFYRS8+gy5CLx2oSSiQ==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/entrypoints": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/l1-artifacts": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-2.0.3.tgz", + "integrity": "sha512-3JxvC1R0IvvIr0VUEIhM6Eu9MgBH7+VQosTfcX8J+Gx5b0ZWRDxhJT1YrWyst0JJnoPFEfFXThINJ5vJsq8W9A==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/entrypoints": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", "axios": "^1.8.2", "tslib": "^2.4.0", "viem": "2.23.7" @@ -238,20 +238,20 @@ } }, "node_modules/@aztec/bb-prover": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-1.1.3.tgz", - "integrity": "sha512-YsyyIY5dK6QcXfg7dVvRg21Bx+IyTYXWxMTryxqkqqVD6O85dVGSChXUjdt7o2x4GzOErZy4/wlEBt4NriIh9A==", - "dependencies": { - "@aztec/bb.js": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/simulator": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", - "@aztec/world-state": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-2.0.3.tgz", + "integrity": "sha512-UqgC6OExLTDPkTyfnHcIuiFUzrH1ZvtfebV3Ryz+VKxDUOFDNeY/MYjUB7CC/VS1qulKZaiyDFzROAtmJUEeYg==", + "dependencies": { + "@aztec/bb.js": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/simulator": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", + "@aztec/world-state": "2.0.3", "commander": "^12.1.0", "pako": "^2.1.0", "source-map-support": "^0.5.21", @@ -265,9 +265,9 @@ } }, "node_modules/@aztec/bb.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-1.1.3.tgz", - "integrity": "sha512-cAR++gmXYvSzC0CyGfo326YMumdmjs5vGTErx2NQKKc96MyYcJdm9aTiyf/G2uBdGSn4tWdMgxOxH2lr/qH1Sw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-2.0.3.tgz", + "integrity": "sha512-sI8lA2L8RMACsi6iBtcuKgGLx4crMzoAaTNtfP3VAaOpjoIwB3O/AMETz5IDGdkOA6tOqM2R0nWh1J+wDYPlVQ==", "license": "MIT", "dependencies": { "comlink": "^4.4.1", @@ -283,12 +283,12 @@ } }, "node_modules/@aztec/blob-lib": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-1.1.3.tgz", - "integrity": "sha512-+YAGXaW75hKEAmlNtcxd8k7XJaIxbphQ/ddy04MTlYMclQr/43ZfKX/xPErHH/7aV4MAwRmrpUFOxYNO4Bu/yA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-2.0.3.tgz", + "integrity": "sha512-bVyFI9s/VdT6kIgYz36X79E85gYdF8LwNvsHLqWKJdKokN5RKPxaD/Ez5+3h3R4HZpWIMc9yjUIKpp1Tn8ebWg==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", "c-kzg": "4.0.0-alpha.1", "tslib": "^2.4.0" }, @@ -297,12 +297,12 @@ } }, "node_modules/@aztec/builder": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-1.1.3.tgz", - "integrity": "sha512-VHg2S344a5NXHKd8I0Rj1JqC1v9ufm6/xvOIauFDcf3XNf+rYSNt3iLOcVE4ueDBFMgaasfeBzsABvp4kJ1vMw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-2.0.3.tgz", + "integrity": "sha512-sP6GTHKRburRmfq3ettRxASLjZNvHOPPbH19Mm8kt0LXx08SytZdpyCtaiJmakowYtXLhFMgKrO1QppLtUEfLg==", "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "commander": "^12.1.0" }, "bin": { @@ -313,9 +313,9 @@ } }, "node_modules/@aztec/constants": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-1.1.3.tgz", - "integrity": "sha512-gAkZJR0Sjll+ftzjrDQjGUzJwUcZyKuRJr414GMRk8UlqyqNs58zllX7k8QZ9AgW/YD3K3Ll2nXXcfctTgj5tw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-2.0.3.tgz", + "integrity": "sha512-2HVuOWTFmpYphCMvA+HMKhQ6qmoZwlO4azlqEnnHTao6MP6SetEduRiqNSapRk8oFfuE7s/DKwnCwpxedcWRAw==", "dependencies": { "tslib": "^2.4.0" }, @@ -324,14 +324,14 @@ } }, "node_modules/@aztec/entrypoints": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-1.1.3.tgz", - "integrity": "sha512-Q4OqnF04ANVAMHYGSnGsUpRW0XOLc4LI3Qy75XGfv7OXUDNxDsPrAc1+FWcMdbkfayge08jXTdpTN063qZupWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-2.0.3.tgz", + "integrity": "sha512-1mgEUC94411aXWXbrbTNJpDJwocwEskGW7vQ9sCbeDb2IvxDs3C904SDcJUJhSTUKDpWRGbINlXB26gFeAGhWQ==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -339,15 +339,17 @@ } }, "node_modules/@aztec/ethereum": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-1.1.3.tgz", - "integrity": "sha512-0QdtWIm0OYg2tqnbr8mOcJrlH5MM/WIZIQlmlYUDjcsyc997dmnVDRQMmGVQV6CvYWrKtuhrK/xvEIvOZIllig==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-2.0.3.tgz", + "integrity": "sha512-i6SYcYRecuSbABsoYAdtIJsBlmF+mW9Be++W2qyi1uSAlqTDHo6eJ0yfbXMe+193zxZ053OPAn/KAS2vTY3Yiw==", "dependencies": { - "@aztec/blob-lib": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/l1-artifacts": "1.1.3", + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", "@viem/anvil": "^0.0.10", "dotenv": "^16.0.3", + "lodash.chunk": "^4.2.0", "lodash.pickby": "^4.5.0", "tslib": "^2.4.0", "viem": "2.23.7", @@ -358,13 +360,13 @@ } }, "node_modules/@aztec/foundation": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-1.1.3.tgz", - "integrity": "sha512-JbLCEJKfjefQiev2yhdWj0VcGA1Q3dgf3IabIorKjzUPQFI/aDtL7ys486vNDLj/wv2Gb42+UiE5GvD92fU3kQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-2.0.3.tgz", + "integrity": "sha512-qFDpKJQfB4pMORDr4i71C/zy2henlAS4hxG8WEOtiTn0bvTG+o5zekmtZMfDF5QR7LUDWg0kvQ9OFZB20sOItg==", "dependencies": { - "@aztec/bb.js": "1.1.3", + "@aztec/bb.js": "2.0.3", "@koa/cors": "^5.0.0", - "@noble/curves": "^1.2.0", + "@noble/curves": "=1.7.0", "bn.js": "^5.2.1", "colorette": "^2.0.20", "detect-node": "^2.1.0", @@ -388,14 +390,14 @@ } }, "node_modules/@aztec/key-store": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-1.1.3.tgz", - "integrity": "sha512-8z2UioLpktexEXq3AWsLn/qMwJtHVlm2pAR0b8R9phsC7GAin64y4WD1VNRWijT3XnetkNOqrmIGoZRCy9rArA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-2.0.3.tgz", + "integrity": "sha512-SKTBm6Mhrv7NcWzPCMcs2IOKd8dkjvBk40dTY8rV+Jj9y720vCie9fdhe4u5E/1bIXq2toLuV0idUb5Y4Rp7wA==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/stdlib": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -403,14 +405,14 @@ } }, "node_modules/@aztec/kv-store": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-1.1.3.tgz", - "integrity": "sha512-uqIMe49dd1pDtdEcAN+80heQ7+U8i0XwE3tBrywaAsdXaI7r0uCQJ5dG3KYgjcxMvWwkHo++oLqTR9Ufu/GrhA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-2.0.3.tgz", + "integrity": "sha512-U43RY0CxvWN9ryk3lBMlawV348ur/L5faA+ABP1xn1emXC5W60qyJ9fthv4jdUrz8s+czjFQDwjF4GERWHGReg==", "dependencies": { - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/native": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/native": "2.0.3", + "@aztec/stdlib": "2.0.3", "idb": "^8.0.0", "lmdb": "^3.2.0", "msgpackr": "^1.11.2", @@ -422,21 +424,21 @@ } }, "node_modules/@aztec/l1-artifacts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-1.1.3.tgz", - "integrity": "sha512-9XAotNCjB7FCKYECoiFDmVpAswwoYyZwrYgX+xidxemGxP6Sv2+EZqEgwreMgBRw/XII8cZGz0Rbsk2ZnUNIKQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-2.0.3.tgz", + "integrity": "sha512-APwOQZH0JeZ4Z836tZycHNR/f0gWflb8Fjkp8p3xKocm0ZXocnDlOJhnu7Waiz2i+rTHmSCVPdeOjYc7plEqJQ==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@aztec/merkle-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-1.1.3.tgz", - "integrity": "sha512-hT9JNt3dkc0OUydybxU3xYLx9RTiOQ1Fx9MFvS3xoiU1m3Mg20h0RnaZKkRXEHXYllrwea8IZw/lKoAHWfHERQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-2.0.3.tgz", + "integrity": "sha512-PgND5Gysca1XcriXZpE2bBHJr8AVI/OuvYNDzGvp4rH6a6yHqpZq+U5y+6CUQJDR9cIuoEVaU1VnwMHlmaD9fQ==", "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/stdlib": "2.0.3", "sha256": "^0.2.0", "tslib": "^2.4.0" }, @@ -445,11 +447,11 @@ } }, "node_modules/@aztec/native": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/native/-/native-1.1.3.tgz", - "integrity": "sha512-VwfB39EV09WcWduS0vphH42HoSIletkXheqkIaMvU/A3FGWgvR2EQjnueWyHJ8iQw1/SLH3fi7tmZO4ypG1+Zg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-2.0.3.tgz", + "integrity": "sha512-fgRFz8HNFo7leiWv4FXGZ8RFUqiY0+Y7VoglSrEmAhDQWvLE7X3xl/hyLWlztLRcXDeXNPPF+3bgzTcNv0VpbA==", "dependencies": { - "@aztec/foundation": "1.1.3", + "@aztec/foundation": "2.0.3", "bindings": "^1.5.0", "msgpackr": "^1.11.2" }, @@ -458,17 +460,17 @@ } }, "node_modules/@aztec/noir-acvm_js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-1.1.3.tgz", - "integrity": "sha512-rz3uIbG7/1Xq/3US+GddoqBXNQ1gKh6Z81XxbdupiqLNY1CwUXAJzmrYFEidxXc+T+QcKRChemuPI9Pf6+PwcA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-2.0.3.tgz", + "integrity": "sha512-ykxlUHop7ouYpsCstd55h97ijTYPr9feDmrg0Mcb3cyQMhyAIMnEfkDV8/sUdqmA+UetE1n1x1/91F/+AD6fBg==", "license": "MIT" }, "node_modules/@aztec/noir-contracts.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-1.1.3.tgz", - "integrity": "sha512-5JpQMOmps0pHKKhV7l6hcODdSBWjxMmheUM2ArArgy0JOT92Oz0WR9kqFBsV6tpzahMLa0+S2XnhIi6DQf8ZFQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-2.0.3.tgz", + "integrity": "sha512-7gMTJ7FAVM20w/pJSJDG1+WJCTMFQyutQnMvkI0IbTEYVnUlwpytcsCKlZ3sWrl48mC3kw04JQ0s6WmIEPmtHw==", "dependencies": { - "@aztec/aztec.js": "1.1.3", + "@aztec/aztec.js": "2.0.3", "tslib": "^2.4.0" }, "engines": { @@ -476,12 +478,12 @@ } }, "node_modules/@aztec/noir-noir_codegen": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-1.1.3.tgz", - "integrity": "sha512-HnX/lrDEHoizn6M/bAWDL5WoaZSALFLvBLauGwfG9XdSpFpgwWvZF9UhZADg0+lehqx+vwSny31rP3q2fOSZlw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-2.0.3.tgz", + "integrity": "sha512-wPKroQazBfzngSMpUlWeF36Bf6CFmD6Mrly3KL3q0ebOoDwyzquhrLLXgHcpCBQo8R0ZruK/O3sVAiF4rFzGTg==", "license": "(MIT OR Apache-2.0)", "dependencies": { - "@aztec/noir-types": "1.1.3", + "@aztec/noir-types": "2.0.3", "glob": "^11.0.2", "ts-command-line-args": "^2.5.1" }, @@ -490,27 +492,27 @@ } }, "node_modules/@aztec/noir-noirc_abi": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-1.1.3.tgz", - "integrity": "sha512-0bXBVUQrELTzYiKZwJZh8KgqCC6XXD/kR6pvFQKkJs4qBT07wya8yh4VYF0ynDSq+YHgFPgZgDdVPR5FfdYOHQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.3.tgz", + "integrity": "sha512-6Ghb5l8vFV6L7mdJmp0fL9P6O6SBq2S6MTO0Jtvs5kF+De/qHxvp3GCtbUswoSBfqo3s5JbJyyTzDbM8V6SkZw==", "license": "(MIT OR Apache-2.0)", "dependencies": { - "@aztec/noir-types": "1.1.3" + "@aztec/noir-types": "2.0.3" } }, "node_modules/@aztec/noir-protocol-circuits-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-1.1.3.tgz", - "integrity": "sha512-Jq08Qyhf+S14cJqGxucKo8aSS/st+1vxAwl0wOvqwVJRUBH3+gSLO1aV19/qeveXv1n0AuPVdWSxEz4nweYvQw==", - "dependencies": { - "@aztec/blob-lib": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-acvm_js": "1.1.3", - "@aztec/noir-noir_codegen": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-2.0.3.tgz", + "integrity": "sha512-E3X0NsIrTqrjqE8w10iOpMmrMruWn8OnjPJ/Y8fY45zOwvrn/vC+MeEkWuO5jLFVb225xI2k+a0EP7APiirpqg==", + "dependencies": { + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-acvm_js": "2.0.3", + "@aztec/noir-noir_codegen": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/stdlib": "2.0.3", "change-case": "^5.4.4", "tslib": "^2.4.0" }, @@ -519,19 +521,19 @@ } }, "node_modules/@aztec/noir-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-1.1.3.tgz", - "integrity": "sha512-8zNJeRecFbI9Kib2uyrKoXdeu5L4lXRgLHNG8YACOXYjuWJtbyJ/h2nCVqEj3vD0AiF7rHZ27oDBxoggwlpYVA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-2.0.3.tgz", + "integrity": "sha512-f8eEjPg+vdbAJ+RD8YHH7PFuUdxU59/3VAf6QBT7VTN6yL52LKVH7XP/g3Dy4vkfctyUWcQsuI4n+k8Uq4Ur7A==", "license": "(MIT OR Apache-2.0)" }, "node_modules/@aztec/protocol-contracts": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-1.1.3.tgz", - "integrity": "sha512-fM6ZeO35jAxo7/8d6K6ltXux7e9DsudZGHU+gLjRQeCgYkmYUjoaoGhzSMIo0SS35aD9lSjr2oDUPrm1FBCYIg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-2.0.3.tgz", + "integrity": "sha512-Uri5NxnTpCqSFOY4hDVVUj74sGtg8SUFHdEbKKPOH+RGvs2zocYNNaQ+l6CWqDtYmJZnhsBLJMaMImSCupm7rQ==", "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "lodash.chunk": "^4.2.0", "lodash.omit": "^4.5.0", "tslib": "^2.4.0" @@ -541,23 +543,24 @@ } }, "node_modules/@aztec/pxe": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-1.1.3.tgz", - "integrity": "sha512-O2rgeZIlIxkscwW0JoCnKEzDUfIFt3oPRfuBZGmEyl8Utt5TWBdvfsHPa275TAAqCvIeOBHkuNiwRdxX6pZ5og==", - "dependencies": { - "@aztec/bb-prover": "1.1.3", - "@aztec/bb.js": "1.1.3", - "@aztec/builder": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/key-store": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/simulator": "1.1.3", - "@aztec/stdlib": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-2.0.3.tgz", + "integrity": "sha512-19r1EgEi9NGEI8leu8vvGfw0u9d9k/KiWe1nQIkVZluDukIdzsA9xviZ5LKT3pbD17yl3k4IVD6AUucYWBbcNg==", + "dependencies": { + "@aztec/bb-prover": "2.0.3", + "@aztec/bb.js": "2.0.3", + "@aztec/builder": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/key-store": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/simulator": "2.0.3", + "@aztec/stdlib": "2.0.3", + "json-stringify-deterministic": "1.0.12", "koa": "^2.16.1", "koa-router": "^12.0.0", "lodash.omit": "^4.5.0", @@ -573,20 +576,20 @@ } }, "node_modules/@aztec/simulator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-1.1.3.tgz", - "integrity": "sha512-ypoTSF2KxAZTbapnoCuxZE++8j5rHNlWiwYSKzhF07VNwS2waDwxOElNfOpbsePam8Rakf4wu3dumyOxh07xtw==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-acvm_js": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", - "@aztec/noir-protocol-circuits-types": "1.1.3", - "@aztec/noir-types": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", - "@aztec/world-state": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-2.0.3.tgz", + "integrity": "sha512-v1N1yqbiFYn7Pk1QvhoBaHpRgPfR7SiyhS44cNwgh5+EHUo1e9R43/hzxFIunckWoNl2arMHjX2JYUaE7Q6u3Q==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/noir-acvm_js": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", + "@aztec/noir-protocol-circuits-types": "2.0.3", + "@aztec/noir-types": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", + "@aztec/world-state": "2.0.3", "lodash.clonedeep": "^4.5.0", "lodash.merge": "^4.6.2", "tslib": "^2.4.0" @@ -596,16 +599,17 @@ } }, "node_modules/@aztec/stdlib": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-1.1.3.tgz", - "integrity": "sha512-jd9Ob8+zv7BvRNFvPeizvbLf2qMvrC6ZVep6fJ+hDZTEnRbOz/dPUaRhf+W7Iyot3Ltan52DBYwfvLYlAQZrVQ==", - "dependencies": { - "@aztec/bb.js": "1.1.3", - "@aztec/blob-lib": "1.1.3", - "@aztec/constants": "1.1.3", - "@aztec/ethereum": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/noir-noirc_abi": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-2.0.3.tgz", + "integrity": "sha512-kzYspDE4xWTRZQOEMwuYRD84YE5XNJQBzTo/pLq5UnhupdnyqjW1KJIVmi82Ql3vstjx6ZzIldveqjzE3Q0QwQ==", + "dependencies": { + "@aztec/bb.js": "2.0.3", + "@aztec/blob-lib": "2.0.3", + "@aztec/constants": "2.0.3", + "@aztec/ethereum": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/l1-artifacts": "2.0.3", + "@aztec/noir-noirc_abi": "2.0.3", "@google-cloud/storage": "^7.15.0", "axios": "^1.9.0", "json-stringify-deterministic": "1.0.12", @@ -624,12 +628,12 @@ } }, "node_modules/@aztec/telemetry-client": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-1.1.3.tgz", - "integrity": "sha512-lhukZyoJJbUdNf8LNY+pbNkXFViE+OdSFvFjpY9vWqIfGt7X75KCa8rcuUyLUR4StvmT/b8etLz8bAmQdmmcVg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-2.0.3.tgz", + "integrity": "sha512-3geZjXE0U8Y3QzGoaVBhscOqE/d7hu5xpnu3yQuaM20VQEN7VeP3E1JTSg9YTCwXtdXnQ9ethSQrmXt3jq0ICA==", "dependencies": { - "@aztec/foundation": "1.1.3", - "@aztec/stdlib": "1.1.3", + "@aztec/foundation": "2.0.3", + "@aztec/stdlib": "2.0.3", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.55.0", "@opentelemetry/core": "^1.28.0", @@ -652,18 +656,18 @@ } }, "node_modules/@aztec/world-state": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-1.1.3.tgz", - "integrity": "sha512-fto3bPUsTYSgu/ETdU+knajh3dQ3/43JFzCug8EPc3LXeo2Cht/sMB+f3s8qPhCl30i42yvZTKDRPIK/2xsB7A==", - "dependencies": { - "@aztec/constants": "1.1.3", - "@aztec/foundation": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/merkle-tree": "1.1.3", - "@aztec/native": "1.1.3", - "@aztec/protocol-contracts": "1.1.3", - "@aztec/stdlib": "1.1.3", - "@aztec/telemetry-client": "1.1.3", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-2.0.3.tgz", + "integrity": "sha512-PwoscvIQzaOR3gV72PZbAkfpHcTip5O5AOyhW5s05NScNc+EKkEdXJLuzUoorec5GIIfPxkPkJDxZSoWYJznOw==", + "dependencies": { + "@aztec/constants": "2.0.3", + "@aztec/foundation": "2.0.3", + "@aztec/kv-store": "2.0.3", + "@aztec/merkle-tree": "2.0.3", + "@aztec/native": "2.0.3", + "@aztec/protocol-contracts": "2.0.3", + "@aztec/stdlib": "2.0.3", + "@aztec/telemetry-client": "2.0.3", "tslib": "^2.4.0", "zod": "^3.23.8" }, @@ -1825,18 +1829,6 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@fuel-ts/abi-coder/node_modules/type-fest": { - "version": "4.34.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", - "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@fuel-ts/abi-typegen": { "version": "0.101.3", "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", @@ -2313,9 +2305,9 @@ } }, "node_modules/@google-cloud/storage": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.0.tgz", - "integrity": "sha512-5m9GoZqKh52a1UqkxDBu/+WVFDALNtHg5up5gNmNbXQWBcV813tzJKsyDtKjOPrlR1em1TxtD7NSPCrObH7koQ==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.1.tgz", + "integrity": "sha512-2FMQbpU7qK+OtBPaegC6n+XevgZksobUGo6mGKnXNmeZpvLiAo1gTAE3oTKsrMGDV4VtL8Zzpono0YsK/Q7Iqg==", "license": "Apache-2.0", "dependencies": { "@google-cloud/paginator": "^5.0.0", @@ -2405,17 +2397,27 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inquirer/ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz", + "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/checkbox": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz", - "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz", + "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/ansi": "^1.0.0", + "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", - "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -2431,13 +2433,13 @@ } }, "node_modules/@inquirer/confirm": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz", - "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==", + "version": "5.1.18", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz", + "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "engines": { @@ -2453,15 +2455,15 @@ } }, "node_modules/@inquirer/core": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz", - "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz", + "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==", "dev": true, "license": "MIT", "dependencies": { + "@inquirer/ansi": "^1.0.0", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", - "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", @@ -2481,14 +2483,14 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.18", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz", - "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==", + "version": "4.2.20", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz", + "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", - "@inquirer/external-editor": "^1.0.1", + "@inquirer/core": "^10.2.2", + "@inquirer/external-editor": "^1.0.2", "@inquirer/type": "^3.0.8" }, "engines": { @@ -2504,13 +2506,13 @@ } }, "node_modules/@inquirer/expand": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz", - "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==", + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz", + "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, @@ -2527,14 +2529,14 @@ } }, "node_modules/@inquirer/external-editor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz", - "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", + "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", "dev": true, "license": "MIT", "dependencies": { "chardet": "^2.1.0", - "iconv-lite": "^0.6.3" + "iconv-lite": "^0.7.0" }, "engines": { "node": ">=18" @@ -2559,13 +2561,13 @@ } }, "node_modules/@inquirer/input": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz", - "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz", + "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "engines": { @@ -2581,13 +2583,13 @@ } }, "node_modules/@inquirer/number": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz", - "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz", + "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "engines": { @@ -2603,15 +2605,15 @@ } }, "node_modules/@inquirer/password": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz", - "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==", + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz", + "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", - "@inquirer/type": "^3.0.8", - "ansi-escapes": "^4.3.2" + "@inquirer/ansi": "^1.0.0", + "@inquirer/core": "^10.2.2", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" @@ -2656,13 +2658,13 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz", - "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz", + "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, @@ -2679,13 +2681,13 @@ } }, "node_modules/@inquirer/search": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz", - "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz", + "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" @@ -2703,16 +2705,16 @@ } }, "node_modules/@inquirer/select": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz", - "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz", + "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.2.0", + "@inquirer/ansi": "^1.0.0", + "@inquirer/core": "^10.2.2", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", - "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { @@ -3362,9 +3364,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -4074,12 +4076,12 @@ } }, "node_modules/@noble/curves": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", - "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.8.0" + "@noble/hashes": "1.6.0" }, "engines": { "node": "^14.21.3 || >=16" @@ -4089,9 +4091,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -4947,9 +4949,9 @@ "license": "BSD-3-Clause" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", - "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", + "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", "cpu": [ "arm" ], @@ -4961,9 +4963,9 @@ "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", - "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", + "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", "cpu": [ "arm64" ], @@ -4975,9 +4977,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", - "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", + "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", "cpu": [ "arm64" ], @@ -4989,9 +4991,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", - "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", + "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", "cpu": [ "x64" ], @@ -5003,9 +5005,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", - "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", + "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", "cpu": [ "arm64" ], @@ -5017,9 +5019,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", - "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", + "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", "cpu": [ "x64" ], @@ -5031,9 +5033,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", - "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", + "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", "cpu": [ "arm" ], @@ -5045,9 +5047,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", - "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", + "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", "cpu": [ "arm" ], @@ -5059,9 +5061,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", - "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", + "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", "cpu": [ "arm64" ], @@ -5073,9 +5075,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", - "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", + "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", "cpu": [ "arm64" ], @@ -5086,10 +5088,10 @@ ], "peer": true }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", - "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", + "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", "cpu": [ "loong64" ], @@ -5101,9 +5103,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", - "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", + "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", "cpu": [ "ppc64" ], @@ -5115,9 +5117,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", - "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", + "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", "cpu": [ "riscv64" ], @@ -5129,9 +5131,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", - "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", + "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", "cpu": [ "riscv64" ], @@ -5143,9 +5145,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", - "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", + "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", "cpu": [ "s390x" ], @@ -5157,9 +5159,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", - "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", + "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", "cpu": [ "x64" ], @@ -5171,9 +5173,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", - "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", + "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", "cpu": [ "x64" ], @@ -5185,9 +5187,9 @@ "peer": true }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", - "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", + "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", "cpu": [ "arm64" ], @@ -5199,9 +5201,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", - "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", + "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", "cpu": [ "arm64" ], @@ -5213,9 +5215,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", - "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", + "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", "cpu": [ "ia32" ], @@ -5226,10 +5228,24 @@ ], "peer": true }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", + "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", - "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", + "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", "cpu": [ "x64" ], @@ -5346,45 +5362,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/starknet/node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/starknet/node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/starknet/node_modules/@noble/hashes": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", - "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -6668,6 +6645,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -6865,9 +6855,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -7027,6 +7017,16 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz", + "integrity": "sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -7141,6 +7141,18 @@ "node": ">=18" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -7165,9 +7177,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", + "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", "dev": true, "funding": [ { @@ -7185,9 +7197,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001741", + "electron-to-chromium": "^1.5.218", + "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { @@ -7396,9 +7409,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001746", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz", + "integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==", "dev": true, "funding": [ { @@ -8256,9 +8269,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -8377,9 +8390,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", + "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -8533,9 +8546,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.215", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.215.tgz", - "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==", + "version": "1.5.228", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", + "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", "dev": true, "license": "ISC" }, @@ -8591,9 +8604,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9241,15 +9254,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", @@ -9939,6 +9943,15 @@ "node": ">=14" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -10486,15 +10499,19 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/idb": { @@ -10718,13 +10735,14 @@ } }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -12338,9 +12356,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.15", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.15.tgz", - "integrity": "sha512-TMDCtIhWUDHh91wRC+wFuGlIzKdPzaTUHHVrIZ3vPUEoNaXFLrsIQ1ZpAeZeXApIF6rvDksMTvjrIQlLKaYxqQ==", + "version": "1.12.23", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.23.tgz", + "integrity": "sha512-RN3q3gImZ91BvRDYjWp7ICz3gRn81mW5L4SW+2afzNCC0I/nkXstBgZThQGTE3S/9q5J90FH4dP+TXx8NhdZKg==", "license": "MIT" }, "node_modules/lines-and-columns": { @@ -13037,9 +13055,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", + "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", "dev": true, "license": "MIT" }, @@ -13433,9 +13451,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.1.tgz", - "integrity": "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==", + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", "license": "ISC", "engines": { "node": "20 || >=22" @@ -13496,13 +13514,12 @@ } }, "node_modules/pino": { - "version": "9.9.4", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.9.4.tgz", - "integrity": "sha512-d1XorUQ7sSKqVcYdXuEYs2h1LKxejSorMEJ76XoZ0pPDf8VzJMe7GlPXpMBZeQ9gE4ZPIp5uGD+5Nw7scxiigg==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.12.0.tgz", + "integrity": "sha512-0Gd0OezGvqtqMwgYxpL7P0pSHHzTJ0Lx992h+mNlMtRVfNnqweWmf0JmRWk5gJzHalyd2mxTzKjhiNbGS2Ztfw==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", @@ -13510,6 +13527,7 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", + "slow-redact": "^0.3.0", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, @@ -14080,22 +14098,6 @@ "node": ">= 0.10" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -14364,9 +14366,9 @@ } }, "node_modules/rollup": { - "version": "4.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", - "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", + "version": "4.52.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", + "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", "license": "MIT", "peer": true, "dependencies": { @@ -14380,27 +14382,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.1", - "@rollup/rollup-android-arm64": "4.50.1", - "@rollup/rollup-darwin-arm64": "4.50.1", - "@rollup/rollup-darwin-x64": "4.50.1", - "@rollup/rollup-freebsd-arm64": "4.50.1", - "@rollup/rollup-freebsd-x64": "4.50.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", - "@rollup/rollup-linux-arm-musleabihf": "4.50.1", - "@rollup/rollup-linux-arm64-gnu": "4.50.1", - "@rollup/rollup-linux-arm64-musl": "4.50.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", - "@rollup/rollup-linux-ppc64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-gnu": "4.50.1", - "@rollup/rollup-linux-riscv64-musl": "4.50.1", - "@rollup/rollup-linux-s390x-gnu": "4.50.1", - "@rollup/rollup-linux-x64-gnu": "4.50.1", - "@rollup/rollup-linux-x64-musl": "4.50.1", - "@rollup/rollup-openharmony-arm64": "4.50.1", - "@rollup/rollup-win32-arm64-msvc": "4.50.1", - "@rollup/rollup-win32-ia32-msvc": "4.50.1", - "@rollup/rollup-win32-x64-msvc": "4.50.1", + "@rollup/rollup-android-arm-eabi": "4.52.3", + "@rollup/rollup-android-arm64": "4.52.3", + "@rollup/rollup-darwin-arm64": "4.52.3", + "@rollup/rollup-darwin-x64": "4.52.3", + "@rollup/rollup-freebsd-arm64": "4.52.3", + "@rollup/rollup-freebsd-x64": "4.52.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", + "@rollup/rollup-linux-arm-musleabihf": "4.52.3", + "@rollup/rollup-linux-arm64-gnu": "4.52.3", + "@rollup/rollup-linux-arm64-musl": "4.52.3", + "@rollup/rollup-linux-loong64-gnu": "4.52.3", + "@rollup/rollup-linux-ppc64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-gnu": "4.52.3", + "@rollup/rollup-linux-riscv64-musl": "4.52.3", + "@rollup/rollup-linux-s390x-gnu": "4.52.3", + "@rollup/rollup-linux-x64-gnu": "4.52.3", + "@rollup/rollup-linux-x64-musl": "4.52.3", + "@rollup/rollup-openharmony-arm64": "4.52.3", + "@rollup/rollup-win32-arm64-msvc": "4.52.3", + "@rollup/rollup-win32-ia32-msvc": "4.52.3", + "@rollup/rollup-win32-x64-gnu": "4.52.3", + "@rollup/rollup-win32-x64-msvc": "4.52.3", "fsevents": "~2.3.2" } }, @@ -14758,6 +14761,12 @@ "node": ">=8" } }, + "node_modules/slow-redact": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.0.tgz", + "integrity": "sha512-cf723wn9JeRIYP9tdtd86GuqoR5937u64Io+CYjlm2i7jvu7g0H+Cp0l0ShAf/4ZL+ISUTVT+8Qzz7RZmp9FjA==", + "license": "MIT" + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -14941,33 +14950,6 @@ "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", "license": "MIT" }, - "node_modules/starknet/node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/starknet/node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -16138,13 +16120,12 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, + "version": "4.34.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.34.1.tgz", + "integrity": "sha512-6kSc32kT0rbwxD6QL1CYe8IqdzN/J/ILMrNK+HMQCKH3insCDRY/3ITb0vcBss0a3t72fzh2YSzj8ko1HgwT3g==", "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16707,9 +16688,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.101.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", - "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", + "version": "5.102.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", + "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", "dev": true, "license": "MIT", "peer": true, @@ -16722,7 +16703,7 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.24.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", @@ -16735,9 +16716,9 @@ "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.2", - "tapable": "^2.1.1", + "tapable": "^2.2.3", "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", + "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, "bin": { diff --git a/treasury/package.json b/treasury/package.json index 447a14e2..e287548e 100644 --- a/treasury/package.json +++ b/treasury/package.json @@ -18,11 +18,11 @@ "test:e2e": "jest --config ./e2e/jest-e2e.json" }, "dependencies": { - "@aztec/accounts": "1.1.3", - "@aztec/aztec.js": "1.1.3", - "@aztec/kv-store": "1.1.3", - "@aztec/noir-contracts.js": "1.1.3", - "@aztec/pxe": "1.1.3", + "@aztec/accounts": "^2.0.3", + "@aztec/aztec.js": "^2.0.3", + "@aztec/kv-store": "^2.0.3", + "@aztec/noir-contracts.js": "^2.0.3", + "@aztec/pxe": "^2.0.3", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", diff --git a/treasury/src/treasury/aztec/ABIs/train.json b/treasury/src/treasury/aztec/ABIs/train.json index 17044063..2d7a5b87 100644 --- a/treasury/src/treasury/aztec/ABIs/train.json +++ b/treasury/src/treasury/aztec/ABIs/train.json @@ -1,6 +1,6 @@ { "transpiled": true, - "noir_version": "1.0.0-beta.7+0000000000000000000000000000000000000000", + "noir_version": "1.0.0-beta.11+5b65f9637e85a4177692c3190cb35ea678fb15e9-aztec", "name": "Train", "functions": [ { @@ -83,7 +83,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -139,7 +139,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -168,7 +168,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -362,7 +362,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -631,351 +631,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", "type": { - "kind": "field" + "kind": "boolean" } } ] } }, { - "name": "function_selector", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -984,30 +1083,26 @@ } }, { - "name": "is_static_call", + "name": "counter", "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", - "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -1064,26 +1159,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -1092,53 +1202,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -1147,50 +1284,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -1199,17 +1345,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -1232,7 +1378,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -1288,7 +1434,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -1317,7 +1463,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -1511,7 +1657,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -1650,18 +1796,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -1669,22 +1812,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -1701,19 +1838,43 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "7542496824365424242": { "error_kind": "fmtstring", - "length": 61, + "length": 20, + "item_types": [] + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -1724,62 +1885,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11091894166229312484": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -1795,17 +1943,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17476367995570638746": { - "error_kind": "string", - "string": "NoAllowance" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -1814,24 +1954,18 @@ } ] }, - "18194595712952743247": { + "17476367995570638746": { + "error_kind": "string", + "string": "NoAllowance" + }, + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" }, "18313900523101689315": { "error_kind": "string", @@ -1839,17 +1973,9 @@ } } }, - "bytecode": "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", - "debug_symbols": "vb3driQ9cp57L3Osg2Iwfhi+FWNDGMtjY4DByBhLBjYE3/uuDJLxRner2Lmq1rdP3I9H34oni5kRmUkyyf/403//y3/79//5z3/9+//41//9p//yX//jT//tH3/929/++j//+W//+i9//re//uvfn//rf/zpcf0/jcaf/kv7p+e/Pv/tj/VvW//S+revf3n9K+tfXf/a+nfF6yser3i84vGKxyser3i84vGKxyser3i84smKJyuerHiy4smKJyuerHiy4smKJyuerni64umKpyuerni64umKpyuerni64tmKZyuerXi24tmKZyuerXi24tmKZyveWPHGijdWvLHijRVvrHhjxRsr3ljxxornz3hy/dvWv7T+7etfXv/K+lfXv7b+Hetfj3/p8Vj/tvXvM55e//b1L69/Zf2r619b/z7j+fXvdXz9Ce2xoW2gDX0Db7h+tV2gG2zD2HBFHk+gx4a24YrcLugbeMMzMl0K0g22YWzwBVfSTGgbaEPfwBt25L4j9x2578h9R+YdmXdk3pF5R+YdmXdk3pF5R+YdmXdk2ZFlR5Yd+coluk7mlUwTZINusA1jgy+4UmpC20AbdmTdkXVH1h1Zd2TdkXVHth3ZdmTbkW1Hth3ZdmTbkW1Hth3ZduSxI48deezIY0ceO/LYkceOPHbksSOPHdl3ZN+RfUf2Hdl3ZN+RfUf2Hdl3ZF+R++OxoW2gDX0Db5ANusE2jA07ctuR247cduQrB2lcwBtkg26wDWODL7hycELbQBt2ZNqRaUemHfnKwd4vGBt8wZWDE9oG2tA38AbZoBt25L4j9x2Zd+QrB7teQBv6Bt4gG3SDbRgbfMGVgxN2ZNmRZUeWHfnKQX5coBtsw9jgC64cnNA20Ia+gTfsyLoj646sO7LuyLYj245sO7LtyLYj245sO7LtyLYj2448duSxI48deezIY0ceO/LYkceOPHbksSP7juw7su/IviP7juw7su/IviP7juwrMj8eG9oG2tA38AbZoBtsw9iwI7cdue3IbUduO3LbkduO3HbktiO3HbntyLQj045MOzLtyLQj045MOzLtyLQj047cd+S+I/cdue/IfUfuO3LfkfuO3HfkviPzjsw7Mu/IvCPzjsw7Mu/IvCPzjsw7suzIsiPLjiw7suzIOwd55yDvHOTIQbrAF0QOBrQNtKFv4A2yQTfYhh1Z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", - "brillig_names": [ - "discover_new_messages", - "get_note_internal", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "directive_integer_quotient", - "directive_invert" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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j67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d51iWlIuVs85B0XSLss5Bo2k2rabdZE3tOO047TjtiHZEO6Id0Y5oR7Qj2hHtiHZEO247bjtuO247bjtuO247bjtuO245sHAJNJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdox2jHbMdsx2zHbMdsx2zHbMdsx2zHbsdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux22HtsHZYO6wd1g5rh7XD2mHtsHZ4O7wd3g5vh7fD29F1vrvOd9f57jrfXee5/slH0mxaTbvJmrzpNEXTLfrq/FE7oh3RjmhHtCPaEe2IdkQ7bjtuO247bjtuO247bjtuO247bjlycdSj0TSbVtNusiZvOk3R1I7RjtGO0Y7RjtGO0Y7RjtGO0Y7RjtmO2Y7ZjtmO2Y7ZjtmO2Y7ZjtmO1Y7VjtWO1Y7VjtWO1Y7VjtWO1Y7djt2O3Y7djt2O3Y7djt2O3Y7dDmuHtcPaYe2wdlg7rB3WDmuHtcPb4e3wdng7vB3eDm+Ht8Pb4e047eg6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rnPrOreuc+s6t65z6zq3rvNcf+X4u6df02iaTatpN1mTN52maGrHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHV+fnl+RNpymabtFX549G02xaTbupHV+dn5F0mqLpFn11/mg0zabVtJusqR27Hbsdux1fnZ+VNJpm02raTdbkTacpmm6Rt8Pb4e3wdng7vB3eDm+Ht8Pbcdpx2nHacdpx2nHacdpx2nHacdrx1fnBX/aNptn054iZtJus6c8RGOU0RdOfI74/xcylXY9G02xaTbvJmrzpNEVTOXKR16PRNJs+B/5acTdZ0+e4Sacpmm7RV+ePRtNsWk27yZraMdox2jHa8dX5/SWNptm0mnaTNXnTaYqmW7Tasdqx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdth7bB2WDusHdYOa4e1w9ph7bB2eDu8Hd4Ob4e3w9vh7fB2eDu8Hacdpx2nHacdpx2nHacdpx2nHacd0Y5oR7Qj2hHtiHZEO6Id0Y5ox23Hbcdtx23Hbcdtx23Hbcdtxy1HLiR7NJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHa8dX5nUm3KOscNJpm02raTdbkTaepHbMdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux27HdYOa4e1w9ph7bB2WDusHdYOa4e3w9vh7fB2eDu8Hd4Ob4e3w9tx2nHacdpx2nHacdpx2nHacdpx2hHtiHZEO6Id0Y5oR7Qj2hHtiHbcdtx23Hbcdtx23Hbcdtx23HbccuRitUejaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox1d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had367z23V+u85v1/ntOr9d57fr/Had5wq4a0nedJqi6RZlnYNG02xaTbupHbcdtx23HVnnns/L+DWNptm0mnaTNXnTaYqmdox2jHaMdox2jHaMdox2jHaMdox2zHbMdsx2zHbMdsx2zHbMdsx2zHasdqx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdux2WDusHdYOa4e1w9ph7bB25KOffr/E25iPgHo4PlyJk7iIm2hEJx5iEG9jPirqIW2HtkPboe3Qdmg7tB3aDm1BW9AWtAVtQVvQFrQFbUFb0HZpu7Rd2i5tl7ZL26Xt0nZpu23DE6oeDuIkLuImGtGJhxhE2gZtg7ZB26Bt0DZoG7QN2gZtg7ZJ26Rt0jZpm7RN2iZtk7ZJ26Rt0bZoW7Qt2hZti7ZF26Jt0bZo27Rt2jZtm7ZN26Zt07Zp27Rt2ow2o81oM9qMNqPNaDPajDajzWljLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2Esme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLKXTPaSyV4y2Usme8lkL5nsJZO9ZLGXLPaSxV6y2EsWe8liL1nsJYu9ZLGXLPaSxV6y2EsWe8liL1nsJYu9ZLGXLPaSxV6y2EsWe8liL1nsJYu9ZLGXLPaShV7iiYcYxNuIXgIcxElcxE00Im2LtkXbog295CQO4iQu4iYa0YmHGMTbaLQZbUab0Wa0GW1Gm9FmtBltTpvT5rQ5bU6b0+a0OW1Om9N2aDu0HdoObYe2Q9uh7dB2aDu0BW1BW9AWtAVtQVvQFrQFbUHbpe3Sdmm7tF3aLm2Xtkvbpe22bf9+xEGcxEXcRCM68RCDSNugbdA2aBu0Ddqyl3wPn5256rDwED/b2Im3MXvJw0GcxEXcRCM68RBpm7Qt2hZti7ZF26Jt0bZoW7Qt2hZtm7ZN26Zt07Zp27Rt2jZtm7ZNm9FmtBltRpvRZrQZbUab0Wa0OW1Om9PmtDltTpvT5rQ5bU7boe3Qdmg7tB3aDm2HtkPboe3QFrQFbUFb0Ba0BW1BW9AWtAVtl7ZL26Xt0nZpu7Rd2i5tl7bbtlzJWDiIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmhjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSYy8x9hJjLzH2EmMvMfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2ksNecthLDnvJYS857CWHveSwlxz2ksNecthLDnvJQS85iZO4iJtoRCceYhBvI3oJkLZJ26Rt0pa9ZI5EJx5iEG9j9pKHgziJi7iJtC3aFm2LtkXbpm3TtmnbtG3aspfMX6ITDzGItzF7ycNBnMRF3ETajDajzWgz2pw2p81pc9qcNqfNaXPanDan7dB2aDu0HdoObYe2Q9uh7dB2aAvagragLWgL2oK2oC1oC9qCtkvbpe3Sdmm7tF3aLm2XtkvbbVuu+iwcxElcxE00ohMPMYi0DdoGbYO2QdugbdA2aBu0DdoGbZO2SdukbdI2aZu0TdombZO2SduibdG2aFu0LdoWbYu2RduibdG2adu0bdo2bZs29pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pLLXnLZSy57yWUvuewll73kspdc9pLLXnLZSy57yWUvuewll73kspdc9pLLXnLZSy57yWUvuewll73kspdc9JKZuIlGdOIhBvE2opcAB3ESaVu0LdoWbYu2RduibdO2adu0bdo2bZu2TdumbdO2aTPajDajzWgz2ow2o81oM9qMNqfNaXPanDanzWlz2pw2p81pO7Qd2g5th7ZD26Ht0HZoO7Qd2oK2oC1oC9rQSzzRiE5MWyQG8TailwAHcRIXcRON6ETaLm23bOv3+xEHcRIXcRON6MRDDCJtg7ZB26Bt0DZoG7QN2gZtg7ZB26Rt0jZpm7RN2iZtk7ZJ26Rt0rZoW7Qt2hZti7ZF26Jt0bZoW7Rt2jZtm7ZN26Zt07Zp27Rt2jZtRpvRZrQZbUab0Wa0GW1Gm9HmtDltTpvT5rQ5bU6b0+a0OW2HtkPboe3Qdmg7tB3aDm2HtkNb0Ba0BW1BW9AWtAVtQVvQFrRd2i5tl7ZL26Xt0nZpu7Rd2thLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvQTrXr9vlV1Y9/owiJ9trQ+zlzwcxElcxE00ohMPMYi0HdrQS07iJC7iJhrRiYcYxNuIXgKkLWgL2oK2oC1oC9qCtqDt0nZpu7Rd2i5tl7ZL26Xt0nbbhnWvDwdxEhdxE43oxEMMIm2DtkHboG3QNmgbtA3aBm2DtkHbpG3SNmmbtGUvye/oxbrXh078bO8bdoN4G7OXfF+0vLDu9eEkLuImGtGJhxjE27hp27Rt2jZtm7ZN26Zt07Zp27QZbUab0Wa0GW1Gm9FmtBltRpvT5rQ5bU6b0+a0OW1Om9PmtB3aDm2HtkPboe3Qdmg7tB3aDm1BW9AWtAVtQVvQFrQFbUFb0HZpu7Rd2i5tl7ZL26Xt0nZpu23DuteHgziJi7iJRnTiIQaRtkHboG3QNmgbtA3aBm2DtkHboG3Shs+Eb+IkLuImGtGJhxjE24j1JUDaFm2LtkXbom3RtmhbtC3aNm2btk3bpm3TtmnbtG3aNm2bNqPNaDPajDajzWgz2ow2o81oc9qcNqfNaXPanDanzWlz2py2Q9uh7dB2aDu0HdoObYe2Q9uhLWgL2oK2oC1oC9qCtqAtaAvaLm2Xtkvbpe3Sdmm7tF3aLm23bW/dK3AQJ3ERN9GITjzEINI2aBu0ZS/ZnriIm5hXCpHoxEMM4m3MXvJwECdxETeRtknbpG3SNmlbtC3aFm2LtkXbom3RtmhbtC3aNm2btk3bpm3TtmnbtG3aNm2bNqPNaDPajDajzWgz2ow2o81oc9qcNqfNaXPanDanzWlz2py2Q9uh7dB2aDu0HdoObYe2Q9uhLWgL2oK2oC1oC9qCtqAtaAvaLm2Xtkvbpe3Sdmm7tF3aLm23bVj3+nAQJ3ERN9GITjzEINI2aBu0DdoGbYM29hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9hJnL3H2EmcvcfYSZy9x9pLDXnLYSw57yWEvOewlh73ksJcc9pLDXnLYSw57yWEvOewlh73ksJcc9pLDXoJ1r99Xui6se314G7OXPBzESVzETTSiE2mbtE3aspd8D3ReWPf6cBI/2/e044V1rw+N+Nn8Jh5iED/b9wTjhXWvDwdxEhdxE43oxEMMIm1Gm9FmtGUvOZa4iUZMmyceYhDzLPnuXWHd68NBnMRF3EQjOvEQg0jboe3Qdmg7tB3aDm2HtkPboe3QFrQFbUFb0Ba0BW1BW9AWtAVtl7ZL26Xt0nZpu7Rd2i5tl7bbNqx7fTiIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmgbtA3aJm2TtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPa2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS4K9JNhLgr0k2EuCvSTYS7Du9Xt8+cK614eT+NliJ26iET/b99jfhXWvD4P42W7aspc8HMTPdiNxETfxz/b3UW2iEw8xPvTEW5jrXgv/bH+f2iZO4iJuohGdeIhBvI1fLymkbdA2aBu0DdoGbYO2QdugbdI2aZu0TdombZO2SdukbdI2aVu0LdoWbYu2RduibdG2aFu0Ldo2bZu2TdumbdO2adu0bdo2bZs2o81oM9qMNqPNaDPajDajzWhz2pw2p81pc9qcNqfNaXPanLZD26Ht0HZoO7Qd2g5th7ZD26EtaAvagragLWgL2oK2oC1oC9oubZe2S9ul7dJ2abu0XdoubbdsO9e9Fg7iJC7iJhrRiYcYRNoGbYO2QdugbdA2aBu0DdoGbYO2SdukbdI2aZu0TdombZO2SdukbdG2aFu0LdoWbYu2RduibdG2aNu0bdo2bZu2TdumbdO2adu0bdqMNqPNaDPajDajzWgz2tBLPPE2opcAP9v3Z4k7170WLuJn+5ac71z3WujEzzYxWBBvY/aSlYNlL3k4iZ9t5WDZSx4a8bOtm3iIQfxsO7c4e8nDQfxs3zv3neteCzfxs+0cLHvJw0P8bJYblL0EmL3k4Wf7vm1y57rXwkX8bL4SjejEz3ZyvtlLHt7CXPc6vy/u2bnutXASP9uJxE004mc7N/EQg3hrp+a618JBnLVTc91r4SZa7dRc91p4iFE7Nde9Psxe8vCzfd+bs3Pda+EibqIRnXiIQbyN2Use0rZoW7Qt2hZti7ZF26Jt0bZp27Rt2jZtm7ZN26Zt07Zp27QZbUab0Za9JE7iJhrxs13820MM4me730mb614LB3ESF3ETjejEQwwibYe2Q9uhLXsJqiV7yUMjeldL9pKHQbxdLdlLHg7i7GrJXvJwE3PbgE48xD/b+uV0vl7y8OslhePD3KCvlxQu4v4wp/P1kkInng/TdoN4C3Pd6/oeTrZz3WvhJC7iJhrRiYcYxNs4aBu0jbRF4iJuYtpyvsOJh/jZpiXexq+XFH62fB3Kda+Fi/jZ8mUm170WOvGzfcsjd657LbyNXy9ZK21fLymcxM+2c7CvlxQa8bNtDHaIQfxs2Rxz3WvhIH42+yUu4m7EMoSkbyxLzHPL0pDn1sNNNKITDzGItzDXQRYO4iQu4iYa0YmHGETaBm2DtkHboG3QNmgbtA3aBm2DtknbpG3SNmmbtE3aJm2TtknbpG3RtmhbtC3aFm2LtkXbom3RtmjbtG3aNm2btk3bTpsnOvEQg3gb7Uf8bP5LnMRF3MTP9n2osXMdZOFn+z7J2LkOsvA2fq9ThYM4iYu4iUZ0Im1Om9N2aDtps8RJXMRNNKIT03YSg3gbv9eplS9vuQ6ycBIXcRON+NlOzvd7nSoM4m3M16mTM8vXqYeT+NkiD0v2kodG/GyBwQ4xCnPF49+eTfzG/b6acOfaxpVXKLm2cX13CXeubSwM4m3M/vBwEL9xb9qyPzzcRCOmLeeQ/eFh2nKS2R+A2R8eDuIkLuKf7W8DE43oxEOMD1fibfz6w98bycRBnMRFTFuKlxGdeIhBvI1ff/jbcYmDOImL+NlGTvLrD4VOTJsnBvE22ibmCLkVX3XvkSeB53RyZj6Ik7iIm/gNlu9dczli4SEG8TZ+JV342fLyIZcjFi7iJqYt53uceIhpy5md2xg/4mdbedJ+Jb3zTXMuR9x5AZLLEQuN6MRDDOJnW6n4SrpwECdxETfRiE48xCC2LZcjFg7iJC7iJhrxs+W1Uy5HLAzibfzKv3AQv3H3TjSiEw8xiLcxq3B/nSBXBRam4jvyuU5vfx+W7FynV7iJRnTiIQbxNtqPOIi0GW1Gm9FmtBltRluWU75bz7V3Oy8yc+3dzsvJXHtXeIjfCHlpmWvvHmbhPBzESVzETTSiEw+RtkNb0Ba0BW1BW9CWJWJ5amQx5JVNrqf7a3WJk7iIm2hEJ+a4ecJkMTzM+X4nTK6nKxzEnJkn5ggnMYh5Pnx7PdfI/W1A4iBO4iLmuDfRiE78bI5xg3gbJ22TtknbpC1f3x720cw1coWHGMQ+mrlGrnAQJ3ERN5G2RduibdG2aNu0bdqyYvPUyHVvODUctYl/cBtRm8BBnMRF3HU+5Lq3Qu+TIGvzYTRmbeLUyNrE+YDaBHqfGqjNPACoTeBtPDyaqM08CVCbwEXcfRJkbT50Im2HtkNb0BY8d7IY/Nu/uSCscBC/6eTFdC4IK9xEIzrxEIN4G7NwHqYtEidxETfRiE78bCfnm4Xz8DZm4Tz8bN+Xiu9cEFa4iJ8tr7ZzQVihE9NmiUG8jVk4D9PmiTnuSTSiEw8xx72J37jxHeNc+rXzKj6XfhVO4iJ+trzlmEu/Cp14iJ8tL/5zvdeOnG/WUF7x53qvHTmdrKG8EZnrvQqN6MRDDOJtzIvIvHeY670KP9tNcV5EPtxEIzrxEP9sf5c3ibfxq7fCQZwf5nS+eivcRPswZ/bVW+Ehpi0P90lbziF+xEGcxEXcxM+WF+m53qvwEIN4G7/XzcJBnMRF3ETaLm2Xttu2XNn1d72WOImrceR/9cRFTNtJNKITDzGIt3HmtkVizuEmTuIibqIRnXiIQbyN60ekbdG2aFu0LdoWbYu2r3jte7rZzlVVlp/w5aoqyzdtuaqq0ImHGMTbaDkucBC/+c48braIm/iNO7+az5VSlndsc6VUYW5xTtJXHwDfRCM6McfNI59V+PA2ZhXiwGYVPpxE2g5th7ZDW1YhMKtlAg8xiNl3covzKvPhIE7iIm7iN4d8B5grmgoPMYi3MFc0FQ7iJC7iJhrRiYfYtly7ZHnLPNcuFS7iJhrRiYcYxNuYVfiQtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPajDanzWlz2pw2p81pc9qcNqfNaTu0HdoObYe2Q9uh7dB2aDu0HdqCtqAtaAvagragLWgL2oK2oO3Sdmm7tF3aLm2Xtkvbpe3Sdstmv9+POIiTuIibaEQnHmIQaRu0DdoGbYO2QdugbdA2aBu0DdombZM29JKVuIibaEQnHmK+zNwPs4E8HMRJXMRNNKITDzGItG3aNm2btk3bpm3TtmnbtG3aNm1Gm9FmtBltRpvRZrQZbUab0ea0OW1Om9PmtDltTpvT5rQ5bYe2Q9uh7dB2aDu0HdoObYe2Q1vQFrQFbUFb0Ba0BW1BW9AWtF3aLm2Xtkvbpe3Sdmm7tF3abttywVLhIE7iIm6iEZ14iEGkbdA2aBu0DdoGbYO2QdugbdA2aJu0TdombZO2SdukbdI2aZu0sZcM9pLBXjJwMeKJi7iJ2a5OohMPMYi3ERcjwGyOacPFCHAR0xaJRnTiIQbxNmYv+W7LWy5YKpzERdxEIzrxEIN4G502p81pc9qyl3x36ywXLBU68RCDeBuzl3wfGFguWCqcxLRZ4iYa0Yk5bh7Y7A87j1D2h4ebmCPkEcr+8PAQv/l+9+0tFyE9zP7wcBA/m+UGZX94uIlGzHG/3ZcLi+y7XWq5sKhwEXO+v0QjOvEQg3gbs+Yfps0TJ3ERc76WaEQnHmIQb2PW/MNBnMRFpG3SljX/3ae1XFhknlPPmn94G7PmHw7iJC7iJhrRibQt2hZtm7ZN26Zt07Zpy5r/1mBYPlCv8BCDeBuz5h/mnozESVzEtOUJkzX/0Imf7WCwIN7GrPmT52TW/MNJ/GwnD0vW/EMjfrbv/qTlA/UKg/jZIo9x1vzDQfxsN/dZ1vzDTfxsN+ebNf/wED/bzV2SnQCY1w8PP9u3xNDygXqFi/hn818Ww9cfCp14Pswt/vpD4W38+oOP3OKvPxRO4vowt/jrD4VG/GwzN+i7figM4mf7btRYLiQrHMTP9n14brmQrHATP9t3V8JyIVnhIX62hcFu49dLCj9bvgDmQrLCRfxs2cFzIVmhEz9btu1cSFZ4G79e4tkGcyFZ4SR+NsvBvl5SaMTPljWUC8kKg/jZvs9QLBeSFQ7iZ/s+v7BcSFa4iUZ04iEG8TbuH3EQadu0bdo2bV8v8ZM76uslhUH8bCcP1tdLCgfxs0Xuya+XFG7iZ8vizYVkhYcYfTTtNn69pHD00fx6SeEi7j6abkQnnj6aXy8pvI1fL/HIU+7rJYWT+NluHs2vlxQa8bNd/NtDDOJnywaSC8kKB3H2Xv96SeEmWu/17CUPDzF6r2cvAWYveTh6r2cvebiIf7bzAxrRiefDnM7XSwpvYT5Q73zrmCyXlxVO4p/tfJ8zWD5Qr9CIny27XC46KwziZ/s+crBcdFY4iJ9t5mBfLyncxM82c7CvlxQe4mf7FgNZLjp7+PWSws+WXS4XnRUu4mfLJpaLzgqd+NnyyjwXnRXexq+XnLzmykVnhZP42fIyNBedFRrxs20MdohB/GxZAbnorHAQP1teUuWis8JNPHV5sHGtMRMHcRIXcRON6MRD/Oabl5b5kLzzfUxuuSqtcBAncRE30YhOPMQg0nZoO7Qd2r7+cPJSLVelFRrRiYcYxLz+zb2e1xoPB/Gz5StOrj872DvhxEMM4m38OkHhIE7iIm4ibZe2S9ul7bYt158VDuIkLuImGtGJhxhE2gZtg7ZB26Bt0DZoG7QN2gZtg7ZJ26Rt0jZpm7RN2iZtk7ZJ26Rt0bZoW7Qt2hZti7ZF26Jt0bZo27Rt2jZtm7ZN26Zt07Zp27Rt2ow2o81oM9qMNqPNaDPajDajzWlz2pw2p81pc9qcNqfNaXPaDm2HtkPboe3Qdmg7tB3aDm2HtqAtaAvagragjb3E2EuMvcTYS4y9xNhLjL3E2EsMvcQSN9GITjzEIN5CRy8BDuIkLuImGtGJhxjEtH0vM45eAhzESVzETUzbSnTiIQbxNqKXAAdxEhdxE2mbtE3a0Esi8TailwA/W15a5lK/wkX8bHlp6ega+WvoDydxEL8RvsVLlo+4K9xEIzrxEL/55mVoLvV7mP3h4SCmLSeZ/eHhJqYtp5794eEhpi2nnv0BmP3h4SCmLTc++0PeSMgFgCdvGeQCwMIg3sbsBPlGIRcAnptHKDvBzflmJ7g5s+wED43oxLTlzLITPLyN2Qkepu0m/inil9P5yj9+OZ2v/COv7fMJdvHDrx1iEG/jV/6FgziJact9djfR+zS6PKMuz9TbZ+r5/YiDOImLuIlGdOIhBpG2QdtX8/H9Yb/lKsXCRfw26FswY7lKsdCJhxjE2/jVfOEgTuIi0jZpm2nbiYcYxNu4fsRBTFtu8VrETTRi2m7iIQbxs+WNpVy7GN/aJMu1i4WfLd995drFws+Wb7ly7WKhEw8xiLfRfsRBnMRFpM1oM9qMNqPNaHPanDanzWlz2pw2p81pc9qctkPboe3Qdmg7tB3aDm2HtkPboS1oC9qCtqAtaAvagragLWgL2rKBfOvPLJcxFk7iIu56ScpljIVOPMQg3sJ8bF3hIE5iboUnRr3q5aPoIm925qPoCgdxEhdxE42Y++Erp1zciP2Qixuxmbm4sXATjZj79yYeYhBv4+qjmYsbCydxETfRiE48PYes+Ye3cf+Io+eAmgcuIm2s+WDNB2s+WPPBmg/WfFifO2Hck8Y9adyTqPmcg3FPGvckaz5Y88GaD9Z8sOaDNR+s+XAeN9Q8kHvSuSedxw01D+SeZM0Haz5Y88GaD9Z8sOaDNR+s+Qget+CeDO7J4J4M7sms+bwRlosxCz9b3v3KxZiFtzFr/uFnWzmHrPmHi7iJRnTiIQYxbd8kczFmYV4/3MRdVZjLLiM/iMhll4WHGMQ+Qnf8iIM4iYu4iUbsI5SLMQuD2EcoF2MWDuIkLuIm5lacxCDexuwPeaMxl11GrjLIZZeFi7iJRnTiIQbxNu6+d3Vx9wC4iUZ04iEG8Tbi7gFwEGkz2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1o4z3HG7QFbUFb0Ba0BW1B26Xt0nZpu7Rd2i5tl7ZL26Xtls1/vx9xECdxETfRiE48xCDSNmgbtA3aBm2DtkHboG3QNmgbtE3aJm2TtknbpG3SNmmbtE3aJm2LtkXbom3RtmhbtC3aFm2LtkXbpm3TtmnbtG3aNm2btk3bpm3TZrQZbUab0Wa0GW1Gm9FmtBltTpvT5rQ5bU6b0+a0OW1Om9N2aDu0HdoObYe2Q9uh7dB2aDu0BW1BW9AWtAVtQVvQFrQFbUHbpe3Sdmm7tF3aLm2XtkvbpY29ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EtyrWV8n7F6rrUsdOIhBvE25juUh4M4iYtIm9FmtBltRpvR5rQ5bU6b0+a1ysux1vKhEw8xiLcx36F8Czc911oWTmLa8G830Yi5bTvxEIN4G/MdysNBnMRF3EQj0ha0BW1B26Xt0nZpu7Rd2i5tl7Z8h/KtUPFcrRnfh/KeD4cD5sPhCgdxEhdxE43oxEMMYq3Oc6zhfDiItTrPsYbz4Sbm6rxfohMPMYi3MddwPhzESVzETaRt0pbvW74lC57rMsPyv+Y7FMutyHcoD43oxG+EbzGQ51rL+D5S91xrWbiJRnTiIX7791uR4LnW8mHW/MNBnMRF3EQjpi33etb8wyDexqx5y2OcNf8wV1tY4iJuohGdmLbcv3lXwnP/5l0JYNb8w0H8ts1zl2TNe25F1vxDIzrxEIN4G7PmHw7iJNKW1Y2pZ2167oeszYdGzDng3x5iEG9hroksHMRJXMRNNKITDzGItA3aBm2DtkHboG3QNmgbtA3aBm2Ttklb3lP4bpJ4roksrHW6vqYRnXga855CVmyuc4zsMLnOMdfeeq5zLHRirb31XOdYeBtzzXTkdHLN9MNJXMRNNKITDzGIt9FoM9qyYrMj5trF+B4Q4bl2Mb47yJ5rFx9mbT4cxBwhd1TW28m9nvX28DZmvT0cxEn89m/k7st6e2hEJx5iEG9j1tvDtHniJC7iJqYtj1BWITBfLL/lhp4LCws3MX8td18W5MNapOyrFyn7wiLlDzcWKQNzXEvMETzxvKXLnosFC29jLjz+7sV7LhYsnMRc5pzj5sLjh0Z04iEG8TbmwuOHgziJtE3a8sZd5HSynPLsywWAkdWSCwALF3ETvxG+z5o9F/XF91mz56K+wklcxE004rd/b84sXwAfBvE25gvgw0GcxEVMWx7NfAF86MRDTFsewiwyYBbZt3LWc1Hf/eXGfy9qhYcYxNv4FVnhIE7iIm4ibacWonsu6isMYi1E91zUVziIuaA5d3Uu+n24iUZ04iEG8Tbmot+Hg0jbpe3mPstdfXPvfP81l+/db2GA5/K9wklcxBzBE3OE7/zNJXmFgziJi7iJuX9vohMPMYi3cf6IgziJabPETTSiEz/b92G/55K8ws/2PYvDc0le4SBO4mcbuXe+2iw0ohMPMYi3cf+IgziJtO1aMO65JK/QibVg3A0L/YG3EQv9czAs9AdO4iJuohGdeIhBvI1Om9Pmuc9yvlnHI0+NrONvRYLnMruHWccPB/EbYeZx+2rz5ktHLp0rvI1fbRYO4iR++3dmXcQmGtGJhxjE23h/xJxvnp53EhdxE9OWeycr9mGO+x23XPh2v4+2PBe+FTrxEIN4G7NiHw7iJC4ibaP+6MJz4VvhIdYfXXgufHuIP80B5p/mzMRJXMRNNKITDzGItzH/NOchbYu2rM3vAzrP59bd74NKz+fW3ZX/IKvw4SBO4jfCyg3aOYIl3kb7EQdxEhfx27/fZ3Wei9kKnXiIQbyN/iMOYtrysPgibqIR05bHOKvw4WfLu0m5xO1hVuHDQfxseVsol7gVbqIRnXiIQbyNWbEPB5G2qD9G8lztVmjE+mMkz9VuhUHMP6HJwfAnNMBBnMRF3EQjOvEQg9i2XPhWmPtsJebescTcO54YxNuYdfwwR4jEHOEmHmIQb2O+mj4cxG//5g2VXKBWuIlGdOIhBvE25qtp3rDKBWqFk7iIacu9kxX7MMfdibcxK/bhIE7iIua4uX+zjh/mVuSe3IeYtpxOVjcwqztvReRStMK05e7L6n742fIuSi5FK/xseQ86l6IVfjbPzczqBmZ15x3Zk9X98LPlLZlcilaYttygrO6HacsNyup+mLbcoKxuYFZ33ifIpWiFacsNyup++NnyNkAuRSv8bHlHIJeiFX4V8Aa7jXmt/HAQJ3ER05a7JF+PHzoxbbnF+Xr88Dbm6/HDQZzERdxEIzqRttu2XHR28+oqvxX15m2AXHR28/18fitq4SEG8TaOnm8uRSucxEXcRCM68RA539F7J5/JV0hb1jw2KKsbGzQ538n5ZnU/HMRJ5HwX57s438X5Ls53cb6L892c7+Z8N/fOpm3TltWNDco6xgYZ52ucb9bxw03k0TTO1zhf43yN83XO1zlf53yd83XO17l3nDanLSsWG5S1iQ06nO/hfA/PvsOz7/BoHh7NfOX9HljquWSsMF8LU4FXXuAmGvEbN2835TKwm/eNchlY/qms5zKwwk2096eynsvACg/x6yV5cyCXgQFzGVjhIE7iIm6iEZ14iEGkLaswX7tzwdfNS4lc8HXzhlUu+CoM4m3M19jcUflEvfv93YHnE/UKDzGItzHr7eG3f/O2UC7tKlzETTSiEw8xiGnLLc56eziIk5i2kbiJaVuJTjzEIN7GrM2HgziJi7iJtOUijbxtgQVfD4P4fWictwGw4OvhIH4fGudNEiz4eriJRnTiIQbxNuYijYeDSNuhLSv25nyzNnH2ZW1mteQirsJJXMQc4Sb+jTB+eUsrV2Y1D+EpvIS3sCXn2Z9fKl58hEP4Fp9co9U8hKdwzj4SN9GIToRzJYcwnOfj8ROGM393wHmTv33+/Vn5wWKth0Z04iEG8TbmAouHgziJtE3a8hvGf9/ffZxcrdV8hEP4kvNrxouH8BRewlsY3tz3y4WPcAhf8v4J49/ntuwQvmT7CQ/hKYx55vGyTXb8+zx2PoWXcP77737QyUVUzS78Hb+Zp0lW6MPbmBX63Xc5WEb1cBK/4zdzo3MZ1UMjOvEQg3gbcxnVw0GcRNqCtvyW79/MI4hqxuRRzZgnqvnxEt7CGOfb8wPV+X1Kcgaq8/EUXsJb2ISxt2/yEQ7hS0aFPh7CU3gJw2vJJuzCRzi93/L1kwuhimd6v5sgJ5dC/XH++zmFl/AWNmEXPsIhfMmo1sfizVVRK3dhrop6uInfKfbdnjlYFfXwEL9TbOXBzFVRwFwV9XAQJ3ERN9GITjxE2jZtqOXH2Es5N8NeyiNoRziELxk1/j357QzU8nfP5wzU8uMjHMKXfH7Cube/T21OrmVqXsJb2IRd+AiHMLx5dsVPeAhPYXjz6Mcmo1qx7ajWxybswpjPt8/nj9s7UcWPpzDGP8lb2IQxfiQf+d0Q5n6eQ7xDvEO8qOLHW9iEXVi8Q1yo0O921Zmo0MdbOMf8bj2diQp9fIRDOMe3HB8V+ngIT+H0fre+z8Tr5neL6Uy8bj4OYYz/Hd+J183HQ3gKL+EtbMLw5nHH6+/jEL5kvP4+HsJTeAljzDwHHL+b+xavxY+n8BLewiacc/bc56jfxyF8yajfx0N4Ci/h9HoeI9TvYxc+wiF8yahfHDvU7+MpvISxjb/k4H7DdTcYr9SPhzC2Jc+lK/sKNf74CGPO6cX1dfJC7T/GvrJkHqP1W8Jb2IRd+AiH8CWPn/AQFu8Q1+BVx8Kr8+NLxqvzY2wLmFcda5qwC+P4gkP4klHj3+3FsxavdtaawktYvEu8S7yo/cchfMn7JyzeLS7Utee+Ql0/DuEc87vBehbq+vEQnsI5/ne39CxcVz82YRdO7/cdOmeh9k+eV6j9x1MY4+f5htp/bMIufIRD+JJR+yePO2r/8RRewlvYhF34kFHXJ88BvP6e3Leo5ccufIRD+JJR45H7HDX+eAov4S1swi58hNMbeYxQ+8kbtf94CE/hJbz72G3U/mMXPsLYxq+/bdR17reN1/THW9iEsS0rmftqo8YfD2HMOb14fX+8hbGvLNnld49wCIt3iXeJF7X/eAlvYRMW7xJX3iO7wElcxE3Edngy7mHkPt6XbD9hHNuTPIWXMPZT7nvU9/tdFz7C4jXxunh9CE/hJbyFxeviQk1Hbjtq+vEUzjG/e4hno6Yfm7AL5/g3z2u8nj++ZLyeP07vzfMRdX/znELdP3ZhjJ/nGur+8SWj7h8P4Sm8hOHN4466f+zCRziEb7Oh7h8PYYwZyfjdm3zJeN1+PISn8BL+5jy+VWQnV3A1u/ARDuFLzrovHsIzeSYv4S1swi58hKOPnaHuwaj7x0MY2/hLdu43vJ4/DuFL3tiWlSz7Ctfsj00Yc07vPsIhjH31nSdmcoxMjpHJMTLxmnhNvKj9x0dYzg2Tc8PF6+LKz6SyzeRj0goPMYjYjjwf82PkbEn5RLTCTcSBzV88LnyEsZPw72//avyIg0hj0Bg0hhGdeIhBpO1ScXFi5o65JuzCOf+82ZoPPmu+zfnos+YsiLypmg8/a17CWzi932NVT674+uOdfMnjJ4zxLXkKL+EtbMIufITh9eRLRqE/HsJTeAlvYRPGmN8+z9Vcf3yTl/AWNmEXPsI557yFmgvAilHQj4fwFF7CW9iE05u3ax2F/jiEL9l+wkN48tjZEt7CJoxt/JpZrg6r/eZDeAovYWxLnksu+8pD+JIP5pzeM4SnMPZVnidHjtGRY3TkGB3xHvEe8cZPeAjLuRFyboR4Q1yB/Z/n2MW2nOQhPIWX8BY2YRc+76Pvk8vACm9hLgMrHMRJXMRNrIUM56DkvzWa56DkwSj5x0MYm3OTl/AWNmEXPsIhfN/ag4M1ZQ8HcRIXcRON6MTTuH69xUu2Bs3g8RLewrI1S7ZmydYs2ZrXDJJfMwAPYW7Q5gZtbtDmBm1u0OYG5UffD7n7jLsPC1Byi022BqX+2IWPsGyNyda4bI3L1ricEy7nhMs54dwg5wY5N8i5Qc4NOtygw/PhcPcd7j6sUMktPrI1R87wI2d4yBkesjUhWxOyNSFbE3JOhJwTIedEcIOCG3S5QZcbdLlBlxt0eT5c7r7L3ZedIO+x59PLCgdxEnNT8qMrrCTL+9xYSfYwiLmfvtXNJ9AJHg/h3E/fquaD1WT41VxN9tCINA4aB429rvRErys90etKTz4ErZC2SUVetY/8PC7wgg9eP2HM35Kn8BLewnmc89OoQO0/PsIhDO93cAIv+PnpVeAF//EWxvg5f7zgPz7CIXzJeMF/PITTm58QBV7wH29hE3bhIxzCl4wKz09SclnZH+e+xQv+4xC+ZLzgPx7CmHPuc7zgP97CJuzCRziELxm1np9wBWr98RRewlvYhJ3HDrX+OIQvGRcC33L/E3jBx37DC/5jFz7C2JbvXLo/7quLi/rHSxjjR7IJuzDGv8khv8tjdMdPWLxDvEO8eOV/bMIufITFO8WVVZ27Kh9SVmhEJ+Z4+WkJlrJluWIp28NJzMnmx3QXxf3YhHOy+dEclrO9Xw3ibdw0bho3jXsRN9GITqRtU4Eizo8HL4r48RbG/PHvXfgIh3Ae5Pxo7uKl/PEQnsLw5gmIQs+Pmy4K/XEIY/w8uVDoj4fwFF7CW9iE0+t5oFHoj0P4klHoj4fwFF7CGDOPO67g82M0LGsrnsJLeAubMOac+xwF/TiEb3FgWVvxEJ7CSxheTzZhFz7CIXzJKPTv2AWWthVP4SWM47KTo/Zb/PCOHYyCfjyEsS0nufdVYKla8RHG+OnFizkYL+aPMf5NnvzdtYS3sHiXeJd48WL++JL3T3gIi3eLK6v6WzEWuZqt8DbmlfrDHO+A8y/mRqIRnZiTPeAQvmQU98kd76N/1SdxEWl0Gp1GP8Qg3sbzI9J2qEARn9wxKOLHIYz55wmOIn48hKdwHuSTJzJerR+bsAvDmycgCv3kSYRCfzyFMX6eXCj0xybswkc4hG8zVsiNb1V7YIVc8RRewlvYhF34kFHE3+dzgVVu4/vMLLDKrdiFj3AIXzIK+vucLLDKrXgKL+EtbMIufITh9eRLRqE/HsJTeAnvPnYDhf7YhY8wjsvXzAaKGPsNV+qPt7AJY1tOsuwrXJE/HsIYP714MX+8hTF+nicmx8jkGJkcIxOvi9fFixfzx0tYzg2Xc8PF6+LCkw9yN+PJB8BF3MQc7+b5mH8c8svdlHfbgXm3/WFO9vsQLrCwrXgJ52Rv7vi84/5+1YmHSGPQeGnM99wPJ3ERN5G22woskBvfh3+BBXLFUxjzt+QtbMIunAf5++AtsECu+JLxav0Y3pwPCv37MCmwEK7YhTH+TQ7hS0ahPx7CU3gJf975fSgbWCxX7MJHOIQvOQu9eAhjzJmM3819uy55/4SH8BRewphz7vNtwi58hEP4ku0nPIThzWNkS3gLm7ALH+HgsUOhg1Hoj4cwjstOdu43P8IhfMkH25Ln0pF9dbawCWP89J4jHMIYP8+TkGMUcoxCjlGIN8Qb4g0XPsJyboScG1e8V1z5aKFsJ3jW18NDDGKO930WEnisV5Y3Huv1cBNzst+HcIEVcMVHOCf7ffAWeLQXfjUf7fVwEGkcNA4a89FeD514iEGkbVKBIh5gE3ZhzN+SQ/iSUcSP8yB/H7wFVsMVL+EtDO9JxviRfMko9McY/yZP4SW8hU3YhY9wevNyHCvjHqPQHw/hKbyEt7AJY8w87o7fzX3rS3gLm7ALH2HMOfc5ChqMgn48hKfwEt7CJgxvHiMU+uMQvmQU+uMhPHnsUOiPt7AJ47h8zQyr4d5+u0N4Ci9hbEueS1f21Q3h24xVb/P7DCCw6q14CmP8m7zld03YhY9wCIt3/ISH8BRewuId4soX8Pnd1A+shpvfvfnAarjiKbyEt7AJu/B5j06LXAxXeBvx/DHgIE7iIm5i7qOV24Caf3zJqPnHQ3gKL+EtbMIuLN4t3i1eE6+J18Rr4jXxmnhNvHgc4EkM4m3E4wCBcO7k/Z7mF7kgrtCJ2CBLDuFLRkNYueP7SYGx+0mBkQvmCmk8NB4a80mBD4N4G/NJgQ9pCyrwSr5yY1Hsj0MY88+iQxN4PISncB6QnYWAJvDYhF04vd+fvwSWwM3vpntgCVzxFMb4K3kLm7ALH+EQvmQ0ge9PfwLL54qn8BLewibswoeMJvB9cBFYAje/DxMCS+CKXfgIh/Al44X++wAhsASueAov4S1swi58hNP73dgPLJN7jGbweAhP4SW8eezQDB678BHG+fadn1ga9/YbCv3xFjbhHNPyXDLZV/4THsKYc3pxAfB4C+f4lueJyzFyOUYux8jFe8R7xIsLgMdLWM6NI+fGEe8RF17c8z6w4cX9+3whDC/uj7ewCbvwEQ7h+54LG/kYtMJBnMRF3EQjOvEbN29BO57cCxzE+R50G95P7g3vJ/eG95N7w/vJveH95N7wfnJveD+5N7yf3BveT+4NH7QN2gZtg7ZB26Bt0DZom7RN2iZtk7ZJ26Rt0jZpywuA71OTyPV0D9EQ8gMCR0N4nCfG+zdLeAvniZEfEGCZXXGeGHkjHcvsii8ZDeExxt/JGMeSz/doXvznIN5GPMY3/y0e4wucxPVhSvLryB8a0YmHGMTb6D/iIE4ibU4bSj4/ssGCuYnjgdLOjz+wYK54CW/hHCdLAQvgZn5CgAVwxVN4CW9hE869nXdRHeX8OIQvGS/lj4fwFF7C8ObZgpfyxy58hOHNY4fr/OSDl/i8vjp4iX88hZfwFjZhFz7CIXzJQ7z5POG8v5OL6AoXcX+If2tEJ54Pc4PyaYkPb2M+LfHhIE7iIm6iEZ1I26QNNZ4XclglN/OzB6ySm9/ywsAqueIjHGS8iOcZfvBinSV58GL92IWPcAhfMq7c8x3GwZX74ym8hLewCbvwEYZ3Jl8yXugfD2F489jhhf4xfveryoOKfjyE83fzPvpBRT/+Dlu+OcsHpxU68TSiyi8YY+S88pFL+X4gF7IVOjHHyLnmww4f3sZ82GG+u8hVbIWTuIibaEQnHmIQb2GubSscxDx6eR8rUIsX/z2PUt4oxzq2x6jFx0MY40QyxrnJIXzJeJ/9eAhP4W9vr++vUiIfg9Zswi58hEP4kvOVthjekzyFl/AWhncmuzC8OzmEL3n/hIfwFF7CW9iEXVi8+YBhz83KBwwD8wHDD79jnlcGubatcBG/MywvKXJhW6ETDzGItzEfMPxwECdxEWlz2hx7L8/Ag72Ue/5gL+XZdZbwFjbhHCdvOWOl2so7x1ipVryEt7AJu3Du7bybi5VqxZecr8zFQ3gKL+EtjPnnmX9d+AiHMLzf0c9HrzXnjelIzI/3fomHGMTbiGeIAwdxEhdxE41IW77G5vvnXKhWeBvzNfZbVRj5ZZuFk/idKvkOP9exFRrRiYcYxNuYTyR+OIiTSNuiLZewZavAYrX86AOL1bLosFjt4SJu4qmPdPE8tTyb8Ty1h5O4iJtoxNy/N/EQg3gb81mHDwdxEhcxbbnX8Xx/oBMP8bNlXV08FzwRzwWfiYM4iYv42XCm5nMRHzrxEIN4G/Oj74eDOImLSFu+SOeFbD6RrfAQv3Mn17nkc9oe5ov0w+/cyUvqXM1WuIibaEQnHmIQ78Obq9gKB3ESc59ZYu6dk5h7Jz7MOn44iJNob83UzfVnubro5vKzh/NHHMRJXMRc97QSjejEQwzibcyFpw8HMed7ExdxE42Yttw7WbHArNjvs5ObX1OZD1C/+TWVhYcYxNuIxWXAQZzERdxE2vLF03KD8sXzYRC/I28533zxfDiI35H/bmbdXG1WuIlGdOIhBvE2nh9xEGk7tGVtztzVWYUrj3xW4cp/kFX4cBIXsdYc3/w6yVyde3MBWeEgTuIibmIuAM7TPv+I4+EhBvEW5rKxwkGcxLStxE00ohPTFolBzL+++Cpr4LngwEGcxPzri5m4iUZ04iEG8Tbibz2AgziJtOWraeRW5KvpQyd+5873VvDmsrLC25ivppGD5avpw0lcxE00ohMPMYi3cdO2acvX2J3zzTr+LhpuPgwtn8Z+c0XZw6zjh4OYI+Rxs/pbmpuLwwpvo/+IgziJ3/797l3fXBZWaEQnHmIQb2O+mj5MW56eeL4/cBE3MW25d7JiH+IqMTc5fsJDeAov4S2Mq+I0vatiMK6Kcz++q2IwvLl33lUxOL358jNwVfw4vfmigqetFad35rbgqvhxevPFYuCq+HF68yUAi8yK4bXkKQyvJ29heE+yC8MbySEM77eNWGRWnN7vs+WLp7AVpzdbKRafFac32yYWnxWnN7sPFp8Vf5Vy85/kNfXDQZzERdxEGHMv4d304yMMY+4BvJsG49304yE8hZfwFjZhFz7C4l3ixbvm7LpYgrZW7m28O84OiyVoxSF8yXmvq1jmbzJ/k/mbzN9k/ibzN5m/yfxN5u+y31y8Ll43biPeF2MbXeZ/ZP54v/x4Ci9hmf+R+R+Z/5H5H5n/kfmHzD9k/iHzD9lvId4QLzoGthGdAdt4Zf5X5o/O8NiE5bhfmf+V+V/OH89oKx7CU3gJb2ETduEjTO96HSCSd2/jGpz/Gi58hEOYxx3PZSvGcR/JU3h9z7BObT7h+KERnYixv36A1WYrX1tztdkZwE004jfG9/7q5nPXCoN4P8yB8xGoDwdxEhdxE43oxEMMIm1GGyp453xQqXkJgKerrXz1XKjUx5eMSn2McfLo5cfJy/II5GdLxSF8yajUx0M493a+VmM9WfEWNmEXPsIhfMmo1LzOwXqy4im8hOHNg4tKfQyvJR/hEL5kvOY/HsJTeAlvYRMWb35lfL585lK0wluYC9FOvo7mOrTCSfzOsHxhzkVohUZ04iEG8TbmV8Y/HMRJpG3Qhvr+/jjwYrXZ+j7rvVhttiz/Der48RLewjmO53bhdfi7j3vxLLXiKbyEt7AJ597+PgO+WF1WHMKXjLvaj4fwFF7C8ObBwuv2Yxc+wvBa8iXjddtzP+B1+3F6T/4uqv7k/vlet8/GfzaiEw8xiLcxv6Dg4SBO4iLS5rShY3x/p3Wx4Kw4hC8ZHePxEJ7CS3gLmzC8uf/RMR6H8CWjYzwewvj3ea6i0sGo9MdDeAovYcwzjxcqPRkLxdb3OejFQrHiLZz/Pt8CYqFY8RHO43cSb2MW68M8fpE4iYuYx88TjejEQwzibcyvH3g4iJO4iLRN2nDFne/IsURsfWspLpaIrch/g4p+vIVNGOPkdqFCI/c2KvTxEt7CJuzCube/T0QvnphWfMmo0MdDeAov4S0Mbx4svF4/PsIhDG8efbxeP4Y39xuurG/+e7yOP97CJuzCRziELxnV+ngIize/syDv6+VqsUIjfqdYvtblA9cKg/idYvmCnI9bKxzESVzETTSiEw8xiLRd2lDLN8+ofHXev6zNvO7evzyCed1dfJvxiLXilbySMc5OPsIhfMnjJzyEZ7InL+EtbMIufIRD+JInvDN5CE/hJQzvSTby93pt2Z6x3Gt/n8RcLPcqXsJb2IRd+AiH8CXvn7B4t3i3eLd4t3i3eLd4t3i3eE28Jl6DN5LTO/LUyGZQbMIufIRD+JKzGRQP4Sks3lwvlmd2fjdnoRO/1Wk35/41gsLb+LUBy2rPlWWFk7iIm2hEJx5iEG9j0Ba0BfZenoCBvZTFEdhLlnzJ9yc8hDFOjonizlt7WB5WfJuxPKx4CE/h3Nt5yw/Lw4pN2IWPcAhfMprBY3g9eQov4S0M70h2YXhXcghfMprB4yE8hZfwFjZhFxZv3n3PQ5ff4Pkw774//O7y5bHKR7AVLuJ3ly/fqOfKskInHmIQb2PefX84iJO4iLRt2tAT8iYslpPtvMGK5WQ7b6piOVnxFjZhjPNVGZaH7XzPh+VhxUt4C5uwC+fezhus+eS05kvOF/biITyFl/AWxvzzzD8ufIRDGN7cb/EThjf3Iar7sQlju3LfouofY7tyH6Lqwaj6xxg/53Cn8BLewibswkc4hG9zoEs8HsJTeAlvYRN24SMcwuId4h3iHeId4h3iRZfI23aBLvH4CIfwJaNLPP5eB/KdcLwGgP/swkc4hHPIfCeJtWo4hbFWrXgL5/h5JxBr1YqPcI6fd/2wVu39Li4THg9h8W7xbvFuE3bhIxzC4jVxoQ3kXUg8Z63YhbEtlhzCl4xLgMc5fr6/CrSNx0t4C8N7kjF+ng5oD2C0h8cYP48X2sPjJbyFTdiFj3B6814hnsX2GO3h8RCewkt4C5swxsxzAKWfV/lYpVa8hU3YhY8w5pz7HKWfjFVqxUN4Ci/hLWzC8HryEQ7hS0bpPx7Cs48dnsVWvIVNGMflq188cw377eLF//EUXsLYlpPMfXVR448veWH89OItwuMpjPFv8pbfNWEXFu8S7xIvav/xEJ7CS1i8W1yo67x4vLj8fzyEp3COmXf97rvMz220IxzCOX7e/cRj2IqHcI6fdzbvu8zP30WNPzZh8bp4XbzOC148nq14CE9h8R5xoa499xXqGoy6foxtyXMedf14CW/hHN/z3MblwOMjHMLw5v5H7XvODbX/eAtj/DzfUPuPj3AI3+Lveyd+GoaGVH83bb+wNGwNpsE1HA2h4UpAiX9/cvMFDLAQjobQcCWg5isMDdgEQ1gatgbT4BqOhtBwJaArfKsRvzA0TA1Lw9ZgGryO7ReOhtBwJaAnfNcwX9iyR/HKX8E1HA3YuJPBdCeiHVRYGuDBDHA1UME1wIOzyvQwmh5G18PoOgPXGbjOAC2jgmnQE8n1RHKdwVHp6VtfX9gaTINryKEDp3L0/a8vDA1TQ3q+PxX6wtZgGtITOD5xdIDQcCVcncHVGVydAVpJha3BNLgGncEVKR7xtmMhLA1bAzbOEFzD0RAa0hNZGPgy1A5Dw9SAGRwEeALhaAgN8OQ5isfCdRgapoalYWswDTmD+0M4GkLDlYCGUmFomBqWBgydp8vA9cLFjkdzqDA1LA1bg2nAJuCQoG1UCA1XAq4uKgwNU8PSgBngMKKhVHANR0NouBLQUN4BRkOpMDUsDThyOK/RKd4exRXGC2gbFYYGbBxOvqM7EW2jwtEAD2aAq44X0FAqwIOzKvQwhh7G0MMYOoPQGYTOAA2lwpVw9US6eiJdncFVKZb6vD16Q8NleOsAK3xD2++H0J92fcE0uIaTvzMQQsOVkG3DfhNhyABjalgadAZDZzB0Blg0UCE0XAlYT1BBZzBVmp3C8MKCdX4dQgM2LksGS/06DA1Tw8rgCFuDaXANmEGeynganf1wsPbQMDXAg+3ZW4NpcA1HQ2i4ErKh2MAZkg2lw9SwNGwNpsE1HAmOoXG6OAbAjnfT4BqOhtBwJRxsAg7JGRqmhqVhazANruFowAxwGM+VED8NQ8PUsDRsOcBhGlzD0YAjl30UywZrj96lYWswDdg4nHxXdiIWCXYYGuAJhKVha4DnIrgOcDSEBp3B0BkMncGYGpaGrcE06AyGStEpfCBMDUvD1pBDzx8C1ulMhCuBK5O+kJswMQDaRoWlITdhvt8xHcA1HA06g6Uz2DqDPTRMDUvD1qAz2CpFp5jYiegUFaYGbJwhbA2mwTXkGTIdITRcCf7TgBkcBHhwJqKhVHAN8OAcRUOpcCWgoVQYGqaGpSFnsHCGoKFUcA1HQ2i4EtBQKgwNGBqHJDAAdjyawwv3p2FomBqWBmwCDgnaRgXXcDSEhsuA5+R1GBowA0dYGrYG0+AajobgAcYD8yqgoVQYGnDkNoJzj2K9YofQcCVMbNxBkJ2IRYsdTAM8mAGuQyqEBnjyrMJSxxpgDQ1Tg85g6QyWzgDXIRWOhtAgJxIWPXZQKTrFxkTf3yK8cDSEhhx656n81i/aC0vD1pCbsAeCazgachM2jo9dGcB/GoYGnYHrDFxngKVSFVzD0RAadAZHpegUGzsRnaKCa8DGoWTQKSpcCegUFfIM2SgMXHpUWBq2BswApzIaysaZiIbyAhpKBXhwTNFQKiwNW4NpcA1HQ87g7So0FAQ8c6/D0DA1LA1bg2nA0Hm64PF5ZgthadgaTINrOBqwCYZwJaBtVBgapoalYWswDZiBIxwNoeFKQEOpMDRMHmAstuywNZgGHLnso3jeXu1RvJepMDUsDdi4g6A7Ee9YKlwJuA4xzADXIRWmBngugh5G08NoehhNZ2A6A9MZ4DqkwtCgJ5LrieQ6A1cpLj0cpyUuPXDViaWVHaaGpWFrMA2uAV0ZUqyHrnAlvL+heGFomBqWhq0BfxqEo4CGgitIQ0N5AQ2lwtCALcVoaCgVtgbT4BqOhtCAP4vKk8Lf30W9MDRMDUvD1mAaXMORgL+QxA7BAs63pVjB2WFp2BpkS7GKs8PREBquBPSdCkODbunULZ26pVO3dOqWTt3SGRp0Xy/d1++PJLFDlm4puksF13A06JYu3dKtW7p1S/fUsDRsDbqlW7d065Zu3dKtW2q6paZnlem+Nt3X7y8qsUNMt9RCg9QPlnt20C113VLXLXXdUtezyvWscj2rXLfUdUuPbunRLT26pUe39OhZdXRfH93X+egFvMjkus/mITyFP8fAW6R8wuDF5UQuCW0O4Zu/kJ3xfQ9vhaFhZsBOzic0vN/PRzQUm7C4r7ivuPEVnMn4Nt7iITyFl7AJR05uIVwJ7/s3X8AGGcLUsDRsDZbBEVzD0RAaMIN8Lcey0IEzGutCO2wN8GB78H0/FY6G0HAlvG/qfGFoyBngrcb7ot4KW4NpcA1HQ2i4EvDtP3jfgccPDrwQ4vmDHULDlYCvAKowNGATcEje93K+sDWYBtdwNISGKwHfEYL3A+9beitMDUvD1mAaXA4wvvivQmi4EvB9f2sjbNmj7ys8X3ANRwM2Didf6E5839f5wtIAD2bwvrLzBdcAD86q0MMYehivHsarM7g6g6szeN/v+YJp0BPp6ol0ZQZYX9phvQfPfLyFTdiFc1i8H8oVoxfVnytGm6dwzt0GwtZgGnLuuMLHV/fW74fwJU9xT3FPceOrPh9vYRN2YfFOcaEt4NL7fYdvha0BG/R+xzUcDaEhTwe8ncKy0g5Dw9SAGRwEeALhaAgN8OQJ+b7St8LQMDUsDVuDacgZ4L3I+2bfCqHhSkD3qDA0TA1LA4bGKYIv/sTlxvuK3wpTw9KwNZgGbAIOyfv+zxdCw5XwvgL0haFhalgaMAMcRnSPCq7haAgNVwK6xzvA6B4VpoalAUcOxfy+KRR79H1VaIb7viv0haEBG3cQZCe+LwCucDTAEwhXAi46KsBzEeQwvu8BrrA16AyGzmDoDN73iL5wJcyfhqFBZzBVike2/cAhfMl4atvjHPa88DUifI6T61CbXTjnfl4IDVcC+gWWjeGpi+/387GLxUtY3FvcW9x46tvjEL5kPPjtsXhNXGgLWM/1viu4QmjABmV9vK8LrjA0TA15OmCNHtaqdjANrgEzwHmL7oFFce97gytMDfDghET3qGAaXMPREBquBHQPLFZ73yBcYWpYGrYG0+AajgS0Baxce98kjDVg76uEK7iGoyE03A7jfZ9wrg4b7wuFK0wNS8PWYBpcw9GAGTjClYDuUWFomBqWht0HeLyvGq7gGo4GHLmd4X0j6URYGrYG04CNOwi6E9/3j74wNMCDGbyvIH1ha4DnIrgOcDSEBp3B1hlsncH7vtIXloatwTToDLZK8UxXHAQ81PXxEt7COWyuqBs/PMMV+w8PcQXjKa6Pc+7fH8h/YWpYGnLuFwcGj3N9v+/CR1jcLu4jbnx16eMpvIS3sHiPuNAWLvbY+9rSF6YGbBDq431z6QumwTXk6XCxc3FRUeFKwEVFBcwAc0P3uDjt0D0quAZ4cEKie1S4DO9LiisMDVPD0vDNIL+38wumwTUcDaHhSsCD2isMDRh6ImCAhXAl4AntFYaGqWFpwCYYgmlwDUdDaLgS3peavjA0YAaOsDRsDabBNRwNwQP8vtL4BXSPCkMDjtxGcNmj76tPXwgNV8L79tODoDvxfc/pC6YBHszgfdXpC6EBHpxVrofR9TC6HkbXGbjOwHUG73tRXzga9ERyPZGOzuCoFHc7B05L3O2scDSEBtzxxY7n89y/sDRsDbivi3MHa8kqHA24s4yT4j3AEgO8J1i+MDToDK7O4OoM8KCbCq7haAgNMoP3/MoKuGl9EEyDa8DGXYTQcCVgUUiFvG2eF/MDy1Y7LA1bQ87gYG74yCWv2gcWp1bARy4V4FkIU8PSsDWYBtdwNGAGG+FKwEe9FYaGqWFp2BpMA4bO0+UtTj3Y8fgspcLWYBpcw9GATcAhwUe9L+Cj3gpDw9SwNGwNpiFnEDiM+JSlQmi4EvApS4WhYcoBxqcsFbYG04BzNBvXW7b69ig+6q0wNSwNOXTg5Du6E7FCpMKVgBUiuHp9i1MrTA3pwQXeW5xaA+hhDD2MoTMInUHoDPBRb4WhQU+kqyfS1RlcleJLmvDKhGWrHYaGqQEbtxGyreM65H3VcoXQgPMgu+VbnFphaMBOdIQlA7xviXnBNOgMhs5g6Az4FTLfRcBPw9AwNegMpkrRKfDGBctWK6BTVMDG4XfQKSosDVtDniG4vsey1Q5HQ2jIGeBCHotTDRfyWJzaYWuAZyG4hqMhNFwJaCgVhgbMAGcIGkqFrcE0uIajITRcCegUuCZ/i1NxTf4Wp1YIDVcC2kaFoQGbgEOCtlFhazANruFoCA1XQjYUx/U1Fqd2mBqWhq3BNLgcYDSUCqHhSkAPwbvmt2z17VEsCqngGo6GyBnkyfcWp2InvsWpFZYGbMJEMA2u4WRYCKEDyGF8i1Mr6AyGzmDoDHAdUsE0uIajQWcwVTpxfDYCNs4QTINrOBpCw5WwfhrQq7B33jdPvbA0bA2mwTUcDSGBX/j8halhadgaTINrOBpCw5XAb37+gs7AdAamMzCdgekMTGdgOgPTGZjOwHUG76vkXpgaloatAUfbEdKDF8r3jdAvvG+dewFVjxPpTA1LA86qQDAdwDUcDTqDozMInQG+grLC1LA0bA06g1DpxQl7EYaGqSE3Du9LsLq1g2lwDVkyA+co+k6Fy4DVrR1yBvn3KgNrWPMhWF8wDa4BHkMIDVfC+GkYGqaGpQEzcATT4BqOhtBwJcyfhqEBQwcCBrgIVwK6S4WhYWpYGnIT8uOMgTWsHVzD0RAaroS8U9JhaMgZTBzG7DsdtgbT4BqOhpADvK8E+2kYGrDZPwSXPWpHQ2i4Ehwbh5PPdSf61mAasAmYgR8NoQE7EWfV0cN49DAePYxHZ3B0BkdncFzD0aAn0tETKXQGodL3hbU4pu8ba184GkIDNg6n8vt2WhzG9/W0L2wNOA8Ogms4GrATcXzel9TmAP6+pfaFoWFqWBq2BtPgGo6G0KAzGCpFp8g/iRpYttrBNeTG5Rq7gWWrHa4EdIoKeYYsePItT4elYWvIGeC1EYtTPde+DCxOrYCGUgEeQ5galoatwTS4hqMBM3CEKwENpcLQMDUsDVuDacDQebpg1akv7Hg0hwpbg2lwDUdDbsLGIUHbeAFto8LQMDUsDVuDacgZbBxGNJQKoeFKQEOpMDRMOcBoKBW2BtOAzc4+ii+/rj2KtzwVpoalARuHky90J0ZouBJwHbIxA1yHVJgasBNxVl09jFcP49XDeHUGV2dwZQZ4rmmHoWFqWBq2BteA45OnJValeq7RG1iV2mFqWBq2BtPgGrJX4c42VqV2uBJwD6XC0DA1LA1bw58nconYyEWpzZf8dZNmbGUg7O//2GATdmGc6th76BcVrgT0i1y6N/JZpfX7X7toXsLi3uLe4t5HOIQv2X7C4jVxoXvkYsCBJagdQkNu0NtR6B4VhoapIc+N50H3qGAaXANmgAOIHmE4IdEjKkwN8ODkQo+oYBpcw9EQGq4EtBLDKYFWUmFqWBq2BtPgGo4EdA/HKYIe4djx6BEVXMPREBouA1adei6gGnisaYepYWnYGkyDazgaMIONcCWglVQYGqaGpWHzAGPBagfXcDTgyOWrCL6t++1RfF13h63BNGDjDEF3Ii46KgwN8GAGuOiosDXAcxBcBzgaQoPOYOsMts4AFx0VloatwTToDLZKvz5hbx9+VyPNGDgQtgbT4BqOhtBwJaCd4BM7rEntMDXkDHD9joehdjANmMFFOBpCw/22DaduPhq9eAhP4SW8hU3YhY9wkPNp6HiNzfWqzdg67Gy0kAqmwTUcDaHhSsB1Cj4axHLVDlMDZoCzHz2ogmnADLA16EEVQsO3f/GCn4tam4fwFF7CW9iEXfgIBxn9BZ/AYS1rh6UB2/d+xzS4BmxfIIQG7OE8mbCWtcPQkDPAp5B46mqHrcE0uIajITTkDPDxIh7K2mFomBqWhq3h2894s58LX/H8lJHrXvEUj5HLXpuH8BRewlvYhL/jOLCHv+uY5hC+ZEsv5pn9qXgKL+EtbMIufISDjP6Dj1mx+LXD0oB9txBMg2vA0dsIoQFHDzscFzoVhgbMAPsNFzoVtgbT4BqOhtCAGWAX40KnwtAwNSwNW8PfDLY9jo+xo75OlA8C/laN/ISH8BRewlvYhP82cOM1O9fMNofwLZ65YDYf/vvxEJ7CS3gLm7ALH+EgD54/E6thOywNPH8mVsN2cA08fyYe/9qB58/E4187DA08f+ZvLg1bg2lwDUdDaOD5M3/rp2FomBqWhq2hz5+Za2Zx/sxcMovjPnPFbPMQnsJLeAubsPPc2Ec4hOX8MTl/TM4fk/PH5PwxOX9Mzh+T88fk/DE5f17/CYSpYWnYGnD0sHGv/7xwNISGb/s2+Gs/zUN4Ci/hLWzCLnzIaC4XBxTNpcLUsDRsDaYhN/DiJMQlUIXQcCXgEuji9MIlUIWpATPAXsUlUAXT8M3g/HBy5CXQyU+nJ5bdnh8mmm/DXsCy2w5Dw9SwNGCAPDGwarYDBtgIUwMGMIS/TVj5Aj9zbW2zCx/hEL7kCYMjWIaDkCNBPY9wCOdImPjXJ5qH8BRewlsY4kBwDTgGFyE0XAn5Tunkpy0zn+660I2xSrZ22j4aQsOVkB/qnIEdlB/qdJga9Hjk+6YOpkFnYDoDx9DYBT41LA059MBRyYbQwTUcDaHhSsgLkjOxCXlB0mFqWBpyBhN7NC9IOriGnMHEqZEXJGc+6ZUQPw1Dw9SwNGwNpsE1YAY4dSI0YAY4W+5Pw9AwNeQMFjYue0YH0+AajobQcBnwdNgOOYP8eGTie+I74DzYCJjBC6bBNRwNIQF9Jj8EmVhz22FqwGY7wtZgGiANhKMB0otwJcyfhpxB/vn+xGrcDkvD1mAaXMPRkDPIzzAmVuNWyKuZDkPD1LA0YB8chMOGia+Kf/0AS3Mr7J+GoWFqWBq2BmPrn6+LvXA0hAZ0MUwUXazC0DA1LA1bg2lwDUeCY4/iVEZLqzA1LA1bA44pTj60tApHQ2i4EtDSKmAGOMXQ0iosDVtDzsBw7qClVTgacgaG44OW9gJaWoWcAS76sLY3v2nzCzkDw0TR0iqYBtdwNISEr3FNnIdf2ypcxE00ohdiBe6xF46G0PC3qejquf62cBAncRE3EWPnCYMVtCdvj89cQYv2lOtnCxfxu0xYQCM68RCDeBtR8niDgGW1HfLg4K0AltV22Bpy9nkXdeLJrif/cnviya4dvvk/xFjwo6wrmAbXcDRE77vNvW/c+8a9b9z7xr2Pgn273K7schSs45+hYCtgfxjC0oBtwPnwFezGPL9yLTzEIN7GfC/yEGNjcig4x+Ty5ur7R0G8jfn1k9jLecP14SQu4iYaET6cAiivCnnWHxx1XDG8gCuGCjn7g/MBr/4HQ+PVv0Le8wJe7j48kbXD0DA1wLIQtgbT4DxMWPTaITToDIbOYOgMhs5g6AyGzmDoDIbOYOgMhs5g6AymzmDqDKbOABcCFXbVF1bGvlrBytgOR0NouBLwWn0wM5R0haHhK60ALuImGtGJhxjE25iF/HAQaTPajDajzWjDq3He1p5YoNrhSkDZ583riQWqHXKX4w0TFqh22BpMg2s4GkLDlYDX6QpDg87g6AyOzuDoDNA28AYSS1c7hIYrAa/TFYYGzGAjLA1bw/cSNIBOPMQg3savfRRibJxfaB6464YVqgc3zbBCtcNlwArVDtiGizA1LA1bg2n4zqOH6c8/C5lYudrhSkDzwB0brFztMDWkP//aYmLlaof0559QT6xc7XA0fHsSM8sbFsCvcRQO4iQuIsZ2BGwDdhsuCXDPB0tXO0wNS8O3DYFbQ1i62sE1HA2h4XspxM7J250PB/G7KTeAi7iJRnTiIcL3wpWQ7wY6LA2YPaZgR8P3Mo65f53k4ddHCkf+axzW7CIdlgbsORwHNw1w46D40YAtwa53bAmOanaRwK0erFcNvGXCetUOS0N6BjYrO0Lg5grWngbeYeMxqzFw/gVGw0QDo2FueQEREzPIC4gOISFvLARuoWC5aeBGCZabxsD2XNeA0TC3i9Ewt+wBL2C5aYehIWedn/ZNLDftsDWYBtdwNISGK2HA4wgY7SDgn+WRw9LRQIPB0tEOU8PS4BpytFz+N7FAtEOOhq6KZaCBqwMs6Qxc/WNJZ4ehIWeAtxlY0tlhazDx5BV7/z9HQ2i4ElB6b+/Y0DA1LA26D1CUb7MtNOjeQQHifMP6zsAdHazvDNy3wfrODq7haAgNVwIKsAL2KGaNAqywNGAGOCkOZoCNQ2mioWCxZ6CZ5dfPV8k4ivYFFG2F9OwXtgbTkKPh/QeWdMbG8bm5FgS4iBjpBYyETUbBVjgaQkPOONcuTCzn7DA0TA1Lw9ZgGlwDPLlrsYIzcFsDSzMDNy+wADPwfgQLMDsMDVPD+r5RHbiJRnTiIQbxNuI75IGDOIm0LdoWbYu2RduibdG2adu0bdo2bZu2TdumLVcpYJ/mIoWHk7iIm2hEJx5iEG+j0+a0OW1Om9PmtDltTpvT5rQd2g5th7ZDG8oTb8SxtLLDlYDyxN0GLK3EktSJpZXxRkN54h4LHtsZuJOSayZxSyIf2lm4iJtoRCceYhBvIVZIBt4NYh1k1P/zN8p5//0Qg3gbv2vhwkGcxEXcRPgMwTUcCahSvPvFQsfALRMsdAzcMsFCxw6u4WgIDVcCXlYrDA1Tw9KgM1g6g6UzwNUwbq9gCWSHKwEv0hWGhqlhadgaTINr0BlsncHWGZjOwHQGpjPAizRu/WCtZAfT4BqOhpCA62fcLsK6x3hnyFfMBwf+K+bCQ/zOR5wmXzE//Iq5cBAncRExxxdyX7yxUb8VhobcF7ihgHWNHbYG0+AajobQcCWgG1QYGnQGV2eAF2zc0sC6xg6uIWeAT7+xrrFDzgB3F/C0zsDNATytM/CeHU/r7LA05AzwzhzP8eyQM8CaDjzHM/D+Oxc41q/fxvEjDuIkLmKOjTfnWLsY+TSHibWLcbENeJWvMDXkNuDNOdYudjANruFIQP/A23asQwy86cY6xMCbbnxDfAfXcDSEhisBXaLC0DA1YAbY2egSFUwDZoDDgC5RITRcCdklLt7P41vlO0wN39F5v7GJRvz+3APT+LpDYRBv43c5UDiI8OFA58V+h63BNISEg9njbD9TA0bDyXG2BtPg34NJgYcYxNuY3x3wcBAncRE30Yi0BW1BW9B2abu0XdoubZe2S9ul7dJ2actecfP+xsJTOzsMDdivjrA0bA3Yr4HgGr7z8uZdjIWndna4EvKeXIehIWeQdz4W1il2yBnkbZCFdYp3YNbZUW7eBllYp9ghNGAG2IT50zA0fPsdv5EPD3+4iUZ04mlcGPsgYBuwexa24SKYBtdwNOQ2TOye7C8Vsr90GBqmhm8rsG3ZXe7EPszucifmnN2lQ/onNiB7yO9x/oUbjgceOvH++xEO4Zxuvt9f+Er5DkPD1LA0bA2mwTUcDaFBZ3B0BkdncHQGaCgLew8NpYJpcA1HQ0jA4yewz/D0icdTGH85CN7CJgzd+4WjITRcCfenYWjABqOA7tKADcY5ck2Da8hDjtM6L0uKbzNWGhYP4Sm8hLewCbvwEQ5h8Q7xDvEO8Q7xDvEO8Q7xDvGireTNqoXngVZAW6mAHe4IU8PSsDVghx8E7HBI8Y1JAxzCl4zOk3eqFh4G2mFqWBq2BtPgGo6G0HAlbJ3B1hlsnQG+SPYH3sIm7MJHOIQvGd+g9Pgz40wd7/uTwEs4N3y/XzANruFoyA3f2Nvobi+gu1VYGjAapOhUeSdvYdVjhysBnaoCRsMJgq6zcYKg61QIDVdC/DQMDXlQNg5KLA1bg2lwDUdDaLgS0Ig26gKNqMLUsDTkDAw7Ho2oQs7AsHuzEXUIDd8MsNuwgLF4CE/hJbyFYcjGiUWJN+8cLSxKvHmzaGFRYoelYWvAlmBoXLpUOBpCw5WAHpM3pRYWJXaYGpaGrcE05Awc25M9pkNouBLQZhzbgzZTYWrIGThmjTaT94MWHhHaATMIhKMBM8BE0WZeQJupMDRMDUvD1mAaXMPRoDPYOgPTGZjOwHQGpjMwnYHpDExnYDoD0xmYzsB1Bq4zcJ2B6wxcZ+A6A9cZuM7AdQauMzg6g6MzODqDozM4OoOjMzg6g6MzODqDozNAZ8t1TgsLGTtMDUsD3sqATdiFj3AIXzJ62uMhPIVz/Lx99hdyoIM+gndkCHgc6c17aQuPI+0wNSwNW4NpcA3wZEXioaNv3+Gho2+n4KGjHUyDa8j9kjfhFh462uFKQIuqICcGHjraYWnYGkyDazgaQuaGFvXC+mkYGqbMDS2qwtagM1g6g6Uz0Ba1tEUtbVFLWxSeWlrT2XoUth6FrUcBLerNbetR2HoUtEUtbVFLW9TSFrW0RS1tUUtb1NIWhaeW1txMj4LpUXA9Cq5HAS0qb9MuLN3sgH1wEEyDazgacgbxhr4S0KIqDA1Tw9KwNZiGnEHef1147GkHLTN0pUBtoytVmBqWBj350JYq6KEPPfShhz60AK8W4NVDf/XQXz30Vw/91UN/9dBfPf2vnv5XTj6sDb15Q3phbWiHrQG7dyNg9xrC0RAargRcj1UYGqaGpWFrgMcRQsOVgJZWAZ6DMDUsDVsDrrqw2WhpFY6G0HAlrJ+GoWFqwLU6JorGVeFoCA3Y0rzqwjNQ3xsEPAO1w9aAI4ejjfZU4WhID14O8QzUGsB+GoYGnYHpDExn8N6zveAajobQoDNwlaLv4D0b1o52cA05dN5WXVg72iGHvjiV0XcqDA25cbhViLWjHbaGnMHF3NB3KhwNoQEzwGFEE6owNEwNmAEO1tdqvj9SRzgaQsPNgB3ytRqGoWFqWBq2BtOAGWCP3qMhNFyGXGHKMDRMDUsDhs5DkktEv7+vRxgapoalYWswDdiEg3A0hIYrYf40DA1Tw9KAGQSCaXANR0NouBLWjwc4l5gyTA1LA85RRwjZo+tK2D8NQwOGvgi6E7drOBrSMzCDXKNeIVepd0gPPlUw08NoehhND6PpDExnYDoDCw1XguuJ5Hoiuc7AVZoN5R3S7CfFl4wvq8O24LvqHk/h3Cx8WJIPPGUwDa7haAgN2LH5kpKLThmGhpwADub7klzwFjZhFz7CIXzJ79txwUNYvFe8V7xXvFe8V7xXvJde//2Eh/AUXsLY3y+YBteAD1YWQmjABzu58x3XNBWGBnywcxCWBszAEUwDZvD+2dEQGnLzwfhGzMdDeAov4S0MQ3YVR1fBJ1mOrpKrjZejq1RYGraG3JK39cs1HA2h4UpA88FnKI7mU2FqWBq2BtOQM8BNZkdbqhAargS0Jdyhd7SlClNDzgD3ph1tCZ8JONpSBcwA+xptqQJmgB2PtvQC2lKFoWFqWBq2BtPgGo4GnYHrDI7O4OgMjs7g6AyOzuDoDI7O4OgMjs7g6AxCZxA6g9AZhM4gdAahMwidQegMQmcQOoOrM7g6g6szuDqDqzO4OgNcKOHjFMeFUoXQcBkOLpRwIXtwoVRhalgatgbT4BqOhpCA66lc1bwOuhQ+CznoUhUw2kY4GkLDlYCrpgpDw9QAjyHI8TlT9w56VYWhYWrA3nGErcE0uAY5Q87SGSw5Q87+aRgapoalYWswmeh2DUdDaNB9gF6Fd0QHvaoC9ig86FUVtgbTkDPApzEHvapCaLgS0KsqDA1Tw9KQM8AHNAe9qsKRQ4/2hLfJB+3pBbSnCkPDlMN49NAfPfRHD/3RQ4/2VCE06KHX9nS0PR1tT0fb09H2dLQ9HW1PR9vTQRPCR1EHTajC1IDdi/2GJoRPnw6aUAXXcDSEhssQaEIVhoapAZ6D4BqOhtAAT25p4E1dhaFhasBl80XYGkyDazgaQsOVMH8ahoZdS3JyNXShE/NNwQ8cwpeMfoWP8QL9qsLUsDRsDabhk2M3ft2qMIi5aQ43OlWFoeG7RMwldwvrn4u3sAm78BEO4UvGcqTHQ1i8Jl4Tr4nXxGviNfGaeF28Ll4XL5pS/hHGCjSlCqYhzyV/v3M05LmEj08DHeoFdKgK6ceZkm8Bi5fwFjZhF4YhqzzQZ/BpbaDP4APaQJ+pYBpcA7YEpxMugypcCehAFYaGnAE+IAh0oApbQ67Qwa7M93XFRzhXBr1/f5uxTLp4CE/hJbyFTdiFj3AIixfNCJ8DXjQjfFZw0YwqLA1bg2lwDUdDaLgS0Iwq6AymzmDqDKbOYOoMps5g6gymzgDXV/gY4qJfVRgapoalYWvADCaCazgaMANHuBLQtSosDbnWCJPGWqPHIXzJWGv0eAhP4SWM7TgIuR34SOniGqnC0RAargRcI1UYGqaGpWFr0Bm4zsB1Bq4zQDvCx10X7ajC0DA1LA1bA45lILiGoyHvz1zwJb8vSQcP4Sm8hOHGwUALq+AasPU43dDCKlwJaGEVhoapAVuPsxItrIJpwAxwIuIiqkJowAy+U2j/cKmU/8/OFdi55HDn+uvC/OX804r9w5XRC2hGFYaGqWFpyOlfDI1mVME1HA2YASaJZvQCmlEFzAAbhmZUYWnADALBNLiGowEzuAjfDMYP25MtZ+SHATvXaDNsDabBMyyEk2EjRAZsz4IHs86W02FomBowA8x6bw2mwTXkDPJ2986HxH7P38yQ7+LGwETzXdwYOCT5Lm4MDJDv4jpsDabBNRwNoQEzwL72nwY9WV9TemFrMA2u4WhI6cRhzKZUIZtSh9zsiR2STanD0rA1mAbXcDSEhishfhp0BqEzCMwAhyS2BtPgGo6G0IAZYF/fn4ahYWrIGSycO9maOpiGnMHCrLM1YfHsziXfDDmDfKnbueibIWeAjpTLvhmWhq3BNLiGoyE0XAnjp0FnMHQGQ2cwdAZDZzB0BkNnMHQGQ2cwdQZTZzB1BlNnMHUGU2cwdQZTZzB1BlNnsHQGS2ewdAZLZ7B0BktnsHQGS2ewdAZLZ7B1BltnsHUGW2ewdQZbZ7B1Buh8eUN853JwhisBbbDCd5WQb8A2VoQXL+EtbMIufIRD+JIdG3gQ0NZewGYEwtEQGq4EtLUKQ8PUgN11EfSwHN0poTsFLarC1JCHJVe974EWVcE0uAY9MUJnEHpiXD0xrp4YV0+MqyfGa1GY22tRL7gGPTHQot7c0KIQJlpUBZnB1BY1tUVNbVFTW9TUFjW1Rc2fnJrzJ0dhjp+GoWHK3MbSsDXoDLRFTW1RU1vU1BY1tUVNbVFzynkwX4t6YWswDXIeTLSoCqFBZ6AtamqLmtqipraoqS1qaoua2qLmkvNgLj0KS4/C1qOw9SigReUnGHuiRVXAUZgIpsE1HA3YB5gbWtQLaFEVhoapYWnYGkwDZoBNwJVaha9TGf6VDzaKiVaV9/h3LhVn2BpMgx5s14PterBdS+5oyaGJVdAT/ujBPnqwjx7sowf76AmvjW8ePd1CT7fQ0+21t0AwDa4BW4r9hvZmmDXa2wtobxWGhqlhadgaTINr4M2MvX4/DUPD1LA0bA3wTATXcDRgSxfClYAmVgFbuhGmhqVhazANruFoCA1XAppYBZ3B1BlMncHUGUydwdQZTJ3B1BlMncHSGSydAZoYam6hieXHFHuhiVUwDa7haAgNVwKaWIWhYWrQGeTNeDQnLDMvduHvQmfj4OZtsOJLzttgaIxYYF48hZfwFjZhFz7CIXzJLl4XL3pWfrKzFzpTfiyxFzqTv392JaAzVRgacjTHpqLLOI4tukyFKwFdpsLQMDXk0XAUIvpPBdPgGo6G0HAloP9UwAxwRNF/KiwNWwNmgDMF/adC3hl9I4fwbcbTgouHMOSBkPK8n783rqwqmAbXgBsu4Nz6vN+7N3rSC+hJFYaGqWFp2BpMg2s4GnQG6Dxv29Ar8q9v9kaveAG9okKetviVXL9dvIS3sAm78BEO4UvOP0UpFu8W7xbvFu8W7xbvFu8W7xavidfEa+I18Zp4TbwmXlzW5OcLe+MGVIV8BwZ+3yoNHsJTGEfaEDASzlU8BRj/Bx4C/HgIfyO9f/8eDw7ewt82vNnh8b+Pj3AIXzIe/ft4CE/hJbyFxRviRZ/ITyE2VmePfMrQxursEagudIMKpsE15Gh5E3tjpfXIP+rYWGndYWswDa7haMijkbfRt6G+X0B9VxgapoalYWswDZjBQDgaQsOVgGsO3IzEUu0OGCAQQsOVgDaQfx6xsdK6A3okeAlvYRNOR/5txcbC6oHb9VhYPR8v4S38jYQ7klhuXXyEP8N8gkvO9y3FQ3gKL+EtbMIufITFa+LF25WLyaGA888qtuFNCT55MLz0VwgNVwLeeuDzBaySHvjgAKukOxwNoeFKwEt/BewUzDqmhqVhazANruFoCA2YAc4HvPRXGBqmBswAZ8HdGjCDLMJcA/19cQ/C0DA1LA1bg2lwDUdDaLgShs4gix3vWnMZdPMS/vR4K4k10MUu/LlxzwwLoIsvOWu8eAhP4SW8hU3YhcU7xbuwZx0B++/9P9h/2LTlGo6GkJBdYOafBGx/1T4RTINrOBpCw5WAms+V7BvrmDtMDUvD1mAaXMPRgBngaKH4X/CfhqEBM8CZ4ksDZnAQTINrOBowA+xRvxLOT8PQMDUsDVuDaXANR4POILsMroKxjLl4CH/6g8OeHaZ4C39ux5jZXoqPcAhfcraW4iE8hZfwFhbvFW9eQLzOjhXI72UHK5Bn/mnExgrkDqbBNWC0POr5XOHvC7cQloatwTS4hqMhj0Y+/GdjBXKFbBQdhoapYWnYGkwDZrARjobQcCUszOAiDA3pyb8u2FhnPPF5HdYZdxgapoalYWswDa7haAgNOgN8MxC2Gl8N9HgKf3rcbsMa42ITzsZ+wEc4hC85O0jxEJ7CS3gLm7B4XbzoD/jwE8uFJ97/YrnwXO+fmQbXcCQERsOm4roBL2JY+tvBNLiGoyE05NHArR4sCu4wNEwNS8PWYBpcA7YHR/SGhsuARcEdMIOFMDVgBoawNZgG14B9cBBCw5WAa40KQ8PUsDRsDabBNegMspccbGi2ksfZSYqzsV/wFF7C2dgxZjaRYhc+wiF8ydk/iofwFF7C4l3ixVUIShcrgifuWgd6Si7V34GeUmFrMA05Gm4tB641cFs1cK1RYWnYGkyDa8ijkavMd+Bao8KVgGuNCkPD1LA0bA2YwURwDUdDaMAMsEfRSyrAg2P//2t7t11ZdtxM913q2hehI8V+lYZhVLtrbxRQKBtlu4GNht99R+oPSf/IsZLJkaFxs5a+OWdS1ImhA0XBlgwoDJVBGBpDzwdbow1WZkAvKTZA4RI8oWuAPUK4BE/oGmCfFC7BE7oG2G+BS/AEaIAhCvszABqgEmF/BkADVAjszwBogM4H+zMAGqDYsD8DugaYPinsz4CuASZNCvszoGuAXT+F/RnQNcDensL+DOgaYAdGYX8GQINebHgIT4AGFRAZ+hwLkrv5GelC6UppoXSjNPLu1Qff4AmBoeeNDR/4Bk/IDIWhMghDY1ACzGIGBAbWILEGWBFhVwZ+vhGbUfDzjdhLUtiiAZEhMWQGLk/m8mQuT+byZC5P4fIULk/h8hQuT+EaLaxBYQ1gpa5iwxZdxa5cnsrlgS0aUBmEgctTuTzC5REuj3B5hMsjXB7h8giXR7hGhTUQ1gC26Co2LM5V7MblaVweWJwBSqDcQ5TLo1we5fIol0e5PMrlUS6Pcnl0laccx8EQGCJDmcUucOlFsQtcelGEApfeCYEhMiSGzIB8MqAyPMpz5dktyEjrSncDMtLIowAgqQIekvT6V43SutLdECh06nZgpCOlHzkoqqRPR0a6ULpSWijdKK0r3U3GSAdKR0pTvpnyvWyCdLhGvgJ6SyiaEiN/QGLIDF3aVR2YhVzlxixkQGRIDJmhMPTWUDQNRv6AxqAEGPkDAkNkSAzQALWDkT+gMggDNEBPwci/APOTvq9a4FQ7ITIkhsxQGCqDMDQGJVDWoFsLRft2YzHSidJn9ulAez4sxUxXSvdeeclslNaZhi/tSAdKR0onSmdKF0pXSgulV75wlL0KAHfY1HeFC9xhU3eCL3CHnSAMjQC7pt09vsC1NfV93ALX1gmVQRgagxJ0E5G643yBa+uEyJAYMkNhqAzCAA0SQAnywRAYoAFqNCeGrkFA7fT5xYSuQbgEdA0C6u0xv0gBjfCYXoz0w8bMdKB0pHSidKZ0oXSltFCa8i2Ub7dGqR8+nRAYIkNiyAyFoTIIQ2NQAoEGaCAJDJEhMWSGQtDtR4ooXLcfEzJDYagMwtC1jmjUbj8GKH6DFlZhaAz4Te/l8FGdEBh6KzekE6UzpXsrK9KV0kLp3sqCtK50OCgdKB0pnSidKV0oXSktlKZ8A+WLw5W+5VrgXZoiSgMrEaE2rMSAxqAEsAV997PAUzT1ewwFnqIThKExKAFG/IDeGn2Tr8BTdEJiyAyFoTIIQ2OABv1zAU/RCYEhMkAD9JSSGaABarSvKFK+fiMMjUEJMPoHBIbIkBgyQ2FgDR6jf9TuY/DPtK70Y+invn1cugPpTEdKP7rl1eaPYT/ThdKV0kLpRmld6XZQOlA6UprybZQv7EMGKOoPmirqDw2tkSExZAZI6wME7p+pbyoWuH9OiAyJITMUBrSGAoShMShBOBgCQ2RIDNCgAApDZRCGrkHfTCxw/xyA0X9VCEb/BZgjDAgMXbe+zVjgfDnqAHZhgDBAgwhQAtiFAT2fvmlZ4Hw5BGRuhcytkFmDzBpk1gB2YYASFO4HhftBYQ0KZ4oB3/dDS8KAH6AEGPAF9YYBPyAyJIaeT0E+GPADKoMwQINumeCBmQq6Cz7qAxJDz6eiH+CjPqAyCENjUIK+xJjQNajoIZgiDEgMmaEwVAZhaAQY9RXdRSEAFY/5wgBhaAy6IMMeDEARKiAyJIbMUBgqgzA0BmjQmxGulxMCQ2RIDJmhrAaG6+UEYWgE8NToXtYlwyUDNZqx6BhQGCoDCtc7Hzw0RyXCbAyIDMgHGmBpMaAw9Hz6pnLJSVhAY+BmzKxBZg0yawCDMiAzFIbKwBpkzrTQXClfM4gLMkNhQOEuoLlSrgdDYOj5yAWJITP0fATtUysLEIbGwBoIayCsAQzKgMSQGQoDayCcKSyFoBJhKQYkBhQOQwaWYkBlEIaej2BgYDFxAaYRAwIDNEBXhkER9EQYlAHCAE8k9FEYFACi6k4IDJEhMWQGOEIFQGUQhsagBDAoAwJDZIDoBICAXvHlcuO6IDBEhsSQGVCECqgMwtAYlAAGZUBgiAzQQACZoTBUBmFoDLoaGMF3JwSGyIA+WgBCNYqpxwAlwNRjAArXAFyJMBsDKgPygQaYhwxQAhgUbI8iqu4QULkZKzdjZQ0qa1BZAxiUAY2BO5JwRxLWQDhTWIrjAmFoDEqAqQc2QeEbeu1zwTd0QmHo+WCLGL6hExpDzwd7v/ANHQJgNgZEBtZAWQNlDbQyCENjoH07+JNOiAxddHfkLXAUnSAMKFwFKAEsxYDAAE9RASSGzFAYoEEDIJ/eEy+/0AGBoTsQYWsXrqETMkNhqAzC0Bi6/xL2YhFQd0JgiAyJITMUhkqQIToBIAAVnzNDYagMwtAYUAQ0CXy/BgSGyJAYMkNhqAzQAM0IH7ABSgAvsAGBITIkamAYlAGFoTKgj6JfS6AalciQGDIDCofOJ1yJogTtYEA+0KBFhsTQ8wnoVY2bsXEzNm7Gxho01kBZAw0MkYE7knJHUtZAKVPEqb2OwBCndkJkSAwoXADgXCcBGoMSdLORsQ2POLUTIkMvQrh+k1lAYagMrEFgDQJrEA+GwBAZEgNrEDlTWAocHsAxdEJgQOEqIDFkhsLQewh2ahHOdkJjUAIYFOxIw5k0Y+sZzqQTCkPPp/sEFziTTmgMSgCDMiAwRIauATbrL4fSAYWhMghDY1ACGJQBEI0mgXNoRMXXxqAEcjAEhsiAIqBJYDYGFIbKIAyNQQlgUAZAAzQjDMqAxJAZCkNlEGpgGJQBSgCDMgB9tAAK1ahWBmFoDChc73xwIr0qEU6kEzID8lFAZRCGng823OFEOgSEgyEwsAaBNQisAS6tDKgMwtAYWIPImWLqgQU7nEQzVq7wEp0gDI1BCWBQBgQG+JhUQGLIDIWhMghDY1CCvHyACjxJMzb+4Uk6oTBUBpQUtQODMkAJYFAGBIbIkBhQUlRIKQyVQRgagxLA72NAYIgM5B0EH9NRUtidAY1BCYRLKlxS4ZIKlxR2Z0BhqAxcUuGSCpe0cUkbl7RxSeHdMYDrunFdXx5fqJDGJYV1GRAYIgOXVLmkyiVVLqlyr1LuVUq96vIxhaKXj+mAyJAYMkNhqAzCQHV9eZKiQuBJepUUnqQTMkNhoJLCm3RCY+CSxoMhMEQGLmnkkkYuaeSSRi5p5JJG6lXDn/QCrmtYJBzSIKLshMogDChp/xhd/qQ4Irn8SQckBtRoBRSGyoAaFUBjAUoAr7IBrEFhDQprQP7wRckfvij5wxe9/OEvYA0qZ4pbMTg+hnPphMLQC4djXTiXTmgMSgAjhFNSOJdOiAyJoWuQ0aaY4uBkFS6kE5QAUxwcpiqmOAMiQ2LIDIWhMkAD9BBMcQYoAYzQgMAQGRJDZoDoR3ep8BrN/cpFhdfohMSQGQpDZehF6CerFZ6mE5QAU5wBgSEyJIbM0DXoB7AVnqYThKExKAGsy4AwG7gieOyExJAZMAAVoFSjmOIMCAyRAYWLAK5ErIwGNAYUARpgZTQgMKASM4CbMXMzZm7GzBpk1iCzBpjiXIApzgDuSIU7UmENCmcKS3FVIuYuF9SDITCgcAWwbq3VyzN1gDCgH1SAEsBsDEAlon3gmXoJkMSQGVgDYQ2ENZDGoASYuwwIDKxB40xhKQoqEZZigBLAUlT8BpZiQGRIDL2HVAwMTFcGVAZh6Br0izwVLqa5H4xW+JhOSAzIJwMKQ2UQhsagBDAoA6BBAUSGxJAZCkNlEIZGAEvRz50rPFJzPwKu8EidIAyNQQlgNgbgWukBiAyJITMUhsogDI0B11p7M8IjdUJgiAyJITMUamAYlAHC0AhgQ/pBfA2wFFeNYndlQGGoDCgcOl/lSsSm7IDIgCJAg+t67gWFAZWIXlW5GSs3Y+VmFNZAWANhDTAPGZAZuCMJdyRhDYQzhaWI6JZY5QzIDIUBhbsAt8G7GURs1QmBAf3ggsSQGVCJaB+tLEAYGgNpAL/VCYEhMiSGzFAYKgNliqCpuR92VwRNnZAYeuH6iXRF0NQJlUEYeg/pa6aKoKkDMPUYEBi6Bn2NUeG8mvvBaIXz6gRhQD4ZoAQwKAMCQ2RIDJkBGhRAZRCGxqAEMCgDAkNkgGgBQAAq/rrhf0FgiAyJITP0IiiaBGZjgDA0BiWAQRkQGCIDwgygGWFQBhSGyiAMjUGpgWFQBgSGyIABqAChGsVaZoASYC0zAIVD52tciVixDKgMKAI0wDxkgBJgHqLoVcrNqNyMys2orIGyBsoaYB4yoDFQR4Kj64TAkBi6pejnPxUerBMagxJg6tEP6yr8VBHrpsJPdUJhQD+oAGFoDKjE3j4IUzoE4JRnQGRgDSJrEFkD7IcMEIbGoASJNUicKSyFohJhKQYIw0N06SfSFS6wA7qlmBAYYgfUdZ96TMgMhaF2gG4Z+fSeCEfXCYEB+WRAYsgMhaEyCENjgAboIfVgCAyRITFkhsJQCQSi0V0EAlDxkhkKQ2UQhsbQixDQJN1sTAgMkSExZIbCUBm6BtfI6gZlghLowRAYIkOiBtbMUBgqAwZgt6Nwgb1qFC6wExJDZkDhIoAqEY6uA8LBgCIkQGRIDKjEDCgsoDIIA2sQWIPIGsTAEBkSQ2ZgDSJniuiEMFxwgZ0QGRIDClcA8qcRBq/mK0LhBUoAs9FPlyscXSdEBlQi8kHs9SGgMFQG1iCzBpk1QOz1AYEhMiQG1qBwprAUAQBLMSAw9ML1E+kKF9gJmaEw9B7ST5crXGAnNAYlgEGJ6MowKBE9EQZlQGFAPuijMCgDGoMSwKAMCAyRARqgh8CgDCgMlUEYGoMSwKAMgGh0F4UAVLw2Bl0AR9cJgSEy9CL0U98KR9cJhaEyCENjUAIYlAFdg35oW+HoOiExZIbCUBlkNTCCmk5QAhiUARiACiirRuECO0EYGgMK1zsfHF1HJabEkBlQBGiQKoMwoBIzgJsxczNmbsbMGmTWILMGmIcMqAzC0BhYg8KZYurRz4wqXGBLP/KpcIGdIAyNQQlgUAYEBtgqtDYecBiQGQpDZRCGxqAEgp6IwsGgDMgMhaEyCENjUAIYlAGBgTVorEFjDRpr0FiDxho01qCxBsoaKGuAKKpY5JcrZPIFmaEwQAMMpitkcu/K8IedEBh6SbFhjPiqEzJDL2k/EKuVginXSsGUa72CKV/AGgTWILAGVzDlCxJDZigMrEHgTDFD6Yd1FZ6yExIDCpcBhaEyCENvxn46VuEpO6BPZCYEBmhQAchHAJVBGJBPAygB7M6AwBAZEkNmgAYKqAzC0BiUACujAYEhMnTRODeDP2zBERb8YScEhsiQGDJDLwJOreAPO0EYGoMSYLoyIDBEBmiAZoTdGVAYKoMwNAalBobdGRAYIgNaDv0aBuWqURiUAUoAgzIAhUPnU65ELGwGVAbkAw0wkRmgC+A2W3CABLfZSwDcZickhsxQGCqDMDQG6khwqJ3AGgTOFDMUHBzAU7bgCAueshOUADOUAYEhMiSGbquws41IqxMqgzA0BiW4nm+4IDAgnwQoDJVBxjMGVdZTDVXWUw1V1lMNVdZTDVXWUw1V1lMNVdZTDVXWUw1V1lMNVTLlmynfTPkWyrdQvoXyLZRvoXwL5Vso30L5Fsq3UL6V8q2Ub6V8MavBsRe8ayf0DovjKMRknYBeVQCNQQlgdyqaEXZnwEMBHMp3t9uZzpQulEYeGImwHzjh6f6zoaKz9xcbRjpT+iHpKhRebLjSQulHFQ6ZutIP8zLTgdKR0onSmdKF0pXSQmnKV1e+cKotKABcZwsOE+E6W3CuB9fZCY1BCbDSwYEd3GALDrjgBjtBGBqDEsBaDOitgTMtxFOdkBgyQ2GoDMLQGKBB7w/wlp0QGCIDNECNYkE0oGuAIyl4y04QhsagBJiYDAgMkSExZAbWoBsU7Pd0N9qZbpR+9A7sh3Qf2pkOlH70SmySdwfamc6ULpSulBZKN0rrSneDMtKB0pRvpXxhNXCKB9/YglkrfGMLDtTgGzshMiQGSINozC9wRgM/1wmBITIkhsyA1sBww7pmgDA0BiXANGRAYIgM0ABDBxOUAYWhMnQNcKAGD9gL4MBacDQFB9YJlQECEqAx9GOMXqFXjNQrHSgdKY08MgCSCqDf5OsNDQ/VkQ6U7tcFoROuBV/pTGlchES6Uloo3SitK33FLkM6UDpSOlE6U5ryTZQvBj26MxxSC8YaHFILNsThkDqhMFSGh7SK0xg4l1acxsC5dEJmKAyVQRhaBzRNUYK+AJkQGCJDYsgMhQEaoHaqMDQGJRBogJ4igQEaCCAxZIbCUBmEoTEoQTsYAgNrAAOBxoZ9uNKF0vheIS2UbpTGvL2nrwUK0oHSkdKJ0pnShdKV0kLpRumZrxzHQWnUbAP0+usHSwLH1NrPhQSOqROUoBuHCV1aP3sROJnWfvYicDKd0BiUIB4MgaG3Rj+eEDiZTsgMhaEyCENjUIIEDSIgMESGxAANBFAY+qHxgQqBC/uBiocL+4DEkBkKQ2UQhsagBNeTURewBgg/okgnSmdK47Io0pXSQuludNGDrgACPY34AVc6UDpSOlE6U7pQulJaKE35VsoXbqgHmhPOplf/hrPpgaLB2XRAY1ACOIpd/bsthwC5QpoOEIbGoAR6MMAlAf0bAZAHJIbMUBgqgzA0BmjQWwuxTScEhsgADQogM0ADAVQGYWgM0KDXKDxPJwSGyJAYMkNhqAzC0BhYAzz6gILi0YcrHSn9yL4vrASBVEe6ULrbl0umULpRWlcatuVKB0pHSidKZ0oXSlO+ifJFAPaIAsCm9KNIgdMpnuyRcL1Ad0FlEAJYjohWL8txUOBnOqEwVAZhaAxwXeyjEh6oEwJDZEgMmaEwVAZokAGNQQkQbHkANECNwpYM6PkktP31SAyqCk7oAyJDYsgMhaEyCENjUAJlDS4fMaQjpROl4WWHdKF0pTR8g5FulNaZhq/pSAdKR0onSmdKF0pXSgulV77wN8XLPgKvUrzsI/AqxZM9Aq/SCcLQCOK6FnHCuh8g8B2dUBmEoTEoAVy9+pGKwHd0QmRIDJmhMFQGYUB5GkAJruelLggM0CABEgM0KIDCUBmEAXWAGsVc4wJYjAGBITIkhsxQGCqDMLAG3ZYICtpNyUgHSnfDjmbvdmSkM6W7YYfMbkRGWijdKK0r3Q3ISAdKR0onSmdKU75C+V5XXlAA2JSCrgab0g82BH6nEwpDZcC1RrS6rsuLAh/SCZmhMFQGYcDlRYxKzDUA8CGdEBgiQ2LIDIUBGkSAMDQGJcBco6+9BMFSJ2DOroDCUBmEoTEoAdYt+PLC1XRC/7Z39yCBq+mErgE+0HA1ndA1wGcYrqYTugb4UsHVdADmFvhaI/TqBGiASsT0YgA0QIVggjEAGjSAMEADFDspQbc/NaHY3f5M6BrgwwmP1Aldg4Rid/szoWuArxuCsk7oGuCTAF/VAQUaoNglMEADFBs7KgMeGjSUupufka6UFko3SutKYy8lXRAYIkPPG98MeKlOKAyVQRgagxJgL2VAYIgMrIGwBtgxyWgZ7IvgowOX1YpvBlxWJySGzFAYuDyNy9O4PI3Lo1we5fIol0e5PMrlUa5RZQ2UNEAI16vY8FK9ig0v1asI8FKdUBmEoTFQeeC/OiEwRIbEkBkKQ2Xg8oTGwBpE1gC26Co2LM5V7MjliVweWJwLYHEGBAYuT+LyJC5P4vIkLk/i8iQuT+LyZC5P5hrNrEFmDWBXrmLDelzFLlyewuUpkSExcA8p3EOwH9vdZU4QhvZ4jeT6V7rSDwsy04HSyKMAIKkCuqSGtK50j9k+0l2SIh0pnSidH2lBulC6Uloo3SitK91jto90oHSkdKI05dso38smAK6RD00x8jEPyhj5AzJDYejSMCGAo2nFPAiOphMSQ2YoDJWhtwa2UuFoOkEJMPIHBIbIkBgyAzQIgMogDI0BGvSeAkfTCdCgASJDYsgMhaEyCENjUAJYiwGswcNa4JEN6Y6qM50p/egdmLV0L9WZFko/eiVmQ91FdaQfVmKmA6UjpROlM6ULpSulhdKUb6Z8YTW6u43AFbVWNA1sQ0WPhG0Y0BiUALOICtGYK1TUDeYKA4ShMSgB5goDemt0HwqBw+mExJAZCkNlEIbGAA0wdDC/GBAYIgM0QE/B/GJA10BQO5hfDOgayCWgayCot8f8Ag9zSPc3nelA6UjpROlM6ULpSmmhdKP0yrf7n850L3d3ZxK4n05IDJmhMFQGYWgMSgBrNAAaCCAyJIbMUBgqAexHP9UX+JVOKAyVQRgaQ9e6O/QK/Eon4DcJ0BiUAPODhrrG/GBAZHi0MiYB3UV0pgulH62cL7FC6UbpRytjZtGdQ2c6UDpSOlE6U7pQulJaKN0oTflWyhdrjYaGhpXotzYF7qG1ex4I3EMnKAGsxABsTEM0RryibjDiBzQGJcCIHxAYsP+dAYkhMxSGyiAMjUEJsKLoLhICj9AJkSExQAP0FMwrBkAD1GhfUchx/aYx6AL4ik4IDJEhMWSGwlAZhKF3D0VaV7o/MjXSj26JOVIPvDrTidK9WzakC6UrpYXSjdK60vGgdKB0pHSiNOUbKV88p93dJATOoIJZMqKrSndFEERXnZAZCgOk9QHS3T5PEEBkSAyZoTBUBrQGajo3BiUoB0NgiAyJITNAgwKoDMLQGLoGOOhDDNUJ3aUUJcAeKI4q4dc5oTEoAfZBBwSGyJAYMkNhYA2ENRDWQFiDxho01qCxBo01aKxBYw0aa9CgAfpegwboR00J9GAIDJEhMWSGwlAZhIE16A6i+Oq1h42Z6UDphyted5iTHox1pjOlHx0AH9nuTjrTQulGaV3pcFA6UDpSOlE6U5ryDZRvQM32fgsfUsGRcrvOZxsgMxSGytClYWMW/qCCvVj4g07IDIWhMghDbw3s0sIfdECfhEwIDJEhMWSGwoDyKEAYGoMSwMhgVYK4qhOgQQUkhsxQGCqDMDQGJYCRGRAYWIM+YYGRan3XY6QLpR/ZH9e/F0o3Sj/yho2HO+lIB0pHSidKZ0oXSldKC6UbpSnfRvnC2mBrHT6kgj1z+JAKtsnhQzpBCWBTBnRp2CaHP6hgZxz+oBMagy5ARNQJgaG3BhYniIg6ITMUhsogDI1BCQI0CIDAEBkSAzSogMIADQSgBHD0GIB8FBAZej7YIITP6YTC0PPB5BpupxMagxL0ZcuEwBAZEkNmKAysQWINEmuQWIPMGmTWILMGmTXIrEFmDTJrkFmDzBpk1gD2BwspRFGdEBkSQ2YoDI9P0dWPYFcwFODAOiEyJAZIRoevNGLgpjqBRwzmNdi/hZvqhMiAEkA3zGuGgMJQGVgDYQ2ENWg8ZhuPWcxrBiQG1qBxpjAu2EWGG+qEwIDCNUBiyAyFAR0EAwsGaUBj0AkNDqnSlxwNHqnSNzEbgqhOKAw9n76r2+CrOqExKAHMzoDAEBmgQQJkhsJQGYShMSgBDNIAiC4ACKiAxqAEsCcDAkNkQBEaIDMUhsogDI1BCWBPBkADNCPsyYDEkBkKQ2UQamDYkwFKAHsyAH1UAIVqFBOVAcLQGLrois5XuRJhNgZkhp5PhQZYKA0Qhp5PRa+q3IzCzSjcjMIaCGsgrAEMyoDKwB1JuCMJa9A4U1iKiDrACmhAZRAGFA5dGWYjotgaGRJDz6dvYje4sk6oDKhEtA/MxhCgC+DKOiEwRIbEkBkKQ2UQBtIA3qsTuuh+dbHBR3VCYUDhGkAYGoMSwFJ0x852OakOiAyJAW5FBwB+S1AUBmWAEsCg9J3zBqfUCZEhMWSGwlAZoEECNAYlgEEZEBgiQ2LIDBDdu0vA/EJQ8TAOAxJDZigMlQFFQJPAbAxQAsxDBgSGyJAYMgM0QDNe3mcXCENjUILLA+2CQA18+aBdkBgyA/qoAJRqFFOPAYEhMnTRDZ2vcSXCbAxoDPDdgwaYhwwIDD2fhl6l3IzKzajcjMoaKGugrAEMCgCOrRMCQ2RIDIVhbSieoAQwGwMCAwqXAGtDscGpdYIw9Hz6nk1DqNQBMBsDUIkFEElATAyZgTWIrEFkDa6N2AuUAAZlQGBgDRJnCkvRUCGwFAOUAJain2E0eLhOiAyJoefTzzAaPFwnVAZh6Br0A4AGP1bp5x4NfqwTEgNcSSOgMFQGYWgMSgCDMgAaoIdcrqwXJIbMUBgqgzA0AlgKRXfBBENR8TAOA4ShMSgBzMYAFAFNArMxIDFkhsJQGYShMUADNCMMyoDAEBkSQ2Yo1MAwKAOEoS2Az6t0p8AGz9arRuHZOqEwVIbubNjPcRr8V69KhP/qhMiQ+m+gQZ+HTCgM3aexXwtt8GydAhoDNSM8WyewBpE1gEEZkBkKQ2VgDSJnel2IgdYpMWSGwoDCJcA6eGyXY+qAwBD7bzIgMWQGVCLaJ1cWIAyNgTUorEFhDeAkMiAxZIbCwBoUzrRbioYPC/xOJyQGFK4BCkNlEIbu99pPnRr8Tgf0qceEwNA1COjK3aC0gMbqBmWCMPR8AsrTDcqAblAmBIbIkBgyAzRAD2mVQRgagxLowRAYIgNEo7soBPSKh6vphMAQGRJDZkARGqAyCENjUIJwMASGyAANFJAZCkNlEIbGoKuB4YQ6ITBEBvRRAciqUXikTlCCdDB00Viswu90VGIqDJWh54PFHfxOJyhBNyitO+s3+J0OAZmbMXMzZtYgswaZNcjC0Bi4IxXuSIU1KJzp5WiWAcLQGJSgonAJAPcr1CgcUQcUhl6EeAkQhsaASsRvyAWt5csF7YLIwBoIayCsgVQGYWgMStBYg8aZwlJEVCIsxQBhQOEwZGApLoClGBAYeg+JGBh96jEhMxSGrkFCV4ZB6YciDUFUJwSGnk/f827wbZ2QGQpDZRCGxgANeg+Bb+uEwBAZEkNmKAyVAJaib/U3uKa2fuLT4Jo6oTBUBmFoDChCbxK4pk4IDJEhMWSGwlAZoIECGoMSwKAMCAyRIVEDw6AMKAyVAX2021GESh01WiJDYsgMXXQ/AmvwTx2ViOsvF8BsDOj5ZGiAeciAxNDzyehVlZuxcjNWbsbKGlTWQFgDzEMGRAbuSMIdSVgD4UxhKXA8cDmrDogMiQGFQ1eGg1q5oDEoAcxGP01qiIE6ITKgEtE+mllAYagMrIGyBkoaIDrqhMAQGRJDZqgMvX36aVKD3+mEwIDCNUBiyAyFofcQHCBVTD0GNAYlgEHBORN8VRtOEeCrOqEw9HzQpvBVndAYlAAGZUBgiAzQAFUFgzKgMFQGYWgMSgCDMgCiCwACUPEwDgOUABOMAYEhMqAIaBKYjQGFoTIIQ2NQAhiUAdAAzQiDMiAxZIbCUBmEGhgGZYASwKAMQB8VQKEaxVpmgDA0hi4a50zweB2ViBXLgMzQ88FpEjxeJwhDzwfnTPB4HQKUm1G5GZU1UNZAWQPMQwZUBu5Iyh1JSQM4uU7oonFmBFfWhlknXFknCENjUAIYlAGBARe2kOl1oe6CzFAYKoMwNAYlwOUZfM0QA7VhBokYqBMKQ2VASS9pjUEJYFAGBIbIkBhQ0ggoDJVBGBqDElxX7S4IDJGhUIVkLinszoDGoASFS1q4pIVLWriksDsDCkNl4JIWLmnhklYuaeWSVi5pTQxc15Xr+rquiwqpXFJYlwGBITJwSYVLKlxS4ZIK9yrhXiXcqxqXtHFJG5e0cUkbl7RxSRv3qsZ13biur+t8qBDlkiqPH+Xxozx+lEuqXFLlkiqVtB0HQ2CIDFTSdmSGwlAZhKExUK9q4WAIDI98EJmhIQLrhMogDI988DJ2Q5xVBGNo8JGdkBhy/w1KiqfyBlQG6SCAxgKUAOFOBrAGiTVIrMH1BvgFhaEyCANrkDlTPKqJdVa7nv2+oDD0wmH50q5Xei9oDEpwvdIbAIEhMiSGrsHVpgiPhrk/3GInKAGeysOkHm6xEyJDYsgMhaEyQAP0kOsN8AuU4HoD/ILAEBkSQ2aAaHSX63FvVPz1uPcFiSEzFIbK0IuA2Xq7nuy9QAnwVN6AwBAZEkNm6Bpgmgd/2gnC0Bh0AfxpJ4TVwHq9Dn5BYsgMGIAK0FWjcJSdEBgiAwoXAVSJiqfyBjQGFAEaXI97XxAYUIkZQM2oMTMUBtYgsgaRNbjeAAdcb4BfEBgiA2uQONMrMBIq8QqMBLgCI10QGFC4AugWCSZAr/BHFwgD+kEFKMH1MO8FqES0zxX+CAKu8EcXZAbWoLAGhTW4wh9doAQIpTYgMLAGlTOFpcA6S69nvy9QguuVXvzmeqX3gsiQGHoPwSJFr1d6L6gMwtA1wFoGjq5497jB0XVCYkA+6KMwKAMqgzA0BiW43gC/ABqgh1xvgF+QGDJDYagMwtAmnCYEogUAAQ1QGYShMSjB9bj3Bb0I3StMj+vJ3gsSQ2YoDJVBGBpD16C7EykcXScEhsiQGDJDmQ2sx/U6+AXC0AhgQ/oiX+ECO2oUr/QOKAyVAYWLHTJXIt7iHRAZUARocD3ufUFhQCVmADdj5mbM3IyFNSisQWENrjfAL8gM3JEKd6TCGhTO9Aq6iG55BV28IDMUBhTugm6R+hGJHldoxQsCA/rBBYkhM6AS0T4I4DoECENjYA0aa9BYg+sN8AsSQ2YoDKxB40xhKQSVeD37fUFi6IVrGDLXK70XVAZh6D2kYWBcr/R2CNcrvRcEhq5B95lTOLri3WOFo+sEYUA+GaAEMCgDAkNkSAyZARoUQGUQhsagBNcb4BcEhsgA0QKAgF7x4Xrc+4LAEBkSQ2boReheYRquJ3svEIbGoAQwKAMCQ2ToGiiaEQZlQGGoDMLQGJQa+Hod/ILAEBkwABUgVKNYywxQAqxlBqBw6HyVKxErlgGVAUWABtfj3hcoAeYhil4l3IzCzSjcjMIaCGsgrMH1BvgFjYE7UuOO1FiDxple4aHRCld46AsagxJcz36jK19BoFGJVxDoCwoD+kEFCENjQCX29olXEOgICAyRITFkhsJQGYShMShBYA0CZwpL0f35NF7Pfl8gDA/RePJa4/VKL+B6pfeCwBA7BEBiyAyFoXaAbnhqpvuYKRxdJwQG5JMBiSEzFIbKIAyNARr0HhKvN8AvCAyRITFkhsJQCa5nv9Fdrse9UfHX494XFIbKIAyNoRchoEmuJ3svCAyRITFkhsJQGboGGFlwdJ2gBHhvZkBgiAyJGvh6HfyCwlAZMAC7HYUL7KhRPD4zIDFkBhQOna9xJeIdiQvwkMQAFAEaXI97X5AYUInoVcrNqNyMys2orIGSBvB6nRAYIkNiyAyFgTJN1wMTCRAYIkNiwO6xAPoOLUqa6OkJTfT0hMLRtWESDEfXCZEBu9QKyCygMFQG1iCyBpE1uJ6euCAwRIbEwBokzhTnwVibwQV2QmDohcOS53KBHZAZCkPfgsfCBi6wExqDEuBgB+sfOLo2rBdGBNYLCgPyqQBhaAxKgGPjAYEhMkAD9BAcGw8oDJVBGBqDEuBgZwBEo7vgXAaT+svRdYASwNF1QGCIDL0ImOFfjq4DCkNlEIbGoAQ4Nh4ADdCMOLEZkBgyQ2GoDEINjBObAbrg8pQdgJYLgLJq9HKBHSAMjQGF653vcnRFJV6OrgMyA4oADeBtMkAYUIkVQM14OboOCAysQWQNImuAY+MBlUEYGgNrkDhTWArMaq7QqwMqgzBAdO/KV4BVzISuAKsDEgOK0ACFoTKgCGgfeM4PAUoAz/kBrEFhDQprQI9kaaZHsjTTI1ma6ZEsvfxhL6icKSwF1mZwgZ1QGHrh9PqNMDQGJYClwMIGLrATIkNigAboyjAoWC/A0XWCEsCgYCGQYVAGRIbEkBkKQ2WABughMCgDlAAGZUBgiAyJITNAdO8ucHRVTOrh6DohMWSGwlAZpEMENAYl6POQCYEhMiSGzAANEqAyCENjUIJ4MITVwAjiOiExZAa0XAAo1SgcTAYEhsiAwmUAV2IShsaAIkCDfDAEBlRiBXAzZm7GzM2YWYPMGmTWICtBORi4IxXuSIU1KJxpgWgBQHQ3aXCBnRAYIkNiyAyFoU/Dr5bDWmZAY1ACrGUGBIbIkBh6PgmZ4tXuAY1BCfCq5oDAEBkSQ2YoDKxBYw0aa9BYA2UNlDVQ1kBZA2UNlDW4XtVE58OSZ0Bj0AXwlNV+00nhD4snQxX+sBMKQ++wWJ8iXOuExtB7FRaecJsdAvC494DIwBoE1iCwBnjVd4AwNAYliKxB5Ez7DEWxPoWn7ARhQOEyQAm63ZkQGPqQ6Xd5FJ6yEzJDYYAGaB/YnQBFYXcGBAbk0wCJITMUhsogDI0BGqCHwO4MCAyRITFkhsJQCWB3IroLrEtExcO6DCgMlUEYGkMvQkSTyMEQGCJDYsgMhaEyQAM0ozQGJWgHQ2CIDIkauGWGwlAZ0HL94wpP2VGjGhkSQ2ZA4dD5lCtRdQEiwE5APgKIDIkB+TRAYQGVQRgaA2sQWANMZAZEhsSQGViDwJle739nQGCIDIkBohXQLRKWfXK98n2BEsBs9AtRCn/YCZGhF6FfhFG5Xvm+BBSGysAaJNYgsQbYeh0QGCJDYmANMmcKS5FQibAUAwIDCod6g6UYkBkKQ+8hCfn0Jc+ExqAEMCjdIVDh6KoJPREGZUBhQD7oozAoAxqDEsCgDAgMkQEaoIfAoAwoDJVBGBqDEsCgDOiiM7pLn4doRsXDOAxQgj4PmRAYIkMvQkaTwGwMKAyVQRgagy6Ab+sEaFAAkSExZIbCUBlkNTB8WycoAQzKALRcApRVo3BnnSAMjQGF650P7qxXJcKddUJmQD7QAPOQAcKAfBqAmhHurBMCA2uQWIPEGmAeMqAyCENjYA0yZ4qpR7+1pHBn1e6sqHBnnSAMjUEJYFAGBIZuq7CzDXfWCZmhMFQGYWgMStDXPwFeOnBnnZAZCgNKik7RzUao6OTdbEwIDL2xCioRZmNAZkCNIp9uNqYAYWgMrEFjDRpr0CJDYsgMhYE1aJwpDEq5IDIkBhQOQwYGZUBlEAZ0FwwMGBQA3FknBAZo0ADIRwGVQRh6Pt0hUOHbOgBmY0BgiAyJITN0DbrfoMLrdYIwNAYlwIbKgMAQGSA6ASCgVzycVicEhsiQGDIDilABlUEYGoMSYGEzIDBEBmiAZoR1GVAYKoMwNAalBr6sywWBITKgjxaAUI1iHjJACTAPGYDCofNVrkTMQwZUBuQDDTAPGaAEmIfgQAy+rUOAcDMKN6OwBsIaCGuAeciAxsAdqXFHaqxB40yxYsFBCNxZJzQGJcAMBSd3cGedEBkSw6Nwx9V3ukGZUBmEoTHogHggvOuEwNAr8XFC+IDCUBmEASXNACWAQRkQGM6Shr4sf0BiyAyFoTIIQ2NQApiNx6T+AYkhMxSGyiAEsC6CqoINeZwqPgDSkClsyIDKAGkKaAy93h4nQyfAhgwIDL08D4/CBySGzFAYKoMwNAZoEDvAhgwIDJEhMWSG3nLHBY3qDQblgso1CoPS0KuwQzsgMWSGwoCSoovB1AxoDEoAU9OgAUzNgMgADdCMMDUDCgM0QJvC1AxoDNAAvQqmRtHAMDWKJsEeiqISYXcGZIaej6IOYHcGKAHszgDkgzrAdOXqypiuDKgMwqALAl6y0AJIDJmhdKiAyiAMjUEJ8KLFgMAQGRJDL8KlAeYhAxqDEmAecgnAPGRAZEgMKGkAFIbKIAyNQQnSwRAYIkPPB+apu8AuQEnRPjA1A5QApmYAStoAkSExZIbCUBl6STG2uwvsAiUoB0NgiAyJITMUhsqAkvYxB3/YCYEhMqTHs5fHAcgMhaEyoKQJ0BiUQA6GwBAZEkNmkJ4pmh5vfg5QArz6Cdsb8OzngMiQGDJDYeg1WtGrmjA0BiXQgyEwIB+UR1GeDGgMuiDi/ZwqgMAQGRJDZigMlUEYGoMSBNYgsAaBNQisQWANAmsQWIPAGkS0XAEEhsiQGFCjFVAYKoMwNAYlSAdDYIAGUDQlhsxQGKBBAwhDY1CCfFDT58AQGRJDZigMlUEYqL/1mLInKCAyJIaeTzgAPZ8QAJVBGBpDL2noIyvifeEBgSEydA0CFIVFCmgSWKQBlUEYGoMS4F3iAYEhMiQG1uAx+RFUx2PqM5KykmfegrI/bNSVfFiokTxzrajdh3UaybSSeSXLStaVlJVsK6kz+bBGI7ly05Wboh7RZ2GHwvU3vbZiL0v3qV0QGCJDlxYjoEuLCaAE4WAIDJEhMfS6jwVQGCqDMDQGJYC1GRAYoEEAJIbMUBigQQUIAzRogK5BQlXB2gwIDJEhMWSGwlAZhKExsAYPa4MlS/fCHcm4kmfeWF50/9uRLCt55oolVPe8Hcm2kjqTj7nOSIaVjCuZVjKvZFnJlVtZuV0vlV+A2oJ2sBcpAwpDZRACWIWExsPYTwLIDIWhMghDY0Dd98GVME8ZEBgiQ2LIDIWhMkAD9ObWGJRAD4auQUa/6I8OT+gaZNQoZjADCkNlEIbGoAsybMoAaFABkSExZIbCUBmEoTE8eiSSDys0kmEl40qmlcwrCdm9UTPsSG6AwIDZUQYkhsxQGCqDMDQGJcBqaQDqSgG9rsoBKAyVQRgagxJgbjKgl7QEQGRIDJkBGkRAZRCGxqAE5WAIDNAAPQmzloIKwaxlQGGoDMLQGJTatHJrV25tzFoGJIbMUBgqgxCwFcqYmwyIDIkBJS0AskKZrVC+rBAAVqhAAKzQgMiAGr1+k1lAYagMrEFjDRprcFmhCwJDZEgMrIFypjAvpVdigXkZEBi66HoAEkNmKAw9nxoAwtAYlADTnBoByCcBMkNhQD4ZIAyNQQlghAYEhsgADQogMxSGyiAMjUEJMJkZANECgABUPKzLACWAdRkQGCJDLwLm1wXWZUBhqAzC0BiUANZlQNcA0/QC6zIgMWSGwlAZhBoY1mWAEsC6DMAAVEChGoXZGCAMjQGFQ+cTrkSYjQGZAUWABpjWDBAGVCJ6lXAzNm7Gxs3YWIPGGjTWAAZlQGXgjtS4IzXWQDlTWAosR4oWhsogDChc78r1oLVJPSJDYkA/qIDCUBlQiQJoLIBWR5VXR5VXR5VXR5VXR/VaHV1QGCqDMLAGkTOFpcDBTYWlGFAYumgcz1RYigGNQQlgKTB3r1j2DIgMiaFrgEVJhUHBAqTCoAxQAhgUHHRUGJQBkSExZIbCUBmgAXoIDMoAJYBBGRAYIkNiyAwQje6C2QaOWiqMw4DEkBkKQ2XoRcC5S4XZGKAEmIcMCAyRITFkhq4BNuwrDMoAYWgMSgCDMiBQA8OgDEgMmQEDUAFKNYqpx4DAEBlQOHQ+5UqE2RjQGFCEroFgHjIgMKASM4CaUY7MUBgqgzA0BiWAQRkQGCIDaxA4U1gKHBAJph44+RGYjQGBITIUBkgTgBLAOOAMRWACcDTRnV/PbaMDoAR9oE8IHQIgMiSGTPn0gT7/pjIIQ2PoKzCsswSnOAMCQ2TgOsD84Co25gcDuHYqpKG7VJQnAlCe628yQ2GoDMLQGJRAUKPolhIYIgM0QKcQaIDCCTRAEQQaoK6lr2nzJaAxKEHr9YY94B7y9RSASuxjO2AXuod8XVAZhKExKEE3ARN6SbFZ3R1mFyQGaADdFBqg3hQaoAgKDVA72ks6/pkuaDjfGdB3CdDFGk5xBhQG5CMAYUBJFaAE4WDoJcWWbfeRXZAYekkxLereswsqgzA0hq4B9lVbtxQTAkNkSAyZoTBUBuTTO1/DGTFGSfeEPf8GtZMqgzBA6wZQAliXiHqDdRkQGbrW2FftDrMLCkNlEIbGoAR9GhGwv9kdZhdEhsSQGQpDpdopyAdQD4bAEBmQDzos7M6AwlAZHqNeYNJ6/NcFStDPiCcEhsiQGDIDajQDGoMStIMBJUVHapEhMWSGx2gUbAd2h9kFwtAYlKCfEU8IDJEBNXpBZRAGlBR1oLqge88uQEkbIDKgpArIDIWha4B9YYXdGdAYlAB2Z0BgiAxdgxwAmaEwVAZhaAy9rrH07d6zQbAo7jFjg2AZ22PGLigMlUEYGoMS9H1YwRZId79dEBkSQ9cAi9XufrugMghDY1CCfDAEhsjQ88FunsIiZVQVLNKAxqAEsEgDAkNkQJuidmCRBhSGytBLim267ou7QAnqwRAYIkNiyAyFASXNACXATGgASoqWw0xoQGJASSugMKCkqHjYqgGNARpAN9iqAYEhMiSGzFAYoAGGM+ZIAxqDEmCONCAwoFehtZV7lXKvUu5Vyr1KV68Kx3EwBIbIsHpVOI7MUBgqw+pVobvsLlCCcDAEhsiQGDLD1av++6Q//Y//+yfMWPoZRZ0pmak2UzpSfQGEVJipOFNppvJMzTzSzCPNPNLMA7Oax6EGpjQ9FWYqzlSaqTxTZabqTMlMtZmaeZSZR5l5lJlHmXmUmUeZeZSZR5l5lJlHmXnUmUededSZR515YJLyOMrADKWn6kzJTLWZ0pGCAeipMFNxptJMzTxk5iEzD5l5yMwDo/xxXIMh3lNhpuJMpZnKMwUp51jDeHx0PyxYeirNVJ6pMlN1pmSm2kzpSAWMRyTDSsaVTCuZV7KsZF1JWcm2kiu3sHILKzfMEfqlDcwQkMwrWVayziSWGkj2n/U7OlhM9Gs0GJhI1pWUlWwrqTOJ0YlkWMm4kmklV25p5ZZWbmnlllZuaeWWV2555ZZXbnnllldueeWWV2555ZZXbnnlVlZuZeVWVm5l5VZWbmXlVlZuZeVWVm5l5VZXbnXlVldudeVWV2515VZXbnXlVldudeUmKzdZucnKTVZusnKTlZus3GTlJis3Wbm1lVtbubWVW1u5tZVbW7m1lVtbubWVW1u56cpNV26wBrislFYyr2RZybqSspJtJXUkI4wCkmEl40qmlcwrWVayrqSsZFvJlVtYuWGy34/DMNVHUmdyjXk4j15JaPaYwF1jvifrSspKQofHXO0a84/kNeZ7EiV+THGuMd+TaSXzSpaVrCspK9lWUmfyGvM9idweM4trzD+WSjmtZF7JspJ1JWUl20rqTF5jvifDSq7cysqtrNzKyq2s3MrKrazcysqtrtzqyq2u3OrKra7c6sqtrtzqyq2u3OrKTVZusnKTlZus3GTlJis3WbnJyk1Wbm1lgSHdD48xpJHswvo6FEMaSVnJLqwvIDGkexJDup9AYkgjGVcyrWReybKSdSVlJdtK6kjCszM8TvTg13kl40r23B7HdwlDGsme2+OALmFIIykr2XNrfVKrM4khjWRYybiSaSXzSpaVrCspK7lyCyu3uHKLK7e4cosrt7hyiyu3uHKLK7e4cosrt7RySyu3tHJLK7e0cksrt7RySys3mIrHeRb8N8/kucJIjxXGNTMPc2Ye5sw8zJl5mDPzcP4uP353Gc7jv88/+Nu//euf//Ov//b3f/nPf/zlL4+/HH/wH3/6H//z//7p3//8j7/8/T//9D/+/l9/+9s//en//Plv/9X/0X/8+5//3v//n3/+x/m3Z5f4y9//9/n/U+D/89e//eWR+u9/Wr8+Xv8UMcb7rx+xhqeAc07oFXHW1lAg5RBIRPoiIr4W0fs6lDjSFJCedEivBbTHsUgXcO4gvxSQXwvo1+26gHNh/JGAOjR4rJlfSrDqsbQhItXQXtajGK0ZH6tNVOTZ4ZeIVL+IaFZrjv6QtCwBtbmLUeMqRpKXxQiGjFLT6FJnclVFfRIRjC7Vo22jQUqJL0UYvVKkzk6VVzlKdUvoj2VDQg2vJRjdKvbDb7TouaabMnL8KqIYStQxuM6d69dKVEMJkVGX5yd4NUf6tD3kdXtYvUIeZ3DoFecZ+0sRapm7hyW/zF0Or0TE426bxnC7TWO826bRsJjh4aEyLVatS42H4XAXpZ9vXEUp4WVRjO4Z22jUcwr0sn+bxkLr7BYhvWxTuW28LRGpR9K5DKcaX0G1xkiNc4xQZcTnD6FVG200SD2W/T673A96RtPVM5Ra9blnJKOHan/9BF/UQpqk+lSWZNmdYw4UiWQz3K2Sjykhn5OMl62SijU5KdNynefgJOPrNzEZFvTcWpJZpznQ9+jcL/sqRTb0j3a3f5hlyek4ZllSSS/Lkq2JZ1+EXZajKZXl68jP4W7/sHqp3wraNVLTNCC5Umm+1Yj1qa9l2LFzsU1tE+SrDKOvwmP+sqaVa7V8lWGVpsfXv/p7S69lGD21xdHLWg6vJVj9NMxvfTR0sKxpzLNRzp2O1SbtB93DawpLuG8KS7zb1c1m7UFiURQ1GqVkq0qXKYxG9yrlbsOWerthzXHSXYwwTs7lwWs1zJWSjE5+bg0YfdTSI+a53Dp3rF7KqIYlzTr1KMfxulFsC9am8Tln6jTHf7Zg1eikNeio1Zri629cNb75OcyPSw6hfSZD6uimuWV5LcNomVPEaBmRxHPCr1/KatSq5DRWG5Lb8VqGNa8sawKzvk7nJvlXCc360uoYcTFy/3iWYdjSEkeFlnR8JkHnvCOU1xKs3pWmEjWH17MOidZaYY63UutrGeZYKZLXNKwZ/VwsU3qeOY3OcableGHSpdz9KJgjpc1PU1aa/XwridwfKdLujxTRuyOlHfdHSgt3R4opwTVSzB5a85rC1ZJf9/OW764UrN5VwpxylEfOH4026ddqURY5jLl1szZG09ph5n3N+LQObO3uaDO1yGF8284pzPFSC2s1Grs72bVukvByNarB2qLVMdqS0H55eBptloxzETgmDPkxkX0pI91fz+rtXmrXaFujnnvp80LBkhHTkmG1itw9BNF29xRE9e4xiF0TbY6S8yTgZU30yzzGdkmbs9HM2zbyJCRa8/M4e3lq8pmQfMwaObdt1BCS7/fzfp/nFzt6nVvX57m9fNbR62yZ8+S+Gs3b7vb0fuvoXlcP1r7xhr7eXW5REDUsR7DOiOIhaws98fZieRKSrDnYLIzAB/YDIa3GMI82SjCElA193Tpw8vV124RkmjYEY/QH65OfQl7HRdUQoub+8TRmZ+OQkPx0kHjc3uq0Omt/xuPqrFI/G/06G+YRV+t1hzfPF3yjP+bbo986dro/+hHz6dq7oXXP98qwPvpx7T+nxGOu/kBIf9biqtJ2GEKsblrarJLzSxdeL8KCdf60zjm4k6VUfqJJf7lraBLV0MTavO0xv69aOcJrXcwD4zAr5Wly+DR4k/X9r5KmCahCe/tP7WOOvf4g+2WLSjY0Mff25xTg8X6NUbEbFvwhbVjx9/tv95b8IW9Y84d8e9Fvi3Ct+k0zcP7j+Y346oj17G+yY66ab89V7e7e1s74QQcF37q7dQx1TnjnhnQmHx7VH8iQ6eJQRQwZVj/tgYevwuRCXg5PlVosy9rnXTCtkfZ0vgsJ1tidQ+acM4bXw846jCplnt2WwkJ+MLOqa9EthzGzMo+jiq5z16I0733q8MWcxCfqaNHQxLCrOc5TrXyOwiUkPWtif8bn+D1oyvrs32QeSk0TkA/D2asYnfXcMJwdvh7HyyPPYB1KhaO/BDhOTmkAP5962gMnz12mVNgJ79kaWQcH7j5v7mX6+rw99pzfTfNcyvvdtA6mnN9N61zK/d20jqac301ThO+7afcPZ7tI2NAu1vGUs10kbWgX63DK2S6mCF+7mAusMCerKR7G3Ns6nYplLrCiOfjN4yl3D9ENPaQdt3tICxt6SIu3e4gpYsOMN4e5l1DUWPg2a7Kap7NSKVQf377drd7/dje5/e22zqjc3+6mv//tDprX/ogxX7WOmc7JTqYpnlhidph467jKPYCt8yrnANayYQBrvT2ATREbTHycVZq+zJufTbyaezRxuZJqftku8Tju95B4bJgExOP2JCAeGyYB8bg9CbBF+HqItfyWPM+7pZBh1Wc1xDwJHJ2MFt9PjsbROrEqawOvCPfT3J6EmLsAeW4YH+Tw8yzEro+gazET9GV9mHdxZPohBN7SeNzg+CrE+nzPLY1CrgzfRaT7q7to3ZDyru6idWrlW9290cNpQIJsMCDW3orTgNjb3k4DYp1ZOQ2IKcJlQOxO5tx7i9aZlXfvLcYdPTXe76lxR0+NO3pqvN9T446emu731LShp1qX+uYBT6N57jeLat6Ycq52Y9rRP9KGfaqYbu9TxSQ7+ke73z/a/f5hfbbrVOPcrQive4h1zoRn9S5zqJaQuKGb5bShm1nHVe5uZt7C8HUz63aNu5tZcztnNzNFbPhgOtft0Tqs8q/b444t82gdV7n7SEm3+4h1XOXuI+b1KV8fMUVsWJXVecNGJL5ehVhHVXRpMteWXs/+i3llOtDNy1Ua/erjEa2zqodH+B+dm0fNT0KsXdXUZoyEzH5N+VkT64pLf24dTaPt9W1DexoxQxw8Amm+NvA1b9hS2XGFKu64QxXvX6KKO25RxfvXqOL9e1T2FCAs9//I1+Oee4h1VOXuIbJjCiA7pgByfwogO6YAcn8KIPenALYxy9PrLVOwlm/GrB0blrvmZSjfctd2iZA0z1XoTOTbRKSl+98Z60KV+ztjnVa5vzPWaZX7O9N27Ji3DW6Asd12A4y6wQ0w6m03QFuEc/CaId3WUWSlHvKtm+mOPQDdsQeg9/cAdMcegN7fA9D7ewD28PdZ5nRscAJMx20nwDd6+DpZOjZ8/tNx+/Pfrzze7WTpuP35t0VssCBrZXbOReWlBUlmWK7+uDTKcvAhU/3BElHjDAah8vqAKNlB+EbbtiKvB4y1JVKmT3ThqW56ro4d3TTc76ZhRzcN97tpuN9NzfmU80OX4oZZTIobzv1TvH3un+KGc/8Ub5/72yJ8jWsN/XLM2zunGsfroR9lR+O2HY17e4qa0oYpakq3p6i2iA0j1/uBsY6ptnxg1h2+fJTXh8PJOqVyfmCsUyrnB2bHhap0/0JV2nGhKt2/UJXuX6iye8eKX5Jj1te9I29YSaW8YSWVcr3fuLKjcdv9xr3v9W9GjZ0Bz0qtLyMBW3HXUpl3fnLjK0zP0Vysj/4x79w/3gokIeUHQrr32zixi4YQ8+KfK2B2sk6WfBGzTRG+8MrJukfljK+crKHvC7CcrKMpb9Rsf6uI0SpW9wh5HegacR1SNZ1TPFfuk3WFynnl3hThC9RsV0eZZ5epmtVhHUvJPGU7k9TXny4N2ELaDJV/ylBDSLs/bq1DJee4tUQ4x63cj4ue5HZg9GTeoPKOW3erGOPW7B46/ZZFaWb5rXuYp1K+iPfJOlHytm3b0LZ6u22beS3VHe/ZFuMOkd52xEhvt4Okv7FDdRqzph8asxZ0GRF5fQU6mdeoSl6xcmhL5/n9EdvA65zonmd/xpyqbTCr7b5ZbffNqm4wq3rfrOoOs9o2mFW7e8zQA+d5cH3dPbTe7x7WsZSze+h9y2zenvJ1j2xdnvJ1j3yEDd3D3Sofd4+1TD6O9tmK7CzqDBt45Nd9LJsR/3yvIOXjfj/Nx+1+aorw9dN8bOin4X4/DRv6qb9VxGiV8qsbGDIvPuezVC83MLJ1JFXjDCtXc3r92c/WoZQGmk0dL7/6b+pDVn20D+vU98JUtp+YOtYJfcgvZViHUt5Ra55J+UatJcI5as0TKeeoNaP9+Uat+ciUd9S6W8UYtWbvWJFtI+/C/khGmXuGsaT0uneYbqQzPGbRqh/KmKc4powND7LldPudPlOEs6en+y/15XT7qb5sHUbVI4/OUflE61tPNy9Ned5kM9UoOsNA14NjSX5TQ3css7N1IuVdZuf7b03ZPcT3WF62Lk1taBmZOyCFL39/bxm3EP1QSJvRW87kx0Lm67OPAKYfCtFjHklpzB/21pCnR9wjnV73VrvTe7eo3oiROTE70zV8LEZXLJhG66GfDUGZZ34q9GTT9yHoFqKfCpnlOZPlMyHn4QO10dEMMXblLtf0EI6QP22jRvF6Gp8x/1DMDGL4EGP0X/8X/fWqtZqOoetwxdiRMFcDrkdBs/k4jncRbwpZjyWeM5BmCPHFqIySjdJs2Amo93cC6v2dgLphJ0Du7wTIjp2AumEnwO4ddU1NWv5IRgqzMCmofCrjuC0jrQlOoq2An8mYjXuKey1D2v31kS3Dtz4yy5Knv3/Ktd2X8WEfS3F63KTcXreteYeKJjbn1pMx+C1FZHrdnOeer02hGfHP2bi2jA2NK2GVxRi45onIMZ9TCIF8oX5YqevKfzN6mXWDyhe9MNvB/nQ9W3YY03BLjzz3EjM/8PetOsxv9no/MvF56LfXZ/P9fUAt97/ZWm9/s7Xe/mbr/fP/rLfP/8txbPhmu1vFsKea7+8DmjJ8+4DFjtDnM2N2T3ft4ZXjdi81Rfh6aTnu99Jy3O+lYYt7SQk73p0Otx+etmvVt+9VrOtTrn0vu1Ld2zPv2sa5Sn4jxrv0fyPGu1n0Rox3s+idGOdmkd1vnZtFPxCinwrxbRaZQvybRe86nneXx2+sX071in2tyrM9Y86wcl6zNH7L+fn99Xj7DcCSbr8B+KYo6+mPbGzw2Hr4/JptRXTFqA1HNBTJ9+v09stqtogN1XF+1eYOYMhWdbTf7Oklz7VEOWdYr9XI5ppmrq0o2FY8nj7C98+vbC3mN4JXVt+1sPpomNPeHDlMvl9E/+guO1iOz4RoWV9xZfeZHwmZYVRCYFfCn1TqnJRktZq2/aqIx5d7faNaeF2UtqNl2o6Wafdbxh65lZZG/O7488g17+84H/8s9hNVrrFr6qHziljQL2cZ+SeFmYf6QXlx803I7UeqS7n9SrUtwveFKXY8R9/bkMW6VxWqzLPnM03H4PVHQlwPTBYz5p/zgcli7SR6H5gs5n0E55XZUjcEqC71doDqUjcEqC5yO0C1LcJ1ZdbuIc43GYt1vcr5nmKxQv55Hw4oYoan9EVBKtb1Kl8UJLswzgD1xTpr8gaoL+YLVd5xZ4aF8447K+yfc9y1uGHcWUdWznFnivCNOyk72qXuaBe53y5tR7vo/XbRX7WH3gfqim6IpV50QyDVohtCVBW9HaKq6IYQVUVvh6iyRThHrtlDfLHU67EllnrdEW2vHhtiqdfjdiz1emyIpV6P27HUbREbrIjzDbRqn7H4wjHXY8P3v4YN3/8abn//a9jw/a/h9vffFuG0IpZ19735Va0rVt43v6oZtM/15lc1H6dyTt1r0PtT92q+LeWaur/Rwzlg4g6TGu+b1LjDpMb7JjXeNql2J3MuqWrcsKSqcUdPTfd7atzRU9OOnpru99S0o6em+z01beiplju0682vap1ReRcQNe3oH3nHpz/f//TnHZ/+fP/Tn9P9/mF9tp1vflUz8J/zza+aNzykXnPb0c02PKRey+2H1GvZ8JB6LbcfUrdFbPhgetep1jHVD9apZcPufy2yo4+0+31kw+5/rbd3/20RG1Yhvje/qumj4nzzq1YzJqLrLZZq3plxvsVSrXMq71ss1Tqn8r7FYk8jfG9+1brhGfUqG8KpV9kQTr3K7XDqVTaEU69yO5y6LcJn4M0pgPPNryqyo4fsmALIjilAuz8FaDumAO3+FKDdnwLYxsz3skxtG85Ua7t9pmp+Z7xvflU72JzvO9N0w3fGfJzK+52xLle5vzNtw0lkNQ+rvIPXOqxyDl7rqMo9eK3DKufgNUU4B69VFOdTKFU37AHIsWEPQI7bewBybNgDkOP2HoAtwte49vD3WWYxL1g5LbOYb0u5LPMbPbydbMPnX8Ltz7+EDZ9/Cbc//7aIDRbE+SSLWMEAnU+y2EtE55tfYq6HXE+yiLUl4nuSRcKObhrvd9O4o5vG+9003u+m5nzK+aGTuGEWI7HuaFy537htR+Pq/cbV+zbI+lY63/wS85DK27hpwxRV0u0pqqQNU1RJt6eotogNI9f7gbGOqbZ8YJxvfkkOtz8w1imV8wOTd3TTfL+b5h3dNN/vprn+qg3yvvklecdKquxYSZX7K6myYyVV7q+kyn1HKuvGTpZjXj+UxFe6fnALKtd5sTRLfn0LSop57u+5BSXW6ZTvFpQtYsM927MxZsDZIFaAO1PIatyU84dC0tz0O88GXz/sJJYQZ8NY51POhjFF7GiYMvWoNVjVIdaZrk4PlUd4plc3y94JSXQwXNpLIYZNrXU+DXNuMLy+zy3W8VSO67L+F1/bp2j1Yh1PnUcfcw1yhJex0MQ8nXJFyxLzIlXJc8xUmi0/b+iKdbQUDqWoEkqXup6DU9hiQl4P95yb5fJSjNllpb/CjTZO2eiy5imVL1imyP3Xf0Ruv/5jivCFNJJ2//Ufabdf/5G24fUff6uI0Spm73AFyzRlOINlvpNx3JbhC3QpzRvEv8QP9XAF7Xyjhysmo78shgyzLHlex07n1+KlDM2/rYcr8KdfxofjxRn4U6zgf97An7YivsCf7Thud7I3MjY0ri/wZzvM6CO+wJ9vFHEF/mzWFSjfVKaZ7yE5A3+aevgCf76dqFaaqOYXE9VmHU55Z7umEF+gHHuaKvMlkDP5urNbB0vOeVCzLkD55kGmCN88qFlHU855ULOcsX3zoBbk/jzI3yqWXTcXMfObHVRfm9O4wxRaqxinW4opRFakfuEV2Y+E1PWmSZWWPhSyNoZrk/Txoozjf2r9eFG2HJjOBVoxxJj1MsPMVsnx08pdmxHtqIaQeNvCv3lj+lhmoH00dM49hBm7Nxhf73R7/d+sMyr3RzNtqFKzaadTyNnK8cMuH45E8VDzx/sQodCsSD4eOSEeNLkyRo4VlmnWCz1CnJ8iw7wJ6zSPux5hnV7FQmvWSZU3NpQpxBm3b8OWph1dSue9zqDx4+hSPk+oZp401XmIeGpMxXnSwzoQjWmdq5Bd/Vl0KZlfvnPf6/XJSsu/LST0+yejm7UPhciKiiz6uk5aMa+pzvbN9TMROgNd8fz9RyLCQRurtRhCrDVNfyYJ4y4rHa78pE7X42bnoDH6mWXkz7OE9ULaYUTtsj4UdUX+qtS4+lwh1ilA1iliafE4lnSrIWur+txSkJdqWA9UpTRfmKdpVXhaS1i2vSyrXLinh9yehFhu7sesjnTI8VKIHaNmbbqn9OXY7HjSpNy2h1a7hLOLzQ/VmdaXMwm7l+V5xltzMnqqeQNhXpg9V731ZWnMD0ScniqVnxT8iQhXnZrBtrzfGFOI9/Ng3qXaIcT9jTGFeL8xUm9/YywRzm+MJcL9jbEOmbzfGLNOnd8Y+xKy1xCZN6Fcg+ZNYBjP6LdFuEb/GxG+guT7o98W4h24W0xIaxtGvynEO/o13B79Gm6PfvO5LO/ot86qvKPfrFP36LfullSKtk07EeGpLIaInNbVgUQPzTxPh95EQnEuD62rVM7BawYx8Q5eU4hz3Onx20K8g9cW4hy8ap0T+QavKcI3eE0R3sGrVtQ/5+C163TH4NW5RaylvBy8at2lKiGv9zo4Uv7z4LXDD/gGr4Z0e/Cas13v4N0xZVbrzGqLEPfgtSMQOgevfaXKNXgtEc7BG3TD4LVuQ3kHr1mn3sFr7WXGJSRylXwbvtadqvMYY357A7mafxu+dngo5/CNcnv4mpGdvMPXFOIdeen4ZSHu4WsK8Q5f+16Va/haIpzD1zw58w5f60qUd/iadbpj+KZ1HJlCfR3aRa1Zb27zpausfCL57eu7Y/haR03O4dt2DN+2Y/jm/MtC3MPXFOIdvlluD19LhHP4WiLcw9e6XeUdvjlvGL5mNLM0rxOFRHv4T1FmtNhvEM7BS0cJtfpFlDn+2aPoZyJkHO+cp0WfiegB7LF3H477IsqHImZd1E/ros66qJ/WhcyCyKd1wSI+rAt+AfHDupBZF/JpXbRZkPZpXbCID+uiTZPR5FMtZMb7bR9qocf4GuindcEiPtViPgWnhskxIx96vfbs8InOW1BqB9ifzSIxNkOIeS9U/sAIP9/ntgvjdLV7I8Tnx2gLcfoxvgnk5jpIabePUd+IcE0ozUhh3gmlKcQ7F2zpl4W4J5RtwzGqttvHqKYI54SybThG1Xb/GNWuU++EUjccYKjePka1I7A5B41sOXvYMvIsIe5BYwrxDhrrOpVz0FginIPGvNTlHDThsCL9eUeNlh3LMDP+WVmBpcjj/jk8zVkc872v+cxuCuwZVp+FmJ2ELu5QzZ5TpCchhk2rMxR7LelDEfOGSKWbKj8UccwZ3kst3oSUi/PK3vFl+fCkhhXqLxddYcfzFiH6Sog7yt455zV6mXVAFfJ6zDmnZhQnW+vkeS+rBpp9fxdiddUQy9y9COnQLWJCfF255k6Krmp5Ha/Xjvq39jA0vJzEn6XRuwsBO2Kf99sZN+xgwpL/rhTv1/ONFOfnMxzxtgOALcP3AbVl+L+g8b4PwJuKdX9CzfB9xzLVhd+YP55USZZr9VzPZ7om8jSGTxHW5aq5AM78LHt9sgN2FEHfJPpUJN+eRacNS09biHsMJ/ltKX5LYEpxWwL7wSqfJbBkeC2BJcNvCXLaYAnMinVagjeVMicoGj+u2BmoRaXcbxxDhj120rxzdg7F8KGQuCL4p8Oq1Q1nVraQxzRtTrVy+1CVEGbrnMfP5VMpNGNL+rEuZV3WLBSQ76dS6rpU3/TjEq3hk6JZIrlvl4rct0tFdtil+uvdNq23xVKRTyvFaZdMGU675GwcU4Y5BXWWxZThLItzKmzZWHOl4rWx9prJa2NlR2eVLTZWtthY2WJjZYuNlS02VrbYWNlgY2WDjZUtNrb9erd121jZYGNlg42V2zbW3iZ3FcUW4SqJd7PeMrDmMYrXwNoHOl4Dqzt6qm4xsLrFwOoWA6tbDKxuMbC6xcDqBgOrGwys7jCw4fj1bus2sLrBwOoGA6v3Dax5eO8zsKYIn4F1uhCI9UbXhl2CN24mTgMbwoaeagpxG9g3UpwG1pbiNbC2FK+BfSPFaWDflMhpYEO4b2BNGU4Da8rwG9j4693Wa2DtSvEZWFuGz8B6G8eyS7bz27pVWcvLt1RtEStoLgfd+ZFLoi9E3BshvhCC9vUD3wcn325Z7yUIs2E3bJm8uSjj/eCkvGHkprzjg2NL8X5wUt7xwTGluD84thTvB8cukfeDk8P9D04O9z84eUPgi0fQ09/utu4Pjlkpzg+OKcP5wXE2jmXazOuZPgNrivAZWOclUcvAlh0GtmwxsGVHTy1bDGzZYmDLFgNbthjYssXAli0Gtm4wsHWDga1bDGz99W7rNrB1g4GtGwxsvW9gzfAVPgNrivAZWGcQDcvAmuFNvAbWDrTiNbCyo6fKFgMrWwysbDGwssXAyhYDK1sMbNtgYNsGA9u2GNj2693WbWDbBgPbNhjYdt/AHrf9KmwRPgN73PaqsIO/eQ1s3nHoF3RHT9UtBla3GFjdYmB1i4HVLQZWdxjYeNw3sKYMp4E1ZbgNbDx+vdt6DaxdKT4Da8vwGVhv44gVcvR2UWwRrpJ4A7BaBtYMjes1sHaQXqeBjWFDTzWFuA3sGylOA2tL8RpYW4rXwL6R4jSwb0rkNbBxg4GNGwxs3GJg4693W7eBjRsMbNxgYOMGu3TcPvSzRXgO/ezHKUKdr4/G9vqFixDTvTeU7Cj7vo+N3PYw8cb6N0TYrzA4PzZv3oPwfmzShiuHphD/x8aW4v3YmFLcHxtTivtjY0vxfmzsEnk/Nvn+TVlThvdjk3fclI3517ut+2OT79/dsGU4Pzb59i7Dm1dqPB+bNyI8H5t3b0vNZ0QrPWeqz7VRzAjVbQVWkCavXyM95VgOUU1nNAMN/JRhfCqR5fW9XjJUfsjwcaX5SZXbDxEU2RBPKETr5MMXC+ydjDkbKKWFz2S4Aoq9k+F7mGlDcCRbiPdCdqzy21Lc17ptKd5r3VHuX+s2ZXg/W7LjWneUDde67Yr1BngwN/fcluD+s2b12PGw0ZF39HvR35biHz2iO0ZPi/dHT4v3R0+LO0ZPKxtGj2x4QrPGLR90awXnHD3p/vtm6f77Zun++2ZphxlIW8yA/roUvxnQvMMMbLi+FTdc34pbrm+lHde37Ir1moGy4fnp0Pd7bo6esuH9aVuIt9+no/62FPfosaV4R0/fYbk5ekwZztFjyvCPnnD/qaI3FesdPeZTg77XEs7imHMCz3MJtgzfewlvZLgeTLBl+F5M8Mson8pwvZnwRobr0QRbhu/VBL+MT+vD927CGxmuhxNsGb6XE/wyPq0P39sJb2S4Hk+wZfheT/DL+FgP3/sJ5iu03vcTLCHe9xNCsuKbeR9QOKVYT2r5XlAwi+N9QcEW4nxBwRTifEFBDrm7VLNFuJZqb0S4wliGHQFtw46AtimX35bin2zmDfHgTym3A8LbMryTzbwjJHwq90PCv6lY52RTzEDB7qVauR8ENrYNoye2Hf2+yG9L8Y+esuO0INX7pwWmDO/oqTtOC1LdcFpgV6x7qWZtDXhfVEjVfN3S96JCso+VfC8qpGqMH9+LCrYI14sKb0R4XlSwnvr0vqiQxNoRcL6o8AMhr19UsHuZ80WFJNbnwvmiQrIOtrwvKiQzHKD7RYWfiDFeVGhOvyjrRQXrAonzRYVk3epxvqiQd8RR3zN1bPm3pfg/oW3HWUFq988KTBneT2jbclawI0KhXbE7XlTIR1uPqpMp+HZkmNRyxHW9qJCskw/niwp5hxtR0tvOA1J2vEtWdrjeJNXfluK3BLrDeSAf950HTBlOS2DKcFuCfGxwHrAr1mkJihVLIbZZKenINPEL+bk81ve8zclSaORznZ/8EjVtGMc53D79L5YpcLvQ6Y6TxxzSb0txj2Nbinsch3p/HId6fxyHumMch/tvc76pWLcL3Y6vYI63X+esYcNX0Bbi7vex/LYU/+iJOzZkc7y/IWvK8I6euGNDNqcNG7J2xe74CqY0j0PO46jw8itoCsnHOv4/ajQ+pdaJ1x4ptZW8DolWgepPZOh8dq1qlA9lrM0tLa9lxNvB8t/I8N1p8Q4c6wJl2BE5I+yInJF3RCk0hbjv2r2R4rxrZ0vx3rWzpXjv2r2R4rxr96ZEzrt2udy/2G3K8H4zyo6L3bn8erf13rWzK8Vpl8r9i93exjFlhHq/LKHeL4tzam/dGzRXXt77zPYa0GtjdwQqNIX4bWzdYmPrFhtbt9jYusXG1i02VjbYWNlgY2WLjZVf77ZuGysbbKxssLGywcaa24/OspgynGVxboNazz6VHc8+lS3z2B2xCk0hfhvbttjYtsXGti02tm2xsW2LjdUNNlY32FjdYmP117ut28bqBhurG2zs/cBpbw57fWWxZfjK4j10tmxs3vE+dN7x8lPZEa7QFOK2sW+kOG2sLcVrY20pXhv7RorTxr4pkdPGlnDfxpoynDbWlOG2sSX8erf12li7Unx2yZbhs0vexjFtm+mT6rSxpgynjXX6xprvQ2+IffbGidprY3dELDSF+G1s3GJj4xYbG7fY2LjFxsYtNjZtsLFpg41NW2xs+vVu67axaYONTRtsbNpgY/P9My9bhtPG5ttnXvblKq+NDTveOyo7zrzKljOvsuXMq2w58ypbzrzKljOvsuXMq2w48yobzrzKljOvUn6927pt7IYzr7LhzKvcP/N6c/nUE1/yjQjXC6b2lWDnC6a2EN8Lpm/Cgji/OYfe/+Y4w5OYb+zpBj8LO46N95tTNwSHNYX4vzl1R0xjW4r7m1N3xDR+I8X7zak7YhoXuR/T2JTh/ebIjpjGZpTYPd3W/c2R+zGNbRnOb46zccy4yHp/f9qW4YzPrLf3p+34dl4bm3Y8UmJGn3d31rbFxrYtNrZtsbFti41tW2xs22JjdYON1Q02VrfYWP31buu2sbrBxuoGG6vlvl26/0hJuv1IyZtItU5L3+57e3gj5lo1euyw9McOS1/Dhiu0phC3pX8jxWnpbSleS29L8Vr6N1Kclv5NiZyWvob7N79NGU5Lb8pwW3rz1aM93dZr6e1K8dklW4bPLnkbx7Rtcv8k0pbhtLFy+yTSfnLB/QrTDo868+vn7qxpi41NW2xs2mJj0xYbm7bY2LTFxqYNNjZtsLFpi43Nv95t3TY2bbCxaYONTRtsrP0mjWc6/U6G69G/cns6bYvwPbdXbk+m+xC/bejrjq3pWjZE3zaF+A29LcVr6E0pbkNvSnEbeluK19DbJfIa+nI/aLwpw2voy46g8bX+erd1G/py/8jMluE09OX2kVmxY6yqzggF4TiWmPoDIecPdQmhOqnPDWx2E20HqfKZlBx0PIuTY5CXxUk76iTtqBNJO+rEfPLLVyemB6mWFWCcA43U4ydCVodVPvV+FmJGfjhroUxzctBX40difKESbBGuSAlvRHgCJWRrAuxtmTdCfC2TzTCv7pYxxfhaxhbhapk3IlwtY8WfLzrDY51JpdpIPxESV8DLfLwUYoYSjXkGOok5rJn4k4xQrTiGIeua2lCUoO9CLBetGdO0paXHOWv6gYyWh0lsNVgyrBBbh85owuHg19OehRib260Os9pULEXMaEUy5/RCUXzT520jL9vG7iRpfiXOTlI/k1HmewmxpGT0ESuisK51o1b9VAgNvtdCzKi3vs6amrmVlWUtcbLxcIMt5mhhhpw+WvpYjArNbMgS/FCMpBkN+JAaPhaja2HQjmaIsVbnEnVOg+vrb9cPhOinQnRN6rUYQuympuVSS6+dA9+Y/DY3HAot0J8HkVgxh/jVoZc20oy3LiozwLiykUz1WQ8zrDAFXM9qFKbc/36JGcjQ9/0yZTi/XxLa/e+XWHEMnd8vsc643N8vf9uI1TZmjOQZDz+ovv74SEy3vxvvNJlbL5GfUvquiVEnabZwPszWsWLIO58esjXJYYZrrsnqsNnssMfqsO2zeo0hzClKaK/nsWJt9nvr1bxFVXR2tXpko9ebR26uejXtawszHn4L1MDP9tX+bjmXkG+E+JaQyX6k2buEPGtWfl+OM6CiLcMXUPGNDFdARdO5SdaBTnttYfX+KlLMfTHvV9i61eL9ClsyvF/hXDd8hbPc/wrntuMr7G4b+ayP+BaRpgjnGtKMMuRdQ74R4poLWNMjX0+NaccK0pTiXrK9keJdse1YsO1Yr+1Yrm35YNn16l6Xxy17DXHLVkP89RL5Nxrijl5r3j109lq/DP1Qhq/X2hdUvb32TU9x7lTYswrnRoUVu9C1URGNj/C5lzJMfRKlN2nCNzWs1+Xi/PqlxDOkn8hI04MgpfZ6umhe43Id+Jn1Uedy7dytKkZ9WHtZ7cjz60e9PTxPwa3HunReclX9WMZs3LO3x5dCot5tFmu1tx7OrZEcQw71S5hTVn4j71mCVYpQphtSKBw2/wc1EXJcs8SYXso4m8TyGdA4G/ZMU9M+r37vdnNLwuPlrqnFuTFAA//5TSyxjqS8A9+U4Rz4evukP5kPss4NhTPZXklot/t5u9vPzfW/s5+bMtz93H6uydfPrdP5GI+5qIrUR2OIfhllVmos5bUMc7TkPNeqZ5rK8m20tCPdHi22DN9oaeZ7XPftx5caKbyfGJ/dL4y2qXG2b03c0+RDGXJfBj/i8yzDmnrMBW+mx2BjKG4JZW51fXHD/IkEmZtl+XgtwdqTmRuirchnEuYriY0dJz+TUNNLCVaovJymk2FO7bUMc4trPbgaaygvZYRmHVeFWKYtjbTw+QMperdv2TJ8veuNDFf/elcjbTotR34Z6oaU+qmUdMx1XDrax1LqcsOW9KmUsnYfSv64XtLaycxH2SJFP5WS5wPZj4exPpay3iPLtX4uZZVIPu67eZrHkNvHLZ3nc93ndO34dCyWNo818qcyWpzbvOljGceUkW/LqMfHesyDgGqPZENGf4cKMpLe18OwkaXctfaWBJ+tNyW4LL0Vxc1r5/0y6mcynDbeluGz8KYMp3035zUq6wH31j6SkercdjyTr3u5PV8u80C0yuv5cjBvl7n2Lk01+l4g1GhHstSwtlCLjIYRNmGhPQuxfFZSW6syPs38pok15Vx+PIm3674LsVbv4cjrMISvHT0VyKzZNrcAYvuyaP7BoqrNzcczWV/KsJeZq5OcaXPhXe2zg7kPGkiIPEdJMcZef9QWY4+dAJ4VsWSUNK9yFbYjzzIkmt+X6RcvfB3sJzLq7GhffCJ+JEPTnIAovyH6JMNs3nLMhfdj56p+KmXdFTrT7UMpkZwAToNvdDUrOEKZn6zK8++nPTxbhm8n8Y0M116imDF7G93B0uOlF1CzpGiY0xkNxn6VKSPOb7jG2D7ZryqNJt1aP+xp59Ry7mlWdnz5gz7S7u8DmjKc+4Dt+NV9wK81Ej6v17KkxPihlDCvDJ3pbI1g65khb+uYMryt87unPF9rpMjHrZNJymv7atWIz6aZEnynI2ZJutPwVRJ+l/x7D9F496zIlnGaxTTbRipNsn4mRaa/1+N4PXwqZVl6YT+6n/S1JquXaHp9omg9JBXkoPIcTT+SEuP0Uo7p4BVw+kxGiJ/JKNM1OJYaPpJx6h/nouDLntNXGXrfDcASkY8wl54c9yI8hSEwZYS59DxtW34pI6h1eOU0z7YMn3lWKxq6zzyb9RGnBciRp+Hf68M6HDhnZnNTgK7bf5diuklPr7VzXvNyDfxGkRWoQnl188PirPXNEdvnUqbX91E+r1qdzrRHPV53emvdmKajRU6WjNvfTr397bTK4fUsMGV4PQvUci32ehaEkKyDzula0FiV8LzZqzHet0WmDKctMl/TctmiNxVS6ehXrAq57QiYTPM+JwAp8Urgmy2yHilzOuCp5e/ldMCzZfi+vCGWDTLMXcG1/I2Za/W5myXL92TtT9J5kTyJiBu8gmwh58bXnCSWRlHFUtCfiGlp7Qm0rJ+LWZaRXRa+iTFD8R15Sjm+OHw/jT/LM/ncJ5k+xae810LsAq27y4+I3vHDejnP8taC4KA54zcx/dbob8v5cocy1dd1Y0uJaS4LIi3a/kBKsbfW1s5a/FRKWpcxM1/G/JkU8uQq5OjyB1I2BHe3K3eds8XUjMo1X35yXuay6sS5AWuKcM247JI4p1xvqsM757LOt9x229rQ8kYzUPN8y3mPUovRW533KE0ZznuUah3Geu9RqnW45bxHqdXe0fLdo/S3jTH0zE7iDGagtZiHU65gBpajfl0R6OqXy+HpB0LkCKOnCQdE+JEQdzADU0ibx8LnTp0lxA5VuGZeZ5q+ovX4gZjTYq3vX6aztp+KCXmJycZld7t6573bKjl+2kbON+mauaXkijfR7JvZrnATpgxntAk1z6d80Sb6ybwxE/VFm1D7UpivVs3W9T1b+Ka7HomuhvL0/Ge9PpQ1eIJ8PAbDivt7ijQGjznNKXOmxM7aP5spTY859mQ89EdT4alHSPLxhDof61JDDDum5ZaUN6unYx3dffl0fJtSb7igpRsuaKmm35Xh3OV6s7ZdIW4rx5X9g2q9fTZry3jsOSxVrD6r9hnvOtLkva6fSWll9tlWPtZF5xFgPI7woRT3JoatC3mOfTXZX6Wciqb7C/U3UpwL9TdSnAv1U0rdsFC3K3d2//Bl/+2H1eIz2u+qxWe0f9BEltEOx/2dWmsfXsqcYZ/H+XycV36wmR/WHaoU839/uJnvstnxCLevGgZLRKtzft74SY7vNVJv7+iYInw7Oma4P++Ojh0z0Lejc9rRsOMUzdo2KPPsOdb0umlg0m/uC51CvNt+r/eFTiHl7r6QLcO3L3TKkNv7QvEwz8Bc+0KnDL2/L/SDthGrbdLtjaF4pB2RrWxNXFEu42E9BexbH58yyv0tKluKd4/qjS7OTao3Upy7VG+klPn5q/U4DCnZDhpNYX40vl6vv5Xj3DR7I8e9a/ZWjnPb7F2L+/bN3knxbZzZo8m3x2MPa+fW2Rshvr2zs4X0vm0ox/29M1sTb73aLezbPHvXa727Z+/keLfP3srx7p+Zk0rf/pk9L/Xsn+kGL5XDdIVK0081Fnaokh8IkXlzNemX6Fs/EHKusPMcPkVfColHve/adWw4iT7un0Qf90+ijx0n0ceGk+izXTbEzwpvLvIvL/Mgr/tZMH2Z1g6tZl6p5x8IkXkHP3x5J+BJSDysy3g+d7dThvHl8rm7vZHhNCTWpzxUWQ+IVQmvG9iMmDI3hbIk/axtcp23RbJks23ahrbRDW2zwcibry+U+bmK55zPMK1tQ29tG3pr29Bb7Wv9K8r5Y8r16s28UPfM7M3T47lXfe66cZ9/nmc1M6J2mndWJBvLbPNw0bsZo/dDSJsyvJsx5m0v72aMdXbl3YzRvGMzxt021maM3Uumt/ipSv5MSAqzPOfpm3ws5LgvJNU12SPHw2chp51w7i2V+Kkmy8c66ceauILA/6A41laZWZw8v+WJj1W+a1J+XZP5sHc6D9I2CPl07JwrC5lCmhh1YvoHrEDWEi2LYqoi89g3SX1t7IP1uqm7t9lCdrSxhFUcwyoF8w2jQ2h/oHxcs/PCRWpGdzNX9s59oBBkwz6QqYnTh+rNTGnFtD/7zKsldQzR3taiSxv8NvdPpDhPJU1fV+ehVYj3H4U5hdx+FMaW4ZwnhXj/UZhoXlRyzpNC3PAozA/axti9MTuJ88wqpPumMVgvprudmS0hbmdmUxOvM7MpxOvMXLecy7xbvHm9kO16cXoh20KcXsjlvr9skdtHKbYM50lKsF528n5B7Ws43i9oTvdrVe8fpLzprm4v5LrlGOWdGO8pyps9w3V7sr4OgxKD+TpMlRnT7CGlfCTFObdIG278mvFYdG3ZazQuTVpPAZx1MHqc1Pb6nu1ZI9ZT7jWNL2mp7Fz6VRH7JQC6dsnRM6P+QIjM79e5y3W8FBLNUbhHyrl+O1ZXa59KkfXYFIcz+i7FOuqS+TEVPiD6kQx6BLO0D2Wcp3rL34JG3x9IsTwOfQ6ubypW1xmERqu/GaOntOk/ee4Srw+H/kBGXVGiaqUW1m9VondPiIPpkpBm+MuUhD39njaog4T7lsCaUp+VunyPK2/+f/sMWqE4ywzLci686itNTBHrbPZM5s9EuOrDOnJzW0ZTiNumSfttKX7LaEpxW0br/SyvZTTf4HJaxhZ2WEYrgJ7bMpoV67SMMaQd1sS6LukbPdHypfaZAVuEywy8EeEriN43A7YQ9wDW9NtS/GbAlOI2A9Z1F68ZsGR4zYB57cZtBixvL7cZMCvWbQbMONRrY4v0KOGriGh6e6W5gMyJb4fkr/GiYsob1jnRcnByDmPzFTrvMLafsnMOwHj8uhT3MLaleIdxtK5nOYexKcM5jE0Z7mFsfkO9w9iu2B3DWOfOpZZiDGPrgKmEebJagpTXw9ha+vmHseXk5BzGlpOiexjXHdPpaN3z2iPFP4xNKe5hbJ53OYexJcM7jM1bTe5hbHpteYexfZnPOYyz1VOWkMi18n0gW3Hszn32+T3+Eg/+eSBbm+X+gWxe9vINZPMVQO9ANoW4h6C1KbxHin8gm1LcA9l67tY7kC0Z3oFsyfAPZGv4uAeyWbE7BnJaJ2cp8EMm3waydeyV2wygkJUPz54HsmwZyPn2AUKUHQNZtgzkrL8txT+Q844DhFjuHyCYMrwDuew4QIhlwwGCXbHegWyeQqT1XEWiVyu1PBfHjMxJ4eFXYWr9gYwyTQF7wvxQxnwzo9Czhj+TUWe4gS9R6j+WUT6VMeujflwfddZH/bg+ZJZFPq4PlvFpffBTfp/Wx3pTRT6ujzbL0j6uD5bxaX20aUGafKyHDIPY2qd66DG+EfpxfbCMj/WYl9zUskHmIbU3SoElxB0YIFpHIBJm0wg/R/YHUszbZfIHdjml/IPieG/g20KcgRtMId64DdYpl/MwxhThO4xpt8+oo27wVrGFuKeJrf22FP9ks+04k416/0zWlOGdbOqOM9moG85k7Yr1TjZ1yxmI3j+T1R1nILrj9CIdx29LcY8eW4p39CQrzp1z9JgynKPHlOEePWlDMMM3FesdPWYk9zV6YuWnyjU/q2J5WYUZUiCFzLOtJyHm8RLfTOH3n+VZiGHd6oyhUTmYx49EzLsPld/k/ZmIY875XmphVkbpsdpgj44v64pnNawdgTIvc2WOoXFDiL4UYveyeRUkCgVY/d7L7OgXK3BFTs0ojuVTeMxrRzVwCI1nIeZtrhDnS/IhnENji5gQX4qxd1t0VQuNm6fdlmQdytImh4bXk/pkPublWhiksGG30xbi/vhF+W0p/k9o3OFGkNJ9NwJThvcTmna4EaS0wY3Arlj3bqe1QXgcy1QXjqdzPJfHujM7V/iZrk4875gmy38mzQVxjrxr8mQH4o6LEynp3cm02UncliBtmQabrzttkeK3BDnusARWpH+vJbBkeC2B+eKA2xJseMLrTcV6LYFdKXOCwi/a/lDGjFCiUu43jiHDHjtp3sN6zHU/FBLbdM1Ih1WrOw62TCGhv2J4TbVy+1CVEGbrnIfV5VMpNGNL+rEuZV1BLBTm66dS6rouTu+W/7REa/ikaJVow4WutOFCV9pyoSvVX++2aS5oQyryaaU47ZIpw2mXnI1jyjCnoM6ymDKcZXFOhS0ba65UvDbWXjN5bazs6KyyxcbKFhsrW2ysbLGxssXGyhYb2zbY2LbBxrYtNrb9erd129i2wca2DTa2bbCx5k65syymDGdZnDv2lgzzQMVpY98c7XhtrO7orLrFxuoWG6tbbKxusbG6xcbqDhubj/s21pThtLGmDLeNzcevd1uvjbUrxWeXbBk+u+RtHCmfnuX7ymLL8JXF61Ng2thjh43dsVeQw4bOagpx29g3Upw21pbitbG2FK+NfSPFaWPflMhrY+MGGxs32Ni4xcbGX++2bhsbN9jYuMHGxvs21naJW5cz+QW+H3nVrSCxHITmR46KzndkbCHO54bsywrOb06537beSxOWDNmwd/Lmdo33m5M2BCYwhfi/ObYU7zcn6Y5vjinF/c2xpXi/OXaJvN+cfD+ehinD+83JO+Jp5Pzr3db9zTErxfnNMWU4vznOxjFtm3mz02ljTRlOG+u8YWrWxw4bm7fY2LKjs5YtNrZssbFli40tW2xs2WJjyxYbWzfY2LrBxtYtNrb+erd129i6wcbWDTa2brCxZhgMp401ZThtrDMchyXDjJbitbF23BavjZUdnVW22FjZYmNli42VLTZWtthY2WJj2wYb2zbY2LbFxrZf77ZuG9s22Ni2wca2DTY23PezsGU4bWy47WdhB5bz2ti04www7whiaArx21jdYmN1i43VLTZWt9hY3WFjy3HfxpoynDbWlOG2seX49W7rtbF2pfjski3DZ5e8jSNmSNP7ZbFl+MriDfJqy9hgY+1owE4bW8KGzmoKcdvYN1KcNtaW4rWxthSvjX0jxWlj35TIa2PjBhsbN9jYuMXGxl/vtm4bGzfY2LjBxsYNdqncPgO0RbjOAO0L0nU+wBnpDPBbULpiPmszu/tq2PxckHbf58SW4fzetNs+J/bTD87vzZtHKLzfm7zhKqIpxP+9saV4vzemFPf3xpTi/t7YUrzfG7tE3u9NuX+D1pTh/d6UHTdo+7P3v9tt3d+bcn+vwZbh/N6U23sNb57G8Xxv3ojwfG/ePb80382s9IDn8/NLpZphr9sKuCBNXj+/ecqxXKSazigHGvjhvq8vrAazada7fcrP9j2uOj+pcvupg2D5rjhfYDJF+F5gKrdjRIe6IV6RLcR7ObrI8dtS3FesbSneK9ZF7scrMmV4PxWyI15RkQ3xiuyK9b5Np5bbpzdAQZHbAQqC5dDuHj26IzZ6afG3pfhHT9sRoKC0+wEKTBne0dN2BCgobUOAArtivQEKrLfB/R9RvR9pMt5/vyzef78s3n+/LO54vyzuiKxetoQONKX4zYDuiFhUj/vrLVOG0wyYMtxmoB471lu6JWJR2PARrcf91w1K3jB6TCHefl8P/W0p7tFjS3GPnnD/howpwzt6wo4bMnXHxS67Yr2jp5lbHr7XDWq4/7pBDfdfN7Bl+F43MGU4XzdwyyifyvC9bmDL8L1uYMpwvm7glvFpfThfN7Bl+F43MGU4Xzdwy/i0PpyvG9gyfK8bmDKcrxu4ZXysh+91A9OT0Pu6gSXE/bpBTTteN6jp/usGZnG8rxvYQpyvG5hCnK8bpOP2fqctwrVUeyPCFVLy2BFc9tgRXLbm9ttS/JPNvON1g1ruv25gyvBONsuO1w1q2fC6gV2xzsmmGSLav1Qrt183SDFtGD1xxxPrtR6/LcU/euqO04Ja758WmDK8o6fuOC2odcNpgV2x7qWatTXgfd2g1g2vG1TZ8LpBlduvG9giXK8bvBHhed3Aerfe+7pBlQ2vG/xAyOs4/nYvc75uUGXD6wZVNrxu0JvwpSbu1w1+IsZ43aA5fZGs1w0svznn6wa13X/dIO+IaZ63fPya/LYU/ye0bTkr0A1nBbrhrEC3nBXohrMCu2J3vG6Qj7beRSdT8O3IsOrt1w2q3n/dIO94Kqzq/dcNsuywBDvGsBzxt6W4LYEtxWsJ5LjvPGDKcFoCU4bbEsixwXnArliv6431xvs5BxqVko5ME7/w9B0V62ms0OZkKTTyc85PvoDmQ6becSzmm0c+JyDLj93tBGQKcY/ALa8emVL849iU4h7H1lUW7zi2ZHjHsXmlxj2OrXB27nFsVqz3i37s2FKSDb4zx4YtJVuIu9/H9ttS/KMn7tiQlXR/Q9aU4R09aceGrKQNG7J2xe74CqY0j0NSIv/+56+gKSQf6/j/qNH4lKb221JqK3kdEq0C1Z/I0PkEWtUoH8pYm1taDBn377fZMnz3SLwDx5JxbLjf9sbCOu+3ibXQcA8+S4j7ftsbKc77bbYU7/02W4r3ftsbKc77bW9K5LzfJtaxl/ebUfL9b4Ylw//NKL/ebb332+xKcdqlcj9embdxTBnmlNpZFlOGsyzOqb11V89ceXnvENtrQK+NrTs6a91iY+sWG1u32Ni6xcbWLTa2brGxssHGygYbK1tsrPx6t3XbWNlgY2WDjZUNNva4/46oLcNZFuc2qPXGXd4Qe+3NfrnXxrYdnbVtsbFti41tW2xs22Jj2xYb27bYWN1gY3WDjdUtNlZ/vdu6baxusLG6wcbqfRtrH/b6ymLL8JXFe+hs2tgdbzXnHe8v9aAQdzurKcRtY99IcdpYW4rXxtpSvDb2jRSnjX1TIqeNbeG+jTVlOG2sKcNtY1v49W7rtbF2pfjski3DZ5e8jWPatnr/HVFbhtPGOn1jLRsbN+zHvnGi9trYuKOzxi02Nm6xsXGLjY1bbGzcYmPjFhubNtjYtMHGpi02Nv16t3Xb2LTBxqYNNjZtsLHl/pmXLcNpY8vtMy/7cpXXxh473htqO8682pYzr7blzKttOfNqW8682pYzr7blzKttOPNqG8682pYzr1Z+vdu6beyGM6+24cyr3T/zenP51BPT8Y0IVwxh+0qw8x1RW4jzHVE7LIjzmxPuvyPqDU9ixvzM9785b+LYeL851r0q9+C1hPi/ObYU7zfHlOL+5phS3N8cW4r3m2OXyPvNMf2Xnd8cafe/OeaVM/c3p/16t3V/c+T+25u2DOc3x9k4pm07NuxPHxv2p4/b+9Mx7ngbJO54G6Tpjs6qW2ysbrGxusXG6hYbq1tsrG6xsbrBxuoGG6s7bKwev95t3TZWN9hY3WBj9b6NjfffBon33waxI9U6o9+3+94e3oi5lkedGdDY61Fnh1Z2WnoNG67QmkLclv6NFKelt6V4Lb0txWvp30hxWvo3JXJaeo33b36bMpyW3pTht/Tx17ut19LbleKzS7YMn13yNo5p2+T+SaQtw2lj5fZJpP3kgtfG1h0edZp2dNa0xcamLTY2bbGxaYuNTVtsbNpiY/MGG5s32Ni8xcbmX++2bhubN9jYvMHG5ts29s2TNK6Xj8r9XfJQ7+9N2zKcb9zV23vTYYdfX9ji16dlQ/htU4jf0ttSvJbelOK29KYUt6W3pXgtvV0ir6Wv96PGq7Prl0/18Fv6+uvd1m3pN9gl3WCXdINdsq6F1DIDrdcVByYePxGRdYrIL0VYPuA+JUwJLh3MMGr93R/Y1i8DNyS/jKozCgY/1fcjGW3ZeD3KRzLOb8OMcnnE12UJap1zp2MeUqejpQ+l+GISvJHhiknwToYnJoEdaI9iQ+bjs9b9IiN/KCMuGel1u0S1dghT1NHfUwr5RX28kZHmxy6lJq9lyO/KyGGWJcfwWdvOmJBRONzLj9plxmONoh9aENbjUxltzrzP5Kcy5tzBlnHbqrfbVj008w5nfw/8+li/th1vZMzoRmdSX8s4bn9obRmu+hBrVSazNs69LZpEPYWAtGXMPnomP5TRVtTgRq3yMxlt6tH41YsfyVirVH5W4Wcy5lg5xX2oh4bRw87kp/WhZcl43S7W7Ypc1iT7XMnclyH5Mxl1LpdzLceHMmR+FcToY9aiQ9awPXv96wBr6TDPr8qcF54Fo72Q+iNNXKHeTk1uh3qrVng1Z6S3uiFE21mWX5fiDfT2Rooz0Ns5Hb8d6M2W4Vuw2zK8C/ZTyv1Ab28q1hnozYps4R/E5lUt5yB+o4lzEMfbUYvbhvDl7dgx/FL8bSn+QZzijkGcyv1BnMr9QZzKjkGc2oZBnDbELLa+5uU41jsT8fUsK/VIii+lxBkCvUR6ReScLj0JsbYSJC7vfdr7fhJil2Zu/5VD1CpN3lGa8rulCTMm/Jn8bNZYUphlSTF9JiMuPWLZIUM+lDGf4/vaLj+SIXNFEOXjOq2rTuOHMuKSkQ+jp6bbfnFvZLh2zN2G1ZDRNhzktQ3neOkousE0W0K853jvpPjO8d5IcZ7jvZHiPMd7J8V3jveuRL5zvHRYj3B5ZxSWDO+MwpLhn1HUX++2znO8N5XitEqmDKdVcjaOfa8x3C9LDPfL4lx/GjLM3QGnhbV3KbwWVnZ0VdliYWWLhZUtFla2WFjZYmFli4VtGyxs22Bh2xYL236927otbNtgYdsGC9tuW1jzUn/S2dHyl3P58qEM/UxGnicnIafwoYy1XZJr/VTGKoscH8qY22GnZUwfypivPoZyGHpYu+Klzf20/JmEteDT9KGEufzVfFNCPT7UQeb54tE+ktCv+ENC0rs65NetaT3W7GtNU4KrNW0Jntb0SbBa05Tgak1Lgq81nTpYrWmulfOcDfKeTgxfXxk7Z4rWo4Uub5c3MlyeKqeM9rsyfN4utjPy/BzG9MV2P9epNdMvc7e8huPVtqGpRl4OMzxP+QM10v1N0GCdVTk3Qc3SlDg76rlz+LI0towya6TU1zUSmvkOZMnHlFKOD6U4HffaBse9dt9xz3yOyOV6Y0pwOd6k2+4/6bbzjxnWTed0S5VPH59OMG0ZayatHLnoSUYQMT3Cj/kE7Jmm9ezP5Dj7qC3D10ffyHA9eGVdQToaLf1aMmJC2VKmH9FDSnopxTqu8/YTW4a3n9RN/aRu6Cd1Qz+pt/uJYQTymk/R2i+copwCyjz4L0LfyqJeAa3NF9jPJH0pc/GLiNOd8qjhpYgUiulU1egIdfWMIMcPpJRjTqZKIP+DP5BihTnoT/ZeXgx00FZ/oknISxNumx+Vp0qZQeFEjo+lzI2K2sLHUnjUsaPokxTzTmVts6u045Pe9lWEGL3NtES+t47fVUhcFUIrqp9Wa1tGhNaG36VY/oTexrGl+NYi78ozT7rP8sinAzmmtQwo1vCxDqe860RThnONZ8VQ2yFjR9ucO/3TKMVqGQLzgapz8jTPHURyeT0teSOnHUsOf8j/QE7dJMdw52syZgRND5qaxB/VsKx+28watiKqzZV0OsJr42SJ8M2R3shwzZHeybg5RwoHzYErWwK3iLqMSY20BXjOqZ9KYl2Pajqn0Sl/osa5HTUdEs+O+FINc/tsjrzztCNaJTGPZGUdyeoavvJNiGlb47Kt1Eu/CbGe2DnH0jrCLJnmJt98aIMZQK3NnZbAlzZSKj+RIquBvsbx/SbFjlQS1rFQ/lRKnvOcUEKxpNy/Zf2DAsVgqWI2dV5zrpJp0vUHTe29sUDbYX+gjW5pJN1SM7qhqaO1seZvatMyrAuLqb2uXMtEhbraxzK28bDdnVelHKmQkQo/EpPT2nHI9B18EmN13FTS3MtJtYpVJOvuQ5rr5FMkfciOb81smd12zBOUM02TuG8VE6ywQbqul52rw5g/qZjz0Duv7l/SJ1+0rHMDohy0z16+lca8GzYaKNOtv3L8RITOeRsdO/9IRFkuvvTx+JmItVAnh4LiXmCXY876ysFKfKtNc3t8bhjWQt5W58b+sxTbIWiYAZKRsjzJsAMIpnnVJzdjchCtk600i5OD4bUSo3UI4/VAi3FDKLQ3ungv2ZjxUd3XY2K87yZlynC7SfUZ593vn10pzqstbwZQmTbtPB7KxgBKwdq1m/fChCfYITwPZmvnPq1lS1KyKaHFj4yKGibaelDpVKPO1XWNL/U4pVg7syp5rYzT690/U0oqc3/3/BAfn0qp0zMl8S7xH0ixXCqmd2zh6xjf69aaE+SjzvJwfwvP/c2MJFjXjED4xOrbCMphh8m27mR5TXbe8KTfKSXvMNmmFK9fa8wbjG3eYmzzDmNrNlCdrh5f4yt9U6UcO6rW+UZa2SDDfMvS7PhrkzeUTzu+e35QtswPyoYuW7Z02bKjy5Yt8wPT5tf5PWVFvtn8ah0HpOm1fy5x+dS1/UCTNjd4v4RL+a6J1d3KPNSP5i34WPOOr48ZVsP99bEu8Hi/PmYYZ/cgrDsCUUTrCMs7CC0Z/kG44SGtN5WyZRDq8lqg3aXvXd86wToP+es65C+fDsI22/gIwVLFelwzzPY5l+XZ6Pl2RAvvKLRf0fKOQuvkyDsKt0S1iC3sGIUt3h+FLe4YhW1DKBe7Uvyj0FpEyTpFkmot6Myog3V5L59pNTZFrXOxHZuiJYT5cQ+0y1v8EuL8npbHiHm53DZf01puMjlQzNDw7Iwd1eqyc46h7HxY00dloVnK97KYi6cide2ck1N4zT8Ss8L1nGky19/FWJMDmUVKjWJ+Pp97RpUt557RfMPKe+5pS/Gee6bj2HCkZkvxHoalHYdh/gJZp3tvmtp97pmOsuHc03yD+weNVDfUjC3F39S6o6nL/XPPtxamzdPGxPOnZwuTrLdz0wp0+MUrWH+kyroEfabpQvZ3VaxV2SHzUOtMt/byw5qsOIXuD+s7bZrOieV5nFsNMcaIVNrRSzz1d7td13Csy1Lh6UD4n0/887/+9R//8rd/+9c//+df/+3v//H4ZUyPAf+41BxzH/qPVJmpOlPyaNqH+NhmSkcqHT11/rsUZir21FnglGbqkUd8OE6lMlO1p86yp57Ho6ZTmykdqXzMVM/j0bA5zlSaqTxTZf6iztTMI888so5flGOmZh5l5lHS+EXJMzXzKDOPIvMXbaZmHnXmUcP4RY0zNfOoM49a5i/qTM086syjzrqSWVcy85CZh8y6kllXMvOQmYfMupJZVzLzaDOPNuuqzbpqM48282izrtqsqzbzaDOPNutKZ13pzENnHjrrSmdd6cxDZx4660pnXenMIxzHSs7aOlc0K5lWMq9kWT+rKykr2VZy1tp59rGSK7ewcguz5s4p+0qu3MLKLcj6WVvJlVtcucVZg+eSfCVXbnHlFsv6WV3JlVtcucVVk2nVZFq5pZVbWjWZVk2mlVtauaVVk2nVZFq55ZVbXjWZV03mlVteueVVk3nVZF655ZVbXjVZVk2WlVtZuZVVk2XVZFm5lZVbWTVZVk2WlVtduV1Woj6ScSXTSuaVRG7ySNaVlJVsK6nzZ5e56MmVm6zcLovx+NllMnpy5SYrt8tq9J+1lVy5tZXbZTkeP7tMR0+u3NrK7bIe/Wd1JVdubeV2WZDHzy4T0pMrN1256apJXTWpKzdduemqSV01qTO3eBwrOWsyHnEl00rmlSzrZ3UlZSXbSs6ajOFYyZVbWLmFWZMx5JVcuYWVW5D1s7aSK7e4couzJmOMK7lyiyu3WNbP6kqu3OLKLa6aTKsm08otrdzSqsm0ajKt3NLKLa2aTKsm08otr9zyqsm8ajKv3PLKLa+azKsm88otr9zyqsmyarKs3MrKrayaLKsmy8qtrNzKqsmyarKs3OrKra6arKsm68qtrtzqqsm6arKu3OrKra6alFWTsnKTlZusmpRVk7Jyk5WbrJqUVZOycmsrt7Zqsq2abCu3tnKDLXlEP46wJUjKSraV7LmlPt89VrLnlh7CYEuQ7LmlhzqwJY/b1BG2BMmeW+lJWcme22P6H2FLHskEW4Jkz016Mq5kWsme2+OiSIItaT1ZV7Ln9vA8SLAlSPbcHi6GqduSHhMtdVtyJeNKppXMK1lWsq6krGRbSZ3JuHKLK7e4cosrt7hyiyu3uHKLK7e4cosrt7RySyu3tHJLK7e0cksrt7RySyu3tHJLK7e8cssrt7xyyyu3vHLLK7e8cssrt7xyyyu3snIrK7eycisrt25LegTc1G3JlawrKSvZcwv9Zz23x8BJ3ZZcyZ5bfwHi//z5H3/98//6218eK8rHovO//v6vY4F54n/+f/8+/uZ//eOvf/vbX//ff/n3f/zbv/7lf//XP/7yWIz2dejx+M+jD/7PU3gMj8VquP78f57fuXPT4PxvTf98Zow/OQ9tz/9K/ud/ws9OCO3xR/Hxjx5d+PFH0v+oHQ95cchL55hKbcg66/WfztIOOWdD/dNZ60NGOvf3U9PH79Pj9/0X8Z9yHP/+3Ogs9fHXeZbgPMGL5x89ltz/Pw==", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "add_lock_public_user", @@ -1928,21 +2054,14 @@ "error_kind": "string", "string": "Function add_lock_public_user can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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Ui0CAAAtCjAcBCosHAsAKh0LHBwKLgsAJwIdAEgnAiEEKy0IACstCgUsLQodLQAIACEAJQAAGlItAgAALQosHgQqCx4dACocHQsnAhwAaCcCHgQrLQgAKy0KBSwtChwtAAgAHgAlAAAaUi0CAAAtCiwdBCoKHRwAKgscChwKKgsAJwIcAHAnAh4EIS0IACEtCgUiLQocIwAIAB4AJQAAGlItAgAALQoiHQQqCx0FACoKBQstCAEFJwIKBBgACAEKAScDBQQBACIFAgotCgocLQ4LHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcACIcAhwuDIBHABwAIhwCHC4MgEcAHAAiHAIcLgyARwAcLQ4FCRwKHwUAHAoSCgAcChYLABwKGBIAHAoaFgAcChsYABwKERoAHAoOEQAcCgQOAC0IAQQnAhsEDAAIARsBJwMEBAEAIgQCGy0KGxwtDgYcACIcAhwtDgUcACIcAhwtDiAcACIcAhwtDgocACIcAhwtDgscACIcAhwtDhIcACIcAhwtDhYcACIcAhwtDhgcACIcAhwtDhocACIcAhwtDhEcACIcAhwtDg4cHAoZBQAcCggGABwKDAgAHAoTCgAcChQLABwKFQwAHAoPDgAcCgMPAC0IAQMnAhEEDAAIAREBJwMDBAEAIgMCES0KERItDgcSACISAhItDgUSACISAhItDhASACISAhItDgYSACISAhItDggSACISAhItDgoSACISAhItDgsSACISAhItDgwSACISAhItDg4SACISAhItDg8SACISAhIuDIBKABIuCIBFABcjAAANqw0iABeATgAFJAIABQAAEg4jAAANwC0LCQQtCwQFACIFAgUtDgUELQgBBScCBwQEAAgBBwEnAwUEAQAiBQIHLQoHCS4MgEcACQAiCQIJLgyARwAJACIJAgkuDIBHAAkrAgAHAAAA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", - "debug_symbols": "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", - "brillig_names": [ - "add_lock_public_user" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "commit_private_user", @@ -2024,7 +2143,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -2080,7 +2199,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -2109,7 +2228,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -2303,7 +2422,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -2634,351 +2753,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "function_selector", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ + }, { - "name": "inner", + "name": "function_selector", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "is_static_call", + "name": "args_hash", "type": { - "kind": "boolean" + "kind": "field" } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "returns_hash", + "type": { + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -2987,30 +3205,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -3067,26 +3281,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -3095,53 +3324,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -3150,50 +3406,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -3202,17 +3467,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -3235,7 +3500,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -3291,7 +3556,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -3320,7 +3585,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -3514,7 +3779,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -3649,22 +3914,23 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "285656119219400463": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "Field failed to decompose into specified 32 limbs" }, - "2709101749560550278": { + "576755928210959028": { "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." + "string": "0 has a square root; you cannot claim it is not square" }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -3672,22 +3938,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -3696,6 +3956,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -3704,29 +3968,6 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6418028854678020178": { "error_kind": "string", "string": "FundsNotSent" @@ -3743,45 +3984,84 @@ "error_kind": "string", "string": "Invalid public keys hint for address" }, - "11418088424205762236": { + "10090043878309646342": { "error_kind": "fmtstring", - "length": 98, + "length": 101, "item_types": [] }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -3797,13 +4077,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -3812,52 +4088,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc8s8t8xzyzy3zHPLPLfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfMc88898xzzzz3zHPPPPfM8yj+qh6kSZbkSTWpTYo871SSKImTUoNTg1ODUyPyvAa1SZHnnUoSJXGSJGmSJXlSakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhq1NSoqVFTo6ZGTY2aGjU1amrU1Kip0VKjpUZLjZYaLTVaarTUaKnRUuPO80b/cH/yeyWVpIdGkyBOkiRNsiRPqklt0p3ng0pSapTUKKlRUqOkRkmNkholNSg1KDUoNSg1KDUoNSg1KDUoNSg1ODU4NTg1ODU4NTg1ODU4NTg1ODUkNSQ1JDUkNSQ1JDUkNSQ1JDUkNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1LDUsNSw1LDUsNSw1LDUsNSw1LDU8NTw1PDU8NTw1PDU8NTw1PDU8NWpq1NSoqVFTo6ZGTY2aGjU1amrU1Gip0VKjpUZLjZYaLTVaarTUaKnRpkYUqw0qSZTESZKkSZbkSTUpNTLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLP28xzumae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae03WlRkmNkholNUpqlNQoqVFSo6RGSY2SGpQalBqUGpQalBqUGpQalBqUGpQanBqcGpwanBqcGpwanBqcGpwanBqSGpIakhqSGpIakhqSGpIakhqSGpoamhqaGpoamhqaGpoa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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "notify_created_nullifier_oracle_wrapper", - "notify_created_note_oracle_wrapper", - "random", - "decompose_hint", - "lte_hint", - "field_less_than", - "build_msg_block", - "attach_len_to_msg_block", - "get_random_bytes", - "get_random_bytes", - "get_app_tag_as_sender", - "increment_app_tagging_secret_index_as_sender_wrapper", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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6DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbT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cy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWjKeZnFzpkbzD5qbM7Xnoms3LTFzpvZ8peimJWbO1J4ryt205PmxQzctMbO4Wd1sbnY3Z2o8TXZT3Bxu6jJNS8wsblY3m5vdTU9NPDXx1MRTE09teGrDUxue2vDUhqc2PLXhqQ1PbXhqw1NTT009NfXU1FNTT009NfXU1FNTT01XanQcbhY3q5vNze4mucluipvDTU+teGrFUyueWvHUiqdWPLXiqRVPrXhqxVOrnlr11KqnVj216qlVT616atVTq55a9dSap9Y8teapNU+teWrNU2ueWvPUmqfWPLXuqXVPrXtq3VPrnlr31Lqn1j217ql1T408NfLUyFMjT408NfLUyFMjT408NfLU2FNjT409NfbU2FNzLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtEdcScS0R1xJxLRHXEnEtEdcScS0R1xJxLRHXEnEtEdOSZ3i2mJaYOVOT+QcztefavJiWmDlTe8bqimmJzp/pMk1LzCxuztSenz6JaYmZz9Ta83s3mVpymjxNfpoyzWd2ppac5jO1x1LJw5xacprP1FqfZnWzTfOZh6kl7fmiIFNLTnOm9pzxy9SS0xxu6jKnlpxmcbO62dzsbpKbnlr31Lqn1j018tTIUyNPjTw18tTIUyNPjTw18tTIU2NPjT019tTYU2NPjT019tTYU2NPjT01sdSenUCKm9XNmdozvlamlpwmucluipvDPegyh6c2tcT+dmrJaXpqw1Mbntrw1IanNjy14ampp6ZeNvWyqaemnpp6auqpqac2teQ09TLH1JLTLG6u1MbR3OxukpvspriH4aanVjy14qmV6mZzs7tJbnpqRdwcbq6aHPVw01Ornlr11KqnVj21ym562aqXrXrZmqfWiptek81rsnlNNk+teWrNU2ueWvPUutdk97J1L1v3snVPrXu7da/J7jXZvSa7p0aeGnlq5KmRp0Zek+RlIy8bednIUyNvN/aaZK9J9ppkT409NfbU2FNjT429JtnLJl428bK5lgzxdhOvSfGaFK9J15Ihnpp4asNTcy0ZriXDtWS4lgzXkjE8teHt5loyXEuGa8lQT009NdeS4VoyXEuGa8lwLRmuJcO1RI+Vmh7Fzepmc7O7Se6B3RQ3h5uemmuJupaoa4m6lmjx1Aq5yW6Km8NNT616aq4l6lqiriXqWqKuJepaoq4lWj21utpNXUvUtURdS7R5as1Tcy1R1xJ1LVHXEnUtUdcSdS3R7ql1bzfXEnUtUdcS7Z5a99RcS9S1RF1L1LVEXUvUtURdS5Q8NfJ2cy1R1xJ1LVH21NhTcy1R1xJ1LVHXEnUtUdcSdS1Rn5eoz0vUtURdS9S1RH1eoj4vUdcSdS1R1xJ1LVHXEnUtUdcSHZ7a8HZzLVHXEnUt0eGpqafmWqKuJepaoq4l6lqiriXqWqLqqelqt3K4mDzsAnYFe6X4sDvYBDaDLWAPsNVtl5WHXcCGdEsDu4NNYDPYkG6BdAukWyHdCum6xDxsKG+F8lYob4V0q4A9wIZ6blDPDdJtkG6DdBuk2yDdBvXcoLwNytugvB3S7dC+Heq5Qz13qOcO6XZIt0O6HdLtkC5BPROUl6C8BOUlSJegfQnqmaCeCeqZIF2GdBnSZUiXIV2GemYoL0N5GcrLkC5D+wrUs0A9C9SzQLoC6QqkK5CuQLoC9SxQ3gHlHVDeAekOaN8B9TygngfU84B0B6Q7IF2FdBXSVahnhfIqlFehvArpKrSvQj2DXhXQq+JvUg+7gt3A7mAT2Ay2gD3A9vKWAumWAnYFu4HdwYZ0C6QLelVArwroVQG9KqBXBfSqgF6VCulWApvBFrAH2JBug3RBrwroVQG9KqBXBfSqgF4V0KvSIN0G7Qt6VUCvCuhV6ZBuh3RBrwroVQG9KqBXBfSqgF4V0KtCkC5B+4JeFdCrAnpVCNIlSBf0qoBeFdCrAnpVQK8K6FUBvSoM6TK0L+hVAb0qoFdFIF3QqyJQXoHygl4VgXQF0hVIF/SqgF4V0KsyoLznfKpOey1iPU9NAZvBFrAH2Oq2HmAXsCvYDWxIVyFdhXQV0lVIVz3dehxgF7Ar2A3sDjaBzWAL2ANsSLdAugXSLZBugXQLpFsg3QLpFkjXX99K9bWgUn0xqFTQqwp6VUGvKsyvKsyvKuhVBb2qoFcV9KqCXlXQqwp6VUGvKuhVBb2qDdJtkC7oVQW9qqBXtUO6HdIFvaqgVxX0qoJeVdCrCnpVQa8qQbpUwK5gN7A72JAuQbqgVxX0qoJeVdCrCnpVQa8q6FVlSJcJbKhn0KsKelUZ0hVIF/TKAoEvG9KF+VUFvaowv6owv6qgV1WgfQfU84B6hvlVHZDugHQHpDsgXZhfVZhfVZhfVZhfVZhfVYV0FdpXoZ4V6hnmV1UhXYV0fW2pNF+oLg3mVw3mVw3mVw3mVw3mV82Xq0s7BOwBttdzg/lVg/fBViDdAukWSBfmVw3mVw3mVw3mVw3mVw30yiKHL7uC3cDuYEO6FdKtkG6FdEGvGuhVA71qoFcN9Ko1SLcR2FDPoFcN9KrB+2DrkC7oVQO9aqBXDfSqgV410KsGetU6pNuhfUGvGuhVA71q8D7YCNIFvWqgVw30qoFeNdCrBnrVQK8aQ7oM7Qt61UCvGuhVg/fBxpAu6FUDvWqgVw30qoFeNdCrBnrVYH7VYH7VQK8a6FUDvWowv2owv2qgVw30qoFeNdCrBnrVQK8a6FVTSFehfUGvGuhVA71q8D7YFNIFvWqgVw30qoNeddCrDnrVQa+6L4iX7rtrpYNeddCrDnrV4X2ww/pVB73qoFcd9KqDXnXQqw561UGvOsyvOsyvOuhVB73qoFcd5lcd5lcd9KqDXnXQqw561UGvOuhVB73qDdL1nbfSQa866FUHverwPthh/aqDXnXQqw561UGvOuhVB73qoFe9Q7od2hf0qoNeddCrDu+DHdavOuhVB73qoFcd9KqDXnXQqw561RnSZWhf0KsOetVBrzq8D3ZYv+qgVx30qoNeddCrDnrVQa866FWH98Eu0L6gVx30qoNedXgf7PA+2EGvOuhVB73qoFcd9KqDXnXQqz4g3QHtC3rVQa866FWH9asO61cd9KqDXnXQqw561UGvCPSKQK8I1tvJ9+8KgV4R6BWBXhGsXxGsXxHoFYFeEegVgV4R6BWBXhHoFcF6O/luXiHQKwK9ItArgvdBgvdBAr0i0CsCvSLQKwK9ItArAr0iWG8n39srBHpFoFcEekXwPkiwfkWgVwR6RaBXBHpFoFcEekWgVwTr7dShfUGvCPSKQK8I3gcJ1q8I9IpArwj0ikCvCPSKQK8I9IpgvZ0I2hf0ikCvCPSK4H2QYP2KQK8I9IpArwj0ikCvCPSKQK8I1q8I1q8I9IpArwj0iuB9kGC9nUCvCPSKQK8I9IpArwj0ikCvCNbbaUD7gl4R6BWBXhG8DxKstxPoFYFeEegVgV4R6BWBXhHoFcN6O8P+IINeMegVg14xvA8yrLcz6BWDXjHoFYNeMegVg14x6BXDejvD/iCDXjHoFYNeMbwPMugVw/yKYX7FoFcM74MM6+0M61cMesWgVwx6xTC/4nN+Vaft63XcGtgdbAKbwRawB9i+TsgeLFnYoyULd0i3Q7od0u2Qbod0O6TbId0O6RKkS5AuQboE6RKkS5AuQboE6RKkS5AuQ7oM6TKky5AuQ7oM6cL7IMP6FcP6FYNeMegVg14xzK8Y5lcMesWgVwx6xaBXDHrFoFcMesWgVwx6xaBXDPuDDPuDDHrFoFcMesXwPsiwfsWgVwx6xaBXDHrFoFcMesWgVwz7gwz7gwJ6JaBXAnol8D4osH4loFcCeiWgVwJ6JaBXAnoloFcC+4MC+4MCeiWgVwJ6JfA+KLB+JaBXAvuDAvMrgfmVgF4JzK8E5lcCeiWw3i6w3i4QzyAwvxJ4HxRYvxJYvxJYbxeYXwnMrwTmVwLzK4H5lcB6u8D+oMD+oEA8g8D8SuB9UGD9SmD9SmC9XWB+JTC/EphfCcyvBOZXAuvtAvuDAvuDAvEMAvMrgfdBgfUrgfUrgfV2gfmVwPxKYH4lML8SmF8J6JXA/iCEfheI/S4Q/F0g+rtA+HeB+O8CAeAFIsCLgF4J6JWAXkEUeBFYbxeIZxDQKwG9EtAriAUvAutXAnoloFcCeiWgVxARXiAkvEBMeBFYbxeIZxDQKwG9GqBXEBleBqxfDdCrAXo1QK8G6BXEhxcIEC8QIV4GrLcPiGcYoFcD9GqAXkGceBmwfjVArwbo1QC9GqBXEC1eIFy8QLx4GTC/GjC/GqBXA/RqgF5B1HgZML8aoFcD9GqAXg3QK4gdLxA8XiB6vAxYbx+wPzhArwbo1QC9ghjyMmD9aoBeDdCrAXo1QK8gkrxAKHmBWPIyYL19wP7gAL0aoFcD9AoiysuA9asBejVArwbo1QC9grjyAoHlBSLLy4D51YD51QC9GqBXA/QK4svLgPnVAL0aoFcD9GqAXkGUeYEw8wJx5mXAevuA/cEBejVArwboFUSblwHrVwP0aoBeDdCrAXoFMecFgs4LRJ2XAevtA/YHB+jVAL0aoFcQe14U1q8U9EpBrxT0SkGvIAK9QAh6gRj0orDerrA/qKBXCnqloFcQiV4U1q8U9EpBrxT0SkGvIB69QEB6gYj0ovA+qLA/qKBXCnqloFcQl14U3gcV9EpBrxT0SkGvIDq9QHh6gfj0orDerrA/qKBXCnqloFcQpV4U1q8U9EpBrxT0SkGvIFa9QLB6gWj1orDerrA/qKBXCnqloFcQs14U1q8U9EpBrxT0SkGvIHK9QOh6gdj1orDerrA/qKBXCnqloFcQwV4U3gcV9EpBrxT0SkGvII69QCB7gUj2orDerrA/qKBXCnqloFcQz14U1q8U9EpBrxT0SkGvIKq9QFh7gbj2orDerrA/qKBXCnqloFcQ3V4U1q/U9aoerlf1cL2qh+tVhfj2CvHtFeLb6+Hr7fXw/cF6uF7Vw/WqHq5XFeLb61Eg3QLpFki3QLquVxXi2yvEt1eIb69HhXR9/aoerlf1cL2qh+tVhfj2elRIt0K6FdKtkG6Dem5Q3gblbVDeBun6/mA9GtRzg3puUM8N0u2Qbod0O6TbId0O9dyhvB3K26G8HdLt0L4E9UxQzwT1TJAuQboE6RKkS5AuQT0TlJehvAzlZUiXoX0Z6pmhnhnqmSFdhvIylFegvALpCqQrkK5AugLlFSivQLoC5T3nV/Vpn++DNG1Ld0x7pivz702vxP5+piv29zPd541i9YxvP+2Z7vNqoXrGt5/2THdM/6ZXpz3T1enf9Ert3xvYHeyZrs6ym16d9jPd/jzutVp8+2XrtJ95tvj2yy7THtOuYDewn+n2ckybwOZp67QF7AG2uj31qtcy7QJ2BXumW9u0Z7p15nPq1WXPdJ9HH1eLb7/smW6beZt6ddpTry57pvs8Cb9afPtlz3T7zMPUq8smsGe6feZt6tVlz3T7zNvUq9OeetWfZy9Xi2+/7Ar2TPd54li1+PbLnunOvm3x7fPc6mrx7Zc9wJ7p8szP1KvLnuny9Dn16rIb2DPd2ectvv2yZ7qzP1t8+2UPsGe6MvM59eqyZ7pj1u3Uq8ue6Y5Z9qlXlz3THdPn1KvLFrBnusP8q9tTr/ocFxbfftkV7Ge6j53xaXewadozb1OvLvuZ7mMXe9oDbHV76tVjR3vaBew67Znu1Cuq0+fUK7K+PfXq+ncGW8AeYKvbU68uu7jPqVfXvzf49w7/DukOSHcI/D2kOyBdhXS1gF39twrlVUhXIV1l+Hsorw74d0/X4tv//9LuaMe13brS8Lv4el+I5CAn2a8SGEHidjcMGHHgThoIAr97qpZUhx+QIDe5ORhn7dr6NUnpLy5pAPt9/d1v/7neyYMcfn5yfXG9uL65Dre9yHDbnffdb/+5HvLkZxbXi+ub6+de73A73M68HW6H2+F2uJ15O9wOd8AdjetwB9wBd7DOg3UecAfrPFjnwA3cwA3cwA3cMG/ghnkDd/K6mqzzhDsHPwN3wp1wJ/s74U7WeTHvgrt4XS3mXbyeF9zFOi/mXXAX8xbcgltw8VUv5i1eV/iq46uOrzq+6viqb7gb7oaLrzq+6viq46uOrzq+6of9xVcdX3V81fFVP8x74B64By6+Gvhq4Kvx6lwfXA958jOL60XeZLj4auCr0Tr5vp4Hvhr4auCr0eDiq9Hg4quBrwa+Gh0uvhp9khc/AxdfDXw18NXAVwNfDXw18NXAV2Mw7ygeBy6+GmF/w7xhf/HVSLgOF1+NwMVXA1+NybyTefHVmHAnXHw18NWYrDO+GhMuvhoL7oK72N/FOuOrseAu5sVXY7G/+GoU3IJbcPHVwFcDXw18NWrzM8yLrwa+GpyvBr4am3XGVwNfjQ13w8VXg/PVwFfjwMVX48DlfDU4Xw3OV4Pz1cBXwVfBV+F8FXwVzlfhfBXOV8FXwVd53f0NvkprXIeLr4Kv0uDiq3C+Cr4KvkpnXnyV3rnOvJ158VU4XwVfBV+lwx1wB1x8FXyVARdfBV+F81XwVQbrzPkq+Cr4KvgqnK+Cr4Kvwvkq2TwO83K+CuerTLj4Kvgq+CqT1xW+Cr4Kvgq+CuercL4K56twvgq+CuercL7KYl7OVynm5XwVfBV8FXwV7gdTcPFV8FXwVfBV8FU4XwVfhfNV8FU2XHwVfBV8Fc5XwVfhfBV8FXyVj6/y5Dd3PvnNrSdv8vktz4+v3rmRO3mQQ57kRS7yJsNtcBvcBrfBbXAb3Aa3wW1wG9wOt8PtcD++2k8OeZIX+c09T95kuAPugDvgDuYdzDuYdzDvYN7BvANu4AZu4AZu4AZu4AZu4AbuhDvhTrgT7mSdJ+s8WeePr96Zdf746skL7oK74C64i3kX8y7mXcy7mHcxb8EtuAW34BbcgltwC27BLbgb7oa74W64m3XerPNmnTfrvFnnzTofuAfugXvgHuY9zHuYF19NfDXx1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXq11vrBbyJC/y9cZqmwwXXy18tfDV6szbmbczb2fezrydefHVwlcLXy18tfDVwlcLXy18tfDVwlcLXy18tT6+etbq46t3Zp3DOn989azhx1fvDBdfLXy18NXCVwtfLXy1JvNO5p3MO+FOuBMuvlr4auGrha8Wvlr4auGrha/Wx1fP+nx89eSPr96Zdf746lm3j6/eGS6+Wvhq4auFrxa+Wvhq4auFrxa+Whvuhrvhbrgb7oaLrxa+Wvhq4at1eF0d3r+H9+8pMu/fcz1Z+KrwVeGrwleFrwpfFb4qfFX4qvBV4avCV4WvivNVcb4qzlfF+ao4XxXnq2r3dVX9RW7kTr6vq/r46p3h4qvCV4WvCl8Vvip8Vfiq8FXhq8JXha8KXxW+KnxV+Ko4XxXnq8JXha8qk7zI9/dCZZPh4qvCV4WvCl8Vvip8Vfiq8FXhq8JXha8KXxW+KnxV+KrwVS3mXUXeZF5XH1896/Dx1TvD5XxV+KrwVeGrwleFrwpfFb4qfFX4qvBV4avCV4WvCl/VZt7NvIf30eF9dK6f6/A+4nxVnK+K81VxvirOV8X5auOrja82vtr4auOrja82vtr4auOr/brz7vYiN3In33l3Cxkuvtr4auOrzflqc77anK8256vN+Wpzvtr4auOrja82vtqdeQfzDuYdzDuYdzAvvtr4auOrja82vtr4auOrja8294Ob+8HN/eDmfnBzvtq5r+cd5p3MO5l33tfznsyLrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNr/a+v48294Ob+8HN/eDe9/fR5n5wc77anK8256vN+Wpzvtr4auOrja82vtr4ap+7zuf1IjdyJ9/X1XmFfLkHXx18dfDV4Xx1OF8dzleH89XhfHW4HzzcDx7uB08r8l3n0+558uCrg68Ovjr46uCrg68Ovjr46vT7ej746uCrg6/OuO/fg68O56uDrw6+Ovjq4KuDrw6+OtwPHu4HD+erw/nqcD94uB88+OpwP3g4Xx3OV4fz1eF8dSZcPr86fH51+PzqzPs+Onx+dfDVwVcHXx18dfDVWXAXXHx18NVZcBevKz6/Onx+dfDVwVen4BbcgltwC27BxVcHXx18dfDVwVcHXx18dfDVwVcHXx18dThfncPr6sDlfvAcXleH1xW+Oof30fXVeF1fjdf11Xi9fnsfjdf11Xi9ws9M8iIXefN3z81vX408uZE7eZAf7phPnuSHOx7W21ff/yDUePfbf/K5+e2r9Cc38sPN85hvX31yyJP8cFNPLvLD/e55jne//ZPfvvrkhzuf5/z21Sc/3O/O53j323/yw/3ufI53v/0nP9z1fsxNPje/fbWex3/76pMfbj3P+e2rTw754dazX29fffLD3c9ze/vqkx/uedb57atPbuSHe541f/vqkx/ueZ7z21ef/HDP85zfvvrkb+7XJ65PPjc/vvrJ7cnPWj2++snf3NUe7uOrnzzJi1xPfl6Hj69+8rn58dVqz3N+fLXa8zwfX/3kh9ufdXh89ZMfbn+e2+Orn1zkh9uf197jq09+fLXe75HHVz+5kx/ueJ7b46uf/HDf753HVz/54b5fz4+vfvK5+fHV1yeWT27khzuf9X989ZNDfrjzmevx1U8u8sOdb9b5Lb/77V+fED65kTv54X53j8e73/6TH+53J3+8++0/ucibfG5+fPWTG7mTBzlk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Gr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46v3v32+v53W+a7317f/zbTfPfb6/vfRZrvfvvXtw9PfrhjPDnkh5t3XuSH+/1vrMx3v/0nn5vfvprPc3j7aj7P4e2rT36483nOb1998sNdz3N7+2q1v/363f//h7/+6R/+8c9//H+/+1///vW//+df/+kP//Knv/zT53//5d/++edP/vGvf/rzn//0f//+n//6lz/88X//61//+Pd//ssfvv/sd6/v/3y/5P+urV+9/f7rh9vn+t99vRXSvy5+Hft+/+t3431l5ftK5etK+/zQ1xp//bd//9D3G+b7Uj2X9uv78fr3433/7dF/pf/8va9Fmev7j8dvz6C3X/25lP/8pObPg/T9a+yfB0l+5Xz/8frPf6Pu43495een9r1Uv0b/vnTuXzy/ep75Xz8L8PU7+9fX767P8F8nll9fp4cf9tfh4et/98/QX7/Xvn72efqt/U8foN9nVb/680Tb+C+u5betGl8LPs9vm/LF/XoT/rYha3yt7Hz+yvzvd6PdlRznV94LUv/l4n/+/G9/+/3f/gM=", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "commit_public_user", @@ -3992,21 +4236,14 @@ "error_kind": "string", "string": "Index out of bounds" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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EwAqGBMUHAoKEwIcChEKAgQqEy8RBCoKORMAKhETCi0IAREAAAECARwKEhMAJwISACAnAh4EPy0IAD8tCgtALQoSQQAIAB4AJQAAI9MtAgAALQpAGAQqOxgSACoTEhgnAhIAQCcCHgQ/LQgAPy0KC0AtChJBAAgAHgAlAAAj0y0CAAAtCkATBCo8ExIAKhgSExwKPhIAJwIYAEgnAh8EOy0IADstCgs8LQoYPQAIAB8AJQAAI9MtAgAALQo8HgQqEh4YACoTGBInAhMAaCcCHgQ7LQgAOy0KCzwtChM9AAgAHgAlAAAj0y0CAAAtCjwYBCoQGBMAKhITEBwKOhIAJwITAHAnAh4EHy0IAB8tCgsgLQoTIQAIAB4AJQAAI9MtAgAALQogGAQqEhgLACoQCxItCAELJwIQBBgACAEQAScDCwQBACILAhAtChATLQ4SEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATACITAhMuDIBHABMAIhMCEy4MgEcAEwAiEwITLgyARwATLQ4LERwKGgsAHAoXEAAcChkSABwKGxMAHAocFwAcCh0YABwKFRkAHAoUFQAcCgoUAC0IAQonAhoEDAAIARoBJwMKBAEAIgoCGi0KGhstDgwbACIbAhstDgsbACIbAhstDhYbACIbAhstDhAbACIbAhstDhIbACIbAhstDhMbACIbAhstDhcbACIbAhstDhgbACIbAhstDhkbACIbAhstDhUbACIbAhstDhQbHAoJCwAcCgcJAC0IAQcnAgwEDAAIAQwBJwMHBAEAIgcCDC0KDBAtDgYQACIQAhAtDgsQACIQAhAtDggQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAuDIBHABAAIhACEC4MgEcAEAAiEAIQLgyARwAQACIQAhAtDgkQACIQAhAuDIBKABAuCIBG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", - "debug_symbols": "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", - "brillig_names": [ - "commit_public_user" - ] + "bytecode": "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LQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLS0KFSUjAAAZnwwqJScsJAIALAAAMa0jAAAZsS0LDiUEKjMlDgAqKg4lHAo1DgAtCAEqAAABAgEtDiMqLQgBLCcCLQQhAAgBLQEnAywEAQAiLAItLQotLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4tChUhIwAAGxEMKiEnLSQCAC0AADE9IwAAGyMtCyosBCoOLCoAKiUqDi0IASUAAAECAS0OIyUtCAEqJwIsBCEACAEsAScDKgQBACIqAiwtCiwtLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQIt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", + "debug_symbols": "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" }, { "name": "constructor", @@ -4041,18 +4278,15 @@ } } }, - "bytecode": "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", - "debug_symbols": "tZnbbhs5DIbfxde5kMSDpLxKURRp6i4CGEngJgssirz7khKpsVNIyE63N55v6NFvkqKomfHPw7fj19e/vjw8fn/6cbj99PPw9fxwOj389eX0dH/38vD0KNafh6AfVT7x5lDpcJvlUNshBrSjnUc7j3ae+HBb5Ahox9KPCHa0c0p2zP3Ich6DQjbIZFCCg2hGUCgGFRzMkgI4uCWqjgSSEjhkA0gObIDRQS0sQOhQDVh1qkI2yMnBLcUtxS2axyRRgHrYQb5KSSAmB7XIT0CKDmwAbgG3oDgGqoPVgNxCxUBd7eCW7JbsFnW1AxvU6EAdMAQH/QlSKAYRHNyS3JLconnuwAaa5w5kQMFBf0ICRC2ADtWg+FfFLdUt1Syk6e2QDTS9HdhA09vBfoIgOKggKhQDrdwO2YCiAxtwcPDhXA1aFA3cUvya4hYtY8gKuQOHZBDd0vyRQmKUrzAoZAMiA3Wjg/wERoVqoPPeIRuU6EAOfnH14dUsOYCDDc8xOpCDX5z84uQXa/ViUqgGmlUEhWKgyWzAejEpqEWaQ85ioaAgFlJBdb5DNVCfSUepzySjitYqVYVqEN2itcoyqiRJJieFbABkgMEBHXSUeFg0qywTVzSrHbKBOtaBDKpdU0N0kChYXK1amR2qQUIDLcgOZIBuaf6wdubkkA2YDHJw8It1vTcoPkqXObfWzh1i0HVuhIOKU3O30xiR4qBhg6ECQwWGitYvl0bFSSu4k5awETu1GDqVnsIYWhSd2Km6LbZU65bRdhGubYOS67LakkZphIOqkza0HBsVJy0To+wEwwbDhsOGw0bDRkOPh02j7KRTZoSDxogyRuiO0iJKOoE56SbbvG/UvA+NilMatuZ9I12RGRqxEw6bduWsmQRty0Y4aCiz5w90iRp5ntvOYjR+tw7bmA8c84FjPtr+0im2sW9vNwe/R/nycj4e9Rbl4qZFbmWe787Hx5fD7ePr6XRz+Pvu9Nou+vF899iOL3dn+VY0j4/f5CiC3x9OR6W3m210mA+VPKdqwzW/OCSk9q5E4kKEKrsGR76Q4CuJNJeQ7S+bBEozGRI5XSnAXKEgeB6kvU0VVmEwjFRwSdMwaC4haySahCwS2CT42gteeFECuBeF5hIf9oKnEh/ORZ3mos4lMnscsscNAfy4C7Lpugs556kLcaEh3cHLCgDDPBOL0pSemTybCecT8nE/YNeMXKbjap2+Swf9wSkpGLbanC/0mOcaBNmdIGmd03VaFm4Eud11PwLxXGTlB8LwA7Hskwi4SdSZRFpklKvXVg7bnGqZfXhKeJuSEue9d9E6icpIBYd5HLjovlIa3n3TRTbf7yKJ/o9pXaUjpi0d81WSFtMKQYuvL9aIC42yyodG2vMReUspyCxfadTVtAw/iGCbWijhP/iRhx8ppqkfsMhplg3Zi7Re7Ei/aCyaKJBPC17cIKRE1wqwasN1bGrpokh/0VhUKY17HXk63qcwblM40r44EmxxYNqnkaPPSMqrSMqf1Yi8NR/OZZ9Gztu+VtM+jRrG3UpNc41l4xgzK6/gYL61rbyovtZSiPNWjKv6AhxrXl51bZGUD7sh7wvDcOOqFb9zY3ETKm+aXENwujliXt2Pj4QWint6edr6cAoU5oEsemglL3J5N7AnmzKpuDkxn9TlMxZsm5K846Tp7kiLDkrZk8Fh7gbBbz9jEf72Q9YqDo6uwLB4xloUpzzdjM0kQ546sSjOunlRGafFuezBMJ7TpKPHnXtBqUMjzPsWr6orpFFcgWmfRhzTKv9+lJ0aPPyQh4N9GrA1Yag7/aA0YpH32zs1eOwnVOrOWLY9CdLOWABxaNA8loVExvGAgbxHoKJvapXKHoGPFujKh+BlUdO+IEZt1ky/mYX3Ap/l9O7+4Xz1f+ObSp0f7r6ejnb6/fXx/uLbl3+e/Rv/v/L5/HR//PZ6PqrS9qelfHyS96I3sol81lfCeip/v8nNo57KO8pP8oZUvqXPb+rMvw==", - "brillig_names": [ - "constructor" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "get_htlc_public", "is_unconstrained": true, "custom_attributes": [ "view", - "utility" + "public" ], "abi": { "parameters": [ @@ -4180,195 +4414,30 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3095323350861740601": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3367683922240523006": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] - }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" - }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "13649294680379557736": { - "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14225679739041873922": { - "error_kind": "string", - "string": "Index out of bounds" - }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, - "14657895983200220173": { - "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" - }, - "15366650908120444287": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" - }, - "16446004518090376065": { + "9174444391250494040": { "error_kind": "string", - "string": "Input length must be a multiple of 32" + "string": "Function get_htlc_public can only be called statically" }, - "16954218183513903507": { + "13699457482007836410": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" + "string": "Not initialized" }, - "17595253152434889169": { + "14225679739041873922": { "error_kind": "string", - "string": "offset too large" + "string": "Index out of bounds" }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" - }, - "17879506016437779469": { - "error_kind": "fmtstring", - "length": 128, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "18194595712952743247": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] } } }, - "bytecode": "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", - "debug_symbols": "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DWwD28A2sA1sA9vANrANbAPbxDaxTWwT28Q2sU1sE9vENsPmkygXFrCCDeyggAoaOEBsBVvBVrAVbAVbwVawFWwFW8FWsVVsFVvFVrFVbBVbxVaxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGltjZ6OLYwA76TTgnDbKgETQvGuedTKcSVINaUA+SIA2yoBEUjhKOEo4SjrOtzbGDAvomnI4GHpvQb8n77MkLva0vLGAFG9hBARU0EFvF1rA1bN7WPkPAZ08u7KCAChroNt863tYneltf6MO4TjWoBfUgCdIgr3gcLv5iyu6zFnxaZPdJCT4tcqGACvqS+l7wJr1wBnqTXlhAv9Hl1IIOl99S8EmRCxU8XD5m5JMiF85Ab9HzSPIWvfBYs1PhLXphB33NnDTIgkbQXOTdeZJX9M3mP97ndvUf7zYcBzgD/cf7wmNJffKET3Fc2MAOCnjYfPH9t/ukEXSojrX36Y0XlaAa1IJ6kEuKo4IW6L/OF/q/r44d9N3npEEWdCzlqfJuPdG79UJfUHWsoKvMsYO+sMPRF3Y6+iZ5OPo2cbF364nerRcWsIIN7KCAvv19eb1b/dayT1Xsfj/ZJyV2v9nrkxK735T1SYkLOyigggaOQG9Uv0fscw4XdlBABQ0cgd5zfj/ZJw8uVNDA45/5nVifPNj9jqlPHvRb+z538KIa1IJ6kARpkAWNoLlohGOEY4RjhGOEY4RjhGOEY4RjhGOGY4ZjhmOGw7vNbzf7HMDzePN2e5L4DMCLSlANakE9SII0yIJGUDhKOEo4SjhKOEo4SjhKOEo4SjhKOGo4aji814670eLT/hYaeBQ6bumKT/vrx91o8Wl//bjJKj7Brx+3U8Un7fXjYyTik/a6+d/137ULC3isnPkyeP9c2EEBFTRwgDPQT1ePx5LFp/ItrOBhG75u3krDF8db6cKj7jj/7gz037wLC1jjn/mJ6YUdFBCbYvMOPNF/6i48jldfRu+7k1pQD5IgDfLiw3GAM9DPOC/0xfMN5z9103e0/9RdOMAZ6D91Fxawgn7A+vHhP3UXCug2P2q8+y4coNuOY6mc/XdiASvYwA4KqKCBA8RWsBVsBVvBVrAVbGc/iqOBI/BsP3X0YuaooC/OsYd8Al0/bpmKT6BbWMHjsDjuiIpPoFt4HBgPX5yj/+ThtqNP5OEKeYAFrKDX9WWQDgqooIEjUL2uL6RWsIGe7b68KqCCBg5wBp6/VCcW0P9ucZyB5y/OiQWsYAN9yaqjgAoaOMAZeP72NMcCVrCBbvOdNb2uHyXT6/p+m3OhTzJbWMAKNrCDvhbmqKCBbhuOM7A8wMN2TBQSn2S2sIEdFFBBAwd42I4rK/E3CcpxBSQ+nUyOqxjx6WQLDRyBzZfMV7NVsIEdFFBBAwfoS+Zbx3vowgJWsIGu8G3WFfRix2HvM8DkuPwRn+slzbeDN07z7XD87Fx4/Oyob5Gjmy6qQS2oB0mQBlnQCHLJcfz5xK+FBaxgAzsooIIW6B3X3Oa91Xx3Hb2lJ0mQBlnQCJqLvKua7x3vqgsr2MAOCuib+dhRPjVLjgs28alZC31POvUgCdIgCxpBxzY9ruXEJ2UtLGAFG9jBo+pxHSY+0Uq61z1+MNSX7rh4uqgFHRvU1+jomos0yIJG0FzUXNIdC1hBAY/1PK5FxedMXeitceGxmOpUg1pQD5IgDfIVP3GAM9B/sC4sYAUb2EEBFcQm2Lzvum9TfYAF9JMx31H+M3ahn475PvOfsfNY8J8x8Q3nP2MXDvCwiYu9AS/0Mz/fN+epn4uPBvSTcJ83dZEEaZAFjUX+Y3dcGopPgxI9//RYUvUl9Z+1Cw08lvS4KBKfBnWhN+CFBayg1/UV9FbzvvWpTeI72qc2LSxgBRvYQQEVNNBt5jgDvQ0vdNtwrGADO+i26aiggcfmbU5z0dGwFz1Vfknk76O7qAX1IAnSoEPie86/OrtwBnrLXtjAYzH9iswnSS30Cl7XW/ZEb9kLjyX17Xe07EUtqAdJkAZZ0Aiai45+vSgcEg4Jh4RDwiHhkHBIOCQcGg4Nh4ZDw+Edeu4a79ALFfRNJo4DnIHeoX4B6bOhFh7H0fDt7z+RF3ZQQAUP2/Ad5KeqFx624XvFfziHL5l37/H2KPHZUAsb6DZfSO/pCxU8NqEftEdLXzQXHQ19UQmqQV7Rt6F3s1/1+twm8QtIn9u0sIAVPJbULwp9btNCARU08GkbJx0yvyb0qU3i11g+tWnhIfOrKZ/EdP57/9Lj8USqnN989euf85uvFzbQl2s6CqiggQOcgd6SFxawgg3E1rA1bA3b0b7qF3Q+L+nCo30XFrCCDZTYDv4hxwsN9A0ljjPQP+R4oSv870oFG9hBARU8zkCOGbfik5EW+gr5fvWT3AsL6DvLHBvYQQEVNHCAM9Afc7iwgNgMm2EzbIbNsBk2wzawDWwD2/At6UeynxlfKKBvSd8XfnJ84QBn4PQt6Uf19C3pCv8orF8anx+FvbCDbvN+nQoaOMC50CcjLSxgBRvYQQEVNNC35HScgf5R2AsLWMEGdlBABQ3EVrBVX7cTC1jBBnZQQAUNHOAMPAJEfV/4ZKSFFRTwqOCDDD7BSH0MwScYLSxgBY/l9UEGn2C0UEAFDRzgDJQHWMAKYhNsgk2wCTbB5vngIyE+wWih28yxgg10mx9GfiV8oYIGDnAG2gMsoNt8Z1kDOyjgYfPRDZ9gtHCAM/DIh4WHzYcefILRwgZ2UEAF3ebbwfPhwhno+XBhASvYwA4KqCC2ic3zwcc8fILRwgIeNh/+8AlG6mMFPsFooYAKGjjAGXjkw8ICVhBbwVawFWwFW8FWsFVsFVvFVrFVbBVbxVaxVWwVW8PWsDVsDVvD1rA1bA1bw9awdWwdW8fWsXVsHVvH1rF1bB2bYBNsgk2wCTbBJtgEm2ATbIpNsSk2xabYFJtiU2yKzbPEh718gtFCt4ljBRvYQbd5t3iWXGjgAGegZ8mFBayg26ZjBz0cvSE9QC4c4KHwQSl/EdxCH5D0NfYAubCBPibpK+8BcqGCPizpa+wBcuFc6LOXFhawgg3soIAKhs1nLPl1gs9YuqgGPYv6pYVPWLpIgryiOho4wBnoIXFhAX35zbGBHTxkJ2mQBY2guejIh4tKUA1qQT0oHC0cLRwtHC0cPRw9HD0cPRw9HD0cPRweBz6a5q91WzgDfZzPr/f8tW4L/VqqODawg7KuAn0q00IfTfa96nFwoY8n+z/zOLiwgH5S6X/3vPQ4sYMCKmiB3vg+EOgTlPSYYCI+QUl99M8nKC1U0EBfXl8Lb/ETvcUvLGAFfbzVl8Fb/EIBFTRwgIdNfTt4t19YwAo2sIMCKmjgAMPm05oWuq06VrCBbuuObjNHBQ0c4Az004ULC1jBBnYQW8FWsBVsBVvFVrFVbBVbxVaxVWwVW8VWsTVsDVvD1rA1bA1bw9awNWwNW8fWsXVsHVvH1rF1bB1bx9axCTbBJtgEm2ATbIJNsAk2wabYFJtiU2yKzU8XfCjZJ14tdNt0HOAM9NS48LD5GK1PvVrYwA4KqKCBA/RbP0ca+RSsha7wdvIAubCDArpCHA0c4Az0APHs8ylYCyvYwA4KqKCB40L1OVnHSKH6nKyLWtCz6DFOqj4n6yIN8uVXxwHOQA+JCwtYwcNUnHqQBPmmMkcDB/hUDacjIC4qQTWoBfUgCdIgCxpB4WjhaOFo4WjhaOFo4WjhaOFo4Wjh8DA4XnKhPttrYQX9vqXvHA+DC489fgx+q8/2WmjgsdGG73EPgxM9DC4sYAUb2EEB3eZHg4fBhQOcgR4Gw/e7h8GFFWxgB93mW8fD4EIDj+04neaiIwouKkE1qAX1IAnSIAsKh4VjhGOEY4RjhGOEY4RjhMNDYPi+9RCYfuh7CJzoIXBhASvYwA4KqKCB2GbYfLbYwgK6rTo2sIMCKmig26bjDPSAuLCAFWxgBwVU0EBsBVvFVrFVbBVbxVaxVWwVW8VWsTVsDVvD1vwO9MPxeBrkOAbOd7CddNxQOsaw1V/BtrCBHRRQQb+dLY4DnIF+k/HCAlawgR0UUEFsgs3vNh5D6uqvYFtYQLeZYwM76DbfJKqggQN0m2/do9ut+Nb12/8XdlDAo27x49SnABxDvurz4Kz4ljya3oov79H1VnzJjra34uJRwQZ20G2+ZENBAwd42Ko3nt9VrL44flux+uJMvxnu23f63XBfnKPjrfkKHR2/0MABzoU+JW5hAQ/bMbVKfUrcQlc0RwUNdEV3nIHlARawgg3soIAKGoitYDsnEphjASvYwA4K6LbhaOAAZ2B7gAWsYAM7KCC2hq25bTrOwP4AD1v33dIjVHwm3cIOCqiggQOMCPOP6y4sIDbBJtgEm2ATbIJNsCk2xabYFJtiU2yKTbEpNsVm2AybYTNshs2wGTbDZtgM28A2sA1sA9vANrANbJ4ax9Q29Vl+C4+jpHsX+qyECwtYweOYPIbT1Of5LRRQQQMHOBf669oWus0cK+jr1h297nA0cIAz0FPjeM5CfQ7gwgo2sF/TK9RfzLZQQQMHOAN9vuCFBTy2zjHspT47cKGCBg5wBnoSHONi6pMB7RjVUn+tmvkVmL9WbeEAvYJvM+/5C4/tcDynoD5HcGEDfXl9X/g5wYUKGjjAGejnBBe6zbeDnxNc2MAOCqjgmkulPiXw2g7+638hW8d//cX3vP/6Xyigggb6WvhB4L/+J9oDLKBPbnKbnxNc2EGfQ+U7wM8JLjTQp1H5vvBzghP9nOBCn0nle97PCdR3i58TqG9UPydQ3zp+TnChgl7X1837+MICVtDr+rp5x54Hl3fshQOcC33m4MJ+TTjUa47giQraNQ1RrzmCJ87Ac47giQWsYAM7KOCxkMc8PD2nA57oP+MXFvBYeT+izimBF3ZQQF+L858ZOMAZ6HOQLixgBRvYQZ8J6xvqnN97oq+Fb19v3gsLWEFfi+bYQQEVNHCAazaxdnmABaxgAzsooIIGjkBvXvPV9Oa9sIEd9LU4/5mCBg7Q18I3iT3AAlawgR0UUEHfF0fr+bzAhQWsoK+FOXZQQAUNHOAM9Oa90G3DsYIN7KDbpqOCBg7QH0I4/tk5k/DCAlawgR0UUEELLOshBPVJg+bjTT5pcGEDj7XwoTufSmjj/GcKGjjAGeg9f2EBK+g2cfS66ujbwf/Uf279t9tnDS7soIBewVfTf4QvHOAM9D6+sIAVbLEMvYMCKmjgAFkL7+MLC+hrMR2PtZi+1f3n9kIDB+izVX23+I/whQX0CavVsYEdFFBBAwfotiOYfKrgwgK6zfem/whf2EEBFTRwgG7zrePdfWEB3eZHiXf3hR0UUEEDB+g2P3bOib8nFtBtvoemD6L79j26ezx86xzdPR6+HY7uXmjgAI+RRh9F8amCw8dL9BywN8cKNrCDbpuOh81HO3yq4Dge1FOfKrhwBh49v9DXbThWsIEd9GP9/GcKGjjAGegn3hcWsIIN9LWojgYOcAb6cL2P5PikwIUVbGAHBVTQwBHYvW53rGADva7vwi6gggaOQPG6vrvFK/jeFAEVNHCA83oEVs/3i11YwAo2sIMCKmiBPsReTixgBRvoa+EHoo+fVz8QfQD9wgIeFXz0yyfvLezgscbV9/HRm8PHxHya3vAxMZ+md22HWcAKNpDtO9m+3oXVd4B3oaNPyFtYwHo9BK7nG78u7KCACho4wBnoT1JfeNT1oZ7z3V4XCngcD8f8QPWpdwuPtfDhPJ96d6HfKrvwWAvvLJ96t7CBx9bxkT2ferdQQQMH6DbfOt6FFxawgg3soIAKet1jD53v6/IzPJ84N/xsxSfOLTTQl8y3ZJ+Bx2/s6L4dvN8urOCxZOf29S68UEAFDRzgDFS3+fJqASvYwA4KqLHGfp/LR3J8itzCAlbQ63bHDgqo4HFMntvX331w4Qz0t/xcWMAKNrCDvnXEcYAz0Dv2Ql8L393esRc2sINHB5xd6G9EuNDAAc6FPi9uYQFroE9vr34TxaemBU9n/ztHGwU3/s7RMsGSWGH/CfGxMZ8gdmF/gAWsYAM7KKCCBmLzw99H18Z5+J9YwAo2sIMCKmjgALEpNsXmd259AM/fWTV8xMwnfy0sYAUbeCyZjx/55K/hgxo++WvhDPSfmwsLWMEGet3mKKCCBg5wBvohfaHbfM/7IX1hAzsooIIGjoU+42v4uJ/P+FpYwQZ2UEAFDRzgDCzYCrbiNnVsYAcFVNDA2Fk+4+vC+gAL6MXM0YsNRwMHOAP9R8iHAH1C18IKNrCDAipo4ABnYMfWsXVsHVvH1rF5H/sAk0/outAb0gcRfWbWQgEV9H/mG8ob8sIZ6A154bGQPp7oM7MWNrCDAipo4ABnoLf0hdgMm2EzbIbNsBk2b2kf//SJV8PHCH221fAhQJ9ttdDAAc5A79gLC+gzfPzo8469sIMCaiyDd+yFA5wXmr8Wa2EBK9jADnqx5jgDvTcvLKAXE8cGdlD4uwoaiO2ca+X/7JxsdWIBa/zdc77VidjOGVcnKoitYqvYGraGrWFr2Bq2hq1ha9gatoatY+vYOraOrWPr2Dq2jq1j8x/hY8DRfALWwgJiE2ze88d4ovkErIW60OfVPM8wxsHlkbgkrolb4p5YEmtiSzwSJ29N3pq8NXnb+efTuSZuiXtiSayJLfFIPOH+SJy8PXl78vbk7cnbk7cnb0/enrySvJK8krySvJK8krySvJK8krySvJq8mryavJq8mryavJq8mryavJq8lryWvJa8lryWvJa8lryWvJa8lrwjeUfyjuQdyTuSdyTvSN6RvCN5R/LO5J3JO/H6pJZxjAuaT2pZKKCCBg5wBnrmXljACmKr2Cq2iq1iq9gqtoatYWvYPHOPQVHzSS0LBVTQwAHOQM/cCwtYQWwdW8fWsXVsHVvHJtgEm2ATbIJNsAk2wSbYBJtiU2yKTbEpNsWm2BSbYlNshs2wGTbDZtgMm2EzbIbNsA1sA9vANrANbAPbwDawDWwD28Q2sU1sE9vENrFNbBPbxDbD5pNaFhawgg3soIAKGjhAbAVbwVawFWwFW8FWsBVsBVvBVrFVbBVbxVaxVWwVW8VWsVVsDVvD1rCRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlvQzS4ZjOR4BLo4VbGAHBVTQwAHOQH9Q90JsDVvD1rA1bA1bw9aw+RO7x81a87k7CwtYwQZ20G3dUUED3ebbrM9AeYAFrGADO3jYjhu75nN3ZvG1OLJk4QBn4JElCwtYwQZ2UEBsik2xKTbDZtgMm2EzbIbNsBk2w2bYBraBbWAb2Aa2gW1gG9gGtoFtYpvYJraJbWKb2Ca2iW1im2HzeT4LC1jBBnZQQAUNHCC2gq1gK9gKtoKtYCvYCraCrWCr2Cq2iq1iq9gqtoqtYqvYKraGrWFr2Bq2hq1ha9gatoatYevYOraOrWPr2Dq2jq1j69g6NsEm2ASbYBNsgo0sEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS4QsEbJEyBIhS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5QsUbJEyRIlS5Qs0TNLmuMAZ+CZJScWsIJuU8cOHrZj/pD5bKWFBg5wBnqWXFjACjbQbdNRQAUNHOAMPLPkRLdVxwo2sIMCKmigr5s4zkDPkgsPW/Md4FlyYQMPW/PV9Cy5UMHDdkwDNp8btXAutDNLHo5uM8cKNrCDAipo4AAPW3eFZ8mFBaxgAzsooIKHrftaeJZcOAM9S7ovg2fJhRU8bMe9fvMZUwsFVNDAAc5Az5ILD9txn918xtTCBnZQQAUNHKDbfNE9Sy4sYAUb2EEBFTRwgNgEm2fJcbvbfM7VwgZ2UEAFDRygX1E5epZcWMAKNrCDAipo4ACxGTbDZtgMm2EzbIbNsBk2wzawDWwD28A2sA1sA9vANrANbBPbxDaxTWwT28Q2sU1sE9sMm8/PWljACjawgwIqaOAAsRVsBVvBVrAVbAVbwVawFWwFW8VWsVVsFVvFVrFVbBVbxVaxNWwNW8PWsDVsDVvD1rA1bA1bx9axdWwdW8fWsXVsHVvH1rEJNsEm2ASbYBNsgk2wCTayZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLfGLcPF4MZj4xbmEFD9vxrJ75xLiFAh62YzaR+cS4hQM8bMfUJPOJcQsL6DZfHM+SCzt42I4pOU9U0MDD5pNk/K1oJ/ocuYWHzedS+By5hQ2M85LJecnkvMTnyJ0nDT5HbmGcl8zzvKQ7FrCCfl7ixc7zkhMF9HUbjgYO8LANt3mWXFjAw3a89cf8rWgLO3jYhi+OZ8mFFnhGxYl+cPnWOUPhRAUNHOAMPEPhxAJWsIHYOraOrWPr2Do2wSbYBJtgE2yCTbAJNsEm2BSbYlNsik2xKTbFptgUm2IzbIbNsBk2w2bYDJthM2yGbWAb2Aa2gW1gG9gGtoFtYBvYJraJbWKb2Ca2iW1im9gmtrls4/F4gAWsYAM7KKCCBg4QW8FWsBVsBVvBVrAVbAVbwVawVWwVW8VWsVVsFVvFVrFVbBWbn2Acz2MOn5w3j2chh0/OW9jADgqooIEDnIGeJRdi69g6to7Ns+R4kmb45LyFBg5wBnqWXOg2daxgA9fdnfE4o+LEGXhGxYkFrOBR7Hgec/jLzxYKeCz68Yzl8JefLRzgYZu+WzwqLixgBRvYQQEVNHCA687VeIwHWEC3+bp5VFzYQQEVNHCAM9Cj4piFNPx9aAsr2MAOCqiggWOhv7dsHjc1h7+3bOEMjLHMUWIsc5QYyxwlxjJHibHMUWIsc5QYyxwlxjJHibHMUWIsc5SKrWKr2Cq2iq1iq9gqtoqtYmvYGraGrWFr2Bq2ts4Gh8/RXDjAdTY4fILmwgL63pyODeyggAoaOMAZ6C2tJxawgs3fQfxw7oklsSa2xCPxhH1O5uLi3Jxr4pa4J5bEmtgSj8QTPr/U8vANen6q5eKauCXuiSWxJrbEI7Gfcfve9zS4sIB+xu3bwNPgwg6eRj8+hia2xCPxhOcjcUlcE6/z/OHvTFso4Cn1/p6WeCSewf7etOCSuCZuiX3zeof4e9SCNbElHoknfH7I5eKSuCZ27zFgPur1LafuPOH6SFwS18QtcU8siTXxGrgdPrF04Qxsp1ScS+KauCXuiSWxJrbE58r6Bm8T7o/EJXFN3BL3xJJYE7v3uDkw6vkdqIsnfH4J6mL3Vt9BPg98cUvcE0tiTWyJR+IJ6xogHz7tdGEFT2l17oklsSa2xCPxhM/AufhcWd8pZ+Bc3BL3xJJYE1vikXjC5+egqh9gZ1xU30FnXFw84TMuLi6Ja+KWuCeWxH4PwQ/8aeAAT+nxy9LOuLi4JK6JW+KeWBJrYl/Z41O3o51xcfGEz7i4uCSuiVvinlgSu/e42TPa+fmni0fiCZ/xcry4ZLQzXi6uiVvinlgSa2JLPBL7CMyx/3226cICnlJ1bol7YkmsiS3xSDzhM16a75QzXi6uiVvinlgSa2JLPOAzRo6nykc7Y+TilrgnlsSa2Ot337lnjFzs63U8PD7aeepy8en1nXueulx8en1HnEly8en17XMmycWn1/fLmSQXn96js9qZJBefXl/3M0kudu/xGPBoZ5Jc7F7xdTyT5GL3iq/jmSQXu1d8Hc/PzV3sXvF1PBPm4tPr6zh64tPr63iewFx8en0dz0S6+PT6Op6JdLF71dflTCT15T8TSX2Zz0RSX84zkS7WxJZ4JJ7B/Qyli0vimrgl7oklsSa2xCNx8pbkLclbkrckb0nekrwleUvyluQtyVuTtyZvTd6avH41dYy7jnPG6oUKntLuPBJP+Dznubgkrolb4p74XFlz1sSWeCSe8BlKF5fENXFLfHp9vc5QulgTW+KReMLnOc/FJXFN7EMnD8cOCnhKp7MlHoknfCbVxSVxTdwS+8oej+2Ofn0J82RNbIlH4glfn8M8uSSuid17PNs5+vVJzJNPr2/866OYvnF8wGWc/3SAM9AvsS4sYAUb2EEBFcQ2sJ3pdO6LM50uLolr4pa4J5bEmtgSj8Sn90g8OdPp4pK4Jm6JO3ymio9MypkqF7fEPbEk1sTncqrzgM9TlOM9ckPOU5SLLbH/fR+9kzMQTj4D4eKSuCZuiXtiSayJLXHynoHgI2dyBsLFJXFN3BL3xJJYE1vi0+vrfgbC9G14BsLFJXFN3BL3xJJYE1tiP2x9EXzE9US/BLrwlA7nmrgl7oklsSa2xCPxsbL+ReBxfh93cUlcE7fEPbEk1sQGn0Olrh0GDjCG8phOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOphOOs7ppH49fk4nvdDANXVvXNNJHesDPHdqda6JW+KeWBJrYks8EvsUPke/mLmwgKe0ObfEPbEk1sSWeCSecD+PYHUuiWvilrgnlsSa2BKPxKf3iAyfaBpcEtfELXFPLIk1sSVe0yTHOeH0RH2Ap3Q418QtcU8siTWxJR6JfWXP4/CMiYtL4pq4Je6JJbEmtsQMzup5hXPyeCQuiWvilrgnlsSa2Ef9XOs5dOEM9Bxq3l7nVNQTK3iuqR/e54e1L5bE55p2Z0s8Ep9b+NibPiM1uCQ+t/Bwbol7YkmsiS3xSDzh8kh8eqdzTdwS98SSWBNb4pF4wh5RPvZyzlK9sIIu9ZSzM6AulsSa2BKPxBP2U5nFvrLHx0qGnRl1cUvcE0tiTWyJR+IJX+O5JzMYbV0TW+KRmEFwk0fikrgmbonXFKFxTkq9UEEGo+28Vrl4wvpIXBLXxC1xT8xgtKkmtsQjMYPgZo/EJXFN3BKfQ5C+c6/x2ZM1sSVmMNqMwWg7M+fikrgmbol7YkmsiddUrHFOWb1wBk4Go+0a5D25Jm6Je2JJrIktMYPRNhmMHtc478klcU3cEvfEklgTn/WPA2wUBqNHkcSa2BKPxAyCn+8vXFwS18RtDWWfc1EvFJDB6HFe+Vw8EjMIPtojcUlcE7fEDEaPJok1sSUeiRkEH/2RuCSuic/xWV+va3z2ZEmsiRmMHn0knrA8EpfENXFL3BNLYl1D2edM1QsHyGD0OOPl4pK4Jm6Je2JJrIkZjB46Ek/YHolL4pq4Je6JJfGZ+b7iNuHxSFwS18Qt8flb48s/JPH5W+PbbVji0+tH/pjwPL2+bLMkdq+fwIzzBOZi9/qZzzhPYC5273mwnScwF7v3eHPuGOcJjPM8T2D8YJvnCczFp1ecW+LTq86S+PSasyU+vcN5wucJjO+LeZ7AXOxeT9d5nsBc7F6/qTDPE5iL3es3FeZ5AnOxez1A5nkC4zcMfDrrk32Zz4ssP7bneZF1cUvcE0tiTWyJR+IJn+cwFydvS96WvC15W/K25G3J25K3JW9P3p68PXl78vbk7cnbk7cnb0/enrySvOdTOH64nU/hnNjAU+oHxnmRdbEmtsQj8YT1kbgk9pX1OzTzvM66uCeWxJrYEo/EEz6vsy52r9/1med11sUtcU8siTWxJR6JJ+xDtH5j6Jw+e2EFT6lv5DOpLpbEmtgSj8QTPpPq4nNlvZvOpLq4Je6JJbEmtsQj8Vw8H2dSHbes5uNMqovde9y+mo8zqY7bV/OcU3vcBZvnnNoLFTRwgDOwPMACVrCB2Aq2M52OuyzzcabTxSPxhM90urgkrolb4p5YEp9ecbbEI/GEz3S6uCQ+//50nvCZKheXxDVxS+zLab6/zlQ5+Rx1Md9356jLxT3x+fd9ec5AuNgSj8QTPgPh4pK4Jm6Je+LkPQPhuHEyH2cgXDwST/gMhItL4pq4Je6J3Tt83c9AMN+GZyBcPBJP+Dx7ubgkrolb4p54Pf84z5myFxro0uHNdQbCyWcgXFwS18QtcU8siX1lh2/wMxAuHolncDkD4eKSuCZuiXvis87RpOdrTBeXxDVxS9wTS2JNbIlH4uStyVuTtyZvTd6avDV5a/LW5K3JW5P3bPZj1vo8X5O6uCZuiXtiSayJLfFI7JNwj917TcI9sYCndDq3xD2xJNbElngknvB5HjLddY73XlwTt8Q9sSTWxJZ4JHbvMXN9nvNxF5fENXFL3BNLYk1siX2isx/LPiX/RJ+Sf+Ep7c41cUvcE0tiTWyJR+JzZf2IOmPn4pK4Jm6Je2JJrIkt8en1I+p6EerDuSZuzsW5J5bE6uw7yxNm8Ug8g8/Zt4tL4pq4Je6JJbEmtsQjcfKW5C3JW5K3JG9J3pK8JXlL8pbkLcl7vVi5OZfENXFL3BNLYn9Q5TgMz3mttZ+siS2xL85xrTDPea0Xn+83vrgkrolb4p5YEmtiS5y8kryavOf7io/LiHlOSa3HxLB5TkO9/vx8F/ExMWye01DrcSkwz2moi3tiSayJLfFI7MsmvovOdxFfXBKfXt/857uIj4lks57vIhbfzue7iP1sup7vIj7X5XwX8cVpHc/2ar4MZ3td3BNLYk1siUfiGXzOVl1cEp/e6nx6m3NPLIk18entziPxhM/2urgkrolb4p74rH9sz3P2aT3GP+Y547QeYx7znHFaj3GOec44XSyJNfGEz3eVH2Mh85xEuvg8th/O5/7ybXW+Y7z7tjrfMX5xT3wew759rh482RKPxGcv+PpePXhy4e9cPXhyS9wTC9vn7MGLLfGAz3eJn9tB03bQtB3Od4mffB7Dxbf5eQwX/7fnMXzxhM/3aV9cErureM3zeK6+nc/j+WJLPBLP4HOi4+KS2OsftxTmOdFxcU8siTWxJR6JT++xf8+JjotL4pq4Je6JJbEmPl3NecLnMX9xSVwTt8Q9sSTWxJY4eWvyttPbnUvimrgl7oklMfv0nN+4eCRO+/TsnWOsd55zEesxvjvPuYgXnz1ycUl8Lps5t8Q9sSTWxJZ4JJ7w+Tt1cUmcvJq8mryavJq852/cub7nu/eP8el5TjVc3FjH83ftYkmsic91mc4j8YTP37Xm2/z8Xbu4Jk7ekbwjeUfynplwcdp3I+27mfbdTPvuzISLk3cm19n7x/uo5jmNcHFJXBN7nWPqxDynES6WxJr4zLTqPBJP+Oz9i0vimrgl7oklsSZO3pK8JXlr8tbkrclbk/fs9+Ne+jynKdbjXvc8pybW47bzPKcmLm6Je2JJrIkt8bnM6jzh8zsdF5fEleU5f0Mv7oklsSa2xCNxWsczH04+P37ku/f8zJFvnfMzRycaOMBnOf+I2ZTzY3wnFrCCDeyggAoaOEBsA9vANrANbP6e7HPd/D3Z6nvb34h9or8R+1whfyP2hRVs4LHoPpp5fs/2QgV9Q/kO9zdiXzgXnt+z9WLn92wvrGADOyigggYOcAYWbAXF+UGjIzX1/KDRicfi+Kibnh80OrGBHTwW55i2PM8P015o4ABnoL8Q/8ICVrCBHcTm77v3YUifrDd8kO78Gu1ojhVsYAcFVNDAAc5Af9/9hdgEm2ATbIJNsAk2wSbYFJtiU2z+vvtjiu/0eXkLBRyB3no+wnh+jfZCARU0cIAz0FvvwgJW8FD4jQY9vx94ooIGDnAGnt8PPLGAFWygr4U6+vKefzoXnl+uvdCXdzhWsIEdFFBBAwc4A73fLkRxfmHsRAOPCsdU9Xl+o/bEsyGnYwGjRc5v1F7YQQEVNHCA0ZBGQxoNaTTk+Qnac3kbi35+QOzEyBLrD7CAFWxgBwXE1rF1bB2bYBNsgk2wna3nW1JY+fNLEidG4J1fo72wgwIqaOAAURjb19i+xvY19qaxN429aezNs/X8KDlbrzpGKPhMsoUdFFBBAwcYEXR+mPbCAmKb2Ca2iW1im9gmthm28XiABaxgAyPwxkNABWdgicDzKWMLFTRwgBF4PltsYQEr2MAIvFEVNHCAEXijPcACVrCBHdSVfee3dD3lzm/pXljASKPzW7oXdlBABQ0cYATe+S3dCwuI4vy0y3GkjvNrLCcqmP7CAGfg+TWWEwtYwQZ2EJthM2yGzbANbAPbwDawDWwD28A2sA1sA9vENrFNbBPbxDaxTWwT28Q2w3Z+NffCAlawgR0UUEEDB4itYCvYCraCrWAr2Aq2gq1gK9gqtoqtYqvYKraKrWKr2Cq2iq1ha9gatoatYWvYGraGrWFr2Dq2jq1j69g6to6tY+vYOraOTbAJNsEm2ASbYBNstP/5Nd4LsSk2xabYFJtiI0smWTLJkkmWTLJkkiWTLJlkySRLJlkyyZJJlkyyZJIlkyyZZMkkSyZZMsmSSZZMsmSSJZMsmWTJJEsmWTLJkkmWTLJkkiWTLJlkySRLJlkyI0uOlzot3cElcU3cEvfEklgTW+KROHlL8pbkLclbkrckb0nekrwleUvyluStyXsmTD+5Jm6Je2JJrIkt8Ug84TNqLk7elrwteVvytuRtyduStyVvS96evGdmiLOsU/DjGahH4pK4Jm6Je2JJrIkt8UicvJa8lryWvJa8lryWvJa8lrznmfY8eZ2hH+zb8+J1GXCwJR6JJzwfiUvimji5Zk8siTWxJR6JZ3B5PBJ7zXKy16wnrzP1gy3xSDzh8khcEtfELXFPLImTtyRvSd6SvDV5a/LW5K3JW5O3Jm9N3pq8dQ2aHDzh8zL54pZ4XTEcPOH+SFwS18QtcU8siTWxJV7XDsezUY/EJXFN3BL3xJJYE1viAZ/DUnqyL//15z2xJF5XEgdb4pF4wvZIXBLXxC1xTyyJk2ukY36kY36kY2CkY2CkY2+kY2+mY2+mY2+mY2+mY2+mY2+mY28m70zembwTb308EpfENXFL3BNLYk1siTnm64NjvpZH4paYY74WjvlaH4lL4pq4Je6JJbEmtsQc87U9EpfENXFL3BNLYk1siTnmz080n8f8+TXmcf15TyyJOeZrt8QjMcd8lUfikrgmbol7Ykl8uv7zP//hT3/913/553/7y7/+7Z/+7e9//vOf/vE/4g/+75/+8b/9x5/+zz///c9/+7c//ePf/v2vf/2HP/0///zXf/e/9H//zz//zf/73/7578//9/mL8ee//c/nfz8L/q+//PXPB/3nP/CvH6//6fM35Jjz4//8eCtJjRLPX5EfipTXRcYxpcBLPEc3ooD1H/59ff3v9bHW4Hm3ggXQx+0FOG7YnAswHq8WoG8W4PhR93//HHl+ZwH8s09e4Hnh+GoB9PW/l+Pmnv/75w3EtxZA1ho8L5FeLcDYbMEWu1De2wLHTMvrMCrl1RKUzaFox8SycyeYvVyE3bHc/dm5cyF6HfL6WN4cjO1R175ozzNxajzX6naNZuuIbj1tjefZ1Y81Nsekz+b3Es/fjKjwXKQfK8hmnz76f9GWv1TYHJb+3vDzqJpvVtAeh8Wjvi6x25gyYodoGa835nxdo/osx3NrtpY6rNmPIfXY7dQVMm2mQ8se99dEObS02cs1qZsaz/v7azGe9/dZE/1xgx6Tnl73yVxh8TytrC9L9N2htQ6M5wgz6yHjfgWJyDZ9XeHuatjr1dhtTOtrPcSkvyyxCc7nicCK/ufvenlZYn66Kdrm0Kz+sOy5ECXld68/ltjkdx0lUu9lgd9sy8K2HK82RGsfh8WuxLM1I3mfY2svW6zJ7sCyWI7n3o0az/PyH2vo7pRmxCmNpgpye03647Eiqz9/C16vydj9hsRpQRn51Kr8+HvYNkfn82o/Dq7nvyt0yfO6/scTrMfn27SXj7fpbl2qv5r0XIz6HN94vS5t120WPybP6860JD92bN/EX7XYu9VqCq8vrEubcbbzvKwpr9dlc5xWjbOuqsr2eCbKjzVs03P+CoKz554/KKnGT8sxtmdM6yBrbbbXNXbL4Y+DnDXy2d/PNWRznPYZyyHPwbmXNfZ7Rh/Rds+9qy/3jOxOFkocIa3apsbuSNVZ4ihrj9c1dkeqT2Q+azyvtt+r0fvq/ucF9esEkV2i9rU5VDl1Oo6VHyrY7mx2cIkyX5fYHKZaBhkkj9c1doeHFY1AtZIO9p+r6OZAlTrWbpE60+HxYwbpLk+txia1Pl6V2G6PKhbbY7zeLbo7jzteEBi/Utr66626O9QtzqKe+Lpdto3bWmzU0rq+bhjV3Q/mYEjlOV75eBHuan/oz0N/jFiKnmP5l3WZf+hPbtc4RJ48X/9M2e7stHE1nK++6k8X9lY/3abbpeglorD3x8ul2J2SVX+lyHXyYOXlKZnJ7jpyrl3bLF3aP09vbtfoLS7hevvhSP+phn1+Umfj4yNsu0Xj0uX4rXp9krurURs1NntllE8HbEb9dMBmtE8HbPZbYkSXPIcrXm+J3QVUm/FL2/MPy0+/LEN3J4Q1jvE27HWN7YVc/CY8W21TY7c9WgzNPsfz9WWN7TbVHrmhP6zLF45QjW1a7Yfl+LHG/PgInR8fofOPPUItflDq3PT73BwZ9WEMmLR8Yfxjcs3NEWo6GLCW8VaN40XNa4NqvoT7ucb4PIXn/ENTeLa4kJym7x3jc8RF4KOOlzX8yujDcfNH+3jg/NH/yMO8+YsGr+u/VjcbQ7eXonEl2n44zu0LRabEj+Nj9E2R3VGqLW7SPXnkjfLzPaLdWGncWBnpZ7r9dCq5H6d8ME750FfjlLtx/N5igzx/3vT1HYnf3GeKEdfyw80A/UKR+rD/+iD5uUj/+H5A2d9runNDYF/i1jD4/TWxzZpsx11irKLVTSSX3f2mmwmyu910897btsTNm2/7u2+RIG33C1V2t2rM4lr0if3l7bd9kRF3z+yHg+yXIvL5sV7142N9W+LesX57TTbH+n6TauyXMd/cL8dHSeNgTwvyS5Hd7aciLY5VTT8Ov9xe3R6rM+7ytmmbSG2f3x3119x+eIS0j++P3l+Td9NwxsX184aUbjbp+IZNOj/fpPPzTTr+6E0aR+lzk473fvj7o8TwzaNv9svuJtTNuQT+5uNP923/PFD754HavyFQt1v0G04ura5Tum42X59cym5ov8bVmPa2yeTdHaj54H5JOjp+juTdXV9lYsKTlV8Y+Wky1e7uUWmcx/R8/9l+uhKS3d7lPmc+FfppgkPZ3YGyGcepTWmvL2B2N6EazV/SlXaVn0psBzy5q1fzPcovFaljxoh62iJfK2KRQj/cX/y1yPakfdB3Ocp+3r26m0Jqccb9vOGa8/CnHby9E+UfWT+XZM40sjTfPeLTYN/PR7xuDtY5YzjaH9l6uSRleyOqC8OwaQZJ/WnosmzvRPUq3PNgw/48sVO3x1o0znN0vb+usRuhkti/j3RmZz/lme3u7XPHI/9G/FxiuxSdpRibpah3ZymwHE3LF4o0Bg9avsL8WpEel3bP+0ibIrtcZeZwGeme2NeKPOLm/vEhZ4qM9pUiHO6PPEXg5yL7w71wuOvrecw2d7fmY5BK2oNBt2NH/VBk7Kb03ZmPt61wjLhFEml7bzEKM0hKvmn6tSIzfibKrPINRdr7SxKDkDMfrV8rwg3HfE30tf3LCXx9Hv2vi+j2kH/EoebPJ77+oRhzu1Wic2aaBtt+Plvct19alJxrP7ff7g7VKAwllE2J7fjuCjVJz4J8qYSWmNSSD7QvlXhQor1ZImaRqM7XJfaXI5XLkWpvXtLcmiNddreoaufmUO+bGvPjC01/m/dnF5r7EvcuNG+vyeZCc79FY87lD6dlX6oh3NcRff0owUN2xznPbj1Kf6uGzGjZXY3frMu9afi7W1R3j47x6dFRy/aHYTK7OP26/DwVv+xiNIbbZ36i75fF2MVojWeppP5wXvfzcrQPT2L2W+Pekw11d2Pp5lLsxmRmXH30mU+l9O0i470i8og5m/LY7pZtEY19+8OZ8teKxA0qKfks90tFStyAkDI3RXZ3dMvxXZw4f3mM9JP985Xu/Qh5+QBL3T3VZNxPsZet+7uf2zuP0dTd3aW7g8P7Ii2S/TmCODZFtgNEyqxce/0TU7/hh799/sPfPv7hv78muyfWtluUn4ex+cHd1Wj1wdSS16eFv6vx+LhGL5HMPc3k+lIN5ho+y72u0cbnJzG7GjdPYn6zPUxjXeb4uIY86pvbNG5BNCmv9+3uIanngGBcDlrfnIRsF8T46bb5Oj76N5yhdvmDdy7B3naNu3tKqjwmTxbk53m+tFGZR9HG5ijbPiYVl7e9bvbt7hbV81ZtDMX0x+Z0aLscLX6j8iOSv2yO7e9cTHDpLc+B+Pl3bv+A060L3Cqf30mt8vGd1H2Je79z8vmd1N9s0VsXuPsaNy9wdw9J3W39/XLcuzjV9vGe3Za4uWdvr8nr7FD98Bx537I9bqE8x+jb65bV7dX+nSl6dXc36N4Uvd+sSmEq6e4se7sc9+b57RdktsHl3OuZpNU+njhd7eOJ0/sS37A5hFfJSOm7zWF/5JH+vB8eo9kyN1dyu/tRPV7NIynAjmkQP5TY3q249exc3d8Vi+va9EjQr0uxG0Epca7faz4vvV/imMmS3nclj/eKMCP+yek24deKcIZc8n2kr2zUeBRGxm7X2h9a4nnrh3O5xygvV2Vf5O6ese/YM/YNe2bbuRoTWmXmCa1fGYPREmujP74D5EtFJvei+uYEd/fAVAywpWm1/Qt5qj0ey1F5vLs5WszPUbGyWZPPf/fn57/78w/+yVaJ5VAtrzdH2z4uJbPF4KlMeXWwt90DU6rxULM9tG6WZPOz3SunQnW+nrPYdveSnoPIcb/g0V5eerSHfnpx2x67CBkPXs4ynrv45ZD073bOo7Fz0qnuF7rGWpyz23OI7PXO2d6HuTeQ23Z3pW5e4LZSP70M2pe497qt22timzV5fDyQu61xcyD3dzUeH9e4N5C7r3FvILftHnhKF+syp71V4+Z44d3l2NbYb1Oe/8xvd/plOfo3bI/+R6/LrYHt2zU2A9u/OcZuDWy37U2cmwPb+wW5N7DdWvl857by+cHeyh98gNwbHG/b1/bdHBzfL8i9wfHW7OPzh+1zRjcHx/fLcWtw/Ldnhz2dHb58E1Ev33CKuSty79p/f27IG4aL6euDrH/+rHTrHz8rvS9x7xzm9ppszmH2Z9uTSayP193S5+fx8dDPj/TdJKHyiBPcUttbm6OWGMGoJV0Z/lxD2sfhsX9e6mZ4bJfj3p2134yjpER+pDlCXxmMOeY1U6S+DA8Zn4/obIt8y+jj3S1Sv2GL6DeMPm6L3Nwi+wlgMSFfSn13Plt5cO+ilpdF9s/C8yP1HM2018MP+8dHbt0Hbvr509JNP35ael/i3k/M7TXZ/MT85vmzO/eB9zXu3Qduu5tKd8+U7Rsupfbrcutectvdl7p5dGxL3Dw6bq/J65OH3X2pe/Mt920fj61Yvor6pe23kXzzzHJ8/t6JNj5+78S+xL0de3tNNm2/3aI3zyzH51PyfrMc98aT58eTpdruuaibJ7jz46lS241x9xx5X+PeOfLuZtTdDarfcI485dNN+puX58SLCEcZmw+TbJ94u/WUV/38Aa3++Hx4vz8+Ht7fl7gVYPfXZDN/7fPns+rnj2f13X2om2ct2xp3Z8B9fjr6+VNR/fOnonr5lkdN7n8z5uWPWy+fPmmy/VKKxS3o5xB0fo3qT59N233eqVVu2rR8bHyhBPNvf3jR788lPr4y324MnXETbDzk9caoj09nFvRaPp1ZsC9x8yM68uku2X7+Jt6Tkd8Z+Mv7ZHcVlM89jNcVtm/84Vl/aXlqk96v0eO+xLOGvKzRd+1eZo0vmD15vtyg8+NDfPsdH9V4yv95Eysl4C/fvikfd/y2xL2O334c6dbm6Nvb77wB2nIG/xQ7nx7j2wq3jvHtZ5VuHuP7TzPdPMa3R9fNY3z7XaUaw3g/vMj/l+8q7WoIr1oXeV1j//2eGif2T9bNl5V2i3KzU7Yl7nXK7k7RNwTHT5tjvt4c2w9NcUKcX4nxy4embtewz2uk2/df+uDVQ+Ns4aGvPxLVt88/DePFSWPzxavdK/pGzGcYaWbX10rEC+mG2JsleiyFjI9LaHtvg1bhGx75+vOLRfhZ0CJv7tpZ4vpxbvbL7sm258B6fP8ivxD3Sx8za/ED09vmELv5QbQ+x2bv3v24267G3Q/V2aZv9dOLpu1SGF8XGI9diu0mZEp0vkl+4vCnn7nd4PlzO/LLkIet7aca+88t8GKM/MjPzzW2Z5Xp1W3PC3N5vTabBRk13kWZJ/5/KddHXPc8UV/W2P/SSY/bs88k2PzS7Z6CmgwRPPJAg/14Xrd9zq6wRYqMzXLsJonEEPosm41q+xdRcjE5NjV240f3vlTXt1+Juvepur5/QVnlBWV9s0H2737jImrOTQDsvhR1NwBG/TwAdjdq7gbA7n7R/QDY7pvGx+rarO8drD8WmS+L7L92yc9MHa/P/Pc1GKt8XgS8V6MpA/KPzRczt/do45xqvPe5y+cl39qiz4vE8VYNKTGPWcp4/XHHPrcPmMQlyBPLe0Ws8Y7glqbNfLHIkCgyx5tFOp+y6K29WWTE/QHLJ81f2jk9phJJnnT/pRoWW0TGo7xZI66oZNTNF0C3t23aIx7affJuk2znvFYmIz9ZN2u0eybqeQ+MGVaij8fbS8Njkc+l2TTydqZmH+ll0MPGu5uYbz0/Wd49YvI7ruy9GtyYl5k+9vylr/k+4sjVUt5bDi1x5apld8jNj89uth8VVomYfXJ6Bu9LnyZWzkyePN6toowFan5d99eqWGWN8icPv1hl8BZk2wS2/OaZj+hlHaW8uyxp646y2bplfks+1cc+n9L9+jnfL3Mz5n6zUndjrm6nHo34AMeTd5v4N2XupuV+f0s69vTtYy99UWDIu900OWh0an+3Cp8u12nzvSpW45uqB8u7VfjMttXx+sDbvRPnez5gbtyFGSblzSqDad1jlMebVdIbzsfcnCrvP6bOG85tc6dwW2MwWWzkTzZ8qYYwMKSvr4L2gzqT/ml5zv2vS/LxF1L3JW7dMNyXuHXH8Ddfp08T/+fj1RsyZHdfahZjaOnlfal9iRpvlJm1jnfuSzVhQKfleTRfOjwaH1YuzcrYXK7bpzf79iVu3eyT/sfOEvhxc9T3Nyo9Z+3Nzj0+bk8V2YykyMf3Yfcl7u0a+WPvw/64OTb3YX+3a7hINnu8rKIfR5l+nGTbNemtpc/M7wbJdi/4uzcRZFvimYaND81rf7OIpfOZfLR/rUjcoHry0HeOs+ObxrFdpb3++bftHFqNM6snz/JWledQapyItHQScXz27K0a6YrgSzUk3jj4HCAub9VoTB1t+Xt6v9TY3Y+5N7nPtpPn4+smveTBhvq4X6PESPsz1/rLGrJ7GupmLm9L3Mtl009zebsxauNxhB9Oln/eGLuR9hnXrX2mE8xfi+wepeb1WOny4edRpP1iKIuRXvPzxXXhhYOPOt4uwjcK5O2tGk95yEMfr4/1/VsU4mX6bVdjfPpzua1w6+dytx53pwpua9ycKijjG6YKzu1LiuNybEh9/QZYmR9PZd2XuBdA8+OprPuNoWkKl202hny6Mdr2iwDx5E1r+bmsMn9ajO2jqXfm0MvuBX/35tDvS9z7mS2P/g01thfrXIzVHz7k8eMden1sP+M740I7fdDwp0+7Pb5hAvu+iPpLe6+xw5qeOPnl+7n7MrzO7snp5+XLZSpl8gf4fimze41jXIHk19q0n85wf7ckPIqoPzyL+LUV6p3bJfnTlV8sI2nzSnqa8Ocyun1B3veUqQ8elHrkscyfL1W3RXiV83PcWd4sUiNjazXZ7OrdHDU+qVOfsf+6ncv2q763Hk78TQ1aUUp7+Tu+L3LzhOI3S3LvjEK396Bu59Nu53QOE5nj9c7ZPorbY0K2/PCa2/Zzkd0Y/r23CWj9/D1VWj9+T9W+xK2Hce+vyeZ4327Re28T0Pr5e6p+sxy33iagu6en7j38rm03p+T222n3S3Lr8fftBrn5RoHf1Lj1RgFt+vlG3V0b3XyjwH457r1R4DcnAmnGQ08Tbn/56e2PT68H9iVuXRxpr39oiXvXV7/bpEzpfm5eeblJdxd6Ny8I5vbJgTjGTMvrz0FsrxaZsDRa7W9eLd7cLx/fq9q+yV3jvRcjj6v8sjU+vpExP76RsVuPuydS2xp3z6O23226OzKzeweixEBmzTN1f94pupu5fPcMSD5/jZrKx++t2Je4dwZ0e002Z0DbLXrzDGg3t+TuGdB+Oe6dAenHr//R7SyI+2dA+vELgLYb5O4Z0L7GvTMg+/glVWrf8EW//XLc2qTbQLaY1DvkvUiPaZo6Xs/1GZ//1o/tq1XifZTPkdU8xD3u17D4eWvzh9ea3K/xvLEen61+5DkYPzfK7s7UvbPJ/WLEWW0vu8UYn7/Y6Tc1bo6dbIvcHTvZL8nN3/zxDb/5Y/sDJUx/KPb6MNs9jMoUiqqq79WQmEFR1frmGJmf3oHQ3av27t2B2Je4GSDbLZomcT5eb1Gd26dY7r27XefuYTaLfdseP9wZ+nlJtrfZ730eSLev/bt5+jE/fr2/bs/W759+/Gbn3Po80P5NOiMuw/K5w89vvrLHdg7Vra8D2fZBp3vn6/b4+COp+xK3ztfvr4lt1mS7RW99HWhb4+bXgX5X4/FxjXtfB9rXuPd1ICuffzBlW+PmCxXvLse2xn6b3vo6kD+Y8PH2kD96XW59Heh2jc3XgX5zjN36OpBtb0Xd/DrQfkHufR3Itneibu7cXY27B/vN5Xj/ALn3dSDbfQXv7teB9gty7+tAtnsb4L3TB9t+gurmhfZ+Oe6NXfzu5PDO14GsfcMHKLdF7g0m708N7405WpPPz2F2t4BunsNsS9w7h7m9Jpsr5f3J9q0xR+uff0lvf8J+80jXz0fp9jVujdLZ7qNNN8OjyzeEx3Y5bm3S/Rt97ozS7SvcGaXbz+qPa58nphfGfOXJAOXpAp3tvRojnsSueZjua08XcPLyqK/XRb7jEYVtkef+jHtqw14+X7gtMaPddFZ7rwR39vLnfPT+XrH4cauW3xf1lT37Q43+Zo1KjbY5wvTj2/n7Erfu+ZrWP7TEzec19oMV/+UDX1/bJ2lsbb6ZHHk53q3BT/3xrPSbNXq9U0M/vueiH99z+c0jxTGoPmt986nkeIfoE18+gtc+3hS/KXFrW2wfnOddqD+cRn7p4fvCuy43DwLva8SDYjW/hOxrNeiTMTfPq+5frtB5LcKQ1+/p+UKVzUt2flelU8Vev/7Cdi8AvPlaRdvdprz54qHfvHCi8h7juXmt2m+2Cdcbz5389ssv8rK0t6twVTtmf/NVKVZ5Ovn5C97eraLpJSdvv3CFZ9ieXOu7VXqqIu++tqW1XEXfrZLG2dp4e7tYqjIfb1bp6XU2vb67p/sjV3n7qOMdmNbbJlv2s8nSQzZ9d8D8rgzPxT8X5vXLaPz1Wq/L3H0b0++WJi5Mnrx5V9tXVuqDMsZT9vmdp79um/7/x7ZJowL5XQofrNQHZXrh3QG7F2SO7bTd79o2fBztyV2+ZaX6u/H5eDDXIn+394vv8ZqPVOX1wfeb15jGy5CfON8sooU5zdXeLCIxicVkvrs6FrcInmdN5RtW5/0ivKhe7d2XzFrMxDUr/d0liWf5n0Xk3SUR3rsv/Rv2TtlEwve82O83r94teudI2b/hufGWaHn98pr9F3PiffU1zxH8+Ws3/pmQz4aG9iVujeuM3T2tbyhx86NQu+3ZeM1Ls9dfDxpt+znOG2/h2C5FZ3Ap3w//dSn6x5eHY3cT6O5b97ffY6p86rDKy3XZ18gfwny9PfruMaC7H4baFrk3tL0vcWto+zcl7gxtbz88dmuMal/hzhDV9gN/t5ZhX+HOMuxuLsYLhiWNFTyT9HaBybuf5Z0C5VH5Voi+V6Lwda78PqcvlVA+4TDeW4qWXvg331uK9DpH6fZeCeWudb6h95UV4S2s+e0SXyrB+F6Tt1akWpxgPO/5vHVsFlVeWW3vrYgZgwn5qxxfKMHbR8qsb5WwuD2RXwL+hQIzftSnvLUdZtx1z+ObXykQ/TVNPlyF9woUfjPKTG+xeg6jvVUi/fh9ocTxEo91WD/SbYkvleBuwCPN8f9SiXjt//Me15srEqeateRJFF8q0Snx5raocQH+5Lw1fjpF2z1wxXua+2jjZYmxexFf0ZreppNWRssXivAxktLTueKXiliMf/7wsv+fSux+0xnNlR8Gc+/vF5G4gSDS3ywRN9+e1d47RgtP1OQvdXzlZ6gwfaGkOXFfKsH8mPp46ye5clP2ecH71m9IZVruj7N0vrIU8Xv6vLn83uZs8bjGc5XKe0vBVKH2eGtbPK9+4s2Kkj/O8ZWjswpH51u/JtLj3EJ6/tDI/RI/THnKl6dyv0ThAcmaX+74U4mxHQ2K8xM2Zm/3T/VG+qTkfGctikl66W9+zPOnJ1a30xMtXsherb6ayrs/1YtLgPnDy+q+cMI54mckT1r/dUU+foBvPj5+gG9f4t4DfNvkHHyKLj028/PGmNuvUB3f3+Ey4PV7Nn5TpOUPmbSXRfYvhuAVynm885fV2T63z1c+f9ysP72H5bF7xyRfpBtFbFNktzpMBXnmUNuszm6iT2kMIKRZ1uVRvlBEYxBYNb8V/ktFRqTYD8NSvxQp9dMBmd8sh6bhsbFZjv75Ke3cPdl095R2vzp8C/Z5m22zb8r2c+ONz42no6T/9IjmLLtXmpaYSP/8e2NT5Def3ODrEDNfO/2yabfLEoPCs8pmWWr5hi7ebtoaE4Z++P3/dUm2j8GM+FhnkTllU6Z/RyzN7WBJ3K8bOWV/PuC2z0pZ4e5wfo5efvoB3N0Tkgfnd49NifENB/7urtDtA789vuXA367Q3cNt/8DU7cNt9+D37cOtbl/XzJNG7fVObtvzAq5o7LF7tZr+0SvD1KlHujr7dW12L10onZO2MjZrM79jbXT7+xWjKTY2q9O3D4TEtWLLQ2W/FqnfsIf7dxyu29UpMYeg1XSL4dfVkW/YxV3/6LCffNA4f9Lvl7Dv2+dR4yHf/khnfr+ESd9+M6YyfSw9czh/fnHc9lo8xmie+ymdP46fi+wfg4onmPLdsNZ+2iRSv2HnbFenMjrR0u/Or6vT/+gl6YV3BaShll+XRHc/54XvceTW0S8canTO8zRFXx9qu7fhfcvV2/PY4LUWj8219e6BqNu5puWPXp3ayLX8bpxfVqd9Q67pdxyw27PyQUzn+fel/NTE21f8feFaZbcsPIDcS/6M5S/L8h3H7Pbk8e5Wsf8fTmTvbhX7jpjdZYrUGN96DkrrZkn65z9fJt/w87X7GtXtny/7jvGt7erc/fmy+Ucvyd2fr9278r7j50s03pwsP1zu/HyojW84j93dsbX4+NHzJsp8Z6C9a3zsoFt/PdA+h3480D7s44H2bYmbr9X+zQB3+jr2628vzvn4hlHyXZGbb8XejpHPyn0YeXuMPBJxlDy1/2tFYo7fqGWzJLv3/tmMS1Cb+cHNX4rsclVq/Fy9nsGzH8plQEslfUjpa0O5PGvdppZ3zyZu7pt9kXv75tlU5fOdc7TmH7p3TEd6xOD1nZTngmy/Jxl7p+fvhP9cYvdCNGbuyQ9f1/3pdu5vTvVuHib706ubh8m+yO3DZH7HYVIeHx8m20Hp+LH44RM/8vM32XZ3uTrPS/RWX9+w3496MjpXtZd3Rz1v7uF9kbt7ePcdpy/sYftD9zBPgM/0hPJ/sYd3n/op8cYVKfnV27/s4d3ZYuFYqz8MJz++MhJ8dw/P79jDu7tc9/fw7ibXzT28G8StTCmueULvr/u47l9rHl38yJ8w/nn3bEe273bxfmT75j7eF7m7j3e3ue7v4913ob5hH7cS0x/b81x6s4+37zYecVbfx5DNPpZv6OP+HUndvyWpd9+p+sI+Hh/v4+2gS2s8MpJuUM2fv8zUt5+LiI8T5B2s4ws1JF78KPp2jXiRhKSXdHyxRkwI10f7hhrjzRoa20Pf3h4a20Pf3h4a62Jvb49c493twYtB7e3tYbE97O3tYbEu4+3tkWu8uz14CHLou8sx4sGF/BD2F2vEePh8e3vkGu8ux4xYnpsM+s24rzKbML/lp/18+SrbZ6jjOfv2w9tsvlalx7Ha5DHercK7NZvmt0J9rYrFGOPxEuj/fHM8/O6F8DeMZZWHfsNg1rPK56NZ20F1PkXc8lcAvzi8f3fDfsvViX3LmauVP3bD9jired6tKC837HNB2u78N+5qtfzN6vJLkd0JVhrU/uGX6+dPv+/WJ38gsb1ZYjAteLxb4vFfnQrY/RtAfcaojfzwGatftujuDROcXnXNsxrfL9Je3oq6f09MN0fZ2H6ohGcDehuvV2f7DsFH5w3dc7NNxu5QLdzGfXKeuPpJmdf3+X7zHOK4czd4e6+wx4mFSH99g/y5Prt3RpUHz/bnt+/88iO6+6IVU4J7/gmtj59qzO3kLFKtbmpsl6NEuuaXKv66HPU7cn73xNbdEYrdDhaLPNE8CvzLDt5+R1f4+FJ7fQW8v7X1X5U4Bk2+cE/65u/4+JYRqPkddwrK4/M7BftnFGKS9ayPzbTI/TMKNzfsvsjNDVt2t7a+sGHl8wH6/UdDuD/9/Cksm03bv2PT9m/ZtN9yzH7H3a35Hcfstsi9h3Oea/MN01x+V+XeTv5dlbt7+VvucJVvuMP1mw/m3G2g9h2h375l09bvmEVQ6uezCLbT2G8OSZfaPx6S3ta4OSS9r3FvSHpf496Q9O0a480aN4ek9zXuDUnva9wbkr5d493tcXNIel/j3pD0vsa9IenbNd7dHjeHpPc17g1J72vcG5K+XePd5bg5JL1/kubmkHTZ3Ze+PSS9r3J3SHpf5e6Q9L7K3SFp+Y65WfIdc7NK/5azV/n87HVb4u6QtHzHZYF8y2WBfMsVl8gfu2HvDkkXsc+HpMvu4a27Q9Jld1Po3pD0vsStIenflLgzJL17pO7ukHTZPbV1d0j6C0VeD0nff8pwMyRdtk9t3RySLmqfD0kXHd8xJP2lMptHT+YfOyTdHzE68KxWNxf2uwnBt4eky+7+1s0h6bIbpr85JL1fjntD0sW+ZWDAPh8Y2D9ey9dBS9PdDt7fuL8xJO0Pu304JC3f8YyDfMczDmV8x8TXMj6f+Hr7lVP99SunShnbV2ilr1ulRwz7j0857J98vjvvVb9jcFy/ZXB8fsfsAX+Z5Ye7ePdDfHuyqX7HObB+yznwdzy89ayif2jvNL6A1vKHqH59XZvsfkGZT/zQumnA3S2u76ly71MEv6lx61sEv6tx52ME+/cgx3snS/qe0U959DyN2h2t8fTXLK+/i/2ssYvXFgMvtecnSX/6MPb+fbnxcuqSjrJf18V2MR/viHrsSuzeXTf5kPOT8+tV778YWuITcPLD96TljQI/fD75dgGNk948XPOVAulKsbxVIF7crj98eOR+gVtfudgW+PAjF/eeKN4919yN13Knl7K2evud2s9eiMt+af2tEpY+PtnfW4qh6Ruj+laJGc+llJnfLPmFEsrLetXeWxGdfJfh8d6KPNLLzsZ7S1Hj4f1S89P7XyjR+LppTx9L+tJSxHNcpep7K8JruUsr+um2eLuETFYkBW75ylIYe6R+XkLfKtHiRdJPHO+VUO7DpjdtfKVEjpz+3rZofJO4p/c7vV3ivZ2a302TvgTwpRJ8CqarvlmCFclvv/9KiTiNL328t1N7jFM+r4gebx4XfCKovrVTe3zj9IdxzvsFODSlvt4Oz2TTbe514iKd894/v+t858LeWg2Ls6v+1r4QYQplf6tAvC5eZnuvQMyRmP2zAnmCxJc2IkPVb2WlxhBmfkv1e0vw827878//+c//8pe//9Nf//Vf/vnf/vKvf/u/z3/3n0epv//ln//HX/98/c//9e9/+5f0//7b//t/1v/zP/7+l7/+9S//+5/+z9//9V/+/D///e9/Piod/9+fHtd//Dc7Jv7bY+p//4c/lef/Ph7bfvzD8z9tPP+kPf9k1vb4h/m8Jjv+xvFP9Hjt7PMWjv/B8W/mMV/m+R/jv//nsdD/Hw==", - "brillig_names": [ - "get_htlc_public" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "is_contract_initialized", @@ -4379,7 +4448,7 @@ "abi": { "parameters": [ { - "name": "Id", + "name": "id", "type": { "kind": "field" }, @@ -4401,18 +4470,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -4420,22 +4486,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -4452,19 +4512,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -4475,57 +4554,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -4541,13 +4612,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -4556,32 +4623,19 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "vb3bziQ7cmb5LnWti+DBaEa9SqMhqNXVjQIKpUa1NMBA0LtPuJG0xcxUMP2P+Pfc1F61d6YtP/ELd5JO/48//c8//49//9//9Je//a9//b9/+sf/9h9/+h9//8tf//qX//1Pf/3Xf/nnf/vLv/7t+W//40+P639Sbn/6x/IPz3/qn/5Rrn/an/5Rr3/2P/1jf/6zPP9YShekJ1x/suQFZUFdIAvaAl1gC/qE+liwKtdVua7KdVWuq3JdleuqXFfluirLqiyrsqzKsirLqiyrsqzKsirLqiyrcluV26rcVuW2KrdVua3KbVVuq3JblduqrKuyrsq6KuuqrKuyrsq6KuuqrKuyrsq2KtuqbKuyrcq2KtuqbKuyrcq2Ktuq3Fflvir3Vblfla/rqNcFsqAt0AW2oA/Ij8eCtCAvKAvqgquyXdAW6AJb0Cekx4Jn5ZwueFbOckFZUBfIgrZAFzwr535Bn5AfC9KCZ+XyuKAsqAuuyuWCtkAXPCuXS3E1QYerDQ5IC/KCsqAukAVtgS5YlcuqXFfluirXVbmuynVVrqtyXZXrqlxX5boqy6osq7KsyrIqy6osq/LVBst1Tq82OMAW9AlXGxyQFuQFZUFdIAtW5bYqt1W5rcq6KuuqrKuyrsq6KuuqrKuyrsq6KuuqbKuyrcq2KtuqbKuyrcq2KtuqbKuyrcp9Ve6rcl+V+6rcV+W+KvdVua/KfVXus3J5PBakBXlBWVAXyIK2QBfYglU5rcppVU6rclqV06qcVuWrDdbHBbrAFvQJVxsckBbkBWVBXSALVuW8KudVOa/KVxusckFakBeUBXWBLGgLdIEt6BPqqlxX5boq11X5aoPVLpAFbYEusAV9wtUGB6QFeUFZsCrLqiyrsqzKVxuUfEGfcLXBAWlBXlAW1AWyoC3QBatyW5V1VdZVWVdlXZV1VdZVWVdlXZV1VdZV2VZlW5VtVbZV2VZlW5VtVbZV2VZlW5X7qtxX5b4q91W5r8p9Ve6rcl+V+6rcZ+X6eCxIC/KCsqAukAVtgS6wBatyWpXTqpxW5bQqp1U5rcppVU6rclqV06qcV+W8KudVOa/KeVXOq3JelfOqnFflvCqXVbmsymVVLqtyWZXLqlxW5bIql1W5rMp1Va6rcl2V66pcV+W6KtdVua7KdVWuq7KsyrIqy6osq7KsyrIqy6osq/Jqg3W1wbraYPU2WC/IC8qCukAWtAW6wBb0Cd4GHVZlXZV1VdZVWVdlXZV1VdZVWVdlW5VtVbZV2VZlW5VtVbZV2VZlW5VtVe6rcl+V+6rcV+W+KvdVua/KfVXuq3KfleXxWJAW5AVlQV0gC9oCXWALVuW0KqdVOa3KaVVOq3JaldOqnFbltCqnVTmvynlVzqtyXpXzqpxX5bwq51U5r8p5VS6rclmVy6pcVuWyKpdVuazKZVUuq3JZleuqXFfluirXVbmuynVVrqtyXZXrqlxXZVmVZVWWVVlWZVmVZVWWVVlWZVmVZVVuq/Jqg7LaoKw2KKsNymqDstqgrDYoqw3KaoOy2qCsNiirDcpqg7LaoKw2KKsNymqDstqgrDYoqw3KaoOy2qCsNiirDcpqg7LaoKw2KN4G7YI+wdugQ1qQF5QFdYEsaAt0warcZ+X2eCxIC56Vm1xQFtQFsqAt0AW2oE+42uCAtGBVTqtyWpXTqpxW5bQqp1U5rcp5Vc6rcl6V86p8tcGmF8iCtkAX2II+4WqDA9KCvKAsWJXLqlxW5bIqX22wXQfzaoMOVxsckBbkBWVBXSAL2gJdsCrXVVlWZVmVrzao6YKyoC54VtZyQVugC2xBn3C1wQFpQV5QFtQFq3Jblduq3Fblqw1qe8LVBgekBXlBWVAXyIK2QBfYglXZVmVblW1VvtqgXmfnaoMDZEFboAtsQZ9wtcEBaUFesCr3Vbmvyn1V7qtyX5X7rKyPx4K0IC8oC+oCWdAW6AJbsCqnVTmtymlVTqtyWpXTqpxW5bQqp1U5rcp5Vc6rcl6V86qcV+W8KudVOa/KeVXOq3JZlcuqXFblsiqXVbmsymVVLqtyWZXLqlxX5boq11W5rsp1Va6rcl2V66pcV+W6KsuqLKuyrMqyKsuqLKuyrMqyKsuqLKtyW5XbqtxW5bYqt1W5rcptVW6rcluV26qsq7Kuyroq66qsq7KuyroqexvsF9iCPsHboENakBeUBXWBLGgLVmVblW1V7qtyX5X7qtxX5b4q91W5r8p9Ve6rcp+V7fFYkBbkBWVBXSAL2gJdYAtW5bQqp1U5rcppVU6rclqV06qcVuW0KqdVOa/KeVXOq3JelfOqnFflvCrnVTmvynlVLqtyWZXLqlxW5bIql1W5rMplVS6rclmV66pcV+W6KtdVua7KdVWuq3JdleuqXFdlWZVlVZZVWVZlWZVlVZZVWVZlWZVlVW6rcluV26rcVuW2KrdVua3KbVVuq3JblXVV1lVZV2VdlXVV1lVZV+XVBm21QVtt0FYbtNUGbbVBW23QVhu01QZttUFbbdBWG7TVBm21QVtt0FYbtNUGbbVBW23QVhu01QZttUFbbbCvNthXG+yrDfbVBvtqg321wb7aYF9tsK822Fcb7KsN9tUG+2qDfbXBvtpgX22wrzbYVxvsqw321Qb7aoN9tcG+2mBfbbCvNthXG+yrDfbVBvtqg321wb7aYF9tsK822Fcb7KsN9tUG+2qDfbXBvtpgX22wrzbYVxvsqw32qw1avqAukAVtgS6wBX3C1QYHpAV5waosq7KsyrIqX23QygW2oE+42uCAtCAvKAvqAlnQFqzKbVVuq7Kuyroq66qsq7Kuyroq66qsq7Kuyroq26psq7KtyrYq26psq7KtyrYq26psq3Jflfuq3Fflvir3Vbmvyn1V7qtyX5X7rJwej0dQCspBJagGSVAL0iALCkcKRwpHCkcKRwpHCsfVKE2dNMiCrsH1x0VXw5yUgnJQCapBEtSCNMiCwlHCUcJRwlHCUcJRwlHCUcJRwlHCUcNRw1HDUcNRw1HDUcNRw1HDUcMh4ZBwSDgkHBIOCYeEQ8Ih4ZBwtHC0cLRwtHC0cLRwtHC0cLRwtHBoODQcGg4Nh4ZDw6Hh0HBoODQcFg4Lh4XDwmHhsHBYOCwcFg4LRw9HD0cPRw9HD0cPRw9HD0cPR1+O9HgEpaAcVIJqkAS1IA2yoHCkcKRwpHCkcKRwpHCkcKRwpHBEO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTtP0c5TtPMU7TxFO0/RzlO08xTtPEU7T9HOU7TzFO08RTvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO08RzvP0c5ztPMc7TxHO8/RznO08xztPEc7z9HOc7TzHO3c5xD17FSDJKgFaZAF9UXezgeloBwUjh6OHo4ejh6OHo6+HD6paFIKykElqAZJUAvSIAsKRwpHCkcKRwpHCkcKRwpHCkcKRwpHDkcORw5HDkcORw5HDkcORw5HDkcJRwlHCUcJRwlHCUcJRwlHCUcJRw1HDUcNRw1HDUcNRw1HDUcNRw2HhEPCIeGQcEg4JBwSDgmHhEPC0cLRwtHC0cLRwtHC0cLRwtHC0cKh4dBwaDg0HN7Oi5MEtSANsqC+yNv5oBSUg0pQOCwcFg4Lh4XDwtHD0cPRw9HD0cPRw9HD0cPRw9GXwycuTUpBOagE1SAJakEaZEHhSOFI4UjhSOFI4UjhSOFI4UjhSOHI4cjhyOHI4cjhyOHI4cjhyOHI4SjhKOEo4SjhKOEo4SjhKOEo4SjhqOGo4ajhqOGo4ajhqOGo4ajh8HZ+9Wr4VKdJKeiatv14OBawggI2UEEDe6BPxJ+YQGwNW8PWsDVsDVvD1rApNsWm2BSbYlNsik2xKTbFZtgMm2EzbIbNsBk2w2bYDFvH1rF1bB1bx9axdWwdW8fWw+aTqRYmMIMFrKCADVTQQGwJW8KWsCVsCVvClrAlbAlbwpaxZWwZW8aWsWVsGVvGlrFlbAVbwVawFWwFW8FWsBVsBVvBVrFVbBVbxVaxVWwVW8VWsVVsgk2wkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiZImSJUqWKFmiI0uKYwMVNLAHjiwZmMAMFrCC2ASbYBNsI0vqhSNLBiYwgwWsoIANVNBAbIpNsSk2xabYFJtiU2yKTbEZNsNm2AybYTNshs2wGTbD1rF1bB1bx9axdWwdW8fWsfWw2eMBJjCDBayggA1U0EBsCVvClrAlbAlbwpawJWwJW8I2ssQcE5jBy5YejhUUsIEKGtgDx+IDAxOYQWwFW8FWsBVsBVvBVrFVbBVbxVaxVWwVW8VWsVVsgk2wCTbBJtgEm2ATbIJNsDVsDVvD1rA1bA1bw9awNWwNm2JTbIpNsSk2xabYFJtiU2yGzbAZNsNm2AybYTNshs2wdWwdW8fWsXVsHVvH1rF1bD1sPtlwYQIzWMAKCthABQ3ElrAlbAlbwpawJWwJW8KWsCVsGVvGlrGRJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0t6ZEl+RJbkR2RJfkSW5EdkSX5EluRHZEl+RJbkR2RJfkSW5McDW8KWsCVsCVvClrAlbAlbwpawZWwZW8aWsWVsGVvGlrFlbBlbwVawFWwFW8FWsBVsBVvBVrBVbBVbxVaxVWwVW8VWsVVsFZtgE2yCTbAJNsEm2ASbYBNsDVvD1rA1bA1bw9awNWwNW8Om2BSbYlNsik2xKTbFptgUm2EzbIbNsBk2w2bYDJthM2wdW8c2sqQ4FrCCAjZQQQP7wjSyZGACM+hPHd2xggI2UEEDe+B4xhmYwAxiS9gStoQtYUvYEraMLWPL2DK2jC1jy9gytowtYyvYCraCrWAr2Aq2gq1gK9gKtoqtYqvYKraKrWKr2Cq2iq1iE2yCTbAJNgmbT1wbS2GNxKyOfh02xx44snFgAjNYwAoK2EAFsVVsgk2wCTbBJtgEm2ATbIJNsDVsDVvD1rA1bA1bw9awNWwNm2JTbIpNsSk2xabYFJtiU2yGzbAZNsNm2AybYTNshs2wdWwjG/0yG9k4sIAVFLCBl21cnp6NE/tCn+O28LLl6pjBy5bVsYICNlBBA3ugZ+PEBGYQW8KWsCVsno3ZHA3sgZ6NExOYwcvmS9z53LeFAl624kfHs3GigT3Qs3FiAi+br1VWxhKUAysooNt8y8ZSlAMtcKw5mRy9WHe8/lod//b6a9XPm4fCxB7ooTAxgRm86la3eShMFLCBbvNt8FCYeNmutX6yT3RbmMAMFrCCl02aYwMVNNBtfvg8FCa6zTfSQ2FiASt42ZqLPRQmKmhgD/RQmHjZmm+Oh8LEAlbQbb6RHgoTFXSbX30eCgM9FCZW0Iv5XoxlKf0iGAtTXsXqWJpyYAIzWMAKCthABQ3ElrAlbAlbwpawJWwJW8KWsCVsGVvG5q1bzbGAFRSwgQoa2AO9dU9MILaCrWAr2Aq2gq1gK9gqtorNm//1Tmn2SXALKyhgAxU0sAd6KExM4GW73iHNYzbcxAoKeNls/DUFDeyBHgoTE5jBAlZQQGwNW8PWsCk2xabYFJtiU2yKTbF5KFwT2vOYDTfQQ2FiAjNYwAoK2EAFsRm2jq1j69g6to6tY+vYOraOzbOkX7EyZsNNTGAGC1hBARuooIFuu343x7w3j7Yx761XxwoK2EAFve6o0AM9NSYmMIMFvG7tH9lRwAYqaBf6pl+pMfFKjYXpQt+yKzUWFtBtzdFt6ui27qiggT2wPsAEXjZ/LPF5bwsrKGADFTSwB16psTCB2ASbYBNs4nV9j6UHtgeYwAyWQHX0A6UVdIWfQmXTlU03Nt383/qB6g8wgRksYAUFbKCCBobNJ4QtTGAGC1hBAa+6+WqmPskr+wLRPskr+w29T/JaWEEBG6iggT3QV4yemEBsGVvGlrFlbBlbxpaxFWwFW8FWsBVsBVvBVrAVbAVbxVaxVWwVW8VWsVVsFVvFVrEJNsEm2ASbYBNsgk2wCTbB1rA1bA1bw9awNWwNW8PWsDVsik2xKTbFptgUm2JTbIpNsRk2w2bYDJthM2yGzbAZNsPWsXVsHVvH1rF1bB1bx9ax9bD5JK+FCcxgASsoYAMVNBBbwpawkSVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkiVKlihZomSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmSJkSVGlhhZYmRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlvTRIMXRwB44GqQ6JjCDBayggA1U0MAe2LF1bN4gffDGZ0otrKCADVTwsvmnh3ymlGPxmVILE+i25ljACrpNHRuooNvMsQd6g5yYQLd1x6uuf4XG50QtVNDAq27N/rWeq24tjlfdazSq+JyohQWsoNt8j73pTVTQQLf5vnl7q7693t7EN8fbm3/TxCdCPXulHAVsoIIG9kBvbxMvm/hR9/Y28bI1F3t7myhgAxU08LI1Pw7e3iYmMINu883x9jZRQLf5lnl7m2ig2/x0+2+3+jb4b/fEDBawggJetmu4qvhEqIUG9kD/7Z6YwAwWsIICYlNsik2xGTaPCvVr0qNiYgH9KvEryqNiYgMVNLAHelSoH1+PiokZLGAFBWygggb2hT4RamECM1hAr6uOChrYAz0UJiYwgwWsoIDYEraELWHL2DK2jC1jy9gytowtY8vYMraCrWAr2Aq2gq1gK9gKtoKtYKvYKraKrWKr2Cq2iq1iq9gqNsEm2ASbYBNsgk2wCTbBJtgatoatYWvYGraGrWFr2Bq2hk2xKTbFptgUm2JTbIpNsSk2w2bYDJthM2yGzbAZNsNm2Dq2jq1j69g6to6tY+vYOrYetvx4gAnMYAErKGADFTQQG1mSyZJMlmSyJJMlmSzJZMn4AuY1eF7GNzAn9sCRJQMTmEFXVEcBG6iggT1wBMjABGawgNgKtoKtYCvYCraKrWKr2Cq2iq1iq9gqtoqtYhNsgk2wCTbBJtgEm2ATbIKtYWvYGraGrWFr2Bq2hq1ha9gUm2JTbIpNsSk2xabYFJtiM2yGzbAZNsNm2AybYTNshq1j69g6to6tY+vYOraOrWPrYSuPB5jADBawggI2UEEDsSVsCVvClrAlbAlbwpawJWwJW8aWsWVsGRtZUsiSQpb4HMPn6Xc0sAd6llxTborPMVyYwQJWUMDLZm7zLJlooNuu21tfb29hAjNYwAq6TR0bqKCBPdCzZGICM1jACmITbIJNsHmW2HV761MTFyYwgwWsoNu6YwMVvGzX3JniUxMnepZMTOBVt/uJ9XzofoY8Hyb2QM+H7mfI82FiBq/t7eOrrRUUsIFu8x3yfJjYAz0fJnpdP3ze5q+pMcUX1FtooB/f8Z3YB5jADBawggI20G3d0cAe6G1+YgIzWMAKCthAbAlbwpaxZWwZ2/iE9sOxgQoa2AP909kTE5hB6vontCcKiK1gK9gKtoqtYqvYKraKrWKr2Cq2iq1iE2yCTbAJNsEm2ASbYBNsgq1ha9gatoatYWvYGraGrWFr2BSbYlNsik2xKTbFptgUm2IzbIbNsBk2w2bYDJthM2yGrWPr2Dq2jq1j69g6to6tY+th8zmGCxOYwQJWUMAGKmggtoQtYUvYEraELWFL2BK2hC1hy9gytoyN1PCZhwuxkSVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVClghZImSJkCVCljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpI0uyo4E9cGTJwARmsIAVFLCB2Aq2gq1iq9gqtoqtYqvYKrYRIMmxB44AGZjADBawggI2UEFsgq1ha9gatoatYWvYGraGrWFr2BSbYlNsik2xKTbFptgUm2IzbIbNsBk2w2bYDJthM2yGrWPr2Dq2jq1j69g6to6tY+th08cDTGAGC1hBARuooIHYEraELWFL2BK2hC1hS9gStoQtY8vYMraMLWPL2DK2jC1jy9gKtoKtYCvYCraCrWAr2Aq2gq1iq9gqtoqtYqvYKraKjSxRskTJEiVLlCzRkSXF0W3NUcAGKmhgDxxZMjCBGSwgtoatYWvYGraGbWSJOiYwgwWsoIBuq46XLQ00sAd6lkxMYAYLWEEBG4jNsBm2jq1j69g6to6tY+vYOraOrYfNZ2AuTKDXFUc/F+ZooFe4+hR8VuXCBGawgBW8tveaJVN8VuVCBQ28bNm3zPNhYgIvW/bt9XyYWEG3NccGKmig266rxOdPlux77EkwsYICXnWvt7OLz58s19SY4vMnn/2gjlfd4tvrSeDzYXz+ZPGZLz5/cmEBK3jZfBKMz59cqKCBbvND7c2/+uZ48/eJLT5psvjEFp80WXwuik+aLNV3yJv/RAUN7IHe/Ccm0G2+Dd78J0pcXN7mJypoYA/0Nj8xgRksINevYlNs3ubFD4m3+Yk90Nu8T7nxmZILM1jACgrYQAUN7IEdW8fmbd5n6vhMyYUVFLCBCrrNj7q3eUefKbkwgZfN5+/4TMmFFbxs14vlxWdKjqjwmZILDYyE6ekBJjCDBayggNgStoQtYcvYMraMLWPL2DK2jC1jy9gytoKtYCvYCraCrWAr2Aq2gq1gq9gqtoqtYqvYKraKrWKr2Co2weYB0opjBv0qGX+gggI28LJd6wgUnym5sAd6gExMYAYLWEG3mWMD/TfLr+oxwOF/dgxwDPS64w8UsIICNlBBA6+98IlZPp1zYQIvm3rD8dSYWMHL5vPPfDrnQgVjKGNM5xw4BkMGJjCDBayggA1cAyd1TNy8hn/qmLg50feiOBawggI2UEED/ZjJhZ4PExPotuZYwAq6rTo2UME1XFXHdM6BY4hkYAIzWMAKCthADfQkuOZ2VJ/DuTCDBfS98EPtSTCxgQr6RF4/AWPOtOOYMz0wgRksYAUFbOCzrq/YUn22ZjHfIW/zEzNYwAoKeO2F+RnyNj/RwB7obd78kHibn5hBt/lx8DY/UcDLdo1ZVp+tWcaV6vcP3a8zv38Y6PcPExOYwQJetu6XkSfBxAYqaGAP9CSYmMAMFhCbYTNshs2w+f1D9yPp9w8TE/i01YcfnSsJFlZQwAYqaBe67bp/GOizNRcm0G3iWMAKuk0dL9u1tl71OZwLDeyBVz4sTGAGC1jBy5aSYwPdlh0N7IH5AbrNNz1nsIAVFLCBChrotusM+RzOhW7zo1MyWMAKCvhU+Npu1Sdu1mt1geoTNyfWB5jADF4KTwKfuLlQwAYqaOBly75vV4AsTGAG3eZ7LBUU0G2+b6KggW674sonbtbip/sKkFp8c64AWVjACgrYQL9BvsiTYlAKykElqC4yL+5nwQRsoIIG9sD+ABOYwQJi69g6to6tY+th85mTCxOYwQJWUMAGKmggtoQtYUvYEraELWFL2BK2hC1hy9gytowtY8vYMraMLWPL2DK2gq1gK9gKtoKtYCvYCraCrWCr2Cq2iq1iq9gqtoqtYqvYKjbBJtgEm2ATbIJNsAk2wSbYGraGrWFr2Bq2hq1ha9gatoZNsSk2xabYFJtiU2yKTbEpNsNm2AybYSNLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpbIaOjN0cAe6N2R6pSCclAJqkES1II0yIL6ohaOFo4WjhaOFo4WjhaOFo7RrM2xB45mPfA6hNcyA9VnTy68DuE1Glt99uRCARuooIE90Jv1xARmEJthM2yGzZt19RPmzXpiD/RmPTGBGXSbOFZQQO98dNIgC+qT2uh4dEpBXrE5+paqo2+pOfZAb6QTE3htqXgxb6QTKyhgA71728mCLtc1gFx9JuTCBLqrOBawgu4SxwZeeya+k95EJ/ZAb6L+R72FDspBJagGSZBX9MPmP97iu+I/3tfIcPV5jQsrKOC1pc130Nv0RAN7oP94T7xsLvPf7kEl6FL5VvkP96AWpEEW1Bf5b/Y1VF19ZuPCDArom+kH3xvsQG+wfmi9vQ7KQddWNj963lonCuhHxLfFW+tEV/neeWsd6K21+YH01qp+eXlrVT9O3lp9UMunKi4UsIEKGtgDvbVOdJtvr7dWH1jzqYrVB6p8UmL1cSiflFjVN9Jb5sS+0CclLkxgBgt4FbOHo4E90BvqxARmsID+164D5ZMHFyYwg/7XsuN1JK/3AqtPHpTq1II0yIL6oqu5TUpBOagE1aBwlHCUcJRwlHDUcNRw1HDUcNRw1HDUcNRw1HCM1jbwKuPH42pukySoBWmQBfVFV3OblIJyUDhaOFo4WjhaOFo4Wjg0HBoODYeGQ8Oh4dBweFvz0Uefyrcwg9cV4sOIPpWv+kCkT+WrfVS4LlgfJfSJePV6cbH6RLza/c/679rEBl4754NqPhFvYV/oE/EWJjCDBayg28yxgQq67do3n54nPgDn0/MWel3/s6mCAjZQ+WsG9sD8ALFlbLmAAl4KN3i7G2RBfZG3u0EpyIt3xwJWUAO9Tfn4oM+7Ex8U9Hl3CwtYQQEbqOC1rT5q6PPuJsoDdFtxzGAB3SaOAjZQQQN7oDfCiQnMYAGxNWwNW8PWsDVsis3bow9i+my8hQX0un6i1Yv5ebME+ub4GTJvtH6GrIEKejb4Ubce2D0dfHO6V7hsPnlNrtmZ1SevLWyggl63O/bA9AATmMECXnV9NNKnqS008Krrg40+TW1hAjNYwAoK2AL9sr/mmFafZLZQwAYqaKBv2XUh+iSzhQnMYAEr6Lbq2EAFDXTbdbJ8Opn4w55PJxN/hvLpZAsFbKCCBvZAbwx+T+7TyRZm0G1+3rwxTBTQf0L96HhjmGhgD/TGMDGBGSyg/1z7MfMfKL8H94lj4veWPnFsYQYL6Fvmu+ntYqKBPdDbxcQEZrCAvmV+dLwNTWyggjZRfLaYXDN7xWeLLbyKXQ9K4nO95Hr8EZ/VJdcvsfisLrmeecRndS18iq97ZfFJXZM0yIL6oqslTUpBOagEuaQ6CthABQ3sgf7jMzGBGfS64ugVmuO1qX6krqY1KQXloBJUg7yib7+3qokKGtgD/Ydnoh9mL+btR/zsePuZ6BWc+iJvPYNSUA4qQdcxbX5mveVMbKCCBvZAbyPNLwhvDc2vgusHQ8d/1yALev519SvrajWTUlAOKkE1yCW+8d6MJmqgN5iJ1342P4feNCYKeF2ifhCvljHJgvokny81KQX5jqtjASsoYAMVNLAH+g/WxARiS9i83Y3N8du9iQ28bH7QfbbUwst2TVwVny0l14xO8dlScj1Mis+WWljAy6Yu9gY48bJdj5jis6VEXXw1wFm2L7qa36QUlINKkN9LPhz9xtE32n/WzP+A/6xNzOC1pddDkfg0qIUCNlADvamZ76A3tespQnxqk5jvoP+ATWygggb2QG+CExOYQbf5gfNmOFFAt/nh9GY40cAe6D9g3Y+Z/4BNzOB1eH3Xrt+vSRJ0tVc/Bt5eB1lQX+TtdVAKcomfI/+Nm1hBAS3Qf826X4T+azbRK/j59CY7UcBrS32XryY7yYL6JJ8gNSkF5aASVIMkqAVpkAWFI4UjhSOFI4UjhSOFI4UjhSOFw1voNUlUfDbUwgT6IWuOBaygHzJzbOAVc9fLg+KzoRb2wKuNLkzg9Rt3vfYsPhtq4fUrd71+KD4bqj18y67W2675ouKzoRYa6DbfSP89nZjAp83ccDXpSTVIglqQLhKvqI6+pb7b4lvqR1YEbKCC15Ym3+2rNU+8WvPCBGbw2lQ/FldjbmngJUu+11djXnjJkm/j1Wz9uh6flR1H0D8LNzbGPws30cBru66HKfF5SQsTmMECVlDABipoILaOrWPr2Lrb/ID0CgrYQAVtoU9GGsdhfDV2Ygb9QJljBQV0RXZU0MAemB5gAn2H3JYK6DtUHAVsoM/kfTga2AP9C3ETE5jBAlZQwAZiy9gytoKtYCvYCraCrWAr2Ao2b8rXk7r4ZKSJ3pQn+pFsjhksYAX9SKqjH0k/heML1H5QxxeoB/ZAb+bXQ7v4ZKSFGSxgBQVsoIIG9sCGrWFr2MYXqP3aGV+gHihgAxU0sAeOL1APTGAGsSm268e8FT9DV4AsVNDAHugBMjGBGSxgBd3mLdYDZKIGelRM9Ap+3jwUijcnD4WJDVTQt9evKL8Td/QJRgsTmMECVlDABipoILaELWFL2BI2z4erJ0R8gtFCt5mjgga67bqMfILRwgRmsIAVFLCBl+0aYRWfYLSwB/pP/cTLdvVuiE8wWljACgp42a6uB/EJRgsN7IGeDxMTeNm8Z8EnGC2soICXzbsefILRQgMvmz/I+wSj5s/PPsFoYQYLWEEBG6iggT2wYWvYGraGrWFr2Bq2hq1ha9gUm2JTbIpNsSk2xabYFJtiM2yGzbAZNsNm2AybYTNshq1j69g6to6tY+vYOraOrWPrYfMJRgsTmMECVlDABipoILaELWFL2BK2hC1h8yzxriCfYLTQbd2xB3qWTEzgZfPeGp9gtLCCAjZQQQN7oGeJd/34BKOFHlfJsYICukIcFXSF77EHyEAPkImu8J33AJlYQN8h32MPkIkNVNDAHugBMjGBGSwgtisq/H7eZypN6ouunOi+B1dMTMpB3tP5cKyggA1U0EDvU/Uj6yExMYF+G+1/djxvDKyggA1U0MAe6B+nnphAbIbNsBk2w2bYDJth69g6to6tY/OQ8K4un660sIH+MOanx0Nioj/5XX/ApywtTKA/+aljAd1WHQV0mzgqaKDv2yX2CU4LE5jBAlbQ6143HG10p/vmjP50c8xgASt4ba93uvm0pYUKGtgDveF7R5rPW1qYwQJWUEC3+TZ4Bkw0sAeO/vfumMAMXjbvX/KJTs07S3yi08IGKmhgD/QMmJjADBYQm2ATbIJNsAm2hq1ha9gatoatYWvYGraGrWFTbIpNsSk2xabYFJtiU2yKzbAZNsNm2AybYTNshs2wGbaOrWPr2Dq2jq1j69g6to6th00fDzCBGSyg28RRQLc1RwUN7IF+E3EtBS0+r2phBgtYQQEbqODV9eiR6dOxJmYflEmOGSxgBa+uTe8Y9ElYCxU0sK+M8olYCxOYwQJWUMAGauAVFd4f55OvJuWgq7du/LkaJEG+/eMPKmhgD5QHmMDL5Kf8yohJNcgP1cAGKnjdPPgZ8JsHJ795GJSCclAJqkES1II0KBwtHBoODYeGQ8Oh4dBwaDg0HBqOMeTnl/sY8xuYQL++/PCPYb+Bfn35FWoCNtCHF11hBvbAKwwWJjCDBazgZfOeXZ8DtlBBA912nXefA7YwgRksoNuqo4ANvI5jdrKgvuhKgkkpKAeVoBokQS0oHCkcKRw5HDkcORw5HDkcORweAt7h7VPC9JooJD4nbGEP9JHBiQnMYAErKGADsRVsBVvFVt3WHTNYwAoK2MDL5n2ZPodsYQ/0gJiYwAwWsIICNhCbYBNsDVvD1rA1bA1bw9awNWwNW8Om2BSbDzB6n67PFrvWrRNfmW2Qt/8yMIEZLGAFBbw20TvdfF7ZQgN7oLd/74rzhdkWZtBtvrXe/icK6Da/XLz9TzSwL/SF2dT733wJNvXuNZ/FtlDABl51vU/NZ7HpNbtIfBabXi9giM9i02vykPgsNvXeM5/Fpj6Hx2exLayggG7zLfMBx4kG9sDso7zJ8VL4zB6f0KbeveYT2tRnkPiENvXuCZ/Qps13yFv8RAN7oLf4iQnMoI9X+zZ4i5/oCt8cb+YTDXSFb6Q384kJzGABKyhgAxU0EJtg82buPRU+O25hASsoYAMvmz+y++y4hT3Qm/nEy+bPsj47bmEBL5s/iXaaeaeZd5p5p5l3mnmnmXeauc+OW1jACmJTbIpNsSk2w2bYDJthM2yGzbAZNsNm2Dq2jq1j69g6to6tY+vYOra+bM2n2i1MYAYLWEEBG6iggdg8Na4uhuYLsy30q2T8gQJWUMDLdk1JaD6Jb6GBPdBTY2ICM1jAy3b1IDSfy7fQ9y05XnXN0aNiYgIzeNW9hv+bL8y2UMAG+kC/ORrYA8eUhIEJzGABK3gdnevZovmMvoU90PNhYgIz6NtbHb2Cnyxv8+bnwtv8xAR6BXUsoB8H3zJv8xMb6Nvr58Lb/MQe6G1+YgIzWECf3+Kn0Nv8xAYqaGAP9Nmz3c+Qt+5xHLx1T+ToeOvufua9dU80sAd6657oU3Rc4a17YgEr6HvhtjHfaKCCbvMTMKYcXZjGnKOBblPHDBbQbcXRbebotu54zWm5HsObTxRc2AOvdmzXs3fzKYELKyjgNVXmevZuPvlvXFw++W9hAjNYQZ3T5Foa73UM7IHjzQ7f+fFqx8AMFrCCAjZQQQv0J/mHHzN/lJ9YwAr6zlfHBipo4Jpl2OZswIEJzGABKyhgAzWwrVmpbcwGnOh7MbCAFRTQ98KPQ1PQwB54Nd6FCcxz4mvz2YALKyhgAxU0sAd6452YQN8Lv9ZNwAYq6HvhLcB6YH+ACfS98HM85vcOrKCADVTQwL7QJwfa1anQfHbgwgoKeO3F1VHQfIbgQgN74PUjvDCBGSzgZbs6FZrPFFzYQAXdlh17YH6ACfSp377pPltwYgUFbKCCBvbAMaF+oNcVR98LP6hFwAb6XlRH3wt17IHeeTcxgRksYAUFdJs5el3fSG/H16T+5vMALftRlwYqaOBVwe9LfB7gwgRmsIAVFLDFNvis3okG9kCf1TsxgeyFt+OJFfS98DOvvhd+1LUH2gNMoO+FnxYrYAV9L/wcezueqKCBPdDb8cQEus23txewgm7zs9kbqKCBfaFPIFyYQLeZYwEr6Lbu2EAFDeyB3ronJtA7mh+OBazgZbve3Go+gdCuGU/NJxDa1W3RfAKhXR0UzScQTvTWPTGBbvO9yG7zbcje3ey2q3UvbKCCl6365lyt267+h+YTCK36ll2/6AszWEDft+QoYAMV9GvdbT6/f6DP75+YwAwWsIICNtD3wo+kPMAEZtD3wo/k6KIfKGADFTSwB3o+TEyg1/UL0ZNgYgO9rp9C/0Wf2AP9F31iAr2un25v8+Jn09v8xB7obX5iAq/j6+HoE/0WVlDABipoYA/0t3AmXsdX/Mx7654oYAN9L65T6FP67Op5aj6lb2EFvUJ1bKAGetv0nySfvGdXL1XzyXt2zZxpPnlvHAefvLdQwAYqGMfXp+mZ/wD6NL2FBaygH8nx1xqooIE90H9jJyYwgwVsc1GMNlb8mmjgdT1cXWnNJ+QtvPbC74J8Qt7CAl570fyg+m/sxAZeR8fv+3xC3sIe6K1wYgLd5kfHW+HECgrYQAUN7IH+e6x+SMY6Ib4X3rLU99hb1kBvWROvLVM/UJpBHyv0Ct7eJgp4bZn6cfBWONHAHuitcGICM+g2v2j9l3eigA1U0MAee+y/sd6T4xPnFlZQQK/rTcRb4UQD+8KxMpe3obEy18QMFrCCAjZQA73F6sAEZrCAvhfdUcAGKmhzXaE21uAa6IuNTExgBgtYQQn0nzrvu/KpbAsVNLAHetObmMAMFrCC2Lzp+ZOlT2VbaGAP9KY3MYEZLGAFBcQm2ASb/6h5B5tPUjPv0fJJagsN7IHe9Cb6llVH3wZxFLCBChrYA72RTfS6zTGDBayggA1U0G1+5v32dqDf3k5MYAYLWEEBXeFXtbe3iX2hz0FbmMAMFrCCAjZQQQPddrUWn4O2MIEZLGAF42T5IlsLFYyT5dPRzLv+fDqaeRedT0dbKGADr2LeRefT0Rb2QL9lnZjADBawggI2EFvBVrBVbBVbxebt2Dv5fDraRH9FJPtDjk/fCm4b68a2cYf9RZHFaeO8cdl48+rm1c2rm9fGv/eTa7qxbdzh/tg4bZw3LhvXjWXjzds3b9+8Ha/PwApOG+eNy8Z1Y9m4bawb28abN23etHnT5k2bN23etHnT5k2bN23etHnz5s2bN2/evHnz5s2bN2/evHnz5s2bt2zesnnL5i2bt2zesnnL5i2bt2zesnnr5q2bt27eunnr5q2bt27eunl9JpT3FY2pUAN9LtTEBGawgBUUsIEKYlNshs2wGTbDZtgMm2EzbOY2deyB/QEmMIMFrKCADVQQWw+bT4pamMAMFrCCAjZQQQOxJWwJW8KWsCVsCVvClrAlbAlbxpaxZWwZW8aWsWVsGVvGlrEVbAVbwVawFWwFW8FWsBVsBVvFVrFVbBVbxVaxVWwVW8VWsQk2wSbYBJtgE2yCTbAJNsHWsDVsDVvD1rA1bA1bw9awNWyKTbEpNsWm2BSbYlNsik2xGTbDZtgMm2EzbIbNsJElRpYYWWJkiZElRpYYWWJkiZElRpYYWWJkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZI+sqQ7+uzf7KiggT3Qs2RiAjNYwAoKiM2wGTbD1rF1bB1bx+ZZ4gNXPhlrYQMVNLBPVJ+M1a/BKPXJWAsz6LbuWEEBG6iggT3Qs+QaAFGfjNWv0R/1yVgLC1hBARuooIE90LNkIraMLWPL2DK2jC1jy9gytoKtYCvYCraCrWAr2Aq2gq1gq9gqtoqtYqvYKraKrWKr2Co2wSbYBJtgE2yCTbAJNsEm2Bq2hq1ha9gatoatYWvYGraGTbEpNsWm2BSbYlNsik2xKTbDZtgMm2EzbIbNsBk2w2bYOraOrWPr2Dq2jq1j69g6th42n/q1MIEZLGAFBWygggZiS9jIkkSWJLIkkSWJLElkSSJLElmSyJJEliSyJJEliSxJZEkiSxJZksiSRJYksiSRJYksSWRJIksSWZLIkkSWJLIkkSWJLElkSSJLElmSyJJEliSyJJEliSxJZEkiSxJZksiSRJYksiSRJYksSWRJIksSWZLIkkSWJLIkkSWJLElkSSJLElmSyJJEliSyJJEliSxJZEkiSxJZksiSRJYksiSRJYksSWRJIksSWZLIkkSWJLIkkSWJLElkSSJLElmSyJJEliSyJJEliSxJZEkiSxJZksiSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMkjS6pjASsoYAMVdJs69kDPkus9IPX5aQszWMAKCthABQ28bNe8FvX5aQsTmMECVlBAtxVHBQ3sgZ4lExOYQbc1xwoKeNnET4BnyUQDL5v4bnqWTEzgZbvmPKivf7ewgn7exp91mzkqaGAP9CyZmMAMFvCyNVd4lkxsoIIG9kDPkokJvGzN98KzZGIF3ebb4FkyUcHLpn55epYM9CyZmMAMFrCCAl429VPoWTLRwB7oWTIxgRksoNt80z1LJjZQQQP7Qp8NtzCBGSxgBQW8bNeos/psuIUG9kDPkokJzGABPUsGCthABQ3sgeO+ZGACM1hAbBlbxpaxZWwZW8FWsBVsBVvBVrAVbAVbwVawVWwVW8VWsVVsFVvFVrFVbBWbYBNsgk2wCTbBJtgEm2ATbA1bw9awNWwNW8PWsDVsDVvDptgUm2JTbIpNsSk2xabYFJthM2yGzbAZNsNm2AybYTNsHVvH1rF1bB1bx9axdWwdWw9bfTzABGawgBUUsIEKGogtYUvYEraEjSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyRJfeq9f82XUZ/otVNBTuTn2QM+SiZ7K5pjBAl62a1aK+ky/hQ28bN03x7NkYg/0LLmmP6jP9FuYwct2zedQn+m3UMDLdr1npT7Tb6GBcV9SuS+p3Jf4/L9x0+BL7y2soN8piGMDFfT7klGsB477koG+b90xgwWsvgiV6+ayWoPbxurs526urDW4w3NtLd+qubjW4Lyx90MO9B5HP0yjN3VgAjNYwAoK2EAFDQybPB5gAjNYwAoK2EAFDcSWsCVsCVvClrAlbAlbwpawJWwZW8aWsWVsGVvGlrFlbBlbxlawFWwFW8FWsBVsBVvBVrAVbBVbxVaxVWwVW8VWsVVsFVvFJtgEm2ATbIJNsAk2wSbYBFvD1rA1bA1bw9awNWwNW8PWsCk2xabYFJtiU2yKTbEpNsVm2AybYTNshm2uudecRxR1Z93YNu7wXHhvcNo4b1w2rhvLxpu3b96+eTveNtYEv6a4axuLgk/OG5eN68ay8fCqs25scIrhnzYiZGAFBWyggl7tevFO/XOii/Nj47EXxTlvXDYee1GdZeO2sW5sG3e4PDZOG+eNy8Yx1NWKgA0cUt/ZYht3uD42ThvnjcvGdeOxs+bcNtaNbeMOy2PjtHHeuMBt/Hvfr1Y2rhtHx1qjQ7TRIdroEG10iDY6RBsdoo0O0UaHaKNDtNEh2ugQbXSINjpEGx2ijQ7RRodoo0O00SHa6BBtdIg2OkQbHaKNDtFGh2ijQ9Rneo6bR5/oubCAcUvpszwXNtDPa/YmOiJgcg8eczwXp43zxmXjurHfWg5soIJDmpw7PBbjnJw2zhuXjevGsrFfxJ6/Y4LnYtu4wyMpJqeN88Zl47rx8Kpz21g3to07PJJicto4b1w29tv37ChgA/0Y+zHwm4+JPXDExPUGpo6pnYvzxmXjurFs3DbWjeOhQccjiuN4RBk4pN05b1w2rhvLxm1j3dg29sPrLcVX8AtOG+eNy8Z1Y9m4bawbu9d733Us73u9S6o6nkQmy8ZtY93YNu7weBKZnDaOXuAxS3ViBYe0ObeNdWPbuMPjnmNy2jhvPHbWD/i455gsG7eNdWPbuAfbCJzJaWP3+kiDjcCZXDeWjd17vVurNu45JtvGHR6ZMzltnDcuG9eNo7d9zGGdqOCQFucOj8CZnDbOG5eN68ay8djZ5qwb28YdHoEzOW2cNy4b141H/esCsxEX1U/QiIvJdWPZuG2sG9vGHR53FZN9QEIcM1hAl17vh6qNuJjcNtaNbeMOj7iYnDb2nRU/4CMuJteNZeO2sW5sG3dYHxsPr+/XWDx8ctm4bjy8foJGvEzWjW3jDo94mZw2zhuXjb07x8+/CdjAIVVn27jDI14mp43zxmXjurHvbPOTMuJlsm5sG/fgPuJlcto4b1w2HvWzs25sG3d4xMjktPGoX5zLxr5f18u82sety+ThFWfdeHibc4dHklyr2GkfSTJ5eM25bDy83Vk2dq/6vo8kmeze63Vd7SNJBo8kUd/HkSST3au+jyNJJrvXR+98Smvw8Po+joSZPLy+j+M5Z/C4gVHfx3EDM3l4fR9HIk0eXt/HkUiT3Wu+LyORzLd/JJL37vaRSObbORJpcto4b1w2rhvLxm1j3dg23rxt87bN2zZv27xt87bN2zZv27xt87bNq5tXN69uXt28unl18+rm1c2rm9efqrwTd0x/nZjAIfULYyTS5LqxbNw21o1t4w6PUPKnpz5CaXLeuGxcN5aN28a6sW08vM/9sscIpclp47xx2bhuLBu3jXXj0c+SnDs8wmqye6/nMnuMsJpcNq4by8ZtY93YNnbv9SKmPUZYTU4b543LxnVj2bhtrBsPrzp3eITVteKbPUZYdT8+I6we/ndHWE2uG8vGbWPd2Dbu8AiryWnjzVs3r4dVGufFw2px21g3to077GG1OG2cNy4bD292lo3bxrqxbdzh8dW1q6/THuOza5Nt4w6PL69NThuP7fRzNz6+NtjGn/fzaGnjvLH/+eTb4/mwWDZuG+vGtnGHPR8Wp43zxpu3D684y8ZtY93YNu7BPsk1OG2cNx5ecx7e5iwbt411Y9u4w+mxcdo4bzyuW9+GkQ+TZePh7c66sW3c4fG9xslp47xx2dj393o9wdL4aOPktrFubBt3eHy5cXLaOMOzU9W9NW9cNl79fMaEVWPCqjFh1ZiwakxYNSasGhNWjQmrxoRVY8KqMWHVmLBqTFg1JqwaE1aNCavGhFVjwqoxYdWYsGpMWDUmrBoTVo0Jq8aEVRsTVq+HdBsTVidmcE0OtDFhdaKA47wWZ93YNu7wyIvJaeO8cdnYrQMFbOCQVmfbuMMjLCanjfPGZeO68biI1bltrBvbxj04j7CYnDbOG5eNh9ecZeO2sW5sG3d4hMXktHHeeE3EtDGldaKAQ9qddWPbuMMjKSanjfPGZWPfWb8O80iKyW1j3dg27vBIislp47xx9NhaHncSk2XjtrFubBt3uD42Tht7V6Brfdh4YgWvY3xNVbU52XWggmNPi3OHxz3E5LGn4pw3LhuPI+xnc9xDTG4bjyPsZ2TcQ0zucHtsnDbOG5eN68aysXs9N/K4F5lsG3d43ItMThvnjcvGdWM/yH4YfAhpooJD6gd8BNTgEVCT08Z547Jx3Vg2HjtbnXVj27jDI6Mmp43zxmXjuvHo5L14fjzaL4D59ejJeeOycd1YNm4b68a28ZqEZGPa68QERg+1lfnVtsF1Y9m4bawb28YdztFDbeNz0ovzxmXjurFs3DbWjW3j0Rl6ndwyO20Hp43zxtFDbaXUjWXjtrFubBt3uD42ThuvyV42JsVOrGD0UFuZPb+DdWPbuMPy2DhtnDeOHmorUjeWjdvGurFt3OH22DhtPOr7Bdaih9rGR6MXp43zxmXjurFs3DbWjW32b9uY7TrQu0cmRg+1ldljO7hsXDeWjdvGurFtHD3UVvpj47Rx3rhsXDeWjdvGuvHw+n6N/hHnOuJlcto4eqitPsrGdWPZuG2sG9vGHU6PjdPs37YxF3ZiAaOH2uqIl8ltY93YNu5wfmycNo4eaqu5bFw3lo3bxrqxbdzh8th4ZL7v+PhE/WTZuG2sG9vG47fGt78+Nh6/NX7cat54eLtz3di9fkHW0Qky2b1+A1PHDcxk9/qdTx03MJPd6xdbHTcwk917rV5qddzATB5ev9jGDczk4fV9HDcwk4fX93HcwEweXt/HcQMzeXh9H8cNzGT3jnMxbmAmu9fTtY4bmMnubb6P4wZmsnub7+O4gZnsXg+QMV82Nd9+HV7f5vGQNa7t8ZA12Tbu8LiHmZw2zhuXjevGsvHmtc1rm9c2b9+8ffP2zds3b9+8ffP2zds3b9+8Ha88HhunjfPGZeO6sWzsbxVVRwUNHNLrwpDxkDU5bZw3LhvXjWXjtrHv7DVsYzKesyZ3eDxnTU4b543LxnVj2di911CQyXjOmmwbd3g8Z01OG+eNy8Z1Y3+Xqjk2UMEh9YM8kmrwSKrJaeO8cdm4biwbj51VZ93YNu7wSKrJaeO8cdm4buzeaxzLZCTVZPeaH/yRVOYHR9araja/jj0wgRksYAUFbKCCBmJTbCOdrqEXG1/IXlw2rhvLxm1j3dg27vBIp8nD69fASKfJZeO6sWzc4JEqPrwxptwulo3bxrqxbezbeU3MsjHldvH489nZNu7wCITr2zc2Ply9OG9cNq4by8ZtY93YNu5w3rwjEHwoZUyqXVw2rhvLxm1j3dg27vBYC9GHGcak2nx9lMfGpNrFZeO6sWzcNtaNbeMOj3d5BiYwg0NanOvGsnHbWDe2jTssj43HzvoBl7xx2bhuLBu3jXVj27jDY6FUH0eZC6VObhvrxrZxh8dCqZPTxnnjsvHm1c2rm1c3r25e3by2eW3z2ua1zWub14bXL7axEOtk3dg27vBYiHVy2jhvXDb2Gbp+eruADXRp8gtsrMI6uQfPVVgnp43zxmXjurHv7DXt3eYqrJN1Y9u4w2MV1slp47xx2Xh4q7Ns3DbWjW3jDo9VWCenjfPGPgu6OVZQwCEVZ93YNu7wiJ3JaeO8cdl47Kw5y8ZtY93YNu7wWIJ1cto4bzy83dnrX7OfbS21Otjr+wiWjoQZPBJmstf3EZAxJXdx2bhuLBu3jXVj27jD7bHx5m2bt23etnnb5m2bt23etnnb5tXNq5tXN69uXt28c+lmv8Dm0s2DdWPbuMMjkSb7my7XZTjmcGZ/DhtzOBfrxl7Sn8nGHM7J45KcnDbOG5eN68aycdtYN968ZfPWzTt+3Pw5ZszhzP5IMeZtzn8/LqtrFpnZuKyumWNm47KaXDeWjdvGurFt7Nvmjxdj6ubitPHwFufhrc7D68d5XFb+ZDCmbs59GZfV5G0fxyXj/Q1jWubiurFs3DbWjW3jDo9LZnLaeHh9v8aPmPdh2PgRmywbt42H1/d9/IhN7vD4EZucNs4bl43rxqP+dTzHTMvs/SJjdmX2vpAxuzJ7/0cfv0WTZeO2cYfHb4v3kYxZlIvHtf1wHufrOlZj9mP2vpAx+3Fx3Xhcw8W5bawb28ajLVz722cbHJz4M7MNDi4b142F4zPa4GTd2OAR/+M41O041O04jBvPweMaLn7MxzVc/O+Oa3hyh0c0Tk4bu8uHI8aMvuyDXWNG32Ld2Dbu8LieJ6eNvb4PX4xJfYvrxrJx21g3to2H18/vuJ4np43zxmXjurFs3DYeLj+P417s4j4m8i1OG+eNy8Z1Y9m4bawb28abd9yLXeNyfUzkW5w3LhvXjWXjOKd9TORbbBt3eLSd63NefUy6y1e/bx+T7iaPNjI5bTy2TZ3LxnVj2bhtrBvbxh0ev1OT08abt27eunnr5q2bd/zGjf0dt1FXv3UfE+oWF/Zx/K5Nlo3bxmNfurNt3OHxuyZ+zMfv2uS88eZtm7dt3rZ5RyZM3s5d286dbudOt3M3MmHy5tXNNdp+8W0bbX9y2jhv7HWuFbL6mLC3WDZuG49My862cYdH25+cNs4bl43rxrJx23jz9s3b8Y4Je4vTxnnjsvGoX5xHnas9jkl3+Rr37mPS3eKycd1YNm4b68Zjm5tzh8dz1eS0cWZ7xm/o5LqxbNw21o1t420fRz4MHp9wGSgX+hb7R5cmKmhgn59B6ml8dGlgAjNYwAoK2EAFDcTWsDVsDVvD5t9qGvvm32rqfnT9q0wD/atMY4f8q0wTM1jAa9OvSc3d58UtbKAfKHM0sAcaNsNm2Aybf6tpIqfFOC3GaTFOi3+raWDH1lH4p8+ufr3uM9sWXv3GV69bH4szOo7FGScm8HqWuiYv97E448QKCthABQ3sgT6zZGICsfl7flc3ZB9rL16ddH2svXh927qPtRcH+iomExOYwQJWUMAGKogtYyvYCraCrWAr2Aq2gq1gK9gKNu8XvWb59rH24sQMSqBPar16GPtYOXFiBgtYQQEbqKCBPdAbZPerxBvkxAJWUMAGKmhgDxwtdqDvhTr69ppjAxX07e2OPdDndExMYAYLWEEBG6ggCv8gWh9YwatC8kt5fBFioEYjo0GOFQ69BYwVDicmMIMFrKCADVTQQGwpNn18zneigA1U0MAe6J/znZjADGLL2DK2jC1jy9gytoJtfNrh4cjOjy83DIzAGysRTkxgBgtYQQFRVI5v5fhWjq9wNoWzKZxN4WyOppcdbWXfWGjQQ2EsNDgxgRksYAUFbKCCBmJTbIpNsSk2xabYFJtiU2yKzbBZBN5YaHBiAVtgj8AbywROLGAFBWygggZG4I1lAidG4I1v+E6soIANVNDACLzxZd+JCSwr+8bSf55yY+m/iQZGGo2l/yYmMIMFrKCADVQw4nWs9zfxqnCNRPSxAt/EAm5/QMAGKmhgDxxfPxmYQGyCTbAJNsEm2ASbYGvYGraGrWFr2Bq2hq1ha9gaNsWm2BSbYlNsik2xKTbFptgMm2EzbIbNsBk2w2bYDJth69g6to6tY+vYOraOrWPr2HrYxnp9ExOYwQJWUMAGKmggtoQtYUvYEraELWFL2BK2hC1hy9gytowtY8vYMraMLWPL2DK2gq1gK9gKNpr/mBc0EVvBVrAVbBVbxUaWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJUKWCFkiZImQJTKyRBz7wjayZGACM1jACgrYQAUNxJawJWwJW8KWsCVsCVvCNpLgunGZXwHujgoaGPfV8yvAAxOYwQJWUEBsFVvFVrEJNsEm2ASbYBtN77pNai1usdtoWQPjLr61CgrYQAUNjGeGsfTdUGgCM1jACgrYwHhmGCvb+R3/WNnO7/jHynZ+KzxWtpsoYAMVNDDuq8fKdhMTmEFsHVvH1rF1bB1bD5s+HmACM1jACkZnxljRbqIGpgcYd/GaGqiggXEXr/kBJjCDBaxg3MVrVtDAuIvX8gATmMECVlBA34vrjl/HY6o5JjCDcRevtYICNlBBA+OZYawgNzGBGUTR4qLVFhet8uipPHoqj57Ko6fy6Kk8eiqPnsqjp/LoqTx6Ko+eyqOn8uipPHoqj57Ko6fy6Kk8eo5vFU/ERoNUGuT4VvG4JnkgHd8qHti5aHn0VB49lUdP5dFTefQ0Hj3Hl4YnZrCAFYyL1nj0NB49jUdP49HTePT01dkWFrCCAsZFO74e7Jfn+HrwxAzGRWs8ehqPnsajp/HoaTx6jq8HD+QpdHw9eGIGh+I///Mf/vTXf/2Xf/63v/zr3/7p3/7+5z//6R//I/7F//3TP/63//jT//nnv//5b//2p3/827//9a//8Kf/55//+u/+h/7v//nnv/k//+2f//78r8/d/fPf/ufzn8+C/+svf/3zRf/5D/ztx+u/eq27VOZfv9ZFylEi+QZSJL0uYtekMy9hpUcBrT/8/fz677fH2oOWhQ1oj9sbcE2dGhtgj1cbUA8bcC0O5X//+fPwzgb4XZsXeHaMvdqA9vrvyzWP0f/+87HirQ2QtQfP6H+1AXY4giVOobx3BK5xqHkZpfRqC9LhUtRr3ss4CaovN+F0LdeUV4nn0KLJ62v5cDEWX+DVizy7tBs1nnt1u0bRdUU/O3O345l+OhyHazJdL014iedQV1R4btKPFeRwTh/1v2iWv1Q4XJY+e3ZcVf3NCq3GZfHIr0ucDqZYnJCW7PXB7K9rZJ9AN47ms1eeGkV/DKnH6aSukHn22FJBH/f3pHFpPZ93Xu5JPtR4Pm6vzXg+brMn7ccDek1hfd1O+gqL50B4flmini6tdWFY5cJ4jprfryAR2dpeVzhcWs/x2zin6UGNmn8soYeNsIjt/Zfv54045OZzbHSVeI6Nbhd4y++dD319Pk5XhdZ1Qp79JvVViXII8OcYbezJs5/mZYn86Tkth0ORU9E4p9sP0U/ntBwurGwp4vtlgd8cy8SxtJcH4vPUO5V4Zkz8hPT++iek2OnC0tiO59mNGvnZWn6o0U/3Zhb3Zm2rILf35DlQtdrpc5DodX7XdPoxjPubZPs9Yvrxh70ezuv1nmjco6SeaCUp//jTXsvnx7TWT4/pcV+yrzM7NiOnJK/35ZSg/pbubG3Wty35scXWQ4RmjbObn90WtJYv7EvpcduW6377+fO+nH7hW9w+5md3GvuSfmxzcvqF92WrRpt7/jJuNX7cDknHW791kT1H98vrGqft8Cmno8Z+G/tLjcN1+hyYWtvxHILqL2ucz0x7RLN7nt328syInI5qXCEl66HG6UptPcVVVh6va5yu1JxXouZc7L0atdb4ue+vE0ROiVrX4Xh28PLb0H+8TtvjdFtuPGv11yUOl+nzRpoMksfrGqfLQ33piLEh17eZX1c5XKjPwb51Wp6Dfdvl8WMGtePje45D+uxIfFnidDz8bZV5POxwWg4XabpeRY5fqVbqyyrHS13jLuqJr5vLseGWEgc1ldpeN5jWTz+YRt9QMn28CHd9/KE/D/URd+nPJ3x5/VOn+Q/9ya0tLpEn99c/U3q6Oy081u+PkfmnHgqVT4/pcStqiiis9fFyK063ZNnX8Jk3D5pe3pKpnR6I4+mp6NZH8by9uV2jlngWreWHK/3HGvb4/KbO0sdX2PGIxqPL9Vv1+ib3VCMXahzOin3c82Qf9zzZxz1P5yNh0Uqe/S6vj8TpAar0+KWt+w/LT78s1k83hDmu8WL6usbxQS5+E55N7XWNfjoeJfqYs9T2ssbxmLYaudF+2JcvXKEtjmnWH7bjxxr94yu0f3yF9j/2CtX4Qcn90N77qf/poXSYlP3B+Mfk6ocr9PokXfS8i71V41oVZh3Qtj/C/VTDV57/NIb9geIPzOFe4lGya3vvKvdv7s1uqGwva6SHfDwE8GgfjwE89I+80IuvbjqfAEs+HIx+fBiNZ9Hyw5WuXyjiqx/PQ2r1dZF0ukxbifHGJ9t+UH4akjiNBliMEdn2Q11+upk891Q+6KncesDb/cGVWuKAPH/g2uvBldNAU3lE4y/ph3GN9oUi+aH/9UXycxH9eGjDv5vw2djGucStjvB0Gm26ObqRcvp0eCOdLrG74xv3z4oezsqxFyl6Xko+/cDkz0dE8+dDovkbxkSPh0MiDcvx9zaffvg1LpDrO5IvR0XPRSwGNfWHBvNzkZI+b7fH0ad77fbzAax0HH662W6LfNxuT4Mut9vt7bNyaLfny6PFNWb9zWvMUowQXEttvy5STw/5UqLdte1H+5cR/GO76zGRoHQ9/NSdu5LuXe2ncaibV/uxxL2rvcrnV/tpFOrm1X4chLp7td8+K+/+SvXownkOe7bXl4c8Pr88TsNQNy+PY4l7l8dpEOru5SH148vjNAJ1+/K4fVbevjwiPZ6Xh713o1wfKTo8H/V0jR0S9eY0otS+4Tptn1+n7fPrtH3Dddo+v07bd1yn7Ruu0+PV8Q0PlprX41xV7a8fLE8jUC1HT0yr5fC7fxqC6g9GS7cr/eef/eOdQ1ce+B9bX4z8NCdUj4Ny3PfXffaJ/tQLoqfpJ8xy2C+Qny/U0+CP9mhz17drX3de6PH5gzk9Wy9blp9KHGefMKaf9xkKXyqSrcd42nZEvlZEI1F/mF3wa5Hj7YPR7vZY/vn0ngaimsYTqua2Z/tPJ/g0EjVWfhpbkrdcfv6lN6/4bZDx5yveTnNQHpW7oX3ml/1c5DhWyXi47O33lyKnJ6oUu3N9oe71NX8ak7rdcEw/bjin0aDbDedY5G7DORa523DOV0l/xCHJhxPcD61Pa3Qxa91n/mv+ys9e5mcv65s/nbdm4qbT4FSuDEDUeqjRPr856/rxzdmxxL2bs9PQ0t153o/Hpzdn+ZG+4ebs9lk53Jydr46Ypfi8Otp7NYRxEGmv3yI4jU49b4Tita1Hqm/VeP7M9Bs1frMvtyau+3r/n13p5xL3XmhIn/f55/Rxn38+3bpLjteoJG+zg355pyGdHqluTcM/Ho177wLk07Pyza04Pcd0WXdktW8t5deDcbuIvVdEHjHLUR7H03Is0uLcPvbpp18rEoMg8hzAfrNIio5hSf1Q5DQ8la61aVegXuvLUibZuxHy8pWPfHqhSenn1kNP1/nW4c6LJzm3zzuHzkVKJPvzqdsORY73ho15rPr6J+bU73/3TbXy+DjajyXuRftpZOlutJ9ejroZ7cfRqbuvq90+K6f31Y5XB8fDDjcPpxolP5hW8vp2/Xc1Hh/XqCl+Zeo2j+tLNZhp+Cz3ukZNn9+QnWrcvCH7zfHQFvvS7eMa8shvHtPogiySXp/b0+DUc6QwJtJrPbS644YotyHaX0dhtW84ufYHn1x+pMqp4Z5GltKj817B/jbPlw4q8w6KHa6y40tSMeWo5sO5PQ1PpdKjo6w+Drd2x+0o8Xu7d5P9cjiOv9kxIeTZFVJf/2afX2+61fHgXyX59Df7dCd08zf7WOLm++Xp89/s0ztSN3+zj4NTd3+zb5+Vw2/2+eq41fFwrnGz46Hp5zF23o57nQbt86u0fX6V3t+T1zl4Gru49exyjp8ar6zWtk3d/iV+9LiqxJ3pefk0LnVvet5vdiUxJfb09HPcjntz/M4b0ovxmJ0PG9I/Pqb2+PiYHkt8w+EQVveRVA+H4zTY8PmV/hzbW+kj0g9P2KfxqBqrJckWYNeQ7o8ljoOWd94CPG6FMNyxvdz061ac3r5L8dxS836Pfb/ENSq/LUEmj/eKMLP/yS29WYS7/bTP3/rKQY2XesQOp7aXP7REeij3pQ9LL3flXOTmmTkXuXlmflPk3pk5ttwWE0Cl7xNAv9I31lLsTftxNZMvFYn2/9ym1zfr5TQgFR2f2zTU+oU8bTVeL2ryePdwFC1RRNNhTz7+3S+Pj3/3zyW+4TeqSWxHa+l0OOw4+aJEp7Z0eXWxl9ObTq3F69n6aK9/LctpCKZmboVyfz3/qhxfl+q85vgoLx89ynEA5daDejkNSCV7sMyMPU/xy6GC352cR+HkbLe6X2g1WuKeXZ/dfYeT0z7uYC/f8L5U+fx9qfL5+1LlG96XKp+/L1W+432p8g3vS/3m6rjVwX6scbOD/Xc1Hh/XuNfBfq5xr4O9nAY+to4H6V3fqnGzH/fudhxrnI8p7+Tua279XOM0IHX3eNys8cG+3BpwuF3jMODwm2vs1oBDOa7Zd3PA4bwh9wYcyul1qbsn91Tj7sV+czvev0DuDVqU06J9dwctzhtyb9Ci1PbxvdDpfam7gxbn7bg1aPHbO9263em+6sUo8viG2+VTkXv9GOf7XBawTtpeX2Ty+dK8RT5em/dc4t79mHy+Om+Rj5fnLfIN6/PePyun+7HjU1DnzY3HYVXZ9A1RmD9utem4TtUjHjz2CdtfORw5Rc9STtsT+y+HQz4OwuOSfXeD8Lgd90Zvf9O/tf26PLY5dV/pJHv+xU6R/DII9fF5T9uxyLf0Ct88Iscit49I/Y4jUj8+IucJkyle2Uz53fmf6cGYUk4vi5zf6ecH99nLrK+7hU4DUzfnGhT7/A3UYh+/gXouce/n0j5/A7XYx2+gFvuGN1Dvn5XDz+X56rg11+Bc495cg2Lf8Lhu3/C4ft6Xe6vz948XSDmXuHel39+T1zdCp/na9+ZanyMsVt/S/en2lwg7vdx0946/fz5dqvT++Yn9eCJKfXw+Xao+Pp4uVR/fMF3q/lk5RNjx6rh3x19Py/fdjY7zdtwaf6mnB/V7t9r1NCB17y75vBX3nl1OB+Pus8u5xq1nl5o+nnla0zfMPD1vx61D+pvFmWIJUkt2+LbScSXDW2/eHr9fc+9+sqbP3zep+eP3Tc4l7oVx/vx9k5o/ft+k5m943+T+WTl1v3x+O5k+vpus+fNJ/Mcad38SPr8R/PxxpZbPf+tPm3H/9b/7X756/UNdPr0jPX7vSWP6yfP2eV8M+qevJJXT4hKZQc6yXxtfKMF7BD8sV/5zif5xX/rpYLRYEuL5pCmvD0Y9PtjfmVVUT0vC3Vz6+Fji5qfA7NNTcvyIV6yduq8V+stHvI7Tifhojb2ucBzrie6rayXGrUa7X6PGON6zhrysUetxDegcH5R8cn95jedPL/Hz18ieBzJ6FdsWXb986EXyxy3+WOJei5ePezdPa1FmZR173TP4p/P66TV+rHDrGj9+HO7mNX7+wNzNa/y4CNzda/y4tFZ0Ff/wOZJfvg53qiF8MELkUOP4FbIcDylPbofvw53W57vZUo4l7rWU04DTNwTHT4ejvz4cx8/lcUPcyv6ZuvJmDf28xjbd5Uuf7Xu0uFt4tMOn7o7Lt5lGszMrhyKnJ6aY/2PbrM6vlYj1wUz0zRI1tmJbReLdEq28d0Cz8CWi/Vn6i0X4WWhJ3jy1PcXzYz+cl9MUgNLiaaXsi0d/6ZOMJX5gajlcYjc/61i7vT67tz9Reahx+3Ob+rrdVvv0oem4FcoXUuxxSLHTinwq0fJV9jenf/qJsuMtuvHLsA8n6E81TjvTt8WK9tf9fqrRH8cB7/i65JO376D+vDenDbEcSwPuL/18Kdctnnue2F7XOP7SSY0pAM8kOP3SHX61O10Ej72jQX+8rzu+Y5s4IknssB2ndc5jOKCn00E9fTmCKRH7iMKvNU79R/e+t1lPo0U3P7h53Jf0iM+xpn05q19/+Y+zqniI6r0ciuSPA0BOo043A0BOr0HdDAA5fjLqfgAcp0Xxyc3S83sX649F+utzc/xmLz8z2V7f+Z9r0Ff5fAh4r0ZpDC48Xn/3tx179eOeyt77aG+lN/35kGhv1Xj2dca07mSHT9Sm45NyPII8Mb1XRAtrHZdtatYXi5hEkW5vFql8wqaW8mYRi/EB3W+av3RyakxXk/0llS/V0DgiYo/0Zo14ohLLh4vkuDZfecQL+08+HBI5jUKlzOT9J7fD1XYaiXqO5zGLT9rj8fbW8Er0c2v6ocxxHVgTvixqau8eYr5Y/2R594rZ1x3U92owyUD6tv7yl75J/ogrt6X03na0FE+uLZ1aYf747ub4afQmEbNP3t6//dIH1ht3Jk+2d6s0+gKbPvTNKprZo/3DrV+sEkMqTz4E9rmKxTjqk1N6d1u2o2vp9dGV42el7ufTabTqyqdt7kHv75e5GXO/2am7MXd8Z6pafEjkycdDXL8jLX9zvmW79trb114sS/xkebc1dS6a1lt9t0pjW7r296poji9DXyzvVpFCFTv8FJ3WT8jxM/LsGNa3alw9uTEKYyrpzSrGqwNm6fFmlb5tSz/dKh/f5ebD8HoYKTzWMCa+2fYb8LUaQsdQe/0UdO7U6bSfsr/X8euWHN8svfOV53OJWwOG5xK3RgxPC8Cl6zqL5/X+eLU6jpzGpXpSupZejkudS+RYTarnbO+MSxWhQ6fs82i+dHkUPg+fiiY7XB726WDfucStwT75/DWoLxyO/P5Bpc1pebPlPv8mX+B+9pQdelI+Hoc9l7h5av7YcdgfD8dpHPY3p4aHZNXHyyqnEa57UXascG/uw/H7V6Vwk3bqJHs+yByHdG5MBDmWeKYhH8DSVt8sotv9zH61f61IDFA92do719n1XfY4rlJe//wfX2KsLe6sntzTW1WeXalxI1K2m4jrK1Rv1dieCL5UQyrfBGvprRqFqaNl/y7gLzUOvxE3J/fp8c2KFAO6ae9syI/7NVL0tD9zrb6sIad3qm7m8rHEvVw+vVtxL5ePByMXXq344Wb554NxmsLa47m19u0G8+ci7fTRKWFpvO3x4edRpfNmNDZjW+Lri/vCYqOPbG8X4bsx8vZRjTdW5NEeL4ucXi6tJSav13KqkT79uTxWuPVzeXxJ9uZUwfOLtvemCrb0DVMFz28PxuOYSX69+nNLH09lPZe4FUAtfTyV9Xww2jaFSw8Ho316ME49gSXHW0Sl7O+Ypf7TZhzX9rszh76d3t65N4f+XOLez2x66DfUOD6s8zCWf/i4kv7UT3YYQerRrdS39Rf0pw8an5eSuddiz0WaL8U++w7z9sbJL58zPZdhKcsnbz8vXy6TKVMPX2g9tX8WTN+XgSo/3eH+bkt4rbL98F7l13bI30FYZfZRga+Vke3wyvZm5M9lWsl/eJn84EWpx96X+fMsiGMRlnF/9jvLm0VyZGzO+rrIsTlnPnOWn7H/ujmXz9fq/E0NmqKk8vp3/Fjk5g3Fb7bk5h1F/Y58epwXAInLRLq9PjmndymkxoRs+WGJ6/JzkdOj871VHlqVm1fJ6xeL2+ldintvbZ5L3HqxuJ2+IXXzzc92mhx6783Pdprzf/fF4vtn5dB2j1fHvVUemny+BupvtuPWKg9NPl5QrclxwOvuKtvnLbm1LMHxgNxc6eE3NW6t9NBOY0Q3D+ppUsvdlR7O23FvpYff3NRsszfqNnn4l9uIz9/Eap+/idVa+0NL3HtW/N0hZXp6279c//MhPc4Lv/dwc3pqVYlrTFt6/Vmb45Mvk6+s5Prmk++983J6e+nmeTlNLLcWC5LY3kn0866kx8fDMucStzqajrty98bwXOTujaF+w5vXp9cXskTPbN6nHv9yjdnnS/W249jOzVu606p/N2/pjiXu3dIdF/27eUt3+hrVzVs602+4pbt9Vg63dPb5Ur2tf75q+W+2494tXf/4wymtf8uHU85bcu+Wzj5fePg3Ne7d0h0HqW4eVPuGW7rjdty7pTv+vmhMuTZ58ycqZtE2ez0Vyz6/fTm9PFlyLEn77PjeRyDsfg2N3+vSf1h15n6N+oga9bFPkfmphj4+7vw/b0bcqNd03IzPF0H8TY17XVvnIjfvYH6zJffuYDTlb7iDOd5KCbNTkr48N6camRkuubX2Xg2JCS65aX19jaT26QCRnr52dG+A6Fzi5vPP8Yhuc2wfr4+o5m/4FIWevkKVNc5tefwwcPfzlpx+bW9+uU2PLzvduwHR03tX934rNct33ID87uTc+nJbOT7xWzxZ7ncPPy9MpqcV/G5+uE3z5ytVavl4pcpziVtPH1o+X6lSy8crVWr5hpUq75+Vwy/m+eq49eG2Y42bH277XY3HxzXufbjtXOPeh9u03vtwyulbVscaN9fuvLsdxxrnY3rrw216Gvi4fTzkj96XWx9uu13j8OG231xjtz7cpsfPUN38cNt5Q+59uE1P6/ndPbmnGncv9pvb8f4Fcu/DbXockrr54bbzhtz7cJvKx4uoq/TPuw3O23Gr2+C3N7p3Ptymx1cG794tt49X4jzf5t7rDdb2+QC/to8H+M8l7t2Ptc8H+LV9PMCv+g0D/PfPyul+rHzcG6xaviEK6+ettnzcf/qbGrf6T/0tng+DUL+h//S8HbcO6XEe+K3u03OFO72n55dh4pn0ids6S195oabxUk7r5b0aFgsY5L379Gsv5XAj9siv90VOIw133+w5Fnmezxi8NX35Wu6xRI/m9hwZ0fdKMIS8f2mt3T8rGj/UWfdl1r5yZn+oUd+skalRDlfYaSjqXsf4ucSt6QX6+WtOxxI371qOx7P9l+9Jfu2cbH2e/c3k2Lfj3RrctlxLDLxZo+ZbNT4eDNOPx8J+8yZ+DHb0nN98mT+W3n3iyzdXjysb3DoUvylx71iczilLCP9wS/ylNSsSS8Rme7NG3M/mfe2+r9WgnVh//Zr3b9YkqawmYnJY3up+ldPaVL+pUqmir1eNsXTqRbq3GqmdxqDurtd1Xqcls/x3P6xG+JtjwvPG8yS/vWbMvi3l7So8oVuvb64w9HwW4AX2XMu7Vdq2NtDb6xTx6ueTc363St2qyLurHZWyV2nvVtn6DIu9fVx0q9Ifb1ap2ypQNb97putjr/L2VcfSsVrLIVvKcaB9ezetni6Y35VhOYnnxqRDmeN3Pe4uYva7rYkHkycfljj8yk59UEZZnGJfKvjXMvr/x7HZegX2JUg+2KkPytTEkhundWXt+DbVdx0bvo/45CrfslP13fh8PJgDs39S/YvL3/XHVuWwuuB59d9YQ/yJ/c0iLTF9PuubRSQmFz1HAd7dHY2OU7W312bed+f9Inzfoem7azNrzPdWTfXdLYklMJ5F5N0tET5XIfUbzk46RIJ8z+rB5xWrU7t1pRwnbRcWV5fDwmLHD03FZx7yPnfz549E2elp8+acyWOJW/061vIfWuLmymSn41lYHano43A8Tw9mdxavOW5FpXNpH9v/dSv088fD04DW3Y9VHD9jlvlCaJaX+3KusX8/1g41TqMvd7+ndipyr2v7XOJW1/ZvStzp2j5+r+9WH9W5wp0uquN3MW9tw7nCnW04vWoS63LL1lfwTNLbBTpLpss7BdIj84md9l6JxEft9mXQvlSi8eUTe28ryrZOZn9vK7ZVUKXqeyUao9b7gN5XdoTFi/dFWb5Ugv69Im/tSNa4wXiO+bx1babWWOld39sRVToT9o/ZfKEEi/aknt8qoTE8sa+d/4UCPX7Uu7x1HHqMuu/9m18pEO2rq3y4C+8VEPqo5IcuKnvcLiHRLSpS3ywRQwrPaumdEjnx/sb+2Y6vNK7EoGzaZi19qQSj/vnxVtBkhpqet/FvtYzMxMkf5x58ZSsiJZ5DZu8dzhIvBzx3Kb23FUyAKI+3jsXzni6WWZT9Sx1fuTqzcHU+3ipRIzGl7l8duV/ih4kc+0233C+ReB0v7ys9/lSiH59xI3U5mLXc/wGz7fuS/Z29SCrbCsD7S4Xy016cnrI1VmfPml9Ntjz/gMWNTf9h5bov/Ixa3F7t04p/2ZF8fOXkzuti/fR61L3Xxc4l7r0udkxO47t024sNvx6M05I918d4uLl5vdjkb4qU/asm5WWR47MpEwNl78X5ZXdOnfjbJz9/PKw/LWRymmdtfJ7uOW6shyLHsfa6vUFXXu/O6dWmlgqPRdvc0fRIXyjSomurtX2J+C8VsUixHx62fy1SPn3M/M12tO2h3w7bcZr5xHdIqpWt5/LnN1dPr+E9n/S21SK3FGhfOax8GPY5eHA6N6f3Ah6Fb49vV0n96YXAfuoCeGZ/rAmatg8y/1Lk+MmmItu34Pq2wvuvh/a4LdHV1bOctiV/Qys+Htoc0yB++P3/dUuOn/2z+HJnkt7lUEa+Y4fOj4AxCmF7yv58wdVTympizGt/a1t++gE8LeInD+7vHocS/Rsu/NM7U7cvfEnfcuEfd+ju5XZaye8Ll5vUb7jc6nHtZt4FKa9P8nHSGt+ke96CHtYmOw0Rfc/OMCHksT2d/bo3pyVFU+WmLb1e2Lcfv+J7e2/0+PsV/Ulqh905jjU94lnx2dt3KlK+4Qy377hcj7uTYmS05K3j9Nfdad9xivWPDvvO14337/v9EvbtuIxLvIZZH9ud3y9hosevBGQmxWxvhfWfHhD0tJh8ij6a53na7h/t5yLHCzbu2srex/8cr/2pSPmGk3PcnUzvRNl+d37dHfmjt6Qm3ubeulp+3ZLTKOkj8XGOvem0L1xqtJznbUo7XGr9D356e14bLDzwODxbH5f5uptrlv/o3cmFXNtXYvlld+o35Jp9y03s8UVoYnqfVZzST434tNTfV55VTtvCa5U17d+0/GVbvuOaPd483j0q/f+HG9m7R6V/R8yeMuU5FBrLr2dphy2Rz3++evuGn6/Tanu3f776d/RvHXfn5s9Xejwef/Sm3Pz9ujpa/9gfMGmx+LD88MCTfv4kxOMbbmVPC21rfAzpOY7S3+lrry0+flC1vu5rf+6LftrZ/qxhn/a2/6bGzdXZftPNvX0w+/XnGK+nw887y89Vbn4i6thX3jPjMfJ2X3kko6V94vLXisQMJsvp8N2dx+kVrOfTTkwl7ft7ab9WOSWs5Pjhej1D4dypS9dWk+37Sl/r1OVd0tJbeve+4ubZORe5e3ZOiwHePzunlR++4exos20K9esxleeGHN+/jrNT98+H/1zicL0KM5Pkh4/u/jy2fL7pu3mZnG+0bl4m5yJ3L5PfdFncvExOb4jcvEyO3dPxg/HDl3/k5x+d03hXZT54Lfn10P25/5N+utxqerf/8+YZPhe5fYb1W86w/aFnmDdc+/YG5q9n+DTgJSlWlJC0L/n8yxk+3TUmrrX8Q8fy4yt9wjfP8LnI3TN8Gu+6f4ZPw103z/CpOzczZTLvExb/i3N8XCmoRit+7F82/uX0lG9oxec+7rvnuH7HOT4NeN0/x6fl+b7hHJcUEyHL83b6cI5Pg13V4s6+msnhHLfvaMffkdTtW5L6tEbfF85x//gcH7tfSmFK/DZU1X9+Yjp9wKrGVNX9C0ep2RdqSCzSJ+3tGvGivGyLEHyxRo/XVh7lG2rYmzVaHI/29vFocTza28ejxb7o28djr/Hu8WARR337eGgcD337eGjsi719PPYa7x4PXvKy9u52WLwZvb9k+sUa0TPe3z4ee413t6NHLPdDBv2mB7gxr3BfxaT8/Phqx9dM4z3i8sNqHV+rUuNaLfKwd6uwdmBp+6o3X6ui0dN4Ldj7bs/43Qfhb+nNsm/pzbLPe7OOvet8objsH9T7akf/vSP7uyp3D23/lnvXnv/YQ1vjvuY5cJEOh7af1qtMMcJV9o9Z//KVwOMt1ta1/cNvl/5c5LQI1vatwfJmCWOKsL1b4vFf3QzoF8aCao+OG/nhC0o/f1XzdLFW7rBq26c4vl+kvByVuj8+9nrk8bklx7WDeFGgFjvszull50dlEeJ+OianazUxpvvkfRbrJ2VeD/mdh4Yfdmdo+DhsWOPeQqS+Hi1Px6+Vjwtp7s6+wMjPv6MpnS64GBSq+69ofvxc4zhTi1jLpxqn7UgRr/u6cb/WKN8Q9On0+tbdTorTCRaNPGl7R/AvJ/j4VVrhuz/l5UNwOo9u/Vclrn6TrwxP3/4p/45uqJS/Y7gg5c+HC86vLMSc654fh1mS51cWbt5+novcPrDyLQe2fd5Lf3x5Yhumfv4YpsOhle84tPIdh/ZbhrjSNwxxnd98uHnNnovce1cnpfINU15+V+VmMv2myu2zrN9ylj8f5jq/DnK7Acl3jD3Itxza+h1TCVL9fCrBcVb7zX7pdAqVm/3Sxxo3+6XPNe71S59r3OuXvl3D3qxxs1/6XONev/S5xr1+6ds13j0eN/ulzzXu9Uufa9zrl75d493jcbNf+lzjXr/0uca9funbNd7djpv90ucXa272S6fT4PTtfulzlbv90ucqd/ulz1Xu9kvrd0zQ0u+YoJX0W+5e9fO712OJm/3Sv3l/6u6B/ZbHAv2WJy5tf+yBvdsrnU4fx7rbK51O73Ld7ZVOp5Ghe73S5xK3eqV/U+JGr/TxDbvbndKnl7hud0rfL/K6U/r+S4enTunjS1x3O6XNvqFT2vq3dEp/pczrTunz67afd0rXR/QOPKvlw4P9aVbw/U7p0xDX3U7p4xezbnZKH7fjZqd0/5aOgf55x8D5bVs+gZjK67dtU36cR+9vdErnR/q0U/o3L/3e/R3/jhcd8uM7Zr/mx+ezX2+vQFVfr0A1EudlA7btEz7bG4c/fYr1/CL03cmv9h2d4/YdneM5fccEgpw+n0Bw+iG+PePUvuMe2ORbDmz7lgOrf2jbKXzmqexf2/l1Mbp2+gVlUvGj5UMDPA1xfU+Ve+ut/6bGrQXXf1fjzorr5yVn4xt2aTszP+XRcyvkFI2xzNLjZYnTRtz7PnXKp/cv732g+lnj9Anizndmn7yvk/rT6/rHl1hi9sEPn7uVNwr88HXX2wVa3K7uHS1fKbA946W3CsS60u2H7yLcL3BrEf5jgQ/X4L/3SvDxqSEWbUh1W121/PQdleOy8Ske2KXUt0ro9m28+t5WWNs+gdjeKtHjtZLn8429VaKx6m7T93akdZaNf7y3I49t1TJ7bytyvICf8v4G/hdKFD6+WLdvuXxpK+I1rJTbezvC+trPsfX26bF4u4R0dmQL3PSVrVDOSP68RHurRIkVoZ9o75VojKBuC2Z8pcQeOfW9Y1H4ZGrdvxr/bon3Tuq+yMy2pP+XSvClitramyXYkX0Z+6+UiBvwVO29k1qjh/H5LPN487rgCyb5rZNa4xOMP/RQ3i/ApSn59XF4pkA75l4lLrYbxfv3d5UPVuhbu6Fxd1XfOhciTH+sbxWIdd+ll/cKxOyGXj8rsE9t+NJBpJP5raxs0fm4Lzf93hb8fBr/+/P//vO//OXv//TXf/2Xf/63v/zr3/7v8+/951Xq73/55//x1z/P//u//v1v/7L913/7f//P+i//4+9/+etf//K//+n//P1f/+XP//Pf//7nq9L13/70mP/z30yfEWmWH//9H/6Unv+/X59jfXYqyPP/F//vzw6G5x+6/n+6/kK7liJ7jtmU61/433j+XPzD83/sv//ntcn/Hw==", - "brillig_names": [ - "is_contract_initialized" - ] + "bytecode": "H4sIAAAAAAAA/+y9CZxcR3UufnumZzxtjdRabLzbY7zv8m5ZspmxvEiyLWxZlo1sMCNrLIQX2ZZksENgwDZbbIyNDQTIHwwmJgZCIJBHkkfCy/qy8MgLSVheCAl5JCQhLIGQhCzvz7X6zHz99Xer6957etSy7v39pOm+VfWdqlPnnDp1aulasus5oPV36/abbt52x467J2/ecdPWO7bu2Dp529b7pjbXfpxUa2Wpt/7ad3zs3VgS9dRy5G2jV+MXnKkm3nVp413rdyWPtLINQPHB+HrWRkRV4stPv2SEAXOVTwZHWmXK1N/KFCifDLf+3jg9W57rkj6jre/YVVZmnx//m5/Mfj4OyqTPiwHbypdr9/SLS7a7tjjJbqv16crp2QJjSRyulb14WpT9wfYv/uwfPPyLv/WhHU9/8O2LvjL/p+edvO9rHnzwO4d8+9B3fffBD1jZS6Zn61RP4vvSyl86Xaj8TN0vmy5UfsDKr5qefTlmHy78b4MbX/bxH22bd9n9H3vFV768duf8Qyd/44g3fnDjbz96xN/d9Horu1qV/eZD735N82OPvW/spM/98/Blj3zrpu+vHjrvK5971UG/+br/+Lvvvs3KrlFl/3jjf3z1k8233ffKh3/5J847fsnkR972xe/9/e/+wc83v/9XH73ri2db2cunZ9tcxH5cMV2o/LCVv3K6UPmFVn7t9OzLMfvw2qc+9NWJhz+39K//Y983Xzn5wCvP/KkvXPeP9x349DHfePlHD/3IIiv7QlX26ztWPrrjgNvP+ceRzz98+pOHHPa1Hzz9yb/94b1T533rb7/5S0d+38pepcp2eazs1dOdZQ8847hld77zj/b78+Of/3/GP/uRUx8/6AdHr/jzT6968rs/+r1/hbLrRNmMp8Z0r5meTcjB6xn5Xj9dqHzdyl87Xaj8oJXfMD1bvpbkl9XrpguVn6F//XSh8jP8e9H07MuxJOoZsrIbpzvLnrii8d0PvvnVDyZ/+fQ/vOWHJ/738VMWHT6x6NQ/efefHXLH3Tcc9F0re8P0bL1z8P3QfZNd49phLZ9j3o//Hd1K3Llj621bd9w7sX371N07Vm67/c7JHVs33Tb1wh/7K7dNbZi6e/vWbXcwYI2+r5zW71M6+7fTuWxqx0W3bbv51rU7b980dTf7TQOCAA5sDL6kA3z91tuntu+YvP3OLAh+X8+APqgDemXLi5vYvPnuqe3bs4BqSfhJwRd1gLc4zaBDpUBXvmxy6x2rNzPocCSouSj7QP4c6nKVlR8pVn7KyjeKlb/byu9brPwtVn5esfLbrPxosfK3W/n5xcpvtfILipW/w8o3i5XfYuUXFis/ZuUXFSu/3covLlZ+0sovKVZ+s5Xfr1j5m638/sXK32Pln1es/L02ZToAXprNMOwD4X2OIemwGuElSaeJRvwG1SWvm1sjPKPH7bMRyNp+kKhLU6SxjTxI0DlI0FFYI45YDUesfR2x5vVpG0cdseY7Yi1wxGo6Yi10xPLkvacOLepTrMWOWJ4y4cl7T/la4ojlqdueMrGfI5anjd7fEatfx0fzs0ZEWp6QtpU/pFj5QWvLwfhS1MnwzddB36iW8dewOM1oNQgrZ91robpj/bgfDgZ62MYsrINzYo2ItCJ9clCgXYhfVoZCbVf+ruU/LFA/zL+glXYolD+M6n54sboPWF0OEXU5DDANP7VTNn61gh8XT23aueWKbVsYG0UX2XMo5EG2DySdqnhoBlZC3xlzEPDwSav/vPbqXzq14+aXrZ/csmVq848bsZ0KdCBcPK3fjyadQmB5ShqZgVjDYPiNpJQC1UJCoZQ55ao5SC2uXrFtcvPKyTu377xtagChk/ZpJXMFUfEd9zumDdI7jjJePN3+3VZvBpPsxzim5EtxwjBNVbNkmHvlAEHX3g2I/IcQ1iGinNV9MFAeMbAcS0xIqmOk0tqRPsrkG+2Y8EdB7dmvqPaUDX+EeJ0+xhdr36HF6C0JyShisgtymEgzLDP3Q4keDg6FNmB+/Jw+dXr30dbfJmGmj60OhoZHfDcAdXya2oa8Zzkqw2fEs3rhO8RvJKXkthbqV2wfy9FhxegtjuE71sd4fbhIM6wjWt9RjjD/YdAGzI+f06dO73619beZdMocy9Hhoj34DuXoU9Q29ivSpySfJ2LlyPAbSSm5rYX6FdvHclTQpRyP4TvWx3h9hEgzrLHWd5QjzH84tAHz4+f0qdO732v9bSadMsdydIRoD75DOfrN1ueRLu3p8tym+iJH+VeMJJ28ylF+x0jSyc8c5V9m5Y8sVv4nrPzzi5VfauWPKlb+J002j4aXbAeOgfd5dgrE2gHDb1BditqBY4get4+XZY4VdWmKNF6WOVbQOVbQUVgNR6x5jlj7OWKNOGIt6lOs+Y5YCxyxmo5YCx2xDnPE8pT7fuXX4Y5YnrJ6hCPWmCOWJ+8927jYEatfZfVIR6znO2KZb2TjPfoHtdbfEVEu79wS8aye+A7xG1SXnPRqIb5g+3jOc1wxeotqVB7pIabVx3h9vEgzrBNa33HOg/mPgzZgfvycPnV6d1CL4U3CTB+e8xwv2oPvcM5jAZIFoj0cX8orr1ieeYjlWF7L9CfiWT3xHeI3klL6UQvJj+KLte/4YvQWxvQv1sd4fYJIM6wTW99RXjH/8dAGzI+f06dO704keUXZZnk9QbQH36G8Hl1rbxvynuWoIJ8viZUjw28kpeS2FupXbB/L0QnF6F0cw3esj/H6RJFmWCe1vqMcYf4ToA2YHz+nT53enUdyhDLHcnSiaA++Qzk6o4U7ktGesSTuYR0zDMRGPsT3U+17sXJo+I2klFzUQnxU+mjtO6kQvdp3WXaQHmJafYzXJ4s0wzql9R3lEPOfBG3A/Pg5fer07jKSQ8Rk2TlZtAffoRxOkD1D3rMcFeNzclGsHBl+Iykjt7NypPpV6aO17+Ri9CZi+I71MV6fItIM69TWd5QjzH8ytAHz4+f0qdO7a0mOUObYnp0i2oPvUI5eSPYM25M+Y0nUU1N9kaN8B28Rw7CRVzn6+f/FyrHhN5LOfisix6cSvax+sLafJurSFGnIY0xDOqcJOhVWhVVhVVgVVoVVYe3ZWCdVWM8JrL1BviodqvqxshOVPu6pWJV8VbK6N8pq5U9U/KraWPF+T8WqZLWSib2RX5V8Vf24N2JVOlTJxN7I+8quVjpU8avC6oZVza2qNlY2upLVPRWrkq+qXhVWpY9z2cYKq7I51ThUtbFqY2VzKn5V/VjJ156LVcU6qjZWNqeyExVWJfeVDlW8r3SowupnWa38iUomKt5XvJ9LrGocqvhV6VCF1Q2r32XC7qXFO8P492rU/VynBuhgecs3KsrVWn9HRP1SOmNJ1BN9b5nhN5LONuegVwvxX/HF2r5U1KUp0riflwo6SwWdCqs81sl9ilW18bnBr72hXhXWc0MfKztRYVWyWtn7uaxX1Y9VGyv5qsaOPbVelUxU/Krkq+rHCqvSoUom9k7eV3a10qGKXxVWN6xqblW1sbLRlazuqViVfFX1qrAqfZzLNlZYlc2pxqGqjVUbK5tT8avqx0q+9lysKtZRtbGyOZWdqLAqua90qOJ9pUMVVj/LauVPVDJR8b7i/VxiVeNQxa9KhyqsbliVTFRYFVaFVWFVWBVWhfVcx1J3hqX/xpKoZ/2IwM5R/iYrf3qx8ndZ+TOKlX/laCv/mfCy1vpr2GfB+8F47NNrhJe0yuM7xG9QXXLSm7lP7Syix+0zubC2ny3q0hRpLCNnCzpnCzoKa8wRa8QRa6Ej1n6OWIc5Yi12xJrviDXqiOUpE0scsZY6Yi1yxDrdEavhiHWEI5anbh/piDXmiOWpjwscsTz78ShHLE+Z8OS9p257ttFTJuY5YvWrnfCs15gjVr/6TNWYtvt476mP+zpiebbxjD6t15GOWJ5ttLFWzYXRJnV5dvJc0zAQ+xx4n2Pee2GN8JJEz7MNv5F0trPIPPscopfFV2v7uaIuTZF2GnzGNKRzrqCjsMYcsUYcsRb2aRvnO2ItcMQ6whHLk/dHOmKNOWLtDf14lCOWp0wsccSa54jlab8WOWJ58t5TVj1536/2y1NWPeVr1BHLsx895ctThzzlq+GItbhP29ivvpxnG8ccsfq1H/vVlzvDEatf/RxPH7PyJ54bOuRpJzzr5SlfpztineWI5cl7Tx/AxlqLA50O5WqtvyVjYEfWCM/qie8Qv5F09qVXDAzbZ3yx9p1bjN5YTD9gfYzX54k0w1rW+j4EWJj/XGgD5sfP6VOnd9cM7/rbFJjHUx3OE+3BdwNQxytbuAtEe1gnVb+cI3CbojzzEMuxvBbsz8FYeTX8RlJKP2oh+VF8UfJjZVW/Mv9j+zWExXFjS0+fEVEuBz/qsfw3/EZSqr9rIb4oO2ptXybq0kw6dfCq6dl8nDYo3g3MMRb3V/qMJcHHuqODF1Y3xD0f3ufol6FYOTD8RtLZL0Xk4Hyil8VTa/tyUZcmpaUP991yQWe5oLOnYKEMsY2y9PQpKReLispFQXsUlAtlN619y4vRWxjTD1gf4/UKkWZYF7S+oz+B+ZdDGzA/fk6fOr17PfkTiMn+xArRHnyH/sQ0+RPYnvMIV/XL+QJXjWfMQyzH8lqwP6PtmOE3klL6UQvJj+KLkh8rq/qV+R/br3silsnf8gCdvPYSyy8P0Dm3JJ1zI+ksK0lnmaAzKsqxPiG/4+W79pex+mT4jaSU/tZC8qT4Yu27oBC92tfYZiM9xLT6GK8vFGmG9YLWd7T/mP8CaAPmx8/pU6d3HyX7j5hs/y8U7cF3aP+fJvuP7eH5TF49x/LMQyzH8lqsP5NmrLwafiMpox+z8qrkR/HF2ndhMXoLYvoX62O8foFIM6zx1neUV8x/IbQB8+Pn9KnTu18jeUXZZj/4BaI9+A7l9dMt3JGM9owlUc9a1Rc5yv/VSNLJqxzlT7fy48XKv8/KTxQrf4KVv6hY+U9b+ZXFyl9i5S8uVv6XrPwlxcq/1spfWqz89Vb+smLlX2zlVxUrf7yVX12s/JlWfk2x8t+08pcXK7/Kyl9RrPwvW/kri5W/08qvLVb+USv/wmLlV1r5q4qV/2crf3Wx8m+z8uuKlf+ulV8P5fPE8q38hmLlB62+1+JLUSfDt7HwGshfy/hrWJxmtBqElbPutVDdsX7sT10L9LCNWVjX5sQaEWlF+mR9kt0uxB8N1EXV8/nwuWyblzhiXeCI1XDEutAR6wWOWOOOWBOOWBc5Yu3jiLXSEetiR6xL+hTrUkesyxyxVjlirXbEWuOIdbkj1vMcsa5wxLrSEWutI9YLHbE8x46rHLGudsRa54h1fB9ipc+G6V1/S8Y7VpeMV5xfMl5xZcl4xTUl4w0TJeMNl5WMF1xcMl5whfnaq+FlrfVXxQJy+P1ra4SXJHr+ZPgNqktOejPzpzVEj9vH626Xi7o0RRrryOWCzuWCjsJa4Ii1vyPWYkeswxyx5jtiLXHEWuiINeqINeKItahPsTxltemI5cn7cUcsT1n11Mcj+rSNnvp4liOWpw71K+/HHLE87YTnWOtpJzx578mvfpUvT9/Esx89eb832IkjHbEmHLFWOmJd1KdYFztiXeKI5cn7pX1ar0sdsfZxxPKUiQscsS5zxPLsR896ecrqhCOWJ79Oc8TylFXPfvSsV7/yy1NWVzliecqqp/06yhHL0//a1xHLM6bg6ZN7zhU8Y4/m31sc+1IoV2v9LRnDX1AjPKsnvkP8BtUlJ71gDB/bx3unLy9Gb35MP2B9jNdXiDTDsrVb3DuN+S+HNmB+/Jw+dXr3py1HrUmY6cN7p68Q7cF3uHf68/u0tw15z3JUkM+HxsqR4TeSUnJbC/Urto/XglQ/NUUa+8yx/FZYDUeseY5Y+zlijThiLepTrPmOWAscsZqOWAsdsa50xPLUIc9+3N8Ra7Ej1hGOWJ667SlfnjrkaVf3Bt6POmJ52mizhXauEf2ZA4lOXt8cy1u+kudh1pU8D7Oh5HmWF5Y8j3Kp+VVXw8ta6686a5LDx3ttjfCSRPuUht+guuSkN+NTriN63D72KdeLujRFGu8vUucl1gs6CmuBI9b+jliLHbEOc8Sa74i1xBFroSPWlY5YDUcsT973q6we4Yg14ojlKV+eNmeeI9bewPvRPm3joj7F8tTtpiOWJ+/HHbE8ZbVffQBPrGrczodVjdu7T76qcXv38b4at3efbvfruO3Jr36V1bMcsTz55WlzPHk/5ojlqUOe43a/2uh+9Sc82+jp+3r2oyfv9wY7caQj1j6OWJc7YnnGya9wxLrYEes0R6yVjlhLHbEucMRa64i1N/B+whHrIkesSxyxPPn1QkcsT1n11KF+lft+bePeYAs961WNHc+NseMqRyxPX86TX6scsS5zxPIcaz1lwpNf/Tp2HOWI5Tnn29cRy3NNxzMO4Bmf8Nyfw2dwcG9YrfW35J3I82uEZ/XEd4jfoLrkpFcL8QXbZ3wpeT/waI3KIz11B7DxeoNIM6zrWt/xDA7mvxbagPnxc/rU6d2JrQXUJmGmz1XT7XXYINqD7wagjkc32tuGvGc5Ksjno2PliO+zLii3wfuslX6pfrWyTZHG8alYfiushiPWPEes/RyxRhyxFvUp1nxHrAWOWE1HrIWOWFc6Yi12xPLUxyMcsTzly5NfhzliecqXpw552lVPmfC0q/2q25766KlD+ztieerj3iBfo45Ynj6AjbV2xgv9ZT7jlfcObSyf9Xsllp4+JX/P5tEa4Vk98R3iN5LONhfx2RX/FV+s7deJujRFGsf7rhN0rhN0FNYCR6z9HbEWO2Id5og13xFriSPWQkesKx2xGo5YnrzvV1k9whFrxBHLU748bc48R6y9gfejfdrGRX2K5anbTUcsT96PO2J5ymq/+gCeWP06bnvy3tMH8LTRnv5Ev8pqNW7vPrta+eT5sCqffPfJV+UX7j756le/0JNf/SqrZzliefLL0+Z48n7MEctThzzHjn610f06pnm20dP39exHT97vDXbiSEesfRyxLnbEutwR6zRHLM/1IU9+rXLEWuqIdYEj1lpHLE+ZWOmI5cl7T9321EdPHbrCEctTH/cG+ZpwxLrIEesSRyxPfr3QEcvTFnra6H6V+35t494w1nrWq/JNnhtjx1WOWJ7+hCe/PH3yyxyxPMdaT5nw5Fe/jh1HOWJ5xhT2dcTyXLfyjDN5xr889xfyGU3c21pr/R0R5VI6Y0nUM1ojPKsnvkP8BtUlJ71aiC9qn7S17/pi9ObVqDzSQ0yrj/H6RSLNsDa2vuMZTcx/PbQB8+Pn9KnTuw+3lK1JmOnDZzRfJNqD7wagjh/ct71tyHuWo4J8/h+xcmT4jaSU3NZC/ar0y9r3omL0PhvDd6yP0dtYjN6g9dWNAtvq8uLWd5RDzG/1GqD8+Dl96vTu10leboByht+ktPRhGcW0QfFuYDdh3SiwkG+o359s8ULpR/pvLIl6zmC7YhiIXVBWrovVPcNvJKV0ocZ20Ohl2SAlR1a2KdI43la079PPR/Qp1ogj1qgj1pWOWJ78mu+ItcARq+mItbBP2zivT+u1nyOWpz569uMSRyxPHVrkiOXZj56yur8jlqd8NRyxnueI5Sn3/WpzPNt4pCPW8x2xjnLE8uSXp2/iKV/96hd6yn2/+nKLHbEOc8TaG3y5fpV7T9+kGtPyYfWrL9evttDTl/O0hZ796MmvfvW/XuCI1a/+176OWJ667alDnvzyHIc8dahfee9pvzzjcv0aG/KUL0/ft199zH4dO653xLKxY5SwLT19Sq43HVYjPKsnvkP8RtLZTq/1Jmxf0fUm3g/fL/bQU4/6NVbuacM8sar1pnxYnrE5Tx3y7EfP9QBPX6df4zCe8uVZr35d1+nXGIVnP3ruVfC092ZX7e5V9I347lXlh2wM0MHylm9UlKu1/o6I+uXwlx6sEZ7VE98hfiPpbHMR/0zxX/FF7W2zsk2Rxvv4Q/u3kI7CWuCItb8j1mJHrMMcseY7Yi1xxFroiHWlI1bDEcuT9/0qq0c4Yo04YnnKl2e9PPvRs16edtVTJjz7cdQRy5P3i/oUy9NONB2xPHk/7ojlKav96k94YlU+wO4bOyofYPfVq/IBdl8/Vj7A7rMT/eoDePKrX2X1LEcsT371q50Yc8Ty1KF+HTv61fftV/ny9KM9+9GT93uDnTjSEWsfR6zLHbE84/dXOGJd7Ih1miPWSkespX1aL89+9KzXBY5YnjLh2Y8TjlgXOWJd4ojlya8XOmKtdcTqV1mt9HH3tbFf5asahyq5Z6yrHLE8fUzPflzliHWZI5bnuO0pE5786ld9PMoRy3Muuq8jlue6lWd8wjNu4rmfyWIdtv8Q5/LnEp19BJ19AnSwvOUbEeXGkqhnue3fOw1e1ggX7fFgPHa9RnhJqzy+Q/wG1SUnvZm9ixcSPW6f8dTaPi7q0hRpHJMZF3TGBZ2mSON77DywRjLqOZZEPdeq/s5R/lbmp2Fg3SbgfY6+PTBWlgy/kXT2XxFZmiB6Wf1ibb9I1KUp0riPLhJ0LhJ0FNYCR6wL+7Re8xyxDnfE8mzjQkesUUesRY5YTUcsT34d4Yj1PEesKx2xRhyxPHk/3xFrSZ+28UhHrOc7Ytn8Za58VUVnWUk6ywSdUVGu1vpb0hc5uUZ4Vk98h/iNpLPNXr6I4kteX4RjN/0yTp/liOU5TverjdnfEWuxI9Zhjlh7w1jRr36zZ732c8Ty9Gs8fV1PmdjXEctTJhqOWJ788rRf/TrP8OxHz3r169jh2Y+evPfU7b1pztJv/OrXcdtTt3sx1tp8ZQLK1Vp/R0S5XszVDL9BdclJrxbiC7bP+GJtv0TUpSnSeN34EkHnEkFHYc13xFrkiLWfI9Y8R6z9HbFGHLEafVqvJY5YCx2xjnTEer4j1lGOWJ78WuCI5amPRzhiecq9py307Md9HbE8bY6nTIw6YnnyfnGf1utKRyxPmfD0TTzHbc9+7Ff75SlfnvrYrzbaE8tTvpqOWMZ7W7+7CNLWEZ28c0Isb/nUvC/9N5ZEPZt4XmUYiI37U3PM8W6uEV6S6Dml4TeSTn4WmVOuInpZ/Wdtv1zUpSnSVsJnTEM6lws6CusMR6wrHbFGHLH2c8Q6ok/buMQRa6EjlqdMLHbE8pSJCx2x9gaZWOCINc8Rq19125P3nvzat0/beJgjlmc/esp90xHLU+7HHLE8ZeJIRyxPmaj8r+eGjfYca5c6Yu0NtvAoRyxPm3ORI9ZZjlieOuTJL88xbZ4jVr/y60hHrH6dW3ny3lOHPPnlaaOrseO5MXZ4zq3mOWI1HLGqmMLu0yFP3nu28XmOWP06H/Lk/XxHrH6NFx7piFXZiXxYnv5EZSd2H+/71U6Y/2VroHgXSK3119Z/V8L7HOuxQzXCs3riO8RvUF1y0ptZ/11J9Lh9vP67StSlSWnps3J6Nh+nDYp3AwGsq/ocy/YvYN9fmrTTUXxeGaCD5S2fonNhSToXRtI5tySdcwWdEVFuLAk+dfvA8mjYiIs63AtdNPxG0qkbRXRR2Sgli9b2K0RdmpSWPizzVwg6Vwg6ewrW7pBdRWdVSTrKto6Kck5yvryonBcc44JyrviSR87Tz3znQBl5WuyINd8R6zBHrBFHrCWOWAsdsY5wxJrXp23cr0/bOOqIdaUj1lmOWJ7y5amPnvLlaQs967XAEctT7vcGmRhzxPKUr0V92kZP3u/riOUp9w1HrMpOPDfshGcbn+eI5elP9Cvvj3TEqnQoH9bSPm3j3qBDnrz3nLt7zpGPan1eINrM8a6lgs7SAB0svzRAZ1lJOssi6Vxaks6lkXSea3zbk9szkmhdHkuinvtUbDRH+VNGk059rFHd8LeUcsRBr6gRXpLouKvhN5JO/S8Sd11L9LLsjbX9BlGXpkjj3z65QdC5QdBRWPMcsY5wxBpxxFroiDXmiLXYEWuRI5Ynvzzb6FmvpY5YnrLacMTy1G1P3i/o0zZW9uu5Yb/GHLE8eb+fI5an3J/liOWp2/2qj542ul/HWs9+XOKItTeMQ3tDGz3r5WlX+3XcvrxP6+XJrzMcseY7Ynn6Jv06plX6uPva2K/j9t4wT/OUiYscsfpV7q90xOrXWMf+jli9sNFqTYDPJeRdE8Dy/bDGsaoknVWRdCq+tdOJ5Vu1dle1Zy7bs64knXWRdCo5qNpTtafYnoH0GUuinrNszfsMeFkjXFznzrH+vqBGeEmi1/sNv0F1yUlvZr3/AqLH7eP1/rWiLk2Rhv2IaUhnraDTFGl8BrDCqrAqrGJYzzU/pYA9tzDrjE1DG8j2vOD+rejz4bx/q+D4Edy/he1je36DqAvP49OHZbFoTKBfsXaH7FY+XNWeLDpnlKRzRiSdueLbBSXpXCDoRNj+gc8vecnO4adefPMpx82/5HsHLn78/hf81sOve8FxJ7M/a9iIi7Yhhy2ux9p+w29QXYrafmX7lH9gbb9R1KVJaenD9/TcKOjcKOg0BR2eF5TBOrn1ubJvVXt2d3vWlqSzNpJOJQf9057g+POD7V/82T94+Bd/60M7nv7g2xd9Zf5Pzzt539c8+OB3Dvn2oe/67oNPlRxjrrPyNxYrv8TKv7hY+cVW/iXFyi+y8jcVK3+xlX9psfITVn6yUPnaTN9vgrdjUWVn237zDFquuo9b+c3Fyh9h5aeKlf8vK39LofK171r5LYXKJ/9p5V8GL8fsw4X/bXDjyz7+o23zLrv/Y6/4ypfX7px/6ORvHPHGD2787UeP+Lub3mBltxajPWrlX16s/Dwrf2ux8odY+dvg5VhU0WTAyt4OtAfiy49Y+TuKlT/Hym8rVv5cK38nlM/BuzErf1ex8jPtv7tQ+drXrPx2rFTr79F/9iv7/Mszj9Q/8aXvbnvFP5/4tt+/7OFf+/CKxz53yoXT1/z12799pZXdUYh2Mt/K7xS0u9R7xtbdM/Mm39qGlX9FbtrJoJV9pSr7zYfe/Zrmxx5739hJn/vn4cse+dZN3189dN5XPveqg37zdf/xd9993Mreq8qGn7qVvU+V/eON//HVTzbfdt8rH/7lnzjv+CWTH3nbF7/397/7Bz/f/P5fffSuL87I+U+0sufk135W/lXFyg9Z+Z8sVn4fK//qYuUbVv41xcrva+Wn4eVYEvU0rexrRdklpydfPOJrZ9970vPO2fbCex742vqPvnq/D5zwt80Dv71zxT3/9ufbrOzrRNkuz9lDP/7vtxfu+mL+p/mQ6eeD4bPxI32Gkln/8yDIY2XrlP9vT58t93steqNUxjDSZ4TK5+yLg2qElxAWYqZPI+lse5FYxiDR4/ZxLGNI1KUp0o6Ez5iGdIYEHYV1lCPWQkesKx2xRhyxFjhiLXHEmt+nbWw6YvWrfC12xGo4Yh3hiOUpX578OswRy1O+PHVoniOWp0x42lU76zMqytVaf80PGIb3OcblgRrhWT3xHeI3RD2L+AHDRC+LL2k/m27s3LH1tq077r1i2+TmlZN3bt952xR7Rlhz5gqi4rta0t56TBukd3XKt2q6/fvl053lEoE9CHQPgDTFCcM07xPbdEBGOeRFIt4NiPzDhDUsytnnwUD59CkplTUrf2Cx8oMh3mKdDH806eRZLeNvkmgNMVqNRPNsLIl6aqG6Y/3YchwA9LCNWVgH5MQaEWlF+kRpPvLK8EcDdVH1RFlkHQrNNCz/gYF6Yf4FgraVNR7hrDCvNc7iEeqC4afW0bzJlnW8eGrTzi1XbNvC2GwajT0HUj4zNwNJ2NwgVkLfD6R3g4CHT2iCG6N2SdIputitBxGdagCtBtA9YwBVhpHrtkC85y2fed3PdYKeorOhJJ0Ngs6IKDdmH1771Ie+OvHw55b+9X/s++YrJx945Zk/9YXr/vG+A58+5hsv/+ihH1mcljlnUXt9kf9s7K3fMUyn+qtO+c+EMN35LXrzIL2lYRftvO3WdVM77t46dc/Uj20xLgzMsCgBcqwWa6fbv79wurOcekJ+DLO3V4bO8L38ICVaalzOZ+hYIJAriIrvaklxQ2c9aE8RQxcyEIipFHY4oxzyIhHvBpJsQ6SMGMeHQ4YsfaqhedeTX2L35qE5RmJjh+Ysic0amrncUJIt4XXKe11ryCgp2W23wHAdqzFg11ONAXvKGDCYUQ4/l43QJEmnE6raP5J08mPMPnx9x8pHdxxw+zn/OPL5h09/8pDDvvaDpz/5tz+8d+q8b/3tN3/pyB+U1K4NJa3CtSndW8kJ5miNfU7/2TQdnWBcq7aydcq/ZclsuW3gBB/TSm9p3obJ27Zuntwxdckdd+2c2jm1ee22HVPbJ+7YfMk9U3fsyO0Sr55u/75murOcetSiPW9OHaB68LvQ5tQowdHPTNYYk12H9zmEIvrAmuF7mew60csy2Wqh38ryokj68MGwogss/YqFMmS8QV6WNXooR+cSnSFHOiqSYnSGHemgseR43z6OdPaBPHZApU7f39syhmnbH1nUXpcRURfTbVzgzqFr0QeSDL9BdSmq2w2ix+1j+d1X1KVJaenDB5L2FXT2FXQU1lU9wFI6NELllNyzrKbP5YSp5CvF+gzJEfbvQZDvyUWz77FeOLij/b12etffOuVfA4P7U+RMIG3jwYKkU6Y4cojyvQ+loWzw4nnePsPylm9UlGP9w80EvRhbDb+RdLa5iP7NI3pZ+mftGy1Gr2705gt6qh8WJpqnSN+wTH4sbXC6vY5W/2fzTherfyprR62fpcN8GpqexY3hK+ss5l9JabE2Yl9Ki7URplNoI3qhp6yLdVEHNSZa/t+ikEdBXZMhj3lE0+rwv2Ec/h2wn+kzV3KGYyTLmbJrmP+aVn4ei6w8pqn+CG1MUnLG9LLGou9EjkVfcBqLToGx6M+qsSj0VGMR0dtbxyIrj2lzORZ9J6CnPKbM8BTeY34eUyz/D2hMKTh/kmOKYY0m7bxkG/dDsnGDkDZIZdOHbZzlXwg27t+Id0ibbZwKpir7N0xpzCtsg5rX4btQAJX5huXYxhW0OdE2zvAbSSn5qIVsv4pllbThMzZuVNBT/YA2Dnmq7B3H1FDn2F6gTWCfAuMtbEtQv08i/MEubeKFC+xPjouirrGe8bzf2hlrYyzfotY6UtqmZWS3uT7pUzJOGx3LqeK0Plih2GrJhZxoO8XLpAVlJ7hMiu3jvhwWdVFjP/NfLUIOCzp7ClYt6eRNr/akciy8VwuadaLTq9g+x9x7Fds3O226ibH9sSTqGeY4waqWjU/bc97i9nZU8Xo9/mNaVowI6fRDvB71j30WpTNq3OD5j5LNNP8tJEdo03H+sGbx7HusF84f0HZnxUi+DzJ8ZevzAkGbjy+wTGEayjfPH6oYSX79e67HSOpQ/2fzTher/1zGSMx25bURHCOJtREYI7klh56ijWU9VfN8tvkq9oM2q075b2/VreRcXcZW9iWaVof7wIZtA/uZPv0gZ93GT46f84F1TIuVM5bPoQC9rLHonZFj0atoLNoH0mLGIsv/Z9CPr+mhjMesV+WNZal45t4Sy0Jfek+KZc21jUA+sY3oxlceG0Jremgj2A6omGvesQh9zXcG9JTHFKsL5sHPPKZY/p+hMaXgfEaOKYbVLV7/XrJxdUiLiddb/l8GG/d+4h3SZhun4o/K/oVi+RyzxTEo5FeG1oF6ON+NtnFzMd9VcbCSNnzGxsX692jjkKfK3vFcFG0C2wvkaWh9j20J6jfH6we6tCkUr8fjGIe0Prc2ha982dTNt67dedttW2/ZOnX3Ja/cun3HdhQPbmpCn/mdep8+o4Fq7Zv4uiWhLQZsQq2rldlBXN5G81kwO18gU6bETw3poSFZLR+rKf9oBFY9QFtNTUcDtLFeWJZpZ6mRchGMNyVdhCHlIqAbMDQ9i5vVT2paHuJVaJkf76MapTTEZtMSM71VpiVrevuFjKEW21GDd2ZKlM7iMP1eGm5RP4uGt1h3UYZYd+dBXVjWEbdO+b8Kuvtd4o3SHzV0xOoPbxNQ+hPCCtmNBSL//ABtrBeWVbqs3Hylu8abXugu6ifrbshmpk8Mr1Q/NSk/8ibvdGAepcUu4+OY9N2MUAC2A/WZdbcu6oohBqWfrLtqi4rST9ZdlCHW3VGoi9JdDk1Z/h+B7s5f0o6p9EdNbT31J4QVshtNkX9BgDbWC8sqXVbhYqW7xpte6C7qJ+tuyGamTwyvVD81KT/yJm+4j8frmG15PCaxfKrpYazuYohgDemuWjIr6hcrveZQnhp3a5Ana9w9ALbWnUi88R53a9SevOPuYIB2N7vBtKtxtz2/6qeYcVeFbJR+8rir/GIVZsZxl+VTbZerwbuQz4zb435IW0pVOKmoX6xknXVXjbtqvsHj7lmgu5f1eNxlH2Mux12mXY277flVP8WMu7Fb3nncVX6x0l0cky6LGHdRn1l3VfgOj9Hsabp7Neju5kp3K91N+ld3N/dId/k49glJOy/SvwcIXMt/Yuv9MNDAPHw3i+W/tdWetL0r1rfzAOtq9Rml8paeJLNLFadQ3ceSqCf6tijDb1BdctKbWf45hehx+4rdFoU36TBXEBXf1ZL21mPaIL2rUz6P26JOhTTFCV7EwTadmlGOJZffDYj8pxDWKaKc1X0wUB4xsBxLDGsRjmAnCNqsRa8CLXrB+my6JySdfGBNGhD0TOtOpbzpY1p3GrVpLIl6rovVOsNvUF2Kat1pRI/bV0zrUFKQygZCtTyYF58NUDPMz8c/uPeGRDl+jGOjSScnuFeXUpmxJOpZHNurht9ISknRTK+q31PF9vFS+unF6C2qUXmkh5hWH+P1mSLNsM5ufUftx/ynQxswP35Onzq9e6xlHZqEmT68jf1M0R58h7dIPtTCXSDacyi1Le/v3GL50O/pnlaSzmmRdHrRHusnsxkfgXnIzxBvTwm0WY02p0S2+ZQkm86hJekcKuiYHuCvA5xMaQcH0g6BtNMo7WhI42M+x0A9+UjdsUlnmy3tuADm8QIz7bsN+82WSf8th3xqpGGv5nygiWXx+xDlTR+70qVOeX8Z5OrjS9rbgP3NvFZ6Zmlo45gvyr5YGtos5vU5AczzBOazR0j2a8/H/Eofs/Ur4H0OW78hdiwz/AbVpehYtoLocft4LBsvRu/aGpVHeohp9TFeT4g0w1rd+o5jGeYfhzZgfvycPnV697s0lk1AXh7LJkR78B2OZf+D9AJ5X8v4a7j8ju0g8sb6z+igruP2zz+keT7q/aAoa7EE1v0x+AGAz9OYguW5b5UeFW3/ctHGEJ9LyvOSWH0db31uJKXsQy2kP9g+1teJYvQWx8g31sd4vVqkGdaa1neUL8w/AW3A/Pg5fer07q9IX1G3WV9Xi/bgO9TX/0P6Og75ysrrOORhvcBZJ+rr35C+roC0QVH2xa3PdcrfAH39O9JXlM9xqpd9t3T1N0nyt5/H/dMc6aAfivc4Z8kCtt/4Z7yZgLTVVA5llXVOyfoaQVvhG0Y32fiXJbptWbJhtHjs+/bS2XI/ipCNBUl2fy5IOvsA7XSWfcH8L050u4Yz8me1q9by4dLo1UXr2zGtfJYfweOe5a8D5iXrdT2xXehH81qBkgdlGxVP1yTdaSOfOa5u5YeTsCyy3Z0neKrGYys/KupiujuSaLkfS6Kei2LsA+I3klLjYy2W1zwerylGbyIkJ4jJvL5apBmW/bAVyj3mXwNtwPz4OX3q9O7gllw0CTN9eDy+WrQH3+F4vB/Nw5D3tYy/hsvveJxQutbN5h5Bc/AJSFM296Wtz3XK/0Wwuc9vYYbGnF63n+fMaxzpoKzyeLyOsLj9L219Nt6grK6jctdAGubD8Rjl+RpBW+EbRjfZWLqfbluWbBgt1qX/DrJxJskGll9NvEG+raE07Gsej7uNQy+l/Fbv4STs59Qp//mB8Vj5Lig3PB5b/gsC47GyM6HxWMmiso2Kp/yDg+cLLOQzj8eKp9j+86n9lv/iyPHYyqv43EmUhvE5nqdgfG6c0nBNgf17jM+dSmkYn5ugtPMgDWWE43MHBtqDcV+OF2Pcl9dUMO57OqUdA2lnUhrGfc+mNIz7nkNpx0PaedBWi/vy78+8qPW+5P4EeZw4K67O+fBvksSNB9hXfD3XKY50EGvVdDudUx3pnBpoz1JBp+QaYfR+EsNvJJ16XcTvVWuSam0q38o2rzohVxAV39WS9tZjWmhlO3089pOo1cylAtNGCmzTmRnlkBeJeDcg8p9OWKeLclb3wUB5xFArl9x+e5+1n2Rmtkz574bRahWN1ooW8oNHTKt71s4wroPlvwfqsGK9xqxntGtpBuab9pvlx737acxEYKp2nUnt4jqcTnWw/D8pPIHQan+S8S79jp4RluXvSmZOoPxnd2kP95Plvz/QT6eJOqBOMk+5DpznzIw6vEHUQVi3ldvuvLdl3RJ6eF8Nf2fO876b0wRO1mPcSKXQJFKt6SwV5XicQgmwsmnLW7DW8ounbpvaMZXRdrbc9QyaA4l+YsbQgmuh0WOo4XuNoWrNXo2hvI6FZdX6H/Yvfu9GJ+3TVsjX+vSaHdvuzurS2MG1JqrF5RPCqol36cNLmpi2u8Tg/GL0gmKgpqb5XCne+IVcQVR8F+J8t942p9qeIq6U2oxwvsA0VwrbtCKjXDcjNyDyLyes5aKc1X0wUB4xsBxLDGtIlivFLofl/yAMTbY1l8vY95fBZ95624ONLYtitWp3bWzJp1VsWo3KQkK1PJgXn4VQM8yfNSzac+V0Zzl+jGMxQ2bBXh0t2qtlh0zVq2ooK7m9Y16NyiM9xOyH7Uq/QsstE5C3zHalT1KoyWT/d2GC898pJK2sLls3pK3GuWaSbTH5aE76+WRKw4kibw08PZAWu6WQQ4NFthQu2r89n8dWsFAfo+XjUXQcyk8Q1uouWNcQFpbn5cY1XbCuJSy1jMDuLpYLLVeZPeCloLEk6pkfa+8Mv0F1KWrv1LIFto/t3bpi9EZrVB7pIabVx3idtcyW/jNHBO0d5l8HbcD8+Dl96vTuL8je4dId2zu1rIfv0N59iZYRkPdFdZKXwLH/um3P/GsKHqntc1h2a+szb9P4ICwh/g3Za5RP7ttetZ/t51JHOjhm8PKykgVsv/HPeKOWh60cyirrnJL19YK2wjeMbrLxg/1027Jkw2jVKf+bQTb+JTCWX028Qb6FjrSwD6TsGebfSvmt3sMZ+bOWzf8rsLysAtZYL/OxOWBd238Wk5eXld1Us42QLCo7q3h6DWGp2Sa2hwOgiqeon4bHPB2B9vPycmj7OfpqvByLwdtxSsMFjAlKw8Azb4tBX439RvTV2A7j8jLKiPlqfCB2v9b7kscY5ZIr6xTyEJepMS1JZvtTHe1uivInBugcW5LOsYJOSV7VSsb4Bq0toZBoSIYtXf01LE4zWl5H+VXdQ/3gOSdTWCMirUifLA20S+myqouqJy8q2RaQ97X099mrpmg+hof5a9RO3LKQo53nxMqL4TeoLkXl5UCix+3jZYaDRV2aIu0q+IxpSOdgQUdhzXPEOssRa4Ej1hJHrIV92kbPfvRs43592sZRR6wrHbEOc8QaccQ6whFrviOWp0x46qOnDnnKhCe/mo5YixyxPHm/ryOWJ+8bjlie/PK0hYsdsTz51a+20JNfnjZnb/CZPGXCc9z25P3hjliecu/J+zFHLE/ee7bR0054+gCe/DrSEesowoqd11v+o0V+FTeyWCDGCa2sxUDwyEuOmMRAiA94xMbwU9tofTuzzXTTzi1XbNvC2BhKQfacTfksHD6QdLL4kAyshL6fTe8GAQ+fNLR0a8un7OHWxTNqhMdtSAh/rrcu5t3B+kL4jGlIR916orDmOWKNOmJd6Yh1mCPWiCPWEY5Y8x2xPGVigSPWQkcsT5nw5FfTEcuTX/s6Ynny6yxHLE9ZXeKItTf0Y8MRy5NfnuPQYkcsT3716zjkyS9Pe+8pX542x1MfPWXC02fy5P3hjliecu/J+zFHLE/ee7bR0070q/91pCPWUa3P6qDYiURHzWGXB+hg+eURWGo+bPknRP5QSGYcylvZkjenDYT4PQGYhl8iJGPs4WPnHJLBrhzPwEroOx+ezgrJ8C6gJc/b9dfYWHB3ltzFx7vrMNR0NtU/b2QQyx8coHNISTqHCDqjopy1uyQfo09aGH4j6WxzkVCW2t2o+FJyt9vMSYvzBT3EtPrw2UxlwkxfcEezuvBJ6ReqPV8Ue1xLN5pJp3njkxaxZjSt45HPa29b0d2ViKvMc4y8FqWD8mY789XOedbzUL8rOmo3M2Nhv+MO+nMoP+7sVpgnQzrmP6vVX+nO78vpB9PUiYu0Puc8r3tdl4q68mnD2+CEwrIWpuKz9buSg/Mp7WBBV2Gy7czbd4eIOoSwsL+OpvzWF8MZ+Q2P+24l9B2fhLDyWfJzfkYdUH6wDlnyc1kB+Vn9vO51xbJHE23Lvxbk5wqSHywfkh/eXYzyYzxSYy/voM879mL50Bh/KqWpuofGudDuccUjRee6knSuE3R6PT5cR3TOcaSjTgWr6ciL4DOmGR1+x3Sw/PIAnWNL0jlW0FG+xnGAUfIU/mDJqc3MyYIJfCnqxCeI0CfKIwdIy+sHH1TdQ9PgCaA3Dp+zsCZyYpX8YYmZPhlPstuF+KOBuqh6xlwwH9vmgx2xTicspX8vEliWP/RjBZg/dBK/5CXkA6G+U6f1HUIFGyifHfYfSDpFfCIDK6HvG+hdVqhAmdGsa5WMbjczqg6ZzZW57uE1P/VY82j4c33ND/+GCZZtJp1izdPbcUFnXNCZKyz1mxzLknY6eSOoWN7yKToXlqRzYSSd5SXpLI+ks6oknVVVe3ranrmS66o9/d2eyu6004nV04pv7XQq+1a1Z3e3p4e/TRm9hDbe+ryH/TblzBLahKCHmONWoPV9d/w25TdoCc3rtym/RqHscagP68W4wB0XuEovLJ+is6wknWWRdKr2VO2Zy/acUZLOGZF0VpSksyKSzlz1zwUl6VzQZ+2p9Kdqz1zag+eanq4tSWdtJJ1Kf6r2zGV7Krlup7M3yIH6HUjcrrTmAE0T55NY1rZJ1Cn/AQfPlrvygPY24nL0PtTGvFuLsHxoaxFv+cE28Na54wRmjdKwfscF6oflj8soh/VJn5Jbj2cuFz2nWPmZrQ3qFwGxTlm/9Wnp6q9hcZrRahBW3raH6o71437Ci3h5W7LCOjMn1ohIK9InJwbahfijgbqoeqIsZtHZB94NUP7lgXphftMxlE0rW3LtfiDUXypGWmJbh7HnJMrHJ0CQxedkYCX0/SR6121bB3Y/m6vjqQ3d1ADLH5+BhT8kqYaROuVf1kpIh4I7W0NBaEdkSVU5s6jJKXufcchcpo/xWt3hbWXVrsvL4DOmIZ1zBB2FNd8Ra5Ej1n6OWPMcsfZ3xBpxxGr0ab2WOGItdMQ60hHr+Y5YRzliefJrgSOWpz4e4YjlKfeettCzH/d1xPLsR0/75cmvKx2xFjtiefLLU4c8/QlPfh3miFXZ1d1nVz15f7gjlqfce/J+zBHLk/eebfS0E01HrH71V1/giGX+qsUecI7OsYe8YTMsb/lKhjIHSoaUZsJuKryFdeLtcNjOWsZfw+I0vty0YBwkeLlpqB8wVIZtzMJanhPL67evzgm0C/FHA3VR9eRQaJk2n0ZYavlAxYjy9t1chFVPE3VxDqsae86gfPbzvANJJ1vPycBK6PsZ9K5bWBXF4FRKw1AhX4yR98A4lg8dTJ+rA/CHlKSzO3+WT9E5uCSdgyPpXFqSzqWCjlp1wws3eOUt/YyruSMHttfpVEhTq0d8+YTlX3ngbLl5B7bzAPljd5UvoO/p51OozrjiaTrocS074iWJHmINv0F1KTrEHkP0uH3W16lpNPe1ZRqv2Da5eeXkndt33jY1gNBJpyYiVxAV39WSTotWg5rhO75G6EAqZ4tZg0n2YxwzusdCmuKEYZqEYJuOzSiHvEjEuwGR/xjCOkaUs7oPBsojhvohAW6/vUcNO0HQrlP+w1rMT9dYV9H1NooW8sN4ynJiV+xwHq6D5T8S6rBivcasZ7SLtflY+o6ytXJa0z8HrMwxB2r6iaDP7cPRezijvtgezH8C8MCuGVL7NbA+6h3yAMtmfce8+EOZ/F3J4gmU//gubef+t/xLA/1/iKgD/kgH85/rwHkOyKjDWaIOwmqu3HbnvS2rmdBTh8/KynEvcU8cInCyHuPGsxeFtWrO3GHtYDr2XUlA2nJbGp1xpW+b2jGV0XYeEQ7OoDmQ6Gc00XVLn5Gk1FgZPTYbfiPRkjeWRD01tp5Gj9vHy/LHiLo0RVqWlnajk/apLZO2+vSaHdvuzurS2EFbGQsun1DZmniXPvhzLzZQ45SLpzxqZojvQlMey6foLC1JZ2kknUNK0jkkks6xJekcG0nn4JJ0DhZ0GCtrCnFz63Od8l8Lhv2S9RpzQGA+W3a6Pb+K/KhNopa/2x2FzEuMIvHdgYo28pIHwuU56xq6CAbpq3seV+Ss6zVzXNfTRF17eJlP9JCzuy7zyTcd5FgscgVR8V0taW89pvHIchzlWz3d/r3IdHAc0hQneDqojgKGJCsR7wZE/hWEtUKUs7qHYpuIoWKthqHKpd9fKcqENCBGgtOHnZhxR6wJgVXyRsP9YzXT8BtUl6KaqY6mY/u47WtEXZoijdcM1gg6awQdhXW6I9aZTljpw8f8K6wKq8KqsPY0LLVOO0HlxqGczT7U7IBnqHn3PGB5y6foXFqSzqWCTtm9CoqOqrO6yZX5NpF0tmciQAfLT1B7ToU0XAz7hQM1TZzJYlm7Qb5O+U+E8yy/eGB2G5HPz7ZrurPOtleuDmk5/JoF6Wz6KLqJHn2coelZ3Cz9QR9uR+uz8iVOpDTsa755OqsPPkN9cCakqT6w+tQp/xLog89SH2D58UTTS7rQYxkZzsh/JtXP8v+2WEZQ9VueQQ/5gXz+iQx6vyeiK0rujHZJudtfyd0EZGC5i/W7Y+WUz0uhnHLE5lSBhXLAERsrP5zoPjA8/oWPPxF9Hivn3K+W/4uR/epkT2S/Iq+4X1VkTY1DITnA/jKeNJPOPs+KRCIW9nVMv54q8Llfvx7oV7WhAuvJ/Wr5vxHZr7gP8lkcSCvbr8irmH7F/NyvEyI/9qvxpJl0jpPHEJay0aEIq+pX7AO20Zb/u4F+VVHukB22/N/vAzuMvIrpV7USENuvbIexX8+jtNC+yLmy0f9P9Dn7/GwXsuqn+FZycY/XoldkVGM/UT6hsjV6t18GluGk7zCsyiy35mb9cBOzfCZ/y1VTOypOE+XTR5koa0/J4+HRiwJ8PPzUYvSCx8OVSc17PDzvsNgDUU0fWy2oiWpx+YSwauIdpilRxfVBE1W1HRJH6BGaKaAIjRPNCUFTef6W3zzQLO/C8Phi1QOFejAm1kFdpGr5rxb50TPmbczYhqspDcstz6CDoyNafh4dLf8R0NbQ6Gi0ezE6Io94dFwHaYMiP/P7GpF/HeQxnjQpv1Jp5PHVRKeb6WD5V3KqZt/KG1+aZLe326yM5QtlYg2lqdmckgX8zZ/0qUNa2UgJtodlIaRL6cO8CckO8qaZdJcT1Ms1RGdC0ImVBSuL0bARwEY6Y0nUc5zRUavPho3Da44+uxnrZI8aqu1dg+qSk97MUD1I9Lh9PFTXRV2aIu1i+IxpSKcu6CishY5YVzpiLXbEajhiHeGINd8Ry5NfhzliecrXAkeseY5YnjIx4ohVc8Ra5IjlKRP7OWJ5ysSoI5anXfXUbU9Z7Ve76ikTnvbLU4c8ZcKTX01HLE9+LXHE8pRVz3pV4/bu45env+ppoz19gLMcsTztV7/KhKed6NdxyHMO49nG5zliVXb1uWG/PPvxIkcsT371q83pV79wX0csT330HGs9+7Ff/dXL+7RennZ1zBHL0070q432rNeYI1a/2glPn3xvmNd6jtv792m9POe1nv045ojlOYfxjPt6YnnKBOtQrfUd85wMn0+CdMxvPxRVcq14M6/FGgZiDxXErhFekrTXMyH8UUHP6tXISBtLws8Pbv7sgp9/83UfqVF5qwu/4/0JwyK/WtM2XuEPa+Xg1Sa1h8NoW1od0oYobQjSrA7p37Xr2+s3XLB+MfxD/KbIz6fSYvtiUdKpRyZHc3VKStE5tiSdYwUdxsr6AbmbW5/rlH+sZRfUfSFq39Kxon6Wv9u+JatPaN+SOl1Vy/hrdPgd8w3rsJTorHGko07HqP1wZengfqfTic46Rzq4d4pPM17jSAf36x1MdNY70lkPeU4kOtc60rkW8uC1uen3DZB2NGBYPa4X9TBbvBHe57DF9Zh2IH6D6pKT3sz+ro1Ej9vH+7tuEHVpirTb4DOmIZ0bBB2FdbwjlvXtAvqefua9vRsEnQ0BOssj6SwrSWeZoDMqypXVEcUbo7PRkQ7qzDKic4MjHZSDg4jOjY50boQ8JxOdcVGH1B+4/uDZ9+m/myBtkMqmj53Er1P+75w2W+6GFqbJINoKrCOWR3/setEOpvdSmrNMQpkc9qgtNpUQVjfebSLeXQ9pMbyz/H8MvJsi3mG7WLc3QdpGStsMaTdQ2hSkIQamJdAGfMcyh+Ut36gox+PVLfA+R38NxegG4jeSzjYXGa9uIXrY9vThuduWYvTqRu9WQU/1w8JE8xTpG5bpmLKzk5SGtnGK0tCebaY01O+T4DNiZrXJ9s2rsYvlG+u3mtLQp+czD+iH83kb9J3XURq2mf1ba/MQ4aQPz1NRZgaTTr4wD1D/WVc3d8G6hrCw/GZqw2ZqwwbRhh7qdbQfOhd6rfTM2r5F1KUp0rDfMA3pbBF0FNYmRyyTfxuDTHbfddSuv2n/PwoXTmI7lXzzReKW953w4/OPtz6rG93YT0F/iOVuk0hL8Q9s/azYAtFetBNFeIfltxCWpdWTzphG+pj+1Sn/p8h3KThWbDG+4FjB+nh7QexYfTT8UUHP6tUQaTHx1seP//biZ27+9y/XqLzVhd9xzOkOkf8Skd94tQ3Kl423Gm0Vb72d0oYgzeqg4q13FKxfDP8QvynSXgGf8/RFU6TxnbdFsVDfPLCuLohlMeVbobzptGfMUvkpF1Kd1ZlJdX62KcpfTWmrBR1rD47zbbdLHazrg3MiHHN5TmT53wjj0WdpThTr+3FcRcWs1VluFVcJ0VlVks4qQafXsW6Oq9ziSAdlYxXR2eJIB8dNjqvc6kgH9Zr9latFHVKZ/VPSg9shTenl+uldf+uU/wTQgy8F9ADriOUxrrJRtIPpfZV8k4Jjjoyr4JgY4t3XiHcbIU3xjm2I5R8F3n2deIe0WbeRT7dQGo4XWygNecV+p/JF8F3I72S+YTnjb0kfJjquYviNpJR8zMy/thE9bHv6sI92ZzF6M3GVuwU91Q8YV0GeIn3D4rgK2lkeU9E2sr+F9ux2SkP95rjK1V3axDEFVT/THYsD/Ovzd/1Ndedfaf6G9K6bbk9DubUYQorx76R/yIcpao+ak+M71hUsb/k8xzU1r2S/K++8EstvobRbBB1rD8Z10WYOH6LrgzYTYz5sMy3/30C/Nw5pb7/is+pP9rvy9ufySDqrStJZJej02h9iv6tX/hD7Xb3yh9jvut2RDo617Hdl6cHhpAd3QJrSA/a7LP8bQA+ODOgB1hHLo981JdrB9I5t0Sg5jku/y7C68e544t0UpMXYEMv/cuDdSTlsCPoS7FshP26lNByTEQPTEmgDvmOZw/KWb1SUM/5af90N73vhdxl+I+lscxG/K9YPsvZtL0Zvxu/aKeipfkC/C3mK9A2L/S7lUyjbeCeloT3bRmmo3+x33dKlTex3KdlnLNybq/wsjrNf3NKvVNcuan1Weo66/PuUT41B1gfIm16s53CMuGAsfEau1bqp8sNC8WrV9/fCZ0xDOrFxxhscsaxflYyxH5Z3bX95JJ1lJeksE3RCa40xsqXoKN702j/ifUW98o/YD7vDkQ6OieyHZcWBbyZfYhukxcSBLf888CVuIV8CbQWP+1Ye/bAtoh1M71bywwqOs9IPY38ii3e3R8zlQryz/N8+crbcnQHesW7H+lq3UxqO14iBaQm0Ad+xzGF5yzcqyvF4VdBPifbDDL+RdLa5yHi1nehh29OH/bCdxejN+GH3CHqqH9APU74XYrEfhnaWYxtoG++mNLRn7KOhfrMftqVLm0J+2JYMrFg/zPK/kexGQb9J2g3Dqvy1eH/Na706/bzREavy12bp8LvKX/OhU8Rfe9rJX3vkyNlyz8yBv/axPvDXPu7kr90NvPsk8U7FNhRf2V9DP4r9NeQVj4N542YqvrK3xM3UeLUnxc1UXErZRvbJ0J5x3Czkr3nEzWJjXEwzy6+7fro93fJ/HuJrn6O4GdYL909fe2h7vspfay+7J8XXrF/VOQD21/KeD1wu6qzoLCtJZ5mg0+tzbuyvbXakgzrP/tpzbZ0zy+f4dsQ6Z8jnsPxLjpwt972Avxazzhny1yz/D+dwnTOLd//q5K/9cGy23L8HeMe6jWMj25dqnXPXU61zZvtraGc5voa20Wudc3OXNrG/ps4HMlasH2b5l7R8qpJnZqTd4L366j6OEdGeXvhrht+guhSVf9V36jyAOt/GZzsxjeNrZc6klT2jFbK1iM3+mjqPujFAZ7mos6KzrCSdZYJOr+8/YH+tV34h+2u98gvZX+vVPrtYf+2MQ2ffoy2O9Tks/zvGZsud3cJUMSKO5/AZcM7P/prlP5/sbsHzhNLu8tnBrPMAK4h3eB415jyA5b9vbLbcC4h3SJt1G/nE9gXHVPblkFe83yfvnBTLZ525tPT0KXl+I9pfM3x1xrPIeKXOSag9vCXnDzP+mvKbVT+gv4Y8VWcD2F9DO8vnAdA28p5/tGccO0H9jrlnAdvE/pqSfRXjwrN8HONS49KIaGOOPloQK4OG30g6+V1EBlV8RY3X85LZX05v/XzvZVM7rtq56batN18+de/2iTs2XzV5946tk7dNbN5899T27VhpJDQf3mM6PpzHPk+K94jR7ZKIPM77LV2w+MIJLM8GcEsXrGsJSw1u/H0o6aynXRQwEIGDipZVr/VUL7X4EjLyKJyvStqxsHxWwCWrXldMt2Opg938fSjprCfzK4STZUCxjT+ZtNcr6zBV+u/uLlh3EZY6jGVY27tgvZqw1CScvw8lnfVkfoVw0n87u9TrNVSvrM036b97umC9nLDU5h3Duq8L1lbCwvJYFr8PJZ31ZH6FcNJ/93ep1w6q132Qdj+lYbkVRCfvJA3Lz9UkbQXRud+Rzv2Q5yAol35/ANLQtoYOS9ng/yC870XAxPAbVJec9GYG/weJHrePAyavF3VpijRelHq9oPN6QUdhbXbEeoDakzUJe5wmYTdAWswkzPLfPDZb7h00CUMe3U9tVH7MDYJejdo1LPIjXp3yv6dVp31+/O+i1gUsSkc2Z9SFx9NQoGMk6dSvXuiI4TeSTvkpoiMPED1uH+vIg6IuTZHGQQuliw8KOgrrVkcsXjTN0pEPO+nIFWOz5X6+D3XkFx10BH2oGB0puPAUrSO88FRWR5QvG9KRB0RdmiKNN9YrXXxA0FFYdzpixerIbzjpyNljs+V+u4c6YvyO1RHL//sOOoJ+c4yOlAmGIZ7VB98hvpeObCN63XTkTlGXpkjDOROmIZ3Q4jhi7XTEitWRLzvpyOFjs+X+vA915K9y6oiqey/mXip+dQZ8zuKRkt2mKM8LqxsFnW4y8g+H6vooGUk/2/ydF9ZHx2bLfTsgI6EFz7laWL2gJJ0LBJ25Xljt1YLnBURnmyMdHFd4YfVORzpoK3lhNUsPBg+bfZ/+uxvTRFmLF9Up/0ePmC033MJUepAVs6zD+xtEO5jevBaNkhuP5MKqYXXj3XziXdFx5q3Au4UB3rFuo0/PNh75sY3ScEzmuK+Kr+I7ljksb/lGRTnjr/UXxi17sbBq+I2ks81FfK3Yg5/WvvuL0ZtZWFVzCdUPuLCKPEX6hhVaWL2B0tA27qQ0tGfbKQ31mxdWb+jSJl5LU/ULbbDZXZvMCi7QBjeZqQ3pPDZhWdU30/AZ05COOiytsDY6YtkaQ7XJrPNdP/hCvMlsb/GFVubwhdKHx3PLfzqM55fOgS90eR/4Qlc6+UL7Ae+uqnyh0LPH+EL3FaM34wvdL+jl8YXUmvZzwRcaFPXDfKh7Kp6UiHe1AD2mMSDKvjZprzemrSUaeWNAa0V9exjXHYzVrz0lrstr6GVisTE+T8kNjNH++FxsYFwL75w20Q6G+mFzgF7BtbwBoxfa24X0Uns6nHT2YdYeNLV3C/srS+eL7qfc1gUrtJ+S1wHv7ILF+ymzNi5j2ttb/ktqh19/WHse2wv4ZsjzxtZn1inkw7N7SSifuvzE48J3xEsSrXuG73WhveoHdeAwlc19krCMYB9l7TNVl2bFyGzognhVn7x9qjaVp/neGci3ReRTtNLvk5DGl9hb3ne3MFI+v2h9exuRLu9NzvsjOreIuig6y0vSWR5JZ1lJOssEndDhyBhdU3QUb+b6ANqkIx2USY4N9CrWwbGBjaIOqc58gua36tC7Gi/qlP9Th8+W+xTNb1EPeKzDi/USkZ9jA5b/Vyg20MuL9bJ499+Jd+oAWoh3Mz+KCLz79QDvWLdDB1yRH5OUpn6spkZpCbQhdABNXQaxtxxAC13wVGbPDY7ZSM/7AJoa62IOoE1CGh9AQ/2OiQ3EHkCzsunhqpa6wOGqy6fu3TB529bNkzu2brtj3dRdO6e276gDsho5Juk7W2K8GirrqdH3AUq7mtLxlIN6Yq4aKPMT0oiXJFpzDN/rqgF1oit01YD6uUR1VcXr4DOmIZ1bBR2FNeWIxT9fUV3lmU0ndJVnr35qhz2959pPD2Z5K9+PWMkIeSuWfxl4Kz8kbyX004NWHj290E8PWv5/J09vEsqU9fQMq9sq0H8S74r+9OChwLuEfp4aabNuh356UF37syDp5BWvdFtaAm3Ad6EVW+YbluPxqmDUONrT410LBeUjuGsh9NODBT3LGU9PeZaqH9DTQ56qk7js6anj+so2TlKammEoGxRz1QC2Kc9VA2sEHUu7EdL4J3I3iTanemc/C2/5xiHfGsK4HtJupLSbIG0T4D95XHvbUG9Yr1F3Wa9Rjlmvsf+zTpdn7XQ03DrlPwps0zmHt2MqGVU7eSy/imDj7IRnsurK2BDWxgBtNXPaFqCtrrzjuiRJtq6NGq3p2TTjzUjrbx3S8tjANEJ51PpZOliHZzNMz+Jm9ZOaNYZ4pfpJrZTxihzamI2Upq6pUTZmktLUNTpKPpW9wfHY7E23KDSP85NdcJmfauyYFLRCEXWl/2w3UP+L/hQx2w3rT/TPMH/WVesXt/qil1ets3zXEy3fWdeZbgTbdlmGbRvKibmmhZPq6CWgo+mDtsD6saQtqCtbgPrOtiBkg9Mnr91kvQ2twMdGeljPhkV+xKtT/muhD/ikENqjO6juKiKd1+cxfUjl5pXkU6Du4jziRpI9dTrHyj7bvun2dlv+nwB5vonmER52g6+YRTvAEXw15ig5UxFCHEO5nNmB59JPmId2P/TzT5jPtV1DPsXYNcxvtkXtZGN9Vlf1KxvB9mNLgJ5ahUcbEbKRasdItxX271MMBvWL9V9dPah0POZndnncUDaMx2zM/zqwYU8Qb5Qsh/xYtfMHd+1MUntCp4IV1uYAbbWbdnuAttpNy3VJkmydVLpovOnFfAP9AtZF1U9qp12IV6qfmpQfeZNXd/m6a/VzQ0p3TeaVfIb8/PRh3Z0UdUV/YK5We7PGbhUDRlz2fd8LuvsJ4o2yz2qllO0H5lcndELz9RDWLQHaIflVtLFe/HOTHDtQq7FKd403vdBdz/mB4pXqJ3VqgHUwduWZ9XMS0kIrzzjusnx2u60yNO7iDg/e/aHWDEOyp3ZaoB6z7KmdFkr/Q7G10E9OsN3AvmW7wTsKOD/HCiz/ZylWUHDHr4wV8CkXjGco+c76qbo/A9v2mxm2bSgn5u9ExgqsH3vhU6O+sy0I2eD0yWs3WW+xb7J+WhWx1C5U1rPhRMcs+adaLf//DsQK0B5xXDN2J0zoJzcwVvADihWonxNK832JZE/F9dHmsOxZ/n8Bef4/5G942A2OW6qYUWjMUXLWFOVxDOVyZgdKzqWjYwW8O7xgbCK4O1zNdzxuPUv/xf68NMYKup2ICMUKemnXQush3fjKc3f105fKRrAdUKdI2EYoeioWhjYiZCNjfRbc0fsJihWgfoXWxVj/Ud4nKQ15yH6DOnms5lx8Evi/wIYtOqIdU8lyyI/tNl/n2Kear4ewQnEKdcJ0Z4A21gvLMu0snVS6aLzpxXwD/QLWxVCMJn1ieKX6qUn5kTd5dZdvWJyENNZrlG2MgbF8hvz89GHdzYoffonG7l6fGue59T1QF7WvAMcBzH8InHw/lXhzXzL7xMjE/SI/noJmG5Z1c0wWVmhPwwMi//0B2lgvLMu0uZ5WTumu8aYXuov6xrqr+gnzx/BK9VOT8iNv1L6z0An2eygNx6jQCXaTeSWfKkYfu68AY/R8i4SyhSHZ6zZmseypMUvpP9sN1H+2GyijbDewb9luWH9irADzc6zA8q9o9UXJ27BlrOABquN9UAcl3zy3svzrwLa9IMO2DeXEvKiF0y1WYP3YC58a9Z1tQcgGp09eu8l6i33DMR0Vd0CecqzAeDQs8iNenfJfCX3AsQK0R/dR3dEehW7UYD9D3eqTys2drXqMJp26i7GC9SR7aNPYXqQPy57l3w7yfF3rs6fduJPS0A6wb63GHCVnaq0Ix1AuZ3ag5I120bECw28knW0uEitQ+qdujfH4FYH034OCnuoHjBUgT5G+YYViBb20a8inGLumbq5pJp1tZH1GG8F2AG0E249tAXpoI9AXv5N0X9nIWJ8F5+crKVaA+sX6jzrO+o/yzn4D8jDr1nllw3jMxvz3gQ17mHijZDnkx6pfUHkQ8myn9qCsvz4Ca2eA9htE/tcHaGO9sCzTztJJpYvGm17MN9AvYF1U/YT5Y3il+qlJ+ZE3eXX3AUrD8Z31GmXbZF7JZ8jPTx/WXfUrYOgP7GmxgneA7j5DvFH2ORQryDtfRxv2QARWaL4Wkl9FG+uFZZk219PK9VOsQPVTyMYqXql+aiades06OJexgmd6FCuY/xyPFcSM+RgrwPwcK7D8n6ZYAcpIDlmXsYIHqY4Yz4iZ11v+/wW27VczbFtsrMDy/1ofxApQ39kWhGxw+uS1m6y32De7K1bwe5GxAo5rescKvhUZK/gjp1jBd0CevzAHsQK0AxwrUGOOkjMVK8AxlMuZHSg5l46OFRh+I+lsc5FYgdK/UKygoN2ciRWoOY7qB4wVqLkIYvVjrKAbX3nurmKaeecbbD+KxAq+1aNYwaBTrADlnf0G5CH7DQ9iXZJOG4RjNub/Idiwxlg7ppLlkB/rMV8PYYViBW8U+d8QoI31wrJMO0sn5zpWgH4B62IoRpM+MbxS/dSk/MibvLr7IKXh+M56jbKNMTCWT69YAfsD6myDsgk1qi/mD81Puu0d5fmJ8oXUXqONGXTQJmCfZP3i035ju/5286mNdkl5X9DrfTTd5oN8dgZtN+95QR7jeSQeG/CMyz/k+IVBtT9UzZNZ9oYz8vN+Mst/1Niuv+izh+Q5dP4rrzyr/UZF5Rl1g3/Jz/KfODbb1jmQ5/m7W55ZZlGeOSak5LmWdNqwMvGcL/eh/J8/tuvv3iD/E2Ozbe1H+VdziZD8d4uRsPyj/7Y75P83csj/AwGaSv6tbVnyj/FEzH/12K6/Sv4Vf0Py322NMCT/r6c0LLcxgw7KP/Y7y7/lv35stq0h+TfavZB/5BHLf2jelD555zq8JoD+e0j+eb3WS/4/XPIXlkPyb23Nkn/D43j5y8Z2/VXyr3QwdI4x71oXtuFBSsNyGzPoZPnzLP+Wf9vYbFtD8m+0eyH/nvPXbnEG9udRN0Lyz+scXvL/OMk/nnHn2NCtAiN0jj10d4W1YxvURemI4fKZzdeOQRvG2jGVj6TuB7b8HnPeEFZIP7vdjcG01d0YXJdE1NPK9fD811Cvz7UqXql+alJ+5I3SrdAZ99C5ktBdeXhejOVTnXGP1V08476Cfk3+9i64zE91N1ToDppbRfuU/ofuhAidVWO7oc77sZ7hWrRae+P5xvvHdv3t5a9WsnzjWjTKN6/dWf5Pj+36m/bxB8c05lBOzA+1cLqNs0531dR7fVdNN7vJeqvOptXoO2Kp9RvWs+FEz3X5XhbL/4tju/52W4vm+zhCd25sFnSVPcK16D8b2/WZz+imn3Et+lfG2tut7qOJuYvxy2Oz5T7T+uxpN/g+LHXXQWjMCf36oLrPRsmz2YGSZ8Cj16INv5F0trnIWnTs/XQl7ebMWrSKE6p+wLVodYYWsUJr0b20a6F7fLrxldeGsY2sz2gj2A6oX3hmG6HooY1AX9xsRMhG3iJw+fchsGyKewbNN1C/Qvc5sf6rc+xqzxz7DduhLsrn4V9VtPx/OTZb7vtj7ZhKlkN+bLdz5nx/kDpnHsIKna8PnRVVtNW5Ha5LkmTrpNJF400v5hvoF7AudluTjeGV6qcm5Ufe5NVdXt/G8T10Vx7G31k+Q35++rDuqnvU0R9YIOgXvYOG71RAveb7adQaA9oZXk+x/P85Nltu4ZHtmN73U/CcKe/9FFsCtLvZDaZd3U/Rnl/1UzPptIG8V0T9hovST44xqLtTLE2NOUo+1d0yseMu3i3zr4e046q1zDL3QIbuq+W9oh7jeuguFrYb7B9yfo4VWP7DW31h/ifKSNlYAY/jeOZGyTfPrSz/Wa06pn18ZIZtG8qJeXQLp1uswGkcr/d6HO9mN1lvsW94/qjGUuQpxwqMR8OJjlMYHse3T4M+4FhBUX9Bxe+UPcJYwbpWPTiem37GWME5JHtF41TXgjwva332tBsh35r3raoxR8mZ2huIYyiXMztgdgVlsRexAsNvJJ1tLhIriJ27l7SbM7EC5YerfsBYAfJU3d8TihX00q6FYqDd+Mpzd2xjkXiAsh+3BuihjUBffB3pvrKRsT4Lzje+3fJZlI6z/seek2W/Qc3neNzI2tOUdU72RrBh24g33ndq8T78vHdqhWLsaq/B/QHa1Z1a7flVPzUpP/Imr+5yjAHHd9ZrlG3cX74tY9zGdqi1EOUP4Jh/Do3dGCuYStrT8sYDlM6zn6Z8X/W7A+z73gu6+xDxxjvOFzNfD2GF5mvd4nxMu4rztedX/RQT55uCNI4VxOon6zzKNo67LJ9esYKPU6xA2YSQ7HXbT8Oyp/bTKP1nu5E3HqBkne2G9SfGCjA/xwos/7tafWH+Z8F7pGSs4D6qI8YzlHxnnQn+BbBtP5Nh2/KeM35fC2eO9m/nPgsassHpk9dust6qMb5G3xFLnQFjPRtOkuDZCZ4zfxj6IPQ7exzXRHvEMRB1t7uyRxgr+F+tevBcJ/2MsYJPkOypuD7aHJY9y/+/QZ4/1frsaTd4j5OKGYXGHCVnap0Xx1AuZ3ag5Fw6OlZg+I2ks81FYgVK/9R8p6TdnIkVqDmO6geMFai5CGKFYgW9tGuh9ZBufOW5u7rzRdmI0BoG24/QXf1oI9AX/1+k+8pGxvosuF/haYoVoH6x/ueNB6i5NfsN6j5ZdTdRnfJ/CWzYPxBvlCyH/Nhu8/XQ/Z4PRGCVOfcUui8EyzLtLJ3s4X0TQ72+c7fbnVrs/+Pefz4/E6u7fOedigco3cUY2D9kjNvYDhWvVP4AjvmfoLF7T4kV/DPo7sjz2zGrWEFnPatYQXvaXMYKWD69YgW3V7GC3LGC57X6op9jBSe36pj28UEZti1vrODQFk4VK9h9sYLjoA92Z6xgTase3WIFp5LsFY0VXAnyfHrrcxUrkE8VKyB6Vaxg98QK1pDue8UKbt5DYwXrwYZtId5UsYJsnaxiBfl01yNWsCVj3MZ2FIkVnEpjN7YptAeZzwjmjSPURF2sHbgnI+sMwl2guw8Qb7zPIIT2P8acQZgK0O4WpwjtvarOIITv9gudQcCxbIrS1Dkgpdc8lmedQWD5nBLtUGcKR5NOfZgC3OMjziCEZK/bGYTQvSOhMwhsN9S9A7vrDMJjFCso6NP39AzCh8C2PZFh2/KeQXhnZKygOoPQyVOvMwgfCMQK0B5xnAPtkccZhN+hWAHqLsYKniHZK3oG4fdAnj9K/oaH3ajOIFRnEJ4Fb/19rp5BUGtoykZ4nEH4HdJ9ZSNjfRY8g3B44AxC6Kwv6/9cn0H4I7Bhf028qc4gZOtkdQYhn+56nEH464xxG9uB43bsGYRnItY8lU2oUX0xf2h+omxO6F7E2PvUbsmggzYB27Z+etdfvofp25E+tdNdOUN578pR88FQHKTbfJDX1NF289066gyaGhtw7XuY5rO1VhrO8U6GzydBOuYfPWrXX/MbsJ05+H3lKJRJAAOx6wWxa4SXJNrPQ59G0UufhkirR9Tl5Fe/4pQj7h1aWqPyVhd+x/IyJPJfIfIbr4ap7mNJ1HO50imjbWl1SGM/EPXC6pDq0tr17fUbKli/GP4hflPkv2p6Nl+evliUtMsCyrvZvo2QtprSQvdT5o33sh3JuoOW58eWf8lRs+WOPaodU8W7cTzpxT2wIayNAdoev0nJdUlEPfE3SZ6lNT2b1ssxJzTfyXvvpOKV6ic1P2J/aDWkbaS0WP+L51wq3qvkc6NoR+wdtBsB92sHt+MqHygke6ExX8me2mui9J/thme8l/UMbSbm55juzJ0tNN4XjL3ImC6v7+A9uXn2y6wB23Zuhm3Luwfn/BZON//TaX2n3uv1nW52k/U2NM9Xcw0Vd2E9G070HgK+N93yXwJ9wDFdtEccj1Z7KZQ94jvxUGcwpvuyVj14XpB+xpjuFSR7aNPUHIFlz/LfCvL8wtZnT7vBMR11F3FozFFy1hTlcQzlcmYHSt7RGh3TNfxG0tnmIjFdpX9qz3xJuzkT043db4YxXbWfHbFCMd1e2jXkU4xdU/GUZtLZRtZntBFsB9BGsP3YEqCHNgJ98ZeR7ne73z7ks9wOuH/a8lmUjrP+e8Z7edxQNozHbMx/N9iwB4k3SpZDfmy3vcuh/az3RWBtC9C+X+S/L0BbxZO5LkmSrZM93Is51Os95opXqp+alB95k1d3ee9J7P4SXOt/MGPcxnbguM26e4eoq/IHrha4ak9oLem0QzExXXXvNfKDbQLGLtgnwHKrM+ioGET6cEzX8r810qc22r2Qd+QRy7uy2aHf4ukWQ+f5NcoJz6GRx0ZT7Q02zGd/n4DGhhsFfo3SsK43irY1RfkbM7BwnrYasNivtfz/jeaSmwA3R79uYb4YBmJvKYhdI7wk0f6k4Y8m2XrWEGkxsePHj//24mdu/vcvh+xA6JyasgOXiPzGK5TZHLzaFPp9JhU73kJpqH9WBxU7vrVg/WL4h/hqDHkFfM7TF8qXNL0oi6VschmsqwtiWXwc7dMmwlJjHsbYjCcLRLuuzijH+bJi4UhH4U9RXVeLuq4W7VZ71C3fqChXy/hrdPhdaI3hQqqzio1uDNQZy4fGoAupPWsgDWMev5MRq8U+WQP14bHB8n/2tNlyv3dUdvt5zoN1Xp601yVvfy6PpLOqJJ1Vgo6n3Kj+XE50bnSkg/7BKqKzyZEO2paDiM4tjnTQnp1MdLL04C9ID3DtXekB+8iWfxL04K8CesD7LKw8xvc3inYwvb8hn6zgWCvj++zHZvHum0425GLg3T/ksCE4Ft5IaciPTZSGfhNiYFqSdM4N0ic0Hlu+UVHO+Gv9hXOKXsRNDb+RdLa5SNxUzZmUb2Ht21aM3kzcVO27Uf2AcVM1n0cs07GYtVG0jRyfRHsW2uNzEnxGGlltsjjCgkD9RgUWyxbWPS/vEc/qie8Qv5F06mgR2VJzXOUL8diEZblv0mfl9Gw+ThsU70LjFvvtZbB4vXl3+ELLStJZJug8V3yhZURnb/GFDj969j3a99jx3PJ/49TZcke2MHvpCx3borE7faHjiXdFfaH/Cbw7iXiHtFm3VdxP+UnsCyGvOPao4lEqrqpij8w3LMfjVUHfJNoXMvxGUko+ZsYr5SOq8aqkrzfjC6l1DdUP6Aup39dDrJAvtIbS0Dayv4P2jPdCh3yhNV3aFPKF1kAb0u+bW98/Cboz0dKdUUHvuun2NJTbDcksxsWkf9hWjkHl9QewvOXzHG+szrivnGNQm0WdNwfqjOX5XPkmQYfHabaZLzxa1wdtJo7xbDMt//uh39cdnd1+tn1YZ/a78vbn8kg6q0rSWSXo9NpPYb9rypEO6gHHoHrlD7HftcWRDo617Hdl6cEW0gO1Tot6kLVOuxL04OUBPeCYB/6WfCLys99l+beR31VwHJd+F8dSsnh3l5MNORZ4tyOHDUFfgu91ij1HwHt3VKxFnVFS+yP4XBGWM/6WjNFE+12G30g621zE74r1g6x9dxajN+N3xf5ePfpdKu6EWOx3oZ3lMRVtY+jcM8enUL/Z79rcpU3sd6n6jQosli2sey9iUIbfSDp1tIhsdbt/hmNQobtycNziGNQtgs4tgo7qZ+yLslgcg8L1V/aF1Frw1QE6yyPpLCtJZ5mgMyrK1TL+Gh1+x3QUb3rtc3EMqlc+1+6KQWWN509HxKBC47nl/91TZss9ExjPY2JQIV/I8n9sDmNQWbz7uJMv9Azw7pMB3rFux8aZQn5StR4XfJ7T63FoZ0PxBfZ30J7lWY/b1KVN7Ath/TZlYOG5exVzqlP+z7X0K9W1P6CYFeo57h+95pj2fJUf1l5W9f298BnTkE6s73SDI1blh83S4Xd5/LBe+Ufshz3XYlJqPTK1Md+KiEmh/WRfwvJfDr7Ed+YgJvWDOYxJZfHuhxF+WIh3lv9U4N2/5fDDqpjUbD3xHeJXMansmFTID+uHmJSqH2PF+mGWf1HLpyrpN0m7YViVvxbvr/H5jTI+1kZHrMpfm6XD7yp/zYdOEX9t6TGz73EMyuuvff7k2XJntjB76a+dR3Z3d/hr5xPvivprnwDeXUC8C+3/RD6xv4Z+FPtr6t7HGqUlSVzcDMvvbXEzNV7tqXGzTZSGtpF9MrRnobOUvYibxca4mGaWX3f9dHu65b/+mFnMDRQ3w3rdCLT/ooqvPWfia7wXFrHZX7tB0LkhQGe5qLOis6wknWWCzqgoV8v4a3T4HdNRvJnrvfbPtXXOLJ/jFWTf1DpnyOew/NeAz3FfwF/zWud8DflrvVznzOLda538tXOAdw8EeMe6HXvusFrnrNY5nwVv/VV2luNroXOHRdc5b+zSJvbXsH6hO2TsXcgPs/zvIbtR0I+RdoP3pWF9WP7n+mzkmmL0gmcjsX3sr20WdVFzPI6v5T0LgFgbHbHY1iI2+2t579BYLuqs6CwrSWeZoBM6txsjW4qO4k2v/UL213rlF7K/ttmRjvJzuvkcv0o+xxSkxfgclv+LJ82W+7VAjIjjOVYe/bVNoh1M7zfJ7uI4UdbuGla3s5G/nTGXjz0bafl/BXj3P4l3SJt1G/nE9gXHVPblPPfeYnnmWw/uQ4v21wy/kZSSj5nxSt1Bpc4zlZw/zPhrym9W/YD+mrpDDLHYX0M7y2cj0TbeQmlozzh2gvodc0+Eum8yJPsqxmX5VIwrdJ8EtjFHHy2IlUHD97pPQsVX1Hg978f/WmxIdu7YetvWHfdeNrXjqp2bbtt68+VT926fuGPzVZN379g6edvE5s13T23fjpVGQvPhPabjw3ns86R4jxjdLsfI47xv6oJ1DWFheTaAm7tg8QVxanDj70NJZz3tR2AGInBQ0bLqtZ7qpRZfQkYehfNVSTsWls8KuGTV64rpdiwsz4uLGCziejK/QjhZBhTb+JNJe72UwTSsO7pg3UVYWYfU03/bumC9mrDUJJy/DyWd9WR+hXDSf3d2qddrqF5Zm2/Sf3d3wXo5YanNO4a1vQvWVsJSP4TO34eSznoyv0I46b+dXeq1g+qlLr9Xk7QVRCfvJA3Lz9UkbQXR2elIBy8lPwjKpd/xMm+0raFDTDb43wfvexEwMfwG1SUnvZnBX10UrxxQa/v9oi5NkcaLUvcLOvcLOgrrRkese6g9WZOww45tp3kDpMVMwiz/B2ASNtbCVL4H/0iQ8mNuEPRq1K5hkR/x6pT/mFad9kk6f3xmpyivsHE8DQU6PH74GfGsPvgO8RtJp/wU0RH1AwHqUnFr+32iLk2RxkELpYv3CToKa8oRixdNs3TkLCcdeQh05Nw+1JEVDjqCPlSMjpS5BAnxrD74DvG9dET5siEdCf1gBqbxxnqli+oHmBXW7Y5YsTpyuZOO7AQdWdtDHTF+x+qI5b/GQUfQb47RkTLBMMSz+uA7xPfSEXVBXEhHbhd1aYo0nDNhGtIJLY4j1p2OWLE6sslJR14COjLVhzry8pw6ourei7mXil+dAZ+zeBT6YZUzRHvUHO8Mak+WjOw4VtdHyUj62ebvvLB+BcjIKwIyElrwnKuF1QtK0rlA0JnrhdVeLXheQHRudaSD4wovrN7uSAdtJS+sZunBQ6QHd0Ca0gOLF9Up/z+eOFvukYAeZMUscWH1BtEOpvd4i0bJjUdyYdWwuvHu7U7jzB8B7346hw1Bn55tPPKDf6QMx2SO+6r4qvqRwaYob/lGRTnjr/VXwR8SjV5YNfxG0tnmIr5W7MHPXv5wqeoHXFhVP9qOWKGF1RsoDW0j/8ix+gFyZYN4YfWGLm3itTRVv9AGm921yazgAm1wk5nakM5jE5ZVfTMNnzEN6YQulPa8nFr9iGS1yazzXT/4QrzJbG/xhf4why+UPjyeW/67YDz//Bz4Qn/SB77Qnzn5QuuBd1+ufKHQs8f4QgV/pH7GF1Jr2Hl8IbWm/VzwhQZF/TAf6p6KJyXiXS1Aj2kMiLKvTdrrjWlriUbeGNBaUd8exnUHY/VrT4nr8hp6mVhsnh/EKugfR/vjc7GBcS28c9pEOxjqhxsD9Aqu5Q0YvdDeLqSX2tPhpLMPs/agqb1b2F9ZOl90P+WtXbBC+yl5HbDbj8rwfsqsjcuYdsRxu/6mdrh5XHse2wu4BPIsan1mnUI+PLuXhPKpy09KXugRrXv84z4FN8wHf9xHHThMZXOfJCwj2EdZ+0zVpVkxMot1ipHZvH2qNpWn+Y4M5Nss8ila6fdJSOMf9LG8R7cwUj6/aH17G5HuJviMaemjfP/Q4QzLp+gsL0lneSSdZSXpLBN0QocjY3RN0VG8ea4eQJt0pIOyz7GBjaIOqc4sP272PetaaLzgQ+//fMJsuQtbmGqPPtYRy8ceQLP8K1s05uJivSzeXUK8UwfQQryz/F8C3q0K8I51O3TANfYAGu+ty3sATV0GsbccQAtd8LQnHEBTY13ZA2iTkBYTG4g9gGZl5/343+Gtz7OHqy6funfD5G1bN0/u2LrtjnVTd+2c2r6jDshq5GALP0nf8WqorKdG3wcobQ2l4ykH9cRcNVDwioNoz9fwva4aUCe6QlcNTIm6qKsqXgefMQ3pTAk6CutqRyyTm+oqz853TKcffgKnV1cAsKfXqyuoYj29V5G3olYyQt6K5b8XvJXXkLeCtHmnvZVHTy/0M8yW/wHy9ApGIaWnx7PYrFWg1xPvcOYaswpk+W8E3r2JeIe0WbeRT2xf1LU/KjLEK915o9Tqp6BjotST8L4Xnp7he0WpJ4ke6wV7egU9yxlPT3mWqh/Q00OeqpO4oas8+aoBtI2hq3149Qj1mz29q7u0KeTp8XgzLuhY2vWQtprSbhJtTvXuyYDerWt9rhPt/0Y2CPmZo88vGCU6hoHYBaP8F8TqS9YKB9ZLrTjUI+py5td/c//BWzb/HNtJq0uWLvEYgflXivwlx4LzR43G9Gx53ImVPnVI20hpQ5BmdUijiWvXt9ev4ArR+TH8UzqJ+fknIvPuBFLXk+TFWpS0y5Ua28Yh7ZrW55h5UEEdjJ4HGb7XPEjZxNA8SPGsKdL4itx1gs46QUdhjTtimW1W/czzoHFBZzxAZ7mos6KzrCSdZYLOqChXy/hrdPgd0xmHPDwP6tV8i+dB6xzpoBzwPOgaRzrXQB6eB60WdUjH/y9G+PKrgWaWL/+fx8+W+0rAp8A6YnmcB60R7WB6XyMfpODYIudBvAs5i3d/RbxDvyqGd5b/L4F3/zfAu/GkPQ3HJB5HkB/rKK2aB0XTKzwP2lSM3sw8SMUJ88yD1A1OPA8ahzw8D1LX9it7xj4X6jfPg9Z0aRPPg8ZF/SpfKN4X4utny/gvGxyxxlufK1+o813lC/nQKeILHXD87Hu073l9odfCeH5w63MvfaEjWjR2py90JPGuqC+0GXh3NPEOaY8n7Wmx8WL2hZBXPK9X8ZfQT4ioFdoenmSL9oXm4iSbGq9K+nozvtAmQU/1A/pCyFOkz+vYys6upjS0jezvoD3bSGkhX2h1lzaFfCEsi9+HRN6JZLa9mHc56Nnk8dm0WiG8mbQJSLuW0mL1EzGQv1mn0W+mNlj+i1r1TmONN67XmANJeE1KxT6tHSNGF9JyyO//SOt11PpZOigv6TM03V5nHP9CPpXlXy/yo8yxb7ge0tifU/KI/oXJo+KX1bEX/MI6xPBLrePH8ov1Hvl1PWEp/xd5GOKX1bEX/MI6xPAL8+fll/FA8esmwuo2x7mc6mrYw4m2CYZXp/wvAZvAt+WMQ3nu6wmBjbaxRhjYjqNFO0YpDcumuGsO2PV5ruI87GtOQl1YFhC3TvlvhXHj1cQbNU6H1rdUjAPjFqupPZOQtjkCa02AttrTtDlAG+vFe1d4zwzW08opO2C8KWkHhpQdmMQM07O4Wf2E+WN4pfpJrYXznrVxSAvFnCYpLTbmhDc8vTpjToLtyLLZrA84n+G5jponhGQvdBOEkj0VY1X6P05p6mc/lS6x3cC+ZbtRdIf6QzRH7cUOdZbveqLlO2vn+fvBtj2SYduGcmI+BuPRJaCj6aPW20vagrqyBajvbAtCNjh98tpN1lvsG15rUOvmyFP2CYxHwyI/4vGeuZ+J9Ak2Ud1jY+CheZ/pQyo3n23Vg2MC6WeMpTxFsqdurVM3DfKtdb8J8vw0zfE87MY1lKb2ToXGHCVnalc9jqFczuxAyf3g0bEU3g9ecJ0nuB88dCq4oN2ciaWoEy2qHzCW0u1UpY0Fc23XkE8xdk2tNam9fazP45DGdiD0s+DrAvTQRkxaG5JZGxGykbE+C8avDyD9R/0aT9rTUMdZ/1He2W9AHrLfMAV1UT4PjtmY//fBhn2VeKNkeRLe8dil9paqn8RWp8a2RGDdGKCtTrFvCdBWPxvPdUmSbJ1Uumi86cV8A/0C1kXVT+r8SIhXqp/U7SxbKG0c0kK6yye3cHxnvUbZxhOiX80Yt7EdKsar/AEc858KrCGNJ+1p/RQr+FvQ3R9VsYIO2lzPKlbQnjYOab2OFfyoR7GCv8o4Z4S4VaygPf/ICa2/SaeM9Eus4HA4uzTvBI2ZN1awoIVTxQp2X6zgIOiD3RkrWNGqR7dYwRjJXtFYwQtAno9qfa5iBfKpYgVEr4oV7J5YwQrSfa9YwRdpD/qeEiu4FGzYi4g3VawgWyerWEE+3fWIFbwoY9zGdhSJFYzR2B0bD9hEaTeKeiudZ3/6FqiL2rfBv3Jk+W8G3b2HeKP0R+3/i9UfvjlK6U8IKxSnUDcV3RqgjfXim9FZl9XZ9h6Oo1J3UT9Zd0M2M31ieKX6Sd1Myzfgon7ymIzjEN/ehOMQ6zzK9mTrs5JPNe6qvU3dbn3kezVi99nWqI6YX531Uvo/SWmxfj3bDXWbmpJ1thvWnxgrwPwcK7D8D1CsoOBNqDJWwDf3430SSr55bmX53wW27Q0Ztm0oJ+abI2MF1o+98KlR39kWhGxw+uS1m6y3oRuvY29WYz0bTsI+BM+ZnwjECtAesZ+B9miS0mLvGMFYwacpVqBu2EzzvYdkD22a8ktZ9iz/r4I8v5f8DQ+7MUVpaAcQg2UqJGfqRj4cQ7mc2YGSNxhGxwr4dvmyNywr/ZuEdxwrKHODdPrvDkEv60ZnxVN1w3goVtBLu4Z8irFrmJ/n7thG1ufQGgbaCLYfmwP01PwObUTIRqob2rvdaP0qihWgfrH+o46z/qO8s9+APGS/4Xaoi/J5cMzG/L8BNuxPiTdKlkN+7DaRP/RLNaFf4VVYkwHa6tdrtgVoq1+v4bokSbZOKl003vRivoF+Aeui6if1yxYhXql+alJ+5E1e3b2d0nB8Z71G2TaZV/I5Kdqh4pXKH5gE3PfQ2I317sXtymgbsP3qzkXEZd/3a6C7/0S8UfZZ3UzM9gPzq1/EC83XQ1ih9bGQ/CraWC8sy7S5nlZO6e7Mmmvrbx3Syuqu5/xA8Ur1UzPp1GvWwdibnlk/Y296xnH3nzLWhrEdseMurivzbeuhfRfpw/wMxVmV7KmbzZX+h2JrbDdQRtluYN9OUt35Bm/Oz7GCGd04cdefkr+wI2MFd1AdMZ6h5JvnVpb/efDLeIMnasyhnJjDLZxusQLrx1741KjvbAtCNjh98tpN1lvsm5i9YMhTjhUYj4YTHbPEPS+YfxH0AccK0B5xXDP25nneOzUJaRgrOKtVD16LST9jrOBAkj0V10ebw7Jn+c8FeT6k9dnTbkxSmooZhcac0K/ZqnUBJc9mB0rOpaNjBfxrTAVjE8FfY1LznZJ2cyZWoOY4qh8wVtDtF8hCsYJe2rXQekg3vvLcHdvI+ow2gu2A+tU2thGK3iSUQ1/8LNJ9ZSNjfRZc81xOsQLUr9C6GOu/+mVsNbfG9qHcKBvGYzbmvxBs2NXEGyXLIT+223ydY59qvh7CCsUp7hb57wzQxnphWaadpZNKF403vZhvoF/AuhiK0aRPDK9UPzUpP/Imr+7eQWnqV+6U7mIM7OqMcRvbgeM2625W/PBAGrt7/SvNPLe+G+qi9hXgOID5bwDdvYN4Y78YnCRxMqF+oRh/dZhtGMrEzgis0J6Ge0T+nQHaWC8sy7S5nlZO6a7xphe6i/rGuqv6CfPH8Er1U5PyI28sLfYXo++mtNhfjDaZV/LZ7axAaF8Bxuj5V9uVLQzJXrcxi2VPjVlK/9luoP6z3UAZZbuBfct2g38JnPNzrMDyv4piBSgjZWMF91Adt0MdlHzz3MryPwa27TUZtm0oJ+brImMF1o+98KlR39kWhGxw+uS1m6y32Dcc01FxB+QpxwqMR8MiP+LVKf/DgVgB2qPtVPfYX7BnPwN1BmMFv0CxAtRdjBU8TrKHNo3tRfqw7Fn+XwR5fgf5Gx5243ZKQzvAvrUac5ScqbUiHEO5nNkBsysoi72IFRh+I+lsc5FYgdI/HB84VlDQbs7ECu4T9FQ/YKwAeYr0DSsUK+ilXUM+xdg1zM9zd2wj6zPaCLYDaCPYftwaoIc2An3xXyDdVzYy1mfB+fkftnwWpeOs/6jjrP8o7+w3IA/Zb7gH6qJ8HhyzMf+vgA37HPFGyXLIj71f5L8P8myj9qCs3x+BdWeA9gMi//0B2lgvLMu0s3RS6aLxphfzDfQLWBdVP2H+GF6pfmpSfuRNXt29h9JwfGe9Rtk2mVfyGfLz04d1d5uoK/oDe1qs4Iugu39PvFH2ORQryDtfRxt2TwRWaL4Wkl9FG+uFZZk219PK9VOsQPVTyMYqXql+aiades06OJexgr/vUazg7c/xWEHMmI+xAszPsQLL/68UK0AZKRsruI/qiPGMmHm95V9w0q6/aR//e4Zti40VWP7/6oNYAeo724KQDU6fvHaT9Rb7ZnfFChqtfu0WK+C4pnes4ORWPbrFChae1N7uorGC00Cel7Q+9zJWgHaAYwVqzFFypmIFOIZyObMDJefS0bECw28knW0uEitQ+heKFRS0mzOxAjXHUf2AsQI1F0GsfowVdOMrz91VTDPvfIPtR5FYwcmk+16xgoecYgUo7+w3IA/Zb7gP6qJ8HhyzMf85YMNWE2+ULIf8WI/5eggrFCt4UOR/IEAb64VlmXaWTs51rAD9AtbFUIwmfWJ4pfqpSfmRN3l19z5Kw/Gd9RplG2NgqzPGbWxHkVgB+wPdzjyz36T2WIXmJ932jvL8RPlCaq/Rxgw6WeeSdrQ+816j9eDPhXxqo11S3hf0eh9N7Pkk5RvxnhfkMZ5H4rEB78PYQWMDxqJ4T4baH6rmySx7Wb9RwvvJLP/NwmcPyXPorpi88qz2GxWVZ9SNrdRWy//yuZXn+btbnllmUZ6zfp8eadaSThtWJp6zqQ/l/769SP5f2+fyr+YSIfnvFiNh+Uf/bXfI/+U55P+eAE0l/9a2LPnHeCLmfzQg/4q/IfkP+Z/d5P9+SsNyGzPooPxjv7P8W/53Rsq/0e6F/COPWP5D86b0yTvX4TUB9N9D8s/rtV7yf1YO+Q/53kr+ra1Z8s93fVn+DwXkX+lg6Bxj3rUubMN9lIblNmbQyfLnWf4t/8ci5d9o90L+Peev3eIM7M+jboTkn9c5vOT/MJJ/POPOsaEpgaHOqnDcSJ3/s3aoM5vqPACf2fwfEBv6E5ojKx8J9/T3Ys4bwgrpZ8i/VrTV3Rhcl0TU08r18PzXUK/PtSpeqX5qUn7kjdKt0Bn3rPNiKJuWpu6uUPKpzrjH6i6ecf/tY9pxb+mCm/cOV76DZkq0T+l/6E6IomfV2G7gel8i8vNatOX/eqsvbH0DZSSHrMu16G1URzyHr+Sb1+4s/7+CbftGhm0byon5zchx1umumnqv76rpZjdZb7FvpghL3Q2h1m9Yz4YTPdfle1ks//cj16L5Po6id26gzuBa9PNaX/iMbvoZ16J/RLJX9C7Gg06eLfeftBbtYTf4Pix110FozFFy1hTlcQzlcmYHSp4Bj16LNvxG0tnmImvRSv/UOd2SdnNmLVrFCVU/4Fo08lStl4TWontp10L3+HTjK68NYxtZn9FGsB1AG8H2I/aufvTFzUaEbOQmgcu/K4FlU9xfbfksSsdD9zmx/qO8h+5wY79hG9RF+Tw4ZmP+MbBhZxJvlCyH/Nhu58z5/iCU9bsjsELn60NnRRVtdW6H65Ik2TqpdNF404v5BvoFrIvd1mRjeKX6qUn5kTd5dZfXt3F8D92Vh/F3ls+Qn58+rLvqHnX0BxYI+kXvruI7FVCv+X4atcaAdibrfooLQHevIt4oP7LM/RQ8Z1L7d0NYobv4utkNpq3sBtclSbLH1ufy/RQ85w/dT4H6yffOoH5yjEHdnWJpasxR8qnulokdd/FumddSrMD7HsjQfbW8V9RjXA/dxcJ2g/1Dzs+xAsv/klaC+Z8oI2VjBTyO45kbJd88t7L8O8C2TWbYtqGcmJtbON1iBU7jeL3X43g3u8l6i33D80c1liJPOVYwc8dgouMUfP+y5d8GfcCxgqL+gorfKXuEsYLHKFaAuouxgntI9orGqZ4Aeb639dnTboR8a963qsYcJWdqbyCOoVzO7IDZFZTFXsQKDL+RdLa5SKwgdu5e0m7OxAqUH676AWMFyFN1f08oVtBLuxaKgXbjK8/dsY1F4gHKfkwF6KGNQF/8sYj5RqzPgvONV1CsQP2midLx0DlZ9hvUfI7Hjaw9TThmY/73gA37GPHG+04t3oef906tUIy92xnd0D1D1Z1aup+alB95k1d3OcaA4zvrNco27i//WMa4je1QayHKH8Ax/x4auzFWwL97kTceoHSe/TTl+6rfHWDf95dBd/+wx3G+mPl6CCs0X+sW52PaVZyvPb/qp5g4H/7uBccKYvWTdR5lG8fdP+xRrOB8ihUomxCSvW77aVj2Ys+QsN3IGw9Qss52w/oTYwWYn2MFlv8rFCsoeI+UjBVspzpiPEPJd9aZ4O+Cbftqhm3Le874LyNjBU77t3OfBQ3Z4PTJazdZb9UYX6PviIU85ViBOi+wTeDznPkfArECtEcc10R7xDEQdbe7skcYK1hwyq7PPNdJP2Os4J9I9lRcH20Oy57lX3TKbLl/Jn/Dw27wHicVMwqNOUrO1DovjqFczuxAybl0dKzA8BtJZ5uLxAqU/qn5Tkm7ORMriL1/D2MFai6CWKFYQS/tWmg9pBtfee6u7nxRNiK0hsH2I3RXP9oI9MXNRoRsZKzPgvsVllKsAPWL9T9vPEDNrdlvUPfJqruJ+D7ZA8GGnUS8UbIc8mO7zddD93vG3KkVilN0O2cQui+k251aSid7eN/EUK/v3O12pxb7/6E7tWJ1l++8U/EApbsYA2P57LZnk3VX/UYJ+gN7WqzgbNDdVcSbKlbQWc8qVtCeNpexApZPr1jBD49ux61iBbOfs2IFG1p90c+xgtvAtr0ow7bljRXc2MKpYgW7L1awBfpgd8YK3hwZK7gjw+fIGyt4GOT5rtbnKlYgnypWQPSqWMHuiRW8uUexgm+1fJY9LVbwONiwp6tYQQftLJ2sYgX5dNcjVvB0j2IFd9DYHYoVYN1C84iYOEJN1MXaoX6HkP2Pj4Pu/hbxBvXU4wxCaP9jr88ghPZeVWcQwnf7hc4ghGIFOM6F9Dr2DMJvRcQK1JnC0aRTHzBW8HGKFXifQQjdOxI6g8B2IxR/yBtHYD3LewbhjylWUNCn7+kZhG+CbfvTDNuW9wzClyJjBdUZhE6ecqyg6BmEv46MFXCcQ8XOlT2KPYMwfOquz93OIPw9yV7RMwiNU2fL/SP5Gx52ozqDUJ1BeBa89fe5egYBbQTbAbQRbD+KnEEwGxGykbE+C55BeJpiBbGxwtB6XUwcgceNvGcQFoINO4p4U51ByNbJ6gxCPt31OIPA8ul1BuHvA7GCsvGAovsK1PlM9n1PAd0dJ9547yuIma+HsMrsK2Da1b6C9vyqn2L2Fai1+l7tK2D59IoV3NXjfQWhO0lC+wrKxgN6ua9gbasv+nlfwWawbVdn2La8+wrWt3CqfQW7b1/BTdAHHCtAe9TrfQWvo1hB1r6CW0j2iu4reBDkeWvrs6fdqPYVVPsKngVv/X2u7iuIXcPw2FfwOtJ9ZSNjfRbcV7AlsK+gbDygl/sKHgIb9l7iTbWvIFsnq30F+XTXY1/BezPGbWxHkX0FtxScx9Sovpgf45jMf2VzQncmKl8otM+B6aBNwLatn971l9d+non0qXu5Fu/52wHd5oM8T1brNUrejWa3+ewLaT5ba6XhHO9k+HwSpGP+/0lzPGxnDn5fOQplEsBA7HpB7BrhJYn289CnUfTSpyHS6hF1OfnVrzjliHuHltaovNWF37G8DIn8V4j8xqthqvtYEvVcrnTKaFtaHdLYD0S9sDqkurR2fXv9hgrWL4Z/iN8U+a+ans2Xpy8WJe2ygPJutg/v1V1NabF30LJvlnf/V+g3/Sz/58HH+jqNNd77v/g3Y/Lu/9oYoN0tnsy0q/1f7flVP8Xs/1oNaRspLXQHrRqruu3/YvncKNoR+3s1GwH3+Ij9XyHZ67b/i2Uvdv8X241QnDh2Tue1/+u7NN734/6v4dN2/U37+PsZti3v/q8fRvqf1f6vTp567f+qtfpVxXTRHnE8OnQHrbrrsdv+r6Nb9ei2/2vktPZ2F93/dRzI87zWZ0+7Ue3/qvZ/PQve+vtc3f+FNoLtQOgO2k0Beln7v44m3Vc2MtZnwf1fhwf2f7H+o46H9lWE7lPw2v91KtiwCeJNtf8rWyer/V/5dDe09yS0vwTX+icyxm1sR5H9XyM0du8psYLLQXdfQrypYgWd9axiBe1pcxkrYPn0ihV886h23CpWMPs5K1ZwW6sv+jlW8DqwbdsybFveWMHdME+tYgXtWHMVK/jJPokVvC8yVvCAU6zgAyDPb6hiBaGnihUQvSpWsHtiBe/rUazgL1o+y54WK3gGbNhnqlhBB+0snaxiBfl01yNW8JkexQoeKDiPqSWddihm/9ctIj/yg+cnyEf2CbDc6gw6aBOwbbz/y/L/z0if2mj3Qt6RRyzvymZj/rz77XierO4VUfJuNLvNZ3+HxobrId+GpD3tJoFhaZOQxr+BtknU2dqPe9Gs/eOQx3DrlP/LMDZ8i3QE5XuQ6p4+MTKP+0PHqT14XvOWCKzrA7RD8qJoq3squC6JqKeVU7pivOmFruCeTtYV1U+hs3OhvazIq2bSqUe8V3IDpF1PaRiP5f2X+Btok5SGsm0yr+TzetGOcXjHY8O4qGuKu+ngdtxJgRuSPTU2oB6Ptz4r/Wf/D8ux3UD9Z7uBMsp2A/uW7Yb1J8aiMD/Hoiz/jygWhTJSNhbFMY4pqIOSb567W/6FS3f9Tfv4PzNs21BOzKSF2W3ctH7sxZwN9Z1tQcgGp09eu8l6i31zE2HdJLCQp+xTGY+GRX7Eq1P+edAHHItCezRFdUd7xPe43yDoKnuEsahTW/UYTTp1F2NRi5e2txttGtuL9GHZs/yngzzv3/rsaTd4nop2ADFYpkJypuYCOIZyObMDZldQFnsRizL8RtLZ5iKxqJDfnz4ciypoN2diUcrvVf2AsSjkKdLH9cr0mWu7hnyKsWuxsSHWZ7QRbAfQRrD9uCFAL+tcyKmk+8pGjgtc5bPcBLjXt3wWpeOs/6jjrP8o7+w3IA/Zb8C4mPJ5cMzG/OeBDbuceON9X+QktUetAYawNgVo3yHy3x6gre6f4LokSbZOKl003vRivoF+AetiaK6dPjG8Uv3UpPzIm7y6y/FnHN9Zr1XsRclnyM9PH9bdSVFX9AdMNs6BfCcm7WnLIe3gpL0+K0R9MP9Syj/e+j6ckd/w6pR/vfC3FiSd9umQDHpYP3zHPgKWH8/AQnuD7XtJRt03Cn/dMCdE/Q4R9bP8q0X+Cchj9VG84bjdhGjPCsizldpj+V8aOf8wmSppG+Yr24B8Y9sQ4lH6ME/XiPzIK+NJk/Ijfy3tREiboDTUneVUh3NEHZbCO9ZrlDsrm/bj6uft+mz9fz7k60e9vjtSr8/OoIf1w3es11h+PAMrS69fnlH3V+bU67NF/fpJr18dqdcmU5Ved9fr80UdYvXayqb9eM7z2nGvgbTBpFPXuY8t/8MBmV0v6oo8ZP5eK/KvF/VfQHXAsgtEOb7z9FpIY7uzQfAB87PuWv4ngA83BmTd6lVS1keVrG+ADCzrKq6M+bkv1Foirv8YT5Sfeg1hXSOwsK85hmY8Gk50HxhenfK/LxBDw7tBN1Ddl+as+/mi7qNJp86gTv1gv12fTQbRNqwgmusCNLks0hnOyG94rLvPCH6xrUM9wHpdOd2Oafk/GrAHipfL4R3LoLIf14h2KZ6up7R1kGayoPTT8vViLML2s36G2po+RW1lM+nUH96XjbrB8q/GvFj5Rxn66/3acddBmuGeCmVf2vpcp/y/nlO+JuBdXvmy+igZYvnCcrxvCvuFdfdawQfMf3PSzgfL/7uR443Vq6Q8Tyh5RhlkecaxRdl87ovQ+IQ8aVJ+7he2U8zT9OHxRtnP9QKf7ecfB8Yb9At5rFyTs+6nirqPJp06gzq1lMabCcjHPuWaAE0ui/ZiOCO/4dUp/58HxpsJqDv7irVk9p4YnmN8LWAPjC62C20Xy6Di/dWiXYqnobHIZEHpp+UrqZ8XKf3E9rN+htqaPswbZVtRdq3/m0mnPZygNNSNq4nOhKATK/8oQ0fQeLMa0pTMvrj1uU75vxeQL6U3GOdgHip5RDnh8UbxScnXOKUhT0+jOqhxF/NzzNHy/1vkeOMkz4uVPKPMsjyH5DN98o79xpNm0jkecHxExRGwr3m8MR4NJ7oPDI996/rpu/6q8WYcyq+jup+Ws+6x+oY69S9Ldn02GcQ5DY83EwGaXBbpZI03hse6u0Dwq0Y0UA/QnvN4Y/kXASbbA8XL0HjTLZ5k9VE8DY1F463PSj8tX0n9XKL0E9vP+hlqa/oUtZVqDsNxuHFIY/lXcelY+UcZ+psl7bjLCRexUC5qVEeUR9SbodZnjhkfHZDHiSTctrwxY6tPKGas1gKMT0oeLV9Jedywu2O/PN8OxX5RjyeIznJBJ3a+bWVTWfnDJe35cA2w1vpre2eOhvc5eD5QIzyrM75D/AbVJSe9mf1IRxM9bp/13bwf/1vc+rxzx9bbtu6494ptk5tXTt65fedtUwMInXSuWCFXEBXf1ZL21mPaIL2rU75V0+3frWcHk+zHOGZ0j4E0xQnDNK3ENh2TUQ55kYh3AyL/0YR1tChndR8MlEcMLMcSU6P3aDWHBe065V8JVvMF67PpDiedfBim7y8T9HqodYv2Dq1bSKiWB/PisxBqhvnr9J171OLYMVpXpzpf1ZKiVPqubH22nj8Ayp6ctKcdCNh2z+yz57kI42Cqg/qLdcd3PH55WApen0yfa6ncMVBuXUQdjhF1borylm9UlCvKm2agzkYHrQnuf37x6Ulb246FNGWJeP3U8v8RyNBLW5+Nl6ixVkfFZ4yTFuHzBkGn13zeQHSOdaRzLOQ5CD6n/44nLOaz9ZPx+ThIO57KnQBpmA9HuePh/QmCtsI3jG4yeNfpum1ZMmi06pT/UyCDO0gG1WjKo2+ShGWe5XI4I/8hVD/Lf29gHj8s2oz14nVKy/+qwLxpWLRL2cpQu1CmhjPaNR2I5ygvRI0tJ1HagZBmNhzHljphvKH1vuSd8PLMU1a9MZ/RPbgY3eg5iOE3kk4eFvGGDiZ63L5i3hByn7mCqPiulrS3HtO6zUHWTrd/LzIHUVbgAIFpFkX59VyOtZDfDYj8BxOW0iC2zqo8YmA5lhhVLv0+JMrEaEBB/3wwVgMM30sDuvW7yaq1/WhRl6ZIw1ObmIZ0jhZ0FNaBhHVgZJ1TrW0FUExrr9mx7e6pltom9HSbdBycUY0BUT6hsqza7NgfIJqEqsODldHOGoQNr075nxKDVah8+sSIPXZRLwy/4XuJfawI8SQOy4YG+VrS2YdzJKrpYyNCTVSLyyeEVRPv0kf5krtLjH8x4HMNiPLP7pVd1E67m5/Ncz3L/+mAz6nmBqFzGyeK/DgfsfosoDpg2QWiHM8zcZ/ysVSHU5JOPmB+3itr+T8LfAitJVu9erFX9hTIMDSdtLUL10gGRX7ui9NEflwnMp6o9djjCUvNT7GvWQ+MR8OJ7gPDq1P+PwjoAc7TT6G6H5uz7kqH1bwWdeoumoMiTR5KjwvQVDJrdLLsRtYc+U8Dc1AV+8F68RzU8n8pYA9CcYr0YRlU9uN40S7F0xMoDWMSGA96Fnu6E7MXe2Wx/ayfobamT1Fbqc5mHEtpqBss/8cKOrHyjzLEscU3Qj7DHRC4lv9Nrfcm45zHytYp/z+APK4IxCOsPqNU3tLTx9y7N1Pdx5KoJ9q9M/wG1SUnvRn37s1Ej9tXbF7PEolcQVR8V0vaW49p3by4i6fbvxeZ1/8UpClO8Lwe2/RTGeVYcvndgMj/ZsJ6syhndR8MlEcMLMcSw1qEVv2NgjZr0X8E1haR7huTTj6wJi0V9Ezrforypo9p3UPUprEk6rk+VusMv0F1Kap1DxE9bl8xrUNJQSrXEarlwbz4XAc1w/w8zefeu0GU48c4Vqc673/Grr+p9A23Pi9IOiWWz6djHUL2S51Pt3yKzqEl6Rwq6IxC+y2N10qHRFtD6yKWdj/UxdZYLe0B0S5LezCA+foA5htEWlr3d53Rng+tUS3jb/oMinfM0zeLulrfoQXAkEeWtj0UoIPlLd+oKFe2ParO7GNgW1P+jp2RtLXtYUhTo4Hdi1Gn/MPrZ8sdRfr2MJS3Oio+sy7m5fMhgk6v+cw69RZHOm+BPLwO+1bCYj7zvV2PQNpbqdyjkIb50CN4K7x/VNBW+IbRTQbPOkO3LUsGjVad8v/DNbPlzi0og2+hNOwDHg+tHsgHzM/3I1k9hzPyZ7XrwlZbVKzhzaK8qvtxVJe3BOqePiyLWN7y9VrmjyM6WfJzGcnPI5Cm5IfvELT8fwLys4bkBz20XrQ/pNfoyfGsQekd81KVQx09MaIObxV1VvN9yzcqypWVDVXnbrJxPcnGo5CmZOOlrc91yv8ZkI0bSDbQflodFZ/ZB8zL50MFnV7zmf27xxzpPAZ5eHx7nLCYzy9tfTY+vw3SHqdyT0Aa5sPx7XF4/4SgrfBjx7fbztBty5JBo1Wn/O8HGdwWmNOEZPAxSkOeou3lvg71QY3qPZyR/zFql+W/R4xvIX1FuWFbbvnvBUyODRtdbJeaLYdk8W2iXYqnjyfdaSOfORZp5YcT3f4sWZkO8NTKD2W0h3lq+e8P8FTxKMRTpWOPi3YtEG1+grBUpA35HMNTbP9PUfst/5sDfthbRHnlO7APqfwwzM/3KSsdU74J69hbI31I9m3QjvNeOYwtPExpGFvgudj9kPYIpWFsgeMcGFvg8e/1kPYopb0B0lD2LbZQp7b+TOt9yRi83NP3Zqobx8TU3ySJG08xT53o9CpuwnR+ypEOYl08veuvmrPhjiVMMzr8LrTjKTQ3HCpJZ0jQYSy0yegT8R5Yy/8x0OubyCY/LOo3BO94ToB1srKmA2jf8kSorfxbi5UftLZ0m2uzPcC255FDpNUgrLxtD9Ud68dygnM69skU1iM5sUZEWpE+eUugXcq2q7qoembpBtJROxgtfyg2hvlDc2jjEfpyeddfs3ikYmnpykyz9bm1MnPx1KadW67YtoWxUWSRPYdQPlPvgaRTlB7JwEroOx/AGwQ8fObKXCo6x5Skc4yg0+uwMR8Typo6/lHO8DxfP2L53wpTxy8Epo5ZqldLwlsyuH5ZWyeGM+r3JRjGVkQcUXlJoM4PAw2mm34+OaMOXyW3r+CQJ90+DivzhnpMQ1nCvsG0JJnlBb5jmXuToMNYWS6H8ZXd4/+b0+UIbXrAOllZFbJnPig6oSH1TZF0ji1J51hBp6xLouioOqtpGdqS75EteQukKfeQt91Z/leDLflBwJZgHfm7sstsS4xeli1h+bT8/xawJexmYztVnXE6zXSVLbH8/0W2pKCrJW0JL/NgfU6g+ucdC7H8XI2FJxCdXi+hKreP7UteN1stT3bTx9EzNU2ljzyuYf5LQR+bZ7a3UY3tMcuevba9jBU7Bln+A1rt9BiDHoqoXz3p1Kn08/HQ5iysRLyz/CjDHAp6C+V9OJA3y26lnze1PvdSv9Jn5XQ7nSy5Pyqn3E+1PrPcnw5yfyzJPU6xuL08pX6raIOlPwrtjsUdorLpcxXhvpVwUVZe1MrLY8pbzpzFP6X1eVTQKtuniMV9quxpWp8zqE/VEgOW5T61/PdCG8+mPsUlAA7xerTf3r8N3jNdXv58nPLiMgKHpN5GZdXfbnVsCjqPE+4TgfrzFoFHRbleL/U+TnQed6SDWBun2+lkye5lJLtPQJqSXfxJPMy/FmR3DckulmfZRVt3MqWpkFma/2NU57dDPuPTDdOdZS3/Oyg/YqQP++LvbL3P8sWtbJ3yXwPj9Ao6ovKEoJe27dqMtmF/4BLgO4i25d8O/XE99Qfyy/pjQdLJG9aBd0JdMG/6mK1kHrwU6vHiM7NpsV6oNqYYm87U+bAOmI8xzC4gDwxD2QUrt0DUi3X37UTjiQCNx0U5RYPtMfLsnUDfZOOnu6S/U7QtEe8GRP63Z7Q3EbTf0QX3CYGj7Ps7KO0xkca2C9urtoEpm4h277KAvmTphJKrtwfq/k6q+9tF3Z8I1F3xD+1HyG+w7zFjfU18t/ptgXdsY9U2A8xjZXmbwWuEzWTMrO0wUxmYrwNM3rqhZOZUeMfLK6F+wvosSLL1XNUdbQm/C/kyiahD+pgtVDKb5ccxP1Qd1NYfZTd564/aThWrm+hPn9Fnvv/bnHz/Q2E+9/Y93Pfn2G8/+P4PE07l+yfJh5x8/++tmy334YK+P2+v6ub7W5rxd0CU4yMFRu9/g0/6CcIbAlooN+ljcQzjF24/TESbOD5u+X8JxqNN68P0lc3n9vyvFt5I0qkjOeLtEyG5NOwnCmLHyLXSReVvN0RaPaIuv/nJ61+08wfvvovl3erC72LG/rNFfuMVzzPHkqjnglGjMT1b3mhbWh3SnqC0IUizOqSytnZ9e/3eXrB+MfxD/KZIuw0+5+kLhfWII9bDBbEWJe0yinqo7DDHOlS8NNXvb3WxT2qMY/vwd2QfCm5HOys0nhv24wWxY+1D1hiK9WqItBj7MP97Vx112evvvLiWdNrBQfEuZlv3mSJ/Sf1bquwD24A6pD1OaWgfrA7KPhS09Utj+If4KibC9iG2LxTWI45YDxfEMvsQipGjfWB/SB1TRfvA6yXfIZ0vuI1TrsHzXg7c95Q+V0/PpvEa0lsCOGzDElHmIUjH/P8CPt0PyGbiumT6XCXqp3xS3C/xb2dm53tU5Eu3NLZ+Jdm2NF42teOal03ePbX5mqmb757akbWKya2277xrUT3WQr5c4g30nWkP0feTBU43mmpX0+nwmenG7OA6XdRZ0TmnJJ1zBJ1eH1I4h+iglOIsbeispK1t6AGoXS3XTO/6y17A4VfPlhtpYapdACE+n5e01yUvn8+LpHN+STrnCzq97k/+gXG0uMy3vLtIsDxHV7J2GhxwlqaZteON5cby/8lVs+UOjpCbUBvVjrfQbkjDeksXrGsIC8vz7h7e2dqNTuhigMFIOjHtCdHZne0xLLUrDPuAf8xD7bg3rLd2wVpPWOqQQmgnV01gKjqhHXOhHWOPlKTzSCSduWrPm0rSid1pd15JOucJOqOiXFm7rurczd6Ok71VF7mEdhhb/t8Ae7uS7C3O3J/rfO7Fyg72Wbf+fCH1p1rZCfWn5X8G+nNdRH8q3mTtXEK6ob5WF2vUBFZoty/zAfOrMaWH0aLonzHjiHHByPjMYcbQ5Rjpg1cN7tf63Jr9TUxtP/2M8y7+8dTv3jt3ZEWOFiLRpH2VDfMn9J3LpXXjn0J4SNBIH5afRykf97u9Z/yYOnXL2y1d2bq3ZbQzSeJsHZZ/KAMra4e29Q8fTN7c0nO1Q1v5ZOrChpA/oFbn2BfnNuybUe6uRNfP2ox1Um22/LcG2vxIlzaz/658R7ZNnG9QtGEk6ZQBxFA85h+czitPWH6uxs7lRCdrTHsFjWnddp/f3frMu8/fAWPafTSmKV+w1+1n/1Vdv3s35Mma29QzME+GdMx/f6vtJVdWZJSVo8NDov7puwepT1XbQ31q+d8EffrGiD4N6Ye6zDVkCx4O5FdzRRX7CfmN1j+8i20siXlqfxkjo4jfoLrklIcZf0NdmITtK+pvGO7XoEFY/27+BpcL+RucN0v32Ad4K73v5m+oOmXlzetvYF8/SnnzxiZZJtLH5LPgBfRjzPNBqAvKfNZptoFEj5NZJ7BrGfgc57Ly9aSTNzg2sS16D/gSUy1fQvXFioz6JUlcX6yg9qRPr+PEK4jOmxzpqJsUlI/DMpzXx8HyWeNBlgze2frczVf5cI74NdLl+PUyGNd+vuC6R+hyc25/3svNY/yYbvrDPIr1Yyz/75Mfw371WBL1XGV9imO8yWtJH+mqGJ1A/FFBz+rVEGkxO0Te/4VzfnN8242P8hhldeF3MbGW1SJ/OX8luXLUaEzPlseV7vSpQ9pbKW0I0qwOaodIQf/myhj+IX5T5Mcd7nn6QmFdXhDLdnWoOenushVZsQrTFR5r/ygwb8+7hqdOu7OPz21km5M+Y4l+/h89hmf830fQegu12/J+Edr9MvqplbeIupqNGAzQSMS7WpLNG6ahdslsT9rr9khE3VT8BDHelFHPFEOtubHc5r0hIhR7QTqXlqRzqaATGpP4r9Hhd6H1u0uJTpY/83c51ofSzztan3l96DjwZ75F/gyWz1qjrCXaN2YbaOWzTr2yPbH83wO94hNcg6LNO6BeWXJWTzrppp+z4jI/nIO4DLepnnTa1vS5ZDqRbep264flVz4DrjuxDVbjJ2NlxXbZh7Y8g+fNlvvPs/K1/9JpjTlw7iymbaOPxbwsA/OQs6F9rc/Knx9PNL0kiZs3Ynmeww9R2lgS9cxcFnp/sfIzF1Oq3/7FOhl+2Xku0moknTwuEu9SdQ/1A94kh23MwhrOiTUi0or0yVCS3S7EHw3URdWTfQxFZxze8XzkgUC9ML/pEMqmlTUePQhpOXg0EOovvBDb8EtcFmrsOYDymQkcSDpZfH8GVkLf+WfKBxN9WWhah19umdMFopnXE67qInzHYozlLZ+ic2BJOgcKOiGs6wWW5VfToANFfmsH3nduZUuGLmbE8EFRF+UulxBDY8+hkAe9gIGkU6Nen4GV0HfGzBLDQUGDzwiEtDB9FggMtsIPBmhaW9OnKcpbPhvlzXuZaI3sJS3PG8za4k/zGZ9KRuTfEDuC8jX/SM/qpX6eNiZa9Z3mKV940TGX/GFIzUIrdWr2v1HkL6l6D6hoFe5yTp86pL2J0oYgzeqgolUFz8A8EMM/xG+K/Bytyhv5UXf45cWyaBWaT9OdudLlEJaKLNWozsMiv7IVln9Vy1bgT38MJtl8SMS7gaTTTqyb3vVXDUnnJrruirbhp09TlLd8PbRVQ3ltVSPpbHMRb1/JreKLtV1FEHmHfPrwOf28py36HQtlczTplN9axl+jw++Yzx4rktxnHlhvccBSUcfT4DOmGRa/437B8o9Q2oOCjlqtfT2lId/MFqpd/SdTu1An2X7ntUNDon4cNUg/Y5TzjrM1TYx2YVmOOFn+d58zW+6us7PbGLOTC/NnRQzvIZ+ylzu5snj3yhy8Sx87ccO8ezXw7icCvOOxX60sqKgi3yGf9RO6mJZAG9QOJhVZj7nrqORKafTY572zS+2iVzam5J0udaOnzqmrfliYaJ6qe5dMx5StY3uGto5XdXFcy/oZ1/TzSfA5y55hmzgyruo3V3ZT0VlXks46QSfkJ8bIuqKj6tzNlr2LbJlancayW1ufOdp/G9iynyFbpvhcE99j5hdGbziJWxmx/O+H+QWvdqk2bw3UGWkkSafe8Nhl+Z+msasXdz2EdnCXpDsQa4MNv0F1KWqDu+1uwN21i1ufW6G+K7ZNbl45eef2nbdN8S16WXssa4SK72pJe+sxjddnhinfmun27ya1g0n2g1qBVjZJwtoSOl+tZuVvEnR5rwPmj9kzYnUfDJRHjKz9N4MZ5dLv94kynmcYPGc0PdxztyRWMw2/QXUpqplq/5XyjtgzxLJqryou7GAa0gl5p4j1gBNW+nBkoMKqsCqsCmsusEJ79HgWlj58VhPtIM+c8i4qY/nQ4vWlJelcKuiMinJFx+RmoM4q2sJ8yxuBVPv+us3Q/ulsTTN2hmb5XwwztH8+u73OaoaGPMAZEPbDsxjTnWVHrA6QlsO/WJDO0o6iX+JAvg5Nz+J280PSz7Z3sUn5se1KFmL7yC4JqxFmVh/xnlHLfyn00WDrs9oXF7OfSNFjPRzOyD9E9ZvZQ9SqE67Sqfo9lEEvaw/tizPojQK9S0Aenm3n9Gx5o11S7pYouUM7w3KnIkHKnoXshYpoqSgrr8wOCiy137RG5YcT3QeGV6f8B4g+j5Vz7lfLf3Bkv+LetWdxptvrO5ZEPbJfkVfcr2rVG/Nzvyo54N0u6aMidfcT1v0CC/ua+7WbLhse69YxgX618tivWE/uV8t/fGS/4r7NZ3EgrWy/Iq+4X2P3UYbkAMcH44mKrL+B0rJiGln2G+Ugps+xf7Ls91miz1UEfyiifopvaQRuSetzKwJ3zY5td0+1QnAJPaGQWfr94YxqLBblEypbo3eLKU2Zz9DmHaM9nOiQFZtPy79csDxkftMntOW75Pbz6CCu4XttGe9m1jhUFFKz0FRmN4hq+lh0tyaqxeUTwqqJd0mityAjLnuBIeumWKX2amF+w+N168sDI4caCdWMyPIrz53XhLLazzdMYrmHMujgiIZixCOa5V8XOaI5zXzkiIY84hFNRRZCJ5vVeraKljYpP/JejWh82qqbGpp5VTMr9Cp5ZqXkJeSZhfij5Evta1B7K0KzYMvXi1kwtodlIdS36ZN1uwzm5/0Z6dOk/MgnZZL5NJua9cTKAkY7/iljrbobruVXN1PgEM6zcst/p7ABhqlW5ELyqHihTjGrFbxHKA3L4b6CZ7GnZ9PwlrVn2wdpOeRxvmdUJn2K6qpa5eE93TgWhKI4uPb/rjneg8Xjt7q5FOvKvytl+R+EqNE7yV4qHQ/1gdp/xHuasD3qd9NCWK8P0Fa3dj4eoI31yvo9xETUE3/v51la07NpxpuSujKkdAXtM+tKyBanTwyvVD81KT/yJu9+MP4dydj9YHiameVT+YuxYwPuu3wl6W6vo/bsE78PxoibMnzi2Giw5f9AYNxRbQiNO90i5KxbaPvYz1ZRSWX72C4qe63sCNtF9ft9mP9kSMf8P9/iX8lbjOV+K7Z1j0EdlO/Fe4At/2+B7f74ORpzKCfmJyPnLE62rt5rW9dtTOJ9qtg3WfsNEUvtRWU9G070fMnweLXt1wORNrS3bFPR3rJNfVjQDZ01SOXm6616sL+WfsYVrN/JmGeh7KHNYdmz/N8Aef49WsHysBt8a5P63U3WnyQJy5laFbR8Sp7NDpTc8x29p51/L6/gHvrgbaUqZlDSbs7saVe+iuoH3NOu9rEjlo0Fc23XQrGYbnzl80HYRtZntBFsB2J8MkUvyyf7eo98sjvIJ0P9Yv1HHWf9VzeXqjkA+w2PQ12Uz4NjNub/Ftiw/0e8UbIcirGo36JVv4m6IOmU9bdHYIVife8Q+d8eoI31wrJMO0snQ7cZ9mI+hX4B62JoLpk+MbxS/dSk/MibvLrL8zAc31mvUbZN5pV8dou5sO4+IuqK/oC6UWZ90k5TLe3gOx5nsbzlU3QOLEnnQEEnhLVeYIVsYujqEzWnLnn+e+bqE7XOo65aKXH1ibHnKMiTvuerT9SVI4yV0HfGHEz01SdKJIYy6ml0u4kEls8SCRsu0sc2UabpfLTI8h/XugfAuvcBattYEvW8LXRE3LALHuV/W43wkkS7mlnH07Be6lqBmGtO/vifXvvGG27+xpdDKhUKD6pw/7Uif8lrTt6qhjG+yqQOaRx6x6EodM1JQTPw1hj+IX5T5OdrTvIeacS0awpi2TUnaCp5M3GvdZ+n7Se3dBnDeHNdF3OZThd1CQ0BGP7jzd9Y99CG7bnaGL6hJJ0Ngk6vN4ZvIDpYHkMpF56btLXtQUhT4d+Xtz7zxsvvwsWbE63PahtE1q1uNaCHh+FYX3ljKOd5KKN+l4J88pFa1eaXB+qMYbQk6bQLHOKd2YpCY29BmypDvHzlVw+u9InejbW7rvTJd6SWtygjVxAV39WS9tZj2iC9G6Z8q6bbv9vkZjDJflArWDMUJwwzdE28Gn0fFHTt3UCSPVoPCjq8lTg02iOGmoQYhiqXfn+ZKON5WcFcHc81zeRFrrEk6on+6UrDb1BdimpmaINI+oSO1HKQAtN4tlPmSO1bHbEedsJKn+poYYVVYfXv0VV1IRhvJk0fW1ycq5mXorOuJJ11gs6oKFd07GsG6qw2DzLf8l5qiOX5spmsmdBj52qasTMhy/9XMBN64tz2OquZEPJAnSPo4VEzuUkS+To0PYub/lMbSLHf7Dhv6JiOkoXYPnof9VG3I318vNjy/z700QdotorleWN+aKM40qtRG2OPrlr+D8FsNXR09fUZ9NTR1fSxn+Vmeh8BenNwdHWRkju0Myx3KuKi7FnIXqjIkVrM4qNwoeOPg4JO6FirOgqnzlXxUbhPC3ngsYhlI6t+im/OR+HelFGNhaJ8QmVr9G5hBpbhpO9w+hpzFI6nqOnDJuLXBctDXZY+1VG4Pe4onEVlaqJaXD4hrJp4lyTdj8LxqBJisWJV0UPUnxciHbKwoR/QVp4Ax3Kz2s/b4rDc6zPoqMPd6cMjmuX/s8gRzcmTkiMa8ohHtNjIieXvtiWaVS10aYia2cSqYexROPbUvI8esXzFHj0KedV749EjHI4eITrKi4qVBZw9PZaxxpSFm7VGizYAh/CsIwk/EDbAMFUEOiSPSn5V1Dt0nbjabhM6mmn5SsrjqJJHbD/LY6it6VNUV5tJp5zxVlIcC9iN7CY3IXnENb4LacaHdNYQzbw/qbJG1F/RObAknQMFnRDWGoFl+dVW4NB2MXU8reT264GQ7Knt1SW2ixl7DoE86XveLoYi/FgGVkLfGXMwCW8Xw657IKOeRrebSCjVUXSGStIZEnR4O8iJLfe35JLz/TGLZgVPGNxfI7wk0TOqrNMVWC912iFmm9lXfnn5ry157Z8sqFF5qwu/i1Hdq0X+kuo5rYYnPplah7THKA2HGKuD2mZW8HTKdAz/EL8p8vM2s7wncjDt8oJYi5JO27O7dNmG6dNauqy2mfW6LorOupJ01gk6yi2qZfw1OvyO6ag6dwtwn39e0tY2Nf0NBbgt//5XzZa7IBCKyHIdakAPF7tYro1e7C8cWP6LQKZ4O9ZDos1bA3V+C9BguunnkzPqcBmNUQU3X8jtWDwFxfqwnqhNPeoXA5SePBSgc11JOtcJOp4bYpqBOofG/aJ00KaazqnTni+Cz5hmdPgd08HyjwToPFCSjrr7VYWGcNpU0mcaLOlHzPx2dbfbfAxf3SSURw6QVoOwctY9eCI1tMkAfRpsYxbW23JilfSdZvqk221b6O9l1UXVk8NKZdo87IjFG8OU/r1IYFn+2F+/Uqc/raz1HZ7eKzJtVn2nTj2WmDYbezZQPtv/MpB0ivjbMrAS+r6B3nWbNqNI9eLClLky193cwfvO0zSz3EEz9ezC/8Wy2XI/Gfid+H2ojXlPOmD50IkKdlswIsrRUnWde43SsH6hk0BqpWlQ0FFDZsEfoqqVdC9nzHO3vTcsU0VdNKTl9aNYqu4h1xNdNd5zq7DekhOr5Km7mT4J/dgX4o8G6qLqGXMRzD7wLiYir/itVsisrPGooLs0EOIR6oLhlxiajD0nUT6biQ4knaL0lgyshL6fRO+6DU29NleKzkRJOhORdOaqPQ+VpPOQoBPCmhBYlSq1PbtblYYy6ml0u4kElp9rEVceBgYau3mBnyIvsNvPnrIXaPm/d95suU/DZ96rhFhvTtrTkI8/RfW/P5l9rE9L3jMQve3N8BtUl5z0ZjyW2B2n+c4c8vQVuYKo+I61CdMG6R1/H6JypsWDSfZjOEZXrbrfLzCVn/9gRjnkRSLeDYj8DxDWA6Kc1X0wUB4xsBxLTI3eo7a9UdDmPdV/ACHuVRTiVrSQH932DXMersPMjr9AmB0vzFftYm1+kL6jbNnSGdP/v2BlvnCepp8I+tw+tJ7DGfXF9mD+LwIPeCOvsvxJxjvkAZbN+o552anA70oW30j539Cl7dz/lv8vAv0/LOqA9of5z3XgPAMZdfi6qIOwmiu33Xlvxh7eOnyuJZ1WjnuJe2JY4GQ9hp9KrEkvc4e1g+nYdyUBacv3a32ecc1um9qRtX95QNRN0RxI9DOa6Lqlz+7akj5cjF5wSzq2r+iW9Cwt7Uan5Jb0rEFbGQsun1DZmniXtDB/u3WUYneuST5Qko4KIjJWllt8c+tznfL/CAzUJRlr0QMCM30s+G35Q9viDQfzd9s6ybxUAb8Q7dDa/aM569ptfYgDt1i/x3LW9Zo5rutDoq6htceS66jRptPwvdYuY391Jd+0hg8RIFcQFd/VkvbWY1rWIGfP6un270WmNd1WcXlak7WslSVZiXg3IPI/RlhZd8sPZtBTPYrlWGJUufT7K0WZsqvv6cOD8dscsR4XWCVXVPeP1UzDb1Bdimpm7B2w1va3i7o0RRqHHNS9vG8XdBTWWx2xHnbCSh++BqLCqrAqrAprT8NSB/b43m0cP/nqmV5foaLoXFqSzqWCjrqKpKiv0AzU2dqDYzfzTe3yejxAB8vzLkbcuYwLPNcu0zRxJotlede35f88bPO5fll2G5HPz7ZrurPOvfg9SPRxhqZncbP0B304O+SpfAk+RIh9jff9h/pgE/VB0d9f/DT0wRT1AZbH3YBZeqPosYwMZ+R/mOpn+V/eqpO6WgbLP5pBD/mBfP6JDHp3AL3QQXyjXVLu9u/1by90k1Pe1qN+w8Kw1MkV9ZsoNSo/nOg+yDrBc6/o81g55361/K+K7Fcne7J/3quqVGQtdKGFkgPsL76gHPs8KxKJWKGfa1f9qq5u5X59Q6Bf1SYBrCf3q+V/c2S/4la6Z3EgrWy/hg6nq34NHU5X4zf2q/GkmXSOk/cTVmi7X/rE9Cv2Adtoy/9EoF9VlDtkhy3/O/vADiOvYvpVrQTE9ivbYexXvuILxzrW5bmy0U+JPmefn+1CVv0U35yv+Hosoxr7ifIJla3Ru/0ysAwnfYdhVWa5NXc40SFQZrnl/7BguVJTtVdLHRQtuVM8elHA8BtJp0gUCT2GXM9nK9b6m3cXc95hsQeimj62WlAT1eLyCWHVxDtMU6KKeCaqaosfjtCfoi14KEI8U1CWT3n+lt880CzvwvDqlP8zgVEo5AWnD1vrbr/uxue9sQ3voDQs92gGHRwd0fLz6Gj5fytydDTavRgdkUc8Or4T0gZFfub3T4v874Q8HFX6aUhjlUYev4PodDMdLP9KTtXsW3njoeuZus3KWL7ULxcuEOVCkRLL14tICbaHZSGkS+nDvAnJDvKmmXSXE9RL/sXHkF1Kn5AsYHThWoqaoPxxdC7vhd9Y3vIpOg+UpPOAoMNYsftULP/fChtlmGoVOLQ/otv5a6uP4g2fA1a/Nsx/kySJitJiHYaIjsfKccijDq0qF6WDduatROcJRzpZNottQ1k6amVZjV9l6aB94rsn3ulIB20dHmPhMRF9OqvHu0Q9bArwbio7lkQ99Zh2IH6D6pKT3swU4N1Ej9vHU4D3iLo0Rdpt8BnTkM57BB2F9XpHLOvbBUlnX59LdJQv9dMBOudG0llWks4yQWdUlCurI4o3RufdjnRQZ5YRnfc40kE5OIjo/IwjnZ+BPCcTnUdEHdLx7ojzZ9+n//4/SOMoV/rYCnCd8v/SC2fLPb+FaTKItgLriOXxLqV3iXYwveNaNMz+vRfK5LBH8i4lw+rGuxOId++CtBjeWf6fBt6dTLzDdrFuvw/S3k1pT0Laeyjt/ZCGGJiWQBvwHcsclrd8o6Icj1cfgPc5+msoRjcQv5F0trnIePUBoodtTx/ji7XvqWL06kbvg4Ke6oeFieYp0jcs0zFlZ99LaWgb309paM+epDTU75PgM2JmtYl3wGL9WL6xfo9Rmto5G7oTR83Rn6A0bDP7t9bmIcJJH9618z5IG0w6+cI8QP1/X9KO9WQXLP6ZWyz/JLXhSWrDT4s29FCvo/3QudBrpWfW9qdEXZoiDfsN05DOU4KOwnqfI5bJv41BJruTK3f9fXYnz/mzWNhOJd98ENPy3nT+bJkbWp95Xo3ju/KHWO7eJ9JS/K9dsOvzAtFetBNFeIflnyIsS8MDrRibMP2rU/5Xke9ScKzYYnzBsYL18WcLYsfqo+GPCnpWr4ZIi7mr+PHjv734mZv//cs1Km914Xccc3pa5L9E5DdefQjK5+DVJhWrNdqWVoe0n6W0IUizOqi7ip8uWL8Y/iF+U6S9Aj7n6YumSOOzVkWxUN88sB4viGV3KH8QyptOe8YslZ9yIdU57+5RLM+x98cEHWsPjvM4J3rgfF0fnBPhmMtzIsv/QhiP3kBzoljfj+Mqee/XPjeSzqqSdFYJOr2OdXNc5QOOdFA2VhGdpxzp4LjJcZUPOtJBvWZ/5XFRh1Rm30N68LOQpvRy/fSuv3XK/92LZsu9N6AHWEcsj3GVd4t2ML2nyDcpOObIuAqOiSHe/Szx7t2QpnjHNsTyfwF493PEO6TNuo18+gCl4XjxFKUhr9jvVL4Ivgv5ncw3LGf8LenDRMdVDL+RlJKPmfnXh4getj192Ef7uWL0ZuIqzwh6qh8wroI8RfqGxXEVda+0so3sb6E9+1lKQ/3muMrjXdoUOlnMe3GebH3/ddCdX6f5G9K7bro9DeXWYggpxm+Q/iEf3k/tUXNyfMe6guUtn+e4puaV7HflnVdi+aco7QOCjrXnSUhDm/m583V90GY+CfVhm2n5Pwr9/kfUZ4rPqj/Z78rbn+dG0llVks4qQafX/hD7Xb3yh9jv6pU/xH7XzzrSwbGW/a4nRR1Smf0G6cHTkKb0gP0uy78W9OCbAT3AOmJ59LveL9rB9P6R/K6C47j0uwyrG+++Q7x7P6TF2BDLfzrw7p9y2BD0Jdi3Qn58kNJwTEYMTEugDfiOZQ7LW75RUc74a/31DLzvhd9l+I2ks81F/K5YP8ja9+Fi9Gb8ro8Ieqof0O9CniJ9w2K/S/kUyjb+HKWhPfsQpaF+s9/1gS5tYr9LyT5j1eGd8rM4zj5v+a6/qa41Wp+VnqMuP0r51BhkfYC8ydvviJckWq45RlwwFj4j12rdVPlhoXi16vt74TOmIZ3YOON7HLGsX5WMsR+Wd23/3Eg6y0rSWSbohNYaY2RL0VG86bV/xPuKeuUfsR/2tCMdHBPZD8uKA5+4fPY92tXYOLDl/+OJ2XKntDDVfIzHfSuPfthToh1M74wWjZLxBumHsT+RxbuziHdqLhfineX/FPDu3ADvWLdjfa2fpTQcrxED0xJoA75jmcPylm9UlOPxqqCfEu2HGX4j6WxzkfHqw0QP254+7Id9pBi9GT/so4Ke6gf0w5TvhVjsh6Gd5dgG2sZnKA3tGftoqN/shz3VpU0hP+ypDKxYP8zyv5DsRkG/SdoNw6r8tXh/zWu9Ov38bkesyl+bpcPvKn/Nh04Rf+0OJ39tw8RsubvmwF+7pw/8tVc6+WvLgHc/QbxTsQ3FV/bX0I9ifw15xeNg3riZiq/sLXEzNV7tSXEzFZdStpF9MrRnHDcL+WsecbPYGBfTzPLrrp9uT7f8b4f42uMUN8N6PQm0D13Rnq/y19rL7knxNetXdQ6A/bW85wPPFXVWdJaVpLNM0On1OTf21550pIM6z/7ac22dM8vn+BTZN7XOGfI5LP9XxmfLfTrgr8Wsc4b8Ncv/GfLXernOmcW7X3fy1z4zPlvuNwK8Y93GsfFJSqvWOXc91Tpntr+Gdpbja09Cmtc6p2FmtYn9NXU+kLFi/TDL/xWyGwX9GGk3eK9+6FcenixGN9pfM3yvX3lQfRf6lYenRF3UHI/ja2XOpJU9oxWytYjN/po6j/ruAJ1zRZ0VnWUl6SwTdHp9/wH7a73yC9lfe9KRDuom+2u92mcX66/9G/kcH4S0GJ/D8r9kfLbcfwRiRBzP4TPgnJ/9tZmxojWXLXmeUNpdPjuYdR5gcEV7Wz6AaUmnTWPeWf6J8dlywy1MdR6AdRv5xPYFx9QnKQ15xft98s5JsXzWmUtLT5+S5zei/TXDV2c8i4xX6pwE6oXTmc0Zf035zaof0F9DnqqzAeyvoZ3l8wBoG3nP/5OQxrET1O+YexawTeyvKdlXMS48y8cxLjUujYg25uijBbEyaPiNpJPfRWRQxVfUeJ1eG3tM63Pr2tjLpnZctXPTbVtvvnzq3u0Td2y+avLuHVsnb5vYvPnuqe3bsdJIaD68x3R8OI99fq94jxhPdmlMHuf9A12w+MIJLM8G8KkuWPxTM2pw4+9DSWc97aKAgQgcVLSseq2neqnFl5CRR+F8VdKOheWzAi5Z9bpiuh1LHezm70NJZz2ZXyGcLAOKbfzJpL1eWYep0n/PdMG6i7DUYSzD+nAXrFcTlpqE8/ehpLOezK8QTvrvI13q9RqqV9bmm/TfR7tgvZyw1OYdw/r5LlhbCQvLY1n8PpR01pP5FcJJ/32sS712UL1+HtI+RmlYbh3RyTtJw/JzNUlbR3Q+5kjnY5DnICiXfv8FSEPbGjosZYP/x+F9LwImht+guuSkNzP4f5zocfs4YPIJUZemSONFqU8IOp8QdBTWk45Yv0DtyZqE3UCTsPdAWswkzPKfOD5b7iU0CUMefYza+GTS2cb3CHo1atewyI94dcp/c6tO+ySdP4vxMVFeYeN4Ggp0jCSd+tULHTH8RtIpP0V05BeIHrePdeTjoi5NkcZBC6WLHxd0FNYHHbF40TRLR+520pEl47PldvahjtznoCPoQ8XoSMGFp2gd4YWnsjqifNmQjvyCqEtTpPHGeqWLvyDoKKyfc8SK1ZE3OenIf7xgttxDPdQR43esjlj+Rx10BP3mGB0pEwxDPKsPvkN8Lx1Rl3+EdOTnRF2aIg3nTJiGdEKL44j1EUesWB15n5OOfAN05AN9qCMfyqkjqu69mHup+NUZ8DmLR0p2m6L8k5T2bkGnm4x8YoWuj5KR9LPN33lh/QsgI58KyEhowXOuFlYvKEnnAkFnrhdWn3Skg/J5AdH5kCMdHFd4YfXnHOmgreSF1Sw9+H3Sg2cgTemBxYvqlH8H6MHnAnqQFbPEhdX3iHYwvT+mhdWCG4/kwqphdePdnziNM9cB776Yw4agT/8kpSE/PkRpOCZz3FfFV/EdyxyWt3yjopzx1/oL45a9WFg1/EbS2eYivlbswU9r38eK0ZtZWFVzCdUPuLCKPEX6hhVaWH0PpT0JaR+hNLRnH6Y01G9eWH1PlzbxWpqqX2iDze7aZFZwgTa4yUxtSOexCcuqvpmGz5iGdNRhaYX1bkcsW2OoNpl1vusHX4g3me0tvtC+F8y+R/seO55b/n+9cLbcfLpcvxe+0OIWjd3pC+1HvCvqC/0f4N0BAd5VvtCe4wv9fDF6M76QWsPO4wupNe3ngi80KOqH+VD3VDwpEe9qAXpMY0CUfW3SXm9MW0s0sB4xMaC1or49jOsOxurXnhLX5TX0MrHYGJ+n5AbGaH98LjYwroV3TptoB0P98GSAXsG1vAGjF9rbhfRSezqcdPZhtwu9kQb2V5bOF91P2e3y89B+Sl4H/LkuWLyfMmvjMqa9uOW/pHb4ygva89hewKshzwtbn1mnkA/P7iWhfKEL7ctc+I54SaJ1z/C9LrRX/ZB1wfw+SVhGsI+y9pmqS7NiZDZ0QbyqT94+VZvK03w3BfI9JfIpWul33PfMl9hb3k0tjJTPL1rf3kak+wH4jGnpo3z/0OGM0I8KnluSzrmRdJaVpLNM0BkV5WoZf40Ov2M6ijdzfQDtvY50UCY5NvCkIx20ERwbeLeoQ6oz99L8Vh16V+MFH3p/FcxvX0XzW9QDrCOWjz2AZvlfS7GBghemRF2sl8W7+4l3H4C0GN5Z/puAd68P8I51O3TAFfnxXkpTP1ZTo7QE2hA6gKYug9hbDqCFLnjaEw6gqbEu5gAa2jM+gPYkpMXEBmIPoFnZ9HDV4a3Ps4erLp+6d8PkbVs3T+7Yuu2OdVN37ZzavqMOyGrkYAv/JH03jiAOPzX6PkBpj1M6nnJQT8xVAwWvOIj2fA3f66oBdaIrdNXAB0Vd1FUVr4PPmIZ0PijoKKz3O2KZ3FRXeXa+y3OV5wcc6eAoyp5er64A2F0/PZjlrfxKxEpGyFuZsZ/grXyGvJXQTw9aefT0Qj89aPl/gzw9HH3KenqG1W0V6LeIdzhzjVkFsvx/DVGR3yXeIW3W7dBPD6prf9TPxPNKN45/g+JdaMWW+aZmSyV3LUR7eobfSErJR3DXQuinBwt6ljOenvIsVT+gp4c8VSdxQ1d5hn568L2UpmYYygbFXDWAbcpz1cDbBB1L+xlI45/IfV/S2eZU775GkaZHIN/bCONdkPYzlPb/Qdr7AP9ll7W3DfWG9Rp1l/Ua5Zj1Gvs/63R51k5Hw61T/r8H2/SfZO+UjKqdPJZfRbBxdsIzWXVlbAjr3QHaaub0oQBtdeUd1yVJsnVt1GhNz6YZb0Zaf+uQlscGphHKo9bP0sE6PJthehY3q5/UrDHEK9VPaqWMV+TQxryb0tDG8GwSbQzbH3WNjpJPZW9wPDZ70y0KzeP8e7vgMj+fFPnVGByKqCv9Z7uB+s92I/aniNluqKvW1ZXxvBo0r+UPllyZCV61zvJdT7R8Z11neiT4rAsu1JhDOTEXtXBSHb0EdDR90BZYP5a0BXVlC1Df///2vgTKsqrK8v2MQQLD/AUOVZRVJVW0VSpolTgkCaKBDIIJyJBlSYkDxaCpNAgiiNoauhwKBYKMHBgik3w/g2TOTAa1yqltbSx7WculZWs7lFPZUtra4lIbx1a7X8Y7Efvvv+95973/XkQk/rdWrnj577nn3OGcc8/dd3jsCzwfnD1l/SbbrbcCH4v0sJ2NCnrkN0z0fwR9wCeF0B/xJ5UVIl025jF7yPTmOXk5OB7O3nEecRDpHvo0FSex7hn9c0Gf/zx/r9Nv8BWz6mpatp8k8fVMIYS/a58w78BvPI/oZ0U7+9fkJ8wX269hO8X4NaQ336J2srE9o49gP4A+IvRJdiVPrcKjj/B8pNoxUrTC/kHCEdC+2P7V1YPKxjluUNdP87ihfBiP2Uh/AviwM6ltlC57caza+YO7dngFzDsVrHh1HNl3Cvo7HNlqNy2XJUnCNqls0dqmifkGxgVsi6qf1E47r61UP7WJHtumrO3yddc4vrNdq6uwlX52RD0UvqHigQ7wPYjG7qZXe9E3YP0VBox8OfY9D2z3cmob5Z/VSin7D6RXJ3S8+brHa9aR7emvko3l4s9NMnagVmOV7VrbNGG7dc4PVFupflKnBtgGY1ee2T5jV55x3GX9nBX1iB13cYcH7/5Qa4ae7qmdFmjHrHtqp4Wyfw9bY7+BOsp+Q53GYztDrADpGSsw+ncRVlBxx6/ECviUC+IZSr9Dn6rbCr7t3QHfhv4yhudVkViB9WMTMTXaO/sCzwdnT1m/yXaLfcM7jtT+ALULle1sNNGYJe4oQ/rrHKwA/RHjmrE7YbxPbiBW8CHCCtB2ESvYRrqncH30Oax7Rv+fQZ+3U7xRh9/oUJrCjLwxxztdq9YFvNObfc6lo7EC3h1eEZtwd4er+U4dt55l/2I/L41YQdGJCA8raNKveeshRe3Kc3f16UvlI9gPqFMk7COUvA7kw1j8Q2T7RbdiezEL7ui9nLACtC9vXYztH/Xdm1tj/VBvlA/jMRvpPwE+7EvUNkqXvTi2aL7O2Kear3u8PJxCnTC905GN5cK8LDtkk8oWrW2amG9gXMC26GE02RPTVqqf2kSPbVPWdvmGRRzf2a47kIYY2JcC4zbWA8dttt0QfriNxu6mT43z3HonlEXtK8BxAOm/Bbb7ILXNrmThidGJ3YIeT0GzDwvdHBPi5e1pUDfX7HZkY7kwL8vmclo+ZbvWNk3YLtob267qJ6SPaSvVT22ix7Ype4J9J6XFnmA3nVf6qTD62H0FiNHzLRLKF3q6VzRmse6pMUvZP/sNtH/2G6ij7Dewb9lv8M0ETM9YgdEPPWfur8WfFW/DlljBXVTGXVAGpd88tzL6A+CGs9HnaJ4jJXmO5XyKsALrxyZiarR39gWeD86esn6T7VbdeNyi/yMvbFPGCqyNRgU98hsm+kdBHzBWgP5oF5W9A2nejRocZ6hbfTK9WZWXYzzptV3ECh5Luoc+jf1F9rDuGf3hoM9/kr/X6TduozT0AxxbqzFH6ZlaK8IxlPOZH+jzRrtorMD4jyW9da6CFcTeGtOn35zHCtQN+aofECvANkX5xsvDCpr0a9hOMX5N3VzTTnrryPaMPoL9QAfS2H/c6shDH4Gx+CqyfeUjY2MWnJ/vS1gB2hfbP9o42z/qO8cN2IahW+eVD+MxG+mPAh+2ltpG6bIXx6ovqOAXIO6g+qCu3xPB605H9r2C/h5HNpYL87LskE0qW7S2aWK+gXEB26LqJ/XFAa+tVD+1iR7bpqzt8hdL1E2QynZN55V+enF+9rDtqq+AYTywt2EFLwXbvYjaRvlnDysoO19HH3ZXBC9vvubpr5KN5cK8LJvLafmWE1ag+snzsaqtVD+1k167ZhtcTKyA9bMurIBv336oYQUxYz5iBUjPWIHRv4Wwgopfl5NYwd1URsQzYub1Rr8JfNvbAr4tFisw+ncsA6wA7Z19geeDs6es32S7xb5ZKqzgmkisgHHNDqTVgRXcG4kVXFsTVvB+0OcbFgErQD/AWIEac5SeKawAx1DOZ36gz7l0NFbAX+SriE24X+TzsIJ+vsqZ/VNzHNUPiBWouQjyWo5YQVG78tzd+4pb7HyD/UcVrODehrCCT9HXPapiBajvHDd4X6i7G8qiYh4cs5H+I+DDPktto3TZi2PrmK97vDys4L2C/l5HNpYL87LskE0uNlaAcQHboofRZE9MW6l+ahM9tk1Z2+UvAOP4znaNuo0Y2Gcbwgo4HugIvsontKi8SO/NT4r2jvL8RMVCaq/RTEAO+gTsk0vyd95r9K+RMbXJ7lPfVza9j6ZoPmhtomIj3vOCbYznkXhsMJ5Z299T4guDan+omiez7o0G6Hk/mdF/T8Tsnj534Ld+9VntN6qqz2gb66iuRv+jxdXnRyy1PrPOoj4zJqT0uZX0+rB+8Jx0Gep/a2Lu7++C/u8zsVDX5aj/ai7h6X8RRsL6r75Yvpj6f0UJ/b/Lkan03+oW0n/EE5H+Dybm/ir9V+3bgd/KrhF6+n8PpWG+mYAc1H/sd9Z/o3/cxEJdPf032U3oP7YR6783b8qesnMdXhPA+N3Tf16vrUv/L+7zC8ue/ltdQ/pv/Bgv/8uJub9K/5UNzsJv/a51YR3upjTMNxOQE4rnWf+N/pkTC3X19N9kN6H/dc5fi3AGaxO11u3pP69z1KX/Lyb9nwU6xoZ2CB7eOXbv7gqrhzqzqc4D8JnN4yegDhPdPFWMhHv6m5jzerw8+yy6G4Nlq7sxuCyJKKfla/D810jT51pVW6l+ahM9to2yrVlK886LdSDNuysPz4uxfs6KesTa7izwHaK16JsL+HJ73iLovTtodoj6Kfv37oTwzqqx31Dn/djOcC1arb3xfGPdxNxfW99o4quVrN+4Fo36zWt3Rv+Wibm/WR+fP6F5jpTkeWHOp2icremumuGm76op8ptst+psWov+j7zU+g3b2Wii57p8L4vRv2Fi7m/RWjTfx+HdudERcpU/wrXorRNz73xGN3vHtei3TnTXu+pdjOnEQr635+91+g2+D0vddeCNOd7XB9V9NkqfzQ/0eQY8ei3a+I8lvXWushYdez9dn35zfi1a4YSqH3AtWp2hRV7eWnSTfs27x6eoXXltGOvI9ow+gv2A+sIz+wglD30ExuLmIzwfOSv4jlMa5s34/uKIuXdl4959Tmz/6hy72jPHccMdUBYV8+CYjfS3TCzk++BEN0+ly14cW3TOnO8PUufMPV7e+fpdgn6nI1ud2+GyJEnYJpUtWts0Md/AuIBtsWhNNqatVD+1iR7bpqzt8vp2B9K8u/IQf2f99OL87GHbVfeoYzywUsivegcN36mAds3306g1BvQzofsp7ptYyPfFiW6edd9PwXOmsvdTeHfxFfkNlj24n6KbXvVTO+n1gbxXRH3DRdknYwzq7hRLU2OO0k91t0zsuIt3y3z0iG6+dd8Dybqn4uY6x3XvLhb2GxwfMj1jBUZ//8TcX4s/UUf6xQp4HMczN0q/eW5l9L+amPub9fF3JzTPkZI8v5/zKcIKahrHh5sex4v8Jtst9g3PH9VYim3KWIG10WiicQq+f9nofzox91dhBVXjBYXfKX+EWMEBR829M56bvSNW8OuJpKveVXGqPzpqIV+Sv9fpN7zYmvetqjFH6ZnaG4hjKOczP2B+BXWxCazA+I8lvXWughXEzt379JvzWIGKw1U/IFaAbaru7/Gwgib9moeBFrUrz92xjlXwAOU/djjy0EdgLG4+wvORsTELzjfeR1iB+qZJ2XOyHDeo+RyPG6E9TaFzsgeBD3smtY3S5X7u1OJ9+GXv1PIw9qIzut49Q4M7tXQ/qTMnvMc81nYZY8Dxne0adRv3l7N+Fq3Jsu2qNWaMBxRWsD3pTiuLByib5zhNxb6zoqwc+06A7Z5ObVM3zhczX/d4efO1IpyPZQ9wvm561U8xON92SPO+j+3ZJ9s86jaOu6yfdWEFryesQPkET/eK9tOw7sWeIWG/URYPULrOfsP6E7ECpGeswOjPyvvC4k/UkX6xgl1URsQzlH6HzgRfBr7tnIBvK3vO+BU5n0Xav136LKjng7OnrN9ku1VjfIv+j7zUGTC2s9FEY5ah8wIXQx9439ljXBP9EWMg6m535Y8QK9iUl4PnOtk7YgWXk+4pXB99Duue0V8H+vym/L1Ov8F7nBRm5I05Ss/UOi+OoZzP/ECfc+lorMD4jyW9da6CFSj7U/OdPv3mPFag5jiqHxArUHMR5OVhBU36NW89pKhdee6u7nxRPsJbw2D/4d3Vjz4CY/FNZPvKR8bGLLhf4QLCCtC+2P7L4gFqbs1xwy4oi4p5cMxG+m3gw+6htlG67MWxRfN1737PmDu1+jn35N0XUnSnlrJJZYs13Tcx0vSdu0V3anH8792pFWu7uyhN4QHKdhEDuycwbmM9FF6p4gEc8y+nsXtvwQo+DLb7GWqbAVbQW84BVtCdtphYAetnXVjB0wdYQWms4Gt5XyxnrOAn4Nu+GfBtZbGC/5nzGWAFS4cVPAB9sJRYwX7PnXsvwgoeJN2rihU86rkL+X6e8xxgBfIZYAUkb4AVLA1WYD7C85FVsIIn7aVYwWPBhz2F2maAFYRtcoAVlLPdOrAC1s+6sIIHaezGOvFcQd070MQZhA7QhM4gHAa2u4bapu4zCB2qT9kzCNsd2UU4BcsenEHopvfu9vPOIOBYtp3S1Dmgfs4gsH5uF/XowG9sux1R1ozvDw/v5qvGc0/3is4gsO7FnkFgv6HuHViqMwhn5H3RZ0zf6BmEC8G3nRnwbWXPILws5zM4g7B0ZxBeBX3AWAH6I8Y50B/VcQbhKsIKQmcQLiLdq3oG4RrQ50vy9zr9xuAMwuAMwh7m+d/F9muLdQZBraEpH1HHGYSryPaVj+wIvipmwTMI9+cxi7Jxtn9178BSnUG4FnzY7dQ2gzMIYZscnEEoZ7t1nEG4PTBuYz2qnEHgeECteXYE3xaVF+m9+UnRfWomy3Q19j612YAc9AlYt7WTc3/5Hqb3RcbUNd2VM1L2rhw1H/RwkKL5IK+po+/mu3WwjU2mGhtw7fvTNJ9t5Wk4xzsE3g+GdKT/7zTHw3qWaO+TxiFPAjyQ93BF3i3ilyQ6zsOYRsnLnjGRNhxRlkPefNmTH3f5yF+1KL+VhX9jfRkR9CcKemurUSr7gUnUs0bZlMm2tGFI4zgQ7cLKkNnSyWu7yzdSsXwx7Yf824L+lMkFujJ9sV/SrQuo7+b78K6caUrz7qcsi/eyH0F/indu8vzY6L8CMdYPIvBuHE+auAfW4zXjyC7Ck2O+ScllSUQ58Zske2RNLqQ1OeZ4852y906qtlL9pOZHHA9NQ9oMpcXGXzznUniv0s8ZUY/YO2hngO/NNAaqGMjTPW/MV7qn9poo+2e/USfey3aGPhPpGdOdv7OFxvuK2IvEdHl9B+/JLbNfZr+j5/5mffybgG8ruwenlfMsij9rWt8pvU+i7PpOkd9ku/Xm+WquoXAXtrPRRO8h4HvT52Na6APGdNEfMR6t9lIof8R34qHNIKb7l3k5eF6QvSOm+8iju+uNPk3NEVj3jP5Q0OfH5O91+g3GdNRdxN6Yo/SsLfLjGMr5zA+YX6mIsUZjusZ/LOmtcxVMV9mf2jPfp9+cx3Rj95shpqv2syMvD9Nt0q9hO8X4NYWntJPeOrI9o49gP4A+gv3HTY489BEYi/8l2X7R/fZezHIz8N1CmC7aF9t/nXgvjxvKh/GYjfSrwYedSG2jdNmLYz1sEcvjnfnweHlnXYrwZJat8GQuS5KEbbLBvZgjTe8xV22l+qlN9Ng2ZW2X957E7i/Btf4TA+M21gPHbbbdW0RZVTywUfCdFXxbSa8fisF0dwh6bA/2CYhdcEyA+aYDchQGkT2M6Rr930TG1Ca7CX3HNmJ9Vz4b6cti6Dy/Rj3hOTS2sclUe4ONZ9b2b6exYavg36I0LOtWUbe2yL81wAvnadPAi+Nao39z3v8Wn6TAt0S/voLbxXgg75sq8m4RvyTR8aTxH0/CdjYm0mKw441PeGD/28/+1Zc9P+CdU1N+4FhBb22FOluirf5O2S7qbvYMQ9pNlIb2Z2VQ2PGOiuWLaT/kr8aQy+C9TF+oWNLsol9eyif3w2tjRV6Gj6N/SomXGvMQY7M2WSnqtTGQj+lCWDjKUfy3U1mnRVmnRb3VHnWjGxf5WoG/Jod/89YYnk1lVtjojFNmzO+NQc+m+myANMQ8rjpalwf7ZAOUh8cGo3/XCxbyXXN0uP4858Eyr0q6y1K2P1dFyjm+TznHCzl16o3qz1UkZ2uNcjA+OJ7kpDXKSYHmAJIzW6Mc9GeHkJyQHewgO8C1d2UHHCMb/RPADm517ADLiPkR358R9WB5OykmqzjWSnyf49hQ2+2uyYc8HNrunhI+BMfCrZSG7ZFSGsZNyAPTkqR3bpA93nhsdOMin7Wv9RfOKZrATY3/WNJb5yq4qZozqdjC6ndrNXnzuKnad6P6AXFTNZ9HXmZjMWuj6BsZn0whzdvjczC8o4xQnQxHWOmUb1zwYt3Cspdte+Rn5cTfkP9Y0mujVXRLzXFVLMRjE+blvsmeoycX6DhtSPzmjVsct/fDi9eblyIWWt2nnNVCzkMlFlpNctIa5aRAs9xioftLxkI8nhv9nScv5PvuIsRCP1gGsdAPa4qFpqDtfkxth7LZthXup+KklNKwrRh7VHiUwlUV9sjthvl4vKoYm0THQsZ/LOlLP+bHKxUjqvGqz1hvPhZS6xqqHzAWUt/XQ15eLLSB0tA3cryTQhrvhfZioQ0FdfJioQ1Qh+z/nfz/bwTb2eeYufdxIe9vJrvTUG+vTxZ4PPyY7jKkQMcYVJr01gd/8zAoo6tzvLEyd4CGMahO0lvmjlNmzN+htFTI4XGafeZjjtHlQZ+JYzz7TKNfB/1+APUZ1j9NutOwzBx3pSA3pj9XRco5vk85xws5TccpHHdtr1EO2gFjUE3FQxx33VSjHBxrOe4K2cFTyA7UOi3aQWiddl+wg6c6dsCYh+XHuKsj6sHynpnL6HMcl3EXYymhtjusJh/yg5MW8h1RwodgLMH3OsWeI0AemJYkeh8D6xzm53NFmM/at0+MJjruMv5jSW+dq8RdsXGQ1e+2avLm467Y79Vj3KVwJ+TFcVcKNB1KQ9/onXtmfArtm+MukxGqE8ddqSjfuODFuoVlbwKDMv5jSa+NVtGtovtnGIOaFWXhvskexqBmhZxZIUf1c5rUx4sxKFx/5VhIrQVvdOSsipSzuk85q4WccZGvFfhrcvg3lqPapumYizGopmKupcKgQuP5BTSeKwzKG8+N/moYzy9yxvMYDKoj6sHyLqVYqEkMKtR2r68pFroI2u6NTtuxbcfiTF6cNFiPc5+H9Hoc+tkOpaWQxvEO+rMy63HGM1QnjoWwfGmA1zD8pjCnYaLfmNtXZmvThFmhneP+0T88tpuuA3JYrwdx2Nz75fCOaSgnNnbaUiOvQRy2IId/KxOHNRUfcRz2UMOkUlGGzMfcG4FJpSCTYwmj3x9iifcvAib1oUXEpFJIw7b7SEQcloKsUBz24IkL+f5LiThsgEktlBN/Q/4DTCqMSXlx2HLApFT5mFdsHGb0XyK/UTFukn7DeA3itfh4jc9v9BNjzdTIaxCvLcjh3wbxWj1yqsRrP6spXtsMMccvFyFe++0yiNdax3bXpQNpZeK1y6HthnOeah2FbRvbieM1jKM4XlP3PrYoLUnicDPM/7uGm3Xgt70dN0spDX0jx2Tozxg38+K1NPHrFIObxWJcLDMU171osjvd6B937ALPPybcDMu1FWTvGOBrDxl8jffCIm+O17YIOVscOatEmZWc1X3KWS3kjIt8rcBfk8O/sRzVNou91/6hts6ZijJkPubZ5N/UOmcKMkPrnH8IMcdRFHN0QHZd65zH5TIWY50zhTRsu+Nritd+vWYh3xqn7di2Y88dDtY5B+uce5jnf5Wf7VCad+6w6jrn1oI6cbyG5fPukLHfvDjM6M8mv4H21a/fMF5qrz/r/2KfjdxQTZ57NhLrx/FaR5RFzfEYX+sIOR0hR/GaqZEX+1rkzfFa2Ts0VokyKzmr+5SzWsjxzu3G6JaSo9qm6biQ47Wm4kKO1zo1ykF9i43X3kYxx3ZIi4k5jP5GiDne4WBEWEbMj/FaKurB8t5NfhfHiX79rvEqOht5ZWAuj23nnY00+rdC201R26Fstu0U0ti/4JjKsRy2FfLAtCSJm5Nifm43NRfp8z606HjN+I8lfenH/Hil7qBK4TeO1yrOH+bjNRU3q37AeA3bFOXjfdbZo/wsn41E3zhLaejPGDvpQFrMPRFYJ47XlO4rjMvoFMbl3SeBdSzRRytjddD413WfhMJX1Hj98P//7/H5++suWXf+uksuf965l5zyur87f93Za869/LVHXXDOKWddfMm6s84/6pxzLj73ta/FQqOgR8DvmI4P09j7NvE78ii6HKNM8J4W8DqdeGH+lHh1CnjxBXGYH/Pi/0eS3nLaR2BWRPBBQwuVay2VCw1xO/GadXhl729Kunlh/hDgEirXiZPdvDA/Ly4iWMTl5Pby+IQcKNbxPyXd5VIO03jdUsDrIuIVOqSe/bu1gNebiZeahPP/R5LecnJ7eXyyf7cVlOstVK7Q5pvs3+0FvF5FvNTmHeN1RwGvdcRLfQid/z+S9JaT28vjk/27s6Bcl1C51OX3apJ2GskpO0nD/Is1STuN5NxZoxy8lPwAyJf9Hy/zToGHd4jJBv9d8HsTgInxH6OylJQ3P/iri+JT+I0Bk92iLG2RxotSu4Wc3UKO4rW1Rl47qT6hSdi3aRK2BdJiJmFG/yqYhH2HJmHYRndSHVUcs0XIa1G9RgU98hsm+v+dlym7kJg/PnOnyK9443jqAR11fPgZ+Vl58DfkP5b06k8VG1EfCFCXilvdd4mytEVaB95DtrhLyFG8ttfIixdNQzbyq5ps5HSwkd8sQxsZOm7ubz82gjFUjI30cwkS8rPy4G/Ivy4bUbGsZyPeBzMwDePnkC2qDzArXjfXyCvWRvY/rltmVRt5FtjIo3OeTdiItXesjRj9H9ZgIxg3x9hIP2AY8rPy4G/Ivy4b2UHyimzkZlGWtkjjj5mVXRxHXrfVyCvWRp5Yk408HmzkkGVoI08taSOq7E3MvRR+dSi8h9rI+7DKoaI+ao53KNUnpCNHHKfLo3Qke7f5Oy+sPxJ05NmOjngLnou1sHpkn3KOFHIWe2G1qQXPI0nOjhrl4LjCC6s31ygHfSUvrIbs4HSyg1sgTdmB4UXDRP/e5y/ke6FjByHMEhdWt4h6sLwX5zL63HgkF1aNV1HbvaSmceZaaLuXl/AhGNOzj1cfQ1c4JuO+Cl9VHxlsi/xGNy7yWftaf1X8kGj0wqrxH0t661wl1oo9+Nnkh0tVP+DCqvpoO/LyFla3UBr6Rv7IMfoz/sgg2jcvrG4pqBOvpanyeRtslmqTWcUFWneTmdqQzmMT5lV9MwnvmIZydgg5ile/l1MjL1tjGGwy6/1tOcRCvMnsdyUW2lAiFsoeHs+N/jAYzzcvQiw0swxioa01xUKPhbZLB7GQ9+w1sVDFj9TPx0JqDbtMLKTWtB8KsdCQKB/Soe0pPCkRv7UceSxjhcj71qS73Jh2MskoiwGdLMrbIK47FGtfewuuy2vo/WCxZT6IVTE+jo7HF2MD48nwW02baIe8ftjqyKu4lrfC5Hl7u1Be5k9Hk94+DO1BU3u3sL9CNl91P+WOAl7efkpeByz6qAzvpwxtXMa0f8/jl8wP/4/jumlsL+BXgOZL+TvbFLbDnr0kRKcuP+nzQo9o2+OP+1TcMO9+3EcdOMx082GJryPYRx14D+0TvRnk2m8hncUyxehs2T5Vm8ozuu86dB1Bp2Rl/8d9z/xBH6P9PqwvnbG2u44oN4V3TMseFft7hzOMTslZ1aecVZFyVvcpZ7WQ4x2OjLE1JUe1zUP1ANq2GuWg7jM2MCPKkNnMiuct/M625o0XfOj9wycs5BvJeao9+lhGzB97AM3o981lLMbFeqG2G6e2SyEtpu2Mfhu0XdtpO7btDqRVPYCGPDAtgTrgb96hR6P7XTmA1oHf9sYDaGqs6/cAGtp3DDaAdfIOoFne7HDVn+TvC4er1px7+QvPOn/dOWddsu7CC04796LXnfvaS4aBM0vHWiSJ9sRp/o58+GnR/1dQ2gZKx1MO6om5agAtronI1/jXddVAh+Rx/XjWv12URV1V8TZ4xzSUs13IUbw21sgrzd8HV3n2/sZylsMncDo1ykHb5Ehve41yUN9iI72jKVpRKxletGL0ExCtHEfRCsrGMmJ+jPS8zzAb/RqK9CqikDLS41lsaBXoJGq7qp9hPgja7hRqO5TNto3tlFKauvZHIUO80l0WpVafgo5BqTEiaCLSM/51odTbSB7bBUd6FSPL+UhPRZaqHzDSwzZF+Xz9mvKzfNVACmne1T68eoT2zZHexoI6eZEejzdTQo6l3QBp05R2o6hzZnevdOxuU/4+TLLfTD4I27NEnx85TnKMB/KuiPIfGWsvoRUOLJdacRiOKMvTvvVfHz103jm3sZ+0soRsiccIpD9a0Pc5Fhw+bjImF/LjTqzsGYa0GUobgTQrQ4Ymnry2u3wVV4gOj2k/ZZNIz5+ILLsTSF1PUpbXfkm3XqmxDe17c/4eMw+qaIPR8yDjX9c8SPlEbx6k2qwt0viK3E1CziYhR/GaqpGX+WbVzzwPmhJyphw5q0SZlZzVfcpZLeSMi3ytwF+Tw7+xHNU2Tc+3eB60qUY5qAc8D9pco5zNQMPzoGlRhmz8vzEilp8GmaFY/r7jF/J1nJgCy4j5cR60QdSD5d1MMUjFsUXOg3gXcqjtbqW2w7gqpu2M/hZouzuctmPbxjGJxxFsj02UNpgHRcurPA9Kq8mbnwd1hLwy86AU3o0Xz4PQz/I8SF3br/wZx1xo3zwP2lBQJ54HqfINYqH4WIivn+0nfrm+Rl5ejDKIhbrlDGKhanKqxEJfrykWOh7G839bhFjo35dBLPTdmmKhg6Htvk9th7LZtmPxYo6FsK14Xl/2EyJqhbbBk2zRsdBinGRT41Wfsd58LJQKeaofMBbCNlVxkRcLTVMa+kaOd9CfzVCaFwtNF9TJi4UwL/5/RNCuh/oi7QqwsyccH5Z1bdKdth7SrqO0WPtEHti+odPoZ1Md5uOvvNwZ1njmWs1zReKvSSns0+qxj8mFtBL6+7GsXAetXZCD+pI9I5PdZcbxz4upjP5aQY86x7HhtZDG8ZzSR4wvTB9Ve1kZm2gvLENMe6l1/Nj2YrvH9rqBeKn4F9vQay8rYxPthWWIaS+kL9te1gaqvW4kXkVznDVUVuM9mmifYPyGif7x4BP4thzPx68XvNE3togH1mNI1GOc0jBvxvcNh829LxbOw7HmNigL6wLyHSb6Q2HcOJbaJk0Wnpj1rY6gT4FmmuqD43gngtcGR7ba09RxZKeQxntXOvR/FW8oP2Bt06cfGFF+APEq9gMppA0J+pi2SoGGbcnbsxaLOW2jtFjMCW94Yv1U+FPIZ7M94Hzmu4G9Q8jX0z3vJgilewpjVfbPfkN99lPZEvuNFNLYb1h/lt2hfnreF03uUGf9Hk60fod2nq8D3/bCgG8bKcnzDBiPjgUbzR613t6nLxhWviAFAvYFHUgbEvRl/SbbLfYNrzWodXNsU44JrI1GBT3y4z1z50TGBCmVPRYD9+Z9Zg+Z3rwrLwdjAtk7YimvJt1Tt9apmwb51rp3gz5fQHO8OvzGZkpLIS3mqxj4m3dKyOi8vbB97gePxlKMf103qXdIHtY9exhLqeg357GUWSEvFfIQS8E2VacqbSxYbL+G7RTj19Rak9rbx/aMPoL9gPdZ8E2OPPQRGIu/i2xf+cjYmAXx668Tlor2xfaPNs72n0Iaxw3Yhhw3bIeyqJjH+PKn1daDD7uJ2kbpshfHqr2ls0DjnRq7KYLXVkf2DkF/kyMby4V5WXbIJpUtWts0Md/AuIBtUfWTOj/itZXqpzbRY9uUtd3tlIbje0ppqNud/F3pZ9GNb2y76kQ5xgN7G1awC2z3YwOsoEc2l9PyDbCCXtttGiv4WENYwa0DrKA0VvCZvQAruB982+dqwgq+MMAK5tOWCiv45jLBCobys3FFWMF3asIKRuEs3vcGWIH3DLACkjfACpYGKzAf4fnIKljBjXspVvAI8GEHUtsMsIKwTQ6wgnK2WwdWwPpZF1bwHRq7Y/GAlNK2inIrm+d4ehbKovZt8FeOjP5JYLtHUtso+1H7/2Lth2+OUvbj8fJwCnVT0Q5HNpaLb0ZnW8ZyWr4Gx1Fpu2ifbLuez8yemLZS/dQmemwbZZ88JqeQNktpHUhjm0fdxnH3yIhxV+1tKrr1ke/ViN1n26IyIr0666Xsfxulxcb1KaWhjrLfwL5lv2H9iVgB0jNWYPRr8r7o8yZUiRXwzf14n4TSb55bGf1Z4NtODvi2kZI8T835FGEF1o9NxNRo7+wLPB+cPWX9Jtutd+N17M1qbGejiR9D8Jz5TOgDxgrQH3GckUIaYyAdIVf5I8QK3kJYgbphM6M7m3RP4froc1j3jP5toM/n5e91+o3tlIZ+gG/MVGOO0rO2yI9jKOczP9DnDYbRWIHxr+uGZWV/ar5Txw3S2b9bhLzQjc6qTdUN4x5W0KRf89ZDitqV5+5YR7Znbw0jhTT2Hx1HnprfoY/wfKS6ob3oRuujCSvw8AC08ZTSUN87lIZtyHHDzVAWFfPgmI30V4AP20Jto3TZi2NvFfTel2q8r/AqXh5Oob5ec6sjW329hsuSJGGbVLZobdPEfAPjArZF1U/qyxZeW6l+ahM9tk1Z272Z0jqQxnaNum06r/TTi/Ozh21XnYXDeGCxblcOjd1ou+rORI59bwbb/QC1jfLPHfitbNzJcyY1X/d4pY5sT3+VbCwX5mXZXE7Lp2zX2qYJ261zfqDaSvVTO+m1a7bB2Jue2T5jb3rGcZf1M0166xE77qbAl29b9/ZdZA+3p4ezKt3riPop+/ewNfYbqKPsN7Bv2W/wDd5Mz1iB0X+SsIKKX9iRWAF/VQ7xDKXfPLcy+q+Bb/tUwLeNlOT56UiswPqxiZga7Z19geeDs6es32S7xb7pEK+O4KW++sJ2NppozNL48drUlxysAP0R45qxN893KE19/SLTm18RVoC2i1jBNwLrZ6h76HNY94z+N6DP36J4ow6/wbilwoy8MUfpWVvkxzGU85kf6HMuHY0V8NeYKmIT7teY1HynT785jxWoOY7qB8QKir5A5mEFTfo1bz2kqF157o517CTdaegj2A+or7axj1DyFBaGPsLzkbExSwf4riCsAO3LWxdj+0d99+bWHDeoL/2qOdcw08PXav/g+d08lS57cWzRfJ2xTzVf93h5OIX6outtjmwsF+Zl2SGbVLZobdPEfAPjArZFD6PJnpi2Uv3UJnpsm7K2ewulqa/cKdtFDIz104vzs4dtN4QffoPG7qa/0sxz69uhLGpfAY4DSP9nYLvPoLaxLwYnSZxO3Cno8avD7MNQJ+6M4OXtadgp6O90ZGO5MC/L5nJaPmW71jZN2C7aG9uu6iekj2kr1U9tose2sbTYL0bfTmk4RnlfjDadV/pZdFbA21eAGD1/tV35Qk/3isYs1j01Zin7Z7+B9s9+A3WU/Qb2LfsN60/ECpCesQKjPzrvC4s/UUdK6LrECnZSGe+AMij95rmV0Z8Bvu24gG8bKcnzhJxPEVZg/dhETI32zr7A88HZU9Zvst1i3zCmo3AHbFPGCqyNRgU98hsm+rXQB4wVoD+6g8oe+wV7jjPQZhAruCwvx3jSa7uIFbyYdA99GvuL7GHdM/o3gD6/NH+v02/cTGnoBzi2VmOO0jO1VoRjKOczP2B+BXWxCazA+I8lvXWughUo+8PxgbGCin5zHivYJeSpfkCsANsU5RsvDyto0q9hO8X4NaTnuTvWke0ZfQT7AfQR7D92OPLQR2AsfhnZvvKRsTELzs835DGLsnG2f7Rxtn/Ud44bsA05btgJZVExD47ZSP9W8GEbqW2ULntx7G5BvwtobqX6oK7vjuB1myP7LkG/25GN5cK8LDtkk8oWrW2amG9gXMC2qPoJ6WPaSvVTm+ixbcra7k5Kw/Gd7Rp123Re6acX52cP2+6toqwYD+xtWMGNYLt3U9so/+xhBWXn6+jDdkbw8uZrnv4q2VguzMuyuZyWbzlhBaqfPB+r2kr1UzvptWu2wcXECu5uCCt4yUMcK4gZ8xErQHrGCoz+o4QVoI70ixXsojIinhEzrzf6L4Bv+3jAt8ViBUb/iWWAFaC9sy/wfHD2lPWbbLfYN0uFFXw2EitgXLNurOAnkVjBF2vCCn4K+vyVRcAK0A8wVqDGHKVnCivAMZTzmR/ocy4djRUY/7Gkt85VsAJlfx5WUNFvzmMFao6j+gGxAjUXQV7LESsoaleeuytMs+x8g/1HFazgJw1hBafXhBWgvnPcgG3IccMuKIuKeXDMRvpfgw/7vTXdPJUue3FsHfN1j5eHFdwt6O9yZGO5MC/LDtnkYmMFGBewLXoYTfbEtJXqpzbRY9uUtd1dlIbjO9s16jZiYKyfdWEFHA8UnXnmuEntsfLmJ0V7R3l+omIhtddoJiAndC7pkvyd9xo9Nm/nopjaZPep7yub3kcTez5JxUa85wXbGM8j8diA92EcQWMDYlG8J0PtD1XzZNa90DdKeD+Z0T8J+vi5azVPLIN3V0xZfVb7jarqM9rGOqqr0T91cfX5EUutz6yzqM+h79OjzFbS68P6wXOeuAz1/6jfIf0/fpnrv5pLePpfhJGw/mP8thT6v38J/d/pyFT6b3UL6T/iiUj/Ikf/Vft6+l+0Rujp/25Kw3wzATmo/9jvrP9G/7JI/TfZTeg/thHrvzdvyp6ycx1eE8D43dN/Xq+tS/9/dezce4z+e7G30n+ra0j/+a4vo7/Q0X9lgyn81u9aF9ZhF6VhvpmAnFA8z/pv9JdG6r/JbkL/65y/FuEMHM+jbXj6z+scden/t0n/U6BjbGi74KHOqjBupM7/WT3UmU11HoDPbP79moV8MzT3VjGSd0diHXNej1fqyC66G4Nlq7sxuCyJKKfla/D810jT51pVW6l+ahM9to2yrZTSYs6LoW56d1co/UyT3nrE2m4KfK88tpvvbAHfsne4pvm7sv+bKA3zeXdCVD2r1qGy43pfIugPgXSkvy3vC1vfQB0poetyLZrvqsFz+Eq/ee3O6D8Kvu3OgG8bKclzd+Q4a/3YxJpNnXfVFPlNtlt1Nq1F/0deav2G7Ww00XNdvpfF6D8o4jrlj/g+jqp3bnQgDdeiv5aXg8/oZu+4Fv0x0r2qdzF+E/T5vvy9Tr/RoTR114E35ig9a4v8OIZyPvMDfZ4Bj16LNv5jSW+dq6xFK/tT53T79Jvza9EKJ1T9gGvR6gwt8vLWopv0a949PkXtymvDWEe2Z/QR7AfQR7D/iL2rH2Pxr5HtF92fwzFLKuqR8X0bzTfQvrz7nNj+Ud+9O9ywfqg3yofxmI303wEf9suItT4vji06Zz5L9VHnzD1e3vl676yokq3O7XBZkiRsk8oWrW2amG9gXMC2WLQmG9NWqp/aRI9tU9Z2eX0bx3fvrjzE338ZGLexHjhus+3OirJiPLBSyK96dxXfqYB2jeXgOrIPQr4c8w+fuJDv90/s5ln3/RQp1Uft3/V4dRzZRX4jJdmD+ym66VU/xdxPgfbZoTS0T8YY1N0plqbGHKWfHVGPFH7zxt0O8D2esAK1lunpXtE9kGn+ruyf94rWMa57d7Gw3+D4kOkZKzD6x+d9YfEn6kgJXZdYAY/jeOZG6TfPrYz+CPBtTwj4tpGSPA/O+RRhBTWN48NNj+NFfpPtFvuG549qLMU2ZazA2mg00TgF379s9M+EPmCsoGq8oPA75Y8QKzgjLwfjudk7YgVHku5VxanOBH2eyN/r9BtebM37VtWYo/RM7Q3EMZTzmR8wv4K62ARWYPzHkt46V8EKYufuffrNeaxAxeGqHxArwDZV9/d4WEGTfs3DQIvalefuWMcqeIDyH9sdeegjMBY/g2xf+chU8FUxC843nk1YgfqmSdlzshw3qPkcjxuhPU2hc7Jngw+7lNqm7ju1eB9+2Tu1PIy96Iwuyx7cqdVNr/pJnTnhPeaxtssYA47vbNeo27i//NLAuI31UGshKh7AMf9IGrs7QLcx6U4riwcom+c4TcW+qSgrx76TYLsbqG3qxvlSqk9ZnK/jyC7C+VKSPcD5uulVP8XgfPjdiw6lxdon2zzqdtcdMA1hBS3CCpRP8HSvaD9Nmr+XPUPCfqMsHqB0nf2G9SdiBUjPWIHRdwgrqHiPlMQK7qAyIp6h9Dt0JvgfwLfdFPBtIyV53hKJFdS0f7v0WVDPB2dPWb/JdqvG+Bb9H3mpM2BsZ6NJ4p6d4DnzPQ5WgP6IcU30R4yBzAq5yh8hVvAFwgrQdhEr+ADpnsL10eew7hn9l0CfP0zxRh1+g/c4KczIG3OUnql1XhxDOZ/5gT7n0tFYgfEfS3rrXAUrUPan5jt9+s15rEDNcVQ/IFag5iLIy8MKmvRr3npIUbvy3F3d+aJ8hLeGwf5j1pGHPgJj8S+Q7SsfmQq+KmbB/Qo/O2buXdk4239ZPEDNrTluUPfJqruJ+D7Zb4AP+zG1jdJlL44tmq9793vG3KnVz7kn776Qoju1lE0qW6zpvgk536jzzl3VVqqf1BkxPj8Ta7t8553CA5TtIgb248C4jfVQeKWKB3DM/8BeihX8X7Dd9kndPAdYQW85B1hBd9piYgWsnx1RjxR+i8UKPnJMN98BVrDwHsIK/jjvi+WMFTwtL2PWxwcGfFtZrOCgnM8AK1g6rOAp0AdLiRWcmpejCCt4BuleVaxgLejzYfn7ACuQzwArIHkDrGBpsIJTyfbrwgru3UuxgheDD7uA2maAFYRtcoAVlLPdOrCCCwLjNtajClbwDBq7O0DHtotlSymtLI7QEmWxeqjvEHL88Xqw3fdQ29R9BsHb/9j0GQRv79XgDIJ/t593BsHDClJIq+MMwnsisAJ1pnA86bWHDvB9PWEFajz3dK/oDIJ374h3BoH9hoc/LPYZhOsJK6gY0zd6BmE3+LYtAd9W9gzCtkisYHAGobdN6zqDcHskVsA4RwppdZxB+DRhBaEzCHeT7lU9g/BZ0Of3UrxRh9/gucLgDEK0vMEZhKR/v7ZYZxDQR7AfSCGtjjMInybbVz4yNmbBMwgXEFYQixWmlLbYZxC+CD7se9Q2gzMIYZscnEEoZ7t1nEH4XmDcxnpUOYNwt4MVpEl32mLtK1DnMzn2/T9guw87uZtn3fsKYubrHq+OI7tofYxlD/YVdNOrforZV5BCWofS6t5XwPrZEfWoghUc1vC+Au9OEm9fQUppy2lfwaPzvljO+woOzsuY9fEfBHxb2X0Fj835DPYVLN2+gj+HPmCsIIX8Te8rOCEvR9G+gieT7lXdV3Ai6PNf5e91+o3BvoLBvoI9zPO/D9V9BSmkNb2v4ASyfeUjY2MW3FfwFGdfQZp0py2nfQWngw87j9pmsK8gbJODfQXlbLeOfQXnBcZtrEeVfQVPrjiPaVF5kd775oDyOd6diSoW8vY5sBz0CVi3tZNzf3nt56LImLrJtXhsI9b3Ioyo7HzQ2kTFRrOUlkKaySyazz6G5rOtPA3neIfA+8GQjvRTNMfDepZo75PGIU8CPJD3cEXeLeKXJDrOw5hGycueMZE2HFGWQ9582ZMfd/nIX7Uov5WFf2N9GRH0Jwp6a6tRKvuBSdSzRtmUyba0YUjjOBDtwsqQ2dLJa7vLN1KxfDHth/zbgv6UyQW6Mn2xX9KtC6jv5vvwXt1pSvP8Kc6TU0oru//L+6af0W+GGOs2Gmvq3v/F34wpu/9rxpFdhCez7MH+r2561U8x+7+mIW2G0rw7aFNIi93/xfo5I+oR+72aGeD7w6O7+aoYyNO9ov1frHux+7/Yb8TeJZlSWhP7v/6BxvvluP/r0+DbPhjwbWX3f30kMv4c7P/qbdO69n/9NwfTRX/EeLR3B20q5Bbt//o+Ybqh/V+fId2ruv/rAdDnzxGmW4ffGOz/Guz/2sM8//tQ3f+FPqLMHbSpIw99BMbi3yfbVz4yNmbB/V/35zGLsnG2f7Rxb19FSmlN7P96EHzYPi/o5jnY/xW2ycH+r3K26+09id3/xfpZ1/6vz9DYvbdgBfu/YCHf46ltBlhBbzkHWEF32mJiBayfdWEFuwdYQWms4Gl5XyxnrOAE8G3PDPi2sljB6pzPACtYOqzgGOiDpcQKXpGXowgrWBOIOcpiBa8CfT45fx9gBfIZYAUkb4AVLA1W8Aqy/bqwgh17KVZwEfiwtw+wgh7ZIZscYAXlbLcOrODtDWEFayrOY1pJrx+K2f81K+hToOH5CbYjxwSYbzogB30C1o33fxn9VGRMnea/NaHv2Eas78pnI33Z/XY8T0Y94bNX2MYms2g+exWNDTcA3fVJd9qNgoelbYM0/gZaKsps9e9AWaz+U0BjfIeJPoWx4V6yEdTvISp79sToPO4PnaL6dCBtNoLXDY5sT1+UbHVPBZclEeW0fMpWrG2asJUOEkwu8A31E9LHtJXqJ7VXd5bSroe0GygN8dgOpeE30LZRGup2mr8r/bxB1GMKfuOxYUqUNeP7xMO7+W4TfD3dSwU92jHr3o2ifsr+2W+kkMZ+A3WU/Qb2LfsN60/EopCesSij/xhhUagjJXRdYlGMcWyHMij95rm70X8RfNt9Ad82UpLnJyPHTevHJuZsaO/sCzwfnD1l/SbbLfbNjcTrRsEL25RjKmujUUGP/IaJ/nMOFoX+aDuVHf1RSmlbhFzljxCLepCwKLRdxKK+TLqXQhr7i+xh3TP6n4M+f5WwqDr8Bs9T0Q8gD9YpT8/UXADHUM5nfsD8CupiE1iU8R9LeutcBYvy4v7sYSyqot+cx6JU3Kv6AbEobFOUj+uV2bPYfi0Fghi/hvQeNsT2jD4ipTT0Eew/tjjyQudCHiTbVz4yNma5Efg+Lo9ZlI2z/aONs/2jvnPcgG3IcQPiYirmwTEb6X8LPmz/U7p5Kl3uwG9l1wC3UX3UGqDHK3VkF503YtlYLszLskM2qWzR2qaJ+QbGBWyL3lw7e2LaSvVTm+ixbcraLuPPOL6zXSvsRelnmvTWA8dttt1toqwqHrha8B0SfI1+CngNEY/s/ZL8fZjoD8jrg7Gr8VwvyjACv3GfTgv69UBj5VmZ9Poxxsox3xX5u9J3o+tT3x+h9B3rw/qOuOCQoOe22SjoETeyvm0TPbaTpV0BaSaTz/Zhe2d9dvhh3eW5RpQH+5b1az3wGiIe2ful+fsw0R/s6JfSlyvhN25Dr82xPEqHGFvFfNa+Sr+Mrk/9Wqn0C+vD+uXpS/Zw22wS9KhD1rdtosd2sjS0S5M5TnywvbPf/tfTu+nQf7UCf62s/BvPE5CXnSvkWKgOOVhvm9OZnKsgDedxR9F4gG0yJPK+Jn8fJvqXnLKQ75j8faXIP0X5Le15YGevXhvOzz4Yx4ghSsP2QJ8TqifSXxqo50lQzjMdrMTK1afdtZXdoe+L8etIX9avs+9Gm7yKeF0leKl5AMcIo4nuA+M3TPQvgj5grATt5Boq+xUly67GE+VHLG/22x25H1mZ9I4x60mmGsNUX7VF/msCvFaI8qPdcr8PJXo8ZHrTCcQrlX8eJvpzoa8uWKt5JoEyXBUo82iAfgOVwejXCX3x/ADq/zTxNPrzgefLSvK8OMDzQifWUHaK8W3Z8ZTjCWzHTZSGZedxcSPIZ9rXkXxMQz1nuYlTXh5Ti8rL442lvRPGqzfk7/sQv5K+esjrq9NFeWP76iqnfszL8g0nvfro2Qi2x1tP0TxHSvJ8uxjTVaxyMPB/ZyAeSZLeeCR72C+jz0A7PIpiEpR/JZXfxokrhT2qsd549TfWt76pxvorgILHetU2SM8+Qc2HsR85xsbx5gmUdiWkcWx1hZATO5Za3uy3dzy9m++Uwzd7fymVoyjGOy9/Zz88UxJT8Nq8CFPgdVTsD8YUlM4utj5i/VkfvbpmT9n5MOujGj+UPnKc5elN9nj6iLjUZRTbYVlNvvLRXJ6imHuE6M3Hjwbo2ecb/V1O3LNZlMGbJ1wr6DeLMq+kMmBelo12iW1y0mR3fYz+/ZH+uCbMYz+l/9hurP9eG2UPt+l1gh7bytqkTfTYvkr/N1OawpE8m421Dcub/fYC8tV143Psq43+n0ric56vbgqf83x1k7q6XPE51NVYfG4iIhbwsFelj1Oi/ApX4n7HfIclxeWaEuVqi/yI43K+VuCvyeHfPGzwMKrPNU59ymIUmP8aqs81NdZHlbkI67yf5hbK5+Dcgscho/8tzJW+G4F1ltUprD/SKmwne06fTObrnz31x4J6PXUxY0GO93Aci8HyUPdwTNtDM7mQv6b1ONleaM/cXp5/yp6YeYXCztpJb1teTWmob1Mkpy5c9PefXlz+q536FukHYyTLaO1sycdm1oWya2fsL1GO8pfcx+hfsV9ek78PE3371Lm/KqZTeuDpTdFcy8qjdIO/labw9wZ9yLLWm2lKU3hgrN54GB6O0TZ+K3+HMSWOk6jPSB9a95giPi36fV/4HfP9R6ozx0jM+wKit3qOBuiNH8cifw628lwHq1I8L6QyTBeUYT2VweifJMrgtX/2eDHhPkmvLZbZh9kiflYe/A35jyVaPw5Mop4Wt5/JU3qQPercFduTWsPwfKCy85hYqR9e3n6oVSSn7LwI8085clb3KWe1kNP0/GsVyZmuUQ7azGqSs6FGOagHB5CcjTXKwfHoEJIzIsqQ/fb8Uxd+x3EL4xCMYflsgtFPn7aQ76Scp5ozYxkxP54/ukbUg+Wdlssw/4f4agl/JM8fGa+itltLbafWULy2M/rXQdv9jdN2bNsqxliZ9LYHx/SIm/KaqMJl8TfWOYVdj4t8PF4hPltmrhhjG8h/LOmtc5XxSuHPGBPyuY7rq8mbP9ehzjaqfvi9RLepOpdpNqb8LGMG6BuvpTT0Z4yfo30fDO8oI1Qni21XOuVTcSjGbgpvYd1b7FhpfTV5bqyk8KGysRLvi1qusRKWk2Olspgr5r/GkbO6TzmrhZymsd1BrBQvp0qs9J6aYqXHwHh/NY336CtiYqX1oh4sb8MyiJU2Udup9QSv7Yz+F6cu5LvOaTu27UGstFBO/A35D2KlcKyk4o0mY6X1BXXiWEmVT8U72XNgEvfExFJ8runAJOr501jdNP51xVIqLlGxlNVvYzV5B2a6tm+eD+PYs+Bd7UvC/qqr/xQ2s1T9N1VNntt/CrOqs//Qtsr0n7LNp8I7pmF9vLgS8y9WXPlUkhMa4++jMV6taeEYz3sGjP7zMMZ/ksZ4tefF2xfQ4Dr/UNnzRt6e4uwpux/W1nHUOMR7jLDPed43IuTg/iBec7pSyMn+jgTWrVvA9zUiL9s20k+Lchg9n3FhGj6PYvRfhjWYZwX2wYXOo4TWYb/qrMM2fR4F25nPd2A+bx3W6Pq0iT9VNoH1YZtQe2tVrGj0sXtr20TP7aTsK3twXZ71U5V1qo+ycj9iX/E+YKNFvcT6sF4a/QNCL1X/W5s30f/eOrxqU28dvqhNGe/y9gh76/B17fW9b5HnqIwZXAdlGRJlNb7DRJ8ARvHI07p52nwpSeJsVs3PcM7F+0lxbnZDBC/Pl6p7Xm9wZGO5MC/L5nJavgZtS+6Tw7k225bqJ6SPaSvVT22ix7YpO1++jtJi58um80o/i+4y8WwXcSnGrJSv8nSvjnMgyv7Zb6gxTtkS+w3sW/YbjIMwPWONRv+neV/Y/At1pF+scYbKeD2UQek3Y4hGvwp8238I+LaRkjz/IudTNM5aPzZxfxraO/sCzwdnT1m/yXaLfRNzZhfblON6a6NRQY/8+MzTodAHfNcB+qPrqeyx+B2fI1JrCJne/HVeDj4Hlb3jfHk16R76NPYX2cO6Z/QvAn1+Vv5ep9/gvZ3oBzhOVWOO0jMVn+EYyvnMD5hfQV1sAhM3/mNJb52r4FaxGHWffnMeE98i5Kl+QEwc2xTlGy/vXsgm/Rq2U4xfUzh5O+mtI9sz+gj2A+gj2H9scOShj8BY/K/J9pWPjI1ZcB3yPTTfQPti+0cbZ/tHfee4AduQ4wa8E1/FPDhmI/3LwIddTG2jdNmLY7cKerz/bzPVB3V9awSvax3Z6n7PrY5sde8wlyVJwjapbNHapon5BsYFbIuqn7xv+Km2Uv3UJnpsm7K2y9+BwPGd7Rp1G++LvzgwbmM9cNxm290syorxwGLt/asLK3gT2O7UMscKPLx9gBXk5UmKfWydWEHsPsQ6sALWz9iz90VnrtdGYAVN3xmh7J/9xnLCCrbuBVjBveDb0pqwgtkBVjCftlRYwS4HK0B/1DRW8C+RWMH7asIKPg/6/I8OVlDVbwywggFWsId5/vehihWgj2gaK/iXhrCC5ztYAdv/csIK/hV82AMDrKBHdsgmB1hBOdutAyt4oCGsgOMB3tOfPS+eXPjt6kSXo1VQDqM3PQnttQphAz+FOOtZzr4g45XV7eeBuqGfUPMfjvEec/pCvl85sQ7fa6FinSTp9cvcn0dPJrINhqAcdrmth8eMO3Xcs8/udE2HZUA65mH3FWAb8Pi2XuRTc08+k7OZZGxyZGwU+ZSMDcQT20ydNbi+IP06UbdE/LZC0G8O1DcRsq8t4LtJ8FG+xvNRHFOr2ADvfGH/ou6GznTn1qfNvSt7CdmE0qvNTtmvo7IX7QXksqv2Q/+h9kfyWQbWrWlRz5b4v5XvFfAb+1h1BzvSWF7en/pnud2q/al4v7TaB3hugOfjgSfvT1U68xT4jcdir5+wPGpf42bKp+4QSsRvqn+uIlosQ/aYL1Q6Ox2Qw+2hyuCdr/XO7xXd4+XZJu4p3EC2ifEM3zl/DZUdaaeofLx/nvWb98PiPTxqvYD12+hXOfqtzgViuc4N8Dzc0W/V7k+G38ren8ZzI3V/mio7+h7+TfUP6zefA0L95jM+UwE5Sve5DGrdyfT76gBPlll2Xmp5s98OIv1W3wdjfUGZak9eW+TnO5qsDGtAl/h7FVjOmDMtRn+yo59135POawWoU9NOPuy/fYSsA+3lt/5j/MwWHpaEdZD3q78Q2umVa3VZWlyegqfBc4wHtohfkmiMcC89x/i4Os4x8tmo7B2x7ZefvvB7yMYw7zn5O9vYeTDPOjvAM0n6803jT+vmG3s3R+zY4p1pi7k32/sOjZVBxZBIz/eHG/0FYJtnNn6nfOtHClPCGHFkMumql3duKnvKxrH8HR21PuLpl8J6WW9C3ykwfnzO7HLoA163wnN5fNbl6pJlD90BzLaItsF2fLXgq2zOs3sst32zhO3+bc7YWvd3X7x7/BhHUncMK3sxuibuQF0u3yDhOFLdW6p8r7V39tuPDu0uj7pvGfuW9Qt5DYlyvCR/52/obXT0q2hcKXu3Pt/NHHsPevPfuEn2X+rzzta3Ckvie7rRF/I5efVtw6zPPkv6pcZJzPvy/J3HyR0lsRbP5orGKCuPh7UoTJV1SeF7VgZvr0H2fnbS3Q5GvzMyXqhpz9tRZdeDvW/KZA/3hbdHDtukTfTcL/h/5OWtv6jvGm0W/Pnup3904oXYPbMxZVd+V9kb2tT5ub2peT7HrNOOTM6LY89ogD40//y4aC/2ZyHs9WXE0+g/4fgDNaa+B34re0c7Y68Kj1TzB+9ugHri+eS5S31HO48f3t3+Ze9oj9V/1KEXkf7jeP5ukunFsZwX5YT0P3RH+pcd/S+al7+YeBr9V0tiX57+F8UIXozk3ctj/qbB+PzYpY7PWf+9+Lwszhur/6hDz6N4S92fjHnPzN/5/uQHSuoXzhuqxqBKhzzfy/iMil25H0PjDM9TjP6nkfEW3g+3hw+kldDnRy61P+e1NxXfev7Tu1tI+U81XrL/bOXtUYTPMLZ0dcmyx9ob2tTTabzBuS+PN1c7Mjkv2nVovDF+PDY8XLRXi2SE8CAeb+bnzsAzZr7ujTdF83XGg9Q3ldVc3puvG12f9vmopr+rVYSV8XiD/pC/l4O2wbFMLM5TNL8/MNf//tr19Xvo95RlcoH3kKA0/sNE/2d5n4xBOe3vcEQ5ftb5ye4dOz//qf0of/ZYH2VrNivz99HJhXTUs+x5GJRxSNAbv2Gi/4u8Dlndn0hjzYiQl9Ed5tC1An/38BC/DU92/zY22Us/NNlLb7L3newto6U9HNLQRvbQ5P/H9kJeY5CO9M/I6259sg/ksfxtIX8fkt9VbvEb2ijzGhK/GX3WP08hvcS6l12jzJ5Ryo+/sWzTjX2T6nax4qsX/MXkpftvLbKLqvyf8M7pu5731V8f3RT/f371yR8+67inP6Ip/sfe8qmLDjjq249uiv8nXn3f3678vWRFU/yf/PVH/f513z5pU1P8P3L+2FO/csvDXlnEn31n9iifY/ZjfgVtnn0O+q/hyW75Zt/oc5AX+nCkfxH5HLQ9y98W8tFuWZaSzz5H+eIxQZ/Z/ak12P3Fn5g9Y/z+N7yiKb14wRsufM1pn//WV5ri//0T3rjllM+u39AU/31a46/77R+/6r1N8f/2ET/6xRufM/TWpvj/7YpvP/Z9f3Lbtqb4/9t+P13zzo+3v9oU/3PO+vtb/+kzG/+5iP//A70C4ewz7AsA", + "debug_symbols": "TJ3JjvU8c6Tv5V/34nDIgb6VXjR6NAwYNtDDyjffpQwmIzb+nvj9FoMilXFUUpbOf/zjf/zP//b//vm//Mu//a9//z//+Kf//B//+G//+1/+9V//5Z//y7/++3//r//3X/793/7+1//4x+/7P/vv/67/9I89/vFP/vef+Y9/yr//rH/80/j9/Xf//Xf+/df+/rv//ut///3+Wdz/5v3vwX/td/877n/n/e+6/933v3b/e8ezO57d8eyO53c8v+P5Hc/veH7H8zue3/H8jud3PL/jxR0v7nhxx4s7Xtzx4o4Xd7y448UdL+54ecfLO17e8fKOl3e8vOPlHS/veHnHyzveueOdO96545073rnjnTveueOdO96545073vj9GkbDbFgNu8EavCEasqFHHj3y6JFHjzx65NEjjx559MijRx498uiRZ488e+TZI8+/kefvg91gDd4QDdlwLqxfw2iYDT3y6pHXN/L4wBuiIRvOha+KAKPhG3l/8I2cH+wGa/CGaMiGv5HXX+WNr6QAo2E2/I281ge7wRq+kb8V+yoLkA3fyOcPvuICjIbZsBp2gzV4QzRkQ48cPXL0yNEjf5W2v/X5Sg1gDd4QDdlwLnwFBxgNs6FHzh45e+TskbNHzh45e+TTI58e+fTIp0c+PfLpkU+PfHrk0yOfO/L8/Rq+kdcHs2E17AZr8IZoyIZz4atBQI88euTRI48eefTIo0cePfLokUePPHvk2SPPHnn2yLNHnj3y7JFnjzx75Nkjrx559cirR1498uqRV4+8euTVI68eefXIu0fePfLukXePvHvk3SPvHnn3yLtH3j2y9cjWI1uPbD2y9cjWI1uPbD2y9cjWI3uP7D2y98jeI3uP7D2y98hfDW7/IBvOha8GAaNhNqyG3WAN3tAjR48cPXL2yFWD54PZsBr+Rrb9gTV4QzRkw7nw1SBgNMyG1dAjnx759MinRz43kea5ibR+v4bRMBtWw26wBm+IhmzokUePPHrkrwYtPlgNu8EavCEasuFc+GoQMBp65Nkjzx559sizR/5q0PKDbDgXvhoEjIbZsBp2gzV4Q4+8euTVI+8eua4n7YPZsBp2gzV4QzRkw7nw1SCgR7Ye2Xpk65GtR7Ye2Xpk65GtR/Ye2Xtk75G9R/Ye2Xtk75G9R/Ye2Xvk6JGjR44eOXrk6JGjR44eOXrk6JGjR84eOXvk7JGzR84eOXvk7JGzR84eOXvk0yOfHvn0yKdHPj3y6ZFPj3x65NMjnzvy/v0aRsNsWA27wRq8IRqyoUcePfLokUePPHrk0SOPHnn0yKNHHj3y6JFnjzx75Nkjzx559sizR5498uyRZ488e+TVI68eefXIq0dePfLqkVePvHrk1SOvHnn3yF2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQN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uIibaEQnBjGJdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3RjlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhllS/4PhepjSqY7BxETfRiE4MYhLPxVkNhI2DOImLuInlhleUODGISTwPK0suDuIkLuIm0m3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk63ypJhhUZ0YrllYRLPw8qSi4M4iYu4iUZ0It2CbkG3pFvSLemWdEu6Jd2Sbkm3pFvS7dDt0O3Q7dDt0O3Q7dDt0O3Q7Tw3vDHs4iBO4iJuohGdGMQk0m3QbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk43p5vTzenGLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsqWbM8b25dFY3ZuMmGtGJQUzieVhZcnEQ6bbptum26VZZMmdhEJN4HlaWXBzESVzETTQi3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3ZJuh26Hboduh26Hboduh26Hbodu57lVQ2fjIE7iIm6iEZ0YxCTSbdBt0G3QbdBt0G3QbdBt0G3QbdBt0q2y5Hvn76w2z8ZFLLdTaEQnBjGJ52FlycVBnMRFpNui26Lbotui26Lbptum26bbptum26bbptum26bbppvRzehmdDO6Gd2MbkY3o5vRzejmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3pNuh26Hboduh26Hboduh26Hbodt5bvb7EQdxEhdxE43oxCAmkW6DboNug26DboNug26DboNug26DbpNuk26TbpNuzBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzBL0vX7fcDLR93rxPKwsuTiIk7iIm2hEJ9Jt0m3SbdGtsmR54SQu4iYa0YlBTOJ5WFlykW6bbptum26bbptum26bbptuRrfKkmWFk7iIm2hEJwYxiedhZclFujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbeW7oe704iJO4iJtoRCcGMYl0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023QzujFLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6zBH2vKz5ElgAHcRIXcRON6MQgJpFum26bbptum26bbptum26bbptum25GN6Ob0c3oZnQzuhndjG5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdkm6VJfVld+h7vTiJn1t9dxn6Xi8a0YlBTOK5uND3enEQJ3ERN9GITgxiEuk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26WZ0M7oZ3YxuRjejm9HN6GZ0M7o53ZxuTjenm9PN6eZ0c7o53ZxuQbegW9At6BZ0C7oF3YJuQbegW9It6ZZ0S7ol3ZJuSbekW9It6Xboduh26Hboduh26Hboduh26MYsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLB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" }, { "name": "lock_private_solver", @@ -4663,7 +4717,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -4719,7 +4773,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -4748,7 +4802,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -4942,7 +4996,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -5293,351 +5347,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" } }, { - "name": "is_static_call", + "name": "start_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } - } - ] - } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "end_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -5646,30 +5799,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -5726,26 +5875,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -5754,53 +5918,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -5809,50 +6000,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -5861,17 +6061,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -5894,7 +6094,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -5950,7 +6150,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -5979,7 +6179,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -6173,7 +6373,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -6308,45 +6508,40 @@ "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "285656119219400463": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "Field failed to decompose into specified 32 limbs" }, - "2709101749560550278": { + "576755928210959028": { "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." + "string": "0 has a square root; you cannot claim it is not square" }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3095323350861740601": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ + "kind": "field" + }, { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } ] }, + "2920182694213909827": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3206131020419630384": { + "error_kind": "fmtstring", + "length": 75, + "item_types": [] + }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -6355,6 +6550,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -6363,29 +6562,6 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6418028854678020178": { "error_kind": "string", "string": "FundsNotSent" @@ -6402,45 +6578,84 @@ "error_kind": "string", "string": "Invalid public keys hint for address" }, - "11418088424205762236": { + "10090043878309646342": { "error_kind": "fmtstring", - "length": 98, + "length": 101, "item_types": [] }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "10676044680617262041": { + "error_kind": "fmtstring", + "length": 98, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -6456,13 +6671,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -6471,52 +6682,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "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ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnlvmuWWeW+a5ZZ5b5rllnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnnvmuWeee+a5Z5575rlnnkfxV/UgTbIkT6pJbVLkeaeSREmclBqcGpwanBqR5zWoTYo871SSKImTJEmTLMmTUkNSQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1PDUsNSw1LDUsNSw1LDUsNSw1LDUsNTw1PDU8NTw1PDU8NTw1PDU8NTo6ZGTY2aGjU1amrU1KipUVOjpkZNjZYaLTVaarTUaKnRUqOlRkuNlhp3njf6h/uT3yupJD00mgRxkiRpkiV5Uk1qk+48H1SSUqOkRkmNkholNUpqlNQoqUGpQalBqUGpQalBqUGpQalBqUGpwanBqcGpwanBqcGpwanBqcGpwakhqSGpIakhqSGpIakhqSGpIakhqaGpoamhqaGpoamhqaGpoamhqaGpYalhqWGpYalhqWGpYalhqWGpYanhqeGp4anhqeGp4anhqeGp4anhqVFTo6ZGTY2aGjU1amrU1KipUVOjpkZLjZYaLTVaarTUaKnRUqOlRkuNNjWiWG1QSaIkTpIkTbIkT6pJqZF53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53jLPW+Z5yzxvmect87xlnrfM85Z53mae0zXznK6Z53TNPKdr5jldM8/pmnlO18xzumae0zXznK4rNUpqlNQoqVFSo6RGSY2SGiU1SmqU1KDUoNSg1KDUoNSg1KDUoNSg1KDU4NTg1ODU4NTg1ODU4NTg1ODU4NSQ1JDUkNSQ1JDUkNSQ1JDUkNSQ1NDU0NTQ1NDU0NTQ1NDU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avSq0atGrxq9aok3ub70qtGrRq9a4k289KrRq0avGr1q9KrRq0avGuerxvmq0atGrxq9apyvGuerRq8avWr0qtGrRq8avWr0qg28g+tLrxq9avSqDbwDL71q9KrRq0avGr1q9KrRqzbxTq4vvWr0qtGrNvEuvPSq0atGrxq9avSq0atGr9rCu+717fSq06tOr/rnevsn4QZ3eMATvuvt9KrTq17wlgon3OAO4y146VWnV51edXrV6VWnV51e9cAbA54w+0yvesVb8dKrTq86ver0qtOrTq86veqJN7m+9KrTq06veuJNvPSq06tOrzq96vSq06tOr3rD27i+9KrTq06vOp8HO58HO73q9KrTq06vOr3q9KrTq97xdq4vver0qtOrzufBPvDSq06vOr3q9KrTq06vOr3qE+/k+tKrTq86vep8HuwTL73q9KrTq06vOr3q9KrTq77wLq4vver0atCrwefB8Qm4wgk3uMMDnvBd7yh4S4EDrnDCeAteejXo1aBXg14NejXo1aBXI/BGgzs84AnjrXjp1aBXg14NejXo1aBXg16NirdyfenVoFeDXg0+D47ES68GvRr0atCrQa8GvRr0ajS8jetLrwa9GvRq8Hlw0KvB+Wpwvhr0avB5cHS83L8a9GrQq0GvBuer8fTqe+/0jH6fe25n9vvlgCuccIM7POAJ3/uEZwj8ZbwT78Q78U68E+/EO/FOvAvvwrvwLrwL78K78C68C++63jMY/nKBA67wvb6T+1eT+1eTXk16NenV5Hw1OV9NejXp1aRXk15NejXp1aRXk15NejXp1Qy8gZdeTXo16dXk8+Dk/tWkV5NeTXo16dWkV5NeTXo1K9464Anfn99JryafByf3rya9mvRq0qtJrya9mvRq0qvZ8LYCs8/0atKryefByf2rSa9mw8v5anK+mvRqcr6anK8mvZrcb5/cb5+dfeZ8Nfk8OLl/Nbl/NbnfPjlfTc5Xk/PV5Hw1OV9N7rfPwfWd7PNknzlfTT4PTu5fTe5fTe63T85Xk/PV5Hw1OV9NzleT++1zcX0X+7zYZ85Xk8+Dk/tXk/tXi/vti/PV4ny1OF8tzleL89WiV+sz4AnffV6crxa9Wty/Wty/WtxvX/Rq0atFrxa9WvRqcb99RYEDrnDCeLl/tejVoleLXi16tejVoleLXi3ut6/aYPaZXi16tfg8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+/cMxDPf/vD2zv2aT68e3t55nnPC6/Lp1dr7cHr18NfbPtu7e/Vywg3um2PzgCe8Nn9f85lv/zkdbS7w8c7NFd7e73+oOc58+8sd3t7v35kQZ7795e39/mfZ48y3v1zg7Y392navXt7e2K9t9+rl7f3+lyHizLe/POHt/f5N53Hm21/e3v3ePvPtLfdr2L16OeHtzf16dq9e3t48zznhdXn3qu33/Jlvf3l79/v5zLe/nPD29v06d69e3t6+93b36uXt7Xvtu1cvb2/fz7l79XKFt3fs59+9enl798/FmW9/ecLbO/d7YPfq5e2d+7XtXr28vWvv7e7Vyw3e3rX3effq5e1d27t71T/7OXev+nlv7169jwdc4YQb3OHBc04eX/fx8bmPD7wD76h8Pd6Bd+AdA558L+udeCfeGffrJ+udyeN4Z+dxvJP1TryLfV54F96Fd+FdeBfrXXgX613Xe+bbXy6/v+bMt7+PVx5PHm883nl8wBPGW/AWvAVvqTDegrfgLYPH8Ra8gTcKfPf5zLe/jyePNx7HG3gDb+CteCveynor3sp6K95631dnvv19HG+9P0dnvv15PPEm3uT6Jt5kn5P1Jt6cfA3rbff9fObb38fZ58Z6G97GehvehrfhpVezs97O+4peTXo16dWkV5NezY634+146dWkV5NeTXo16dWkV3NwfenVpFeTXk16NSfrnXgn3omXXk16NenVnHjp1Vx4F96Fl17NhZdeTXo16dVcvJ/XfT8verXo1aJX61PhhBvc4QFPGC+9WqXAwdfgpVeLXi16tejVoleLXi16tejVCtYb9/quwEuvVnS+hvXG5HG89f78Lnq16NWqeOnVolerst7KeunVqngTL71a9Gol+0yvVuKlVyvxJt7k+jb2mV6threxXnq1GteXXq2Gt+FteOnVoleLXi16tXryNayXXi16tThfLXq1BvtMrxa9WgPvwEuvFuerRa/WwEuv1sTL+Wpxvlqcrxbnq0WvFr1a9Gpxvlr0anG+WpyvFuerRa8WvVqL60uv1uL60qt1e1U/t1f18ylwwJWvTx5vcOdrBo9PHl/38fK5jxe8Be/tVf0UvAVvwVvw3l7VT8EbeANv4A28gTca39t5HG+w3sBb2eeKt+KteGve56mst7LeirfirXiT9SbeDB7Hm6w38SbrTbyJN/E2vA1vw9vwNtbb8DbW2/A2rm/j/dzZ54634+14O96Ot7Pejrez3s56B96Bd+AdeAfegXew3oF34B14J/v89KptPt6++Xjn5oQb3OEBT3hdfnp1uMAB4114F96Fd+FdeNf1ls8HLnDAFU64wR0e8ISPd3356dXhAge8veWzOWG8BW/BW/AW1husN1hvsN5gvcF6A2/gDbyBN/BWvBVvxVvxVrwVb8Vb8Va8FW+yz8k+J/v89Oow+3x69TDexJt4E29jvY31NtbbWG9jvY31NrwNb8Pb8Ha8HW/H2/F2vB1vx9vxdrwd72CfB/s82OfBPg/2ebDPA+/AO/AOvJP1TtY7WS+9KvSq0KtCrwq9KvSq0KtCrwq9KvSq0KtCrwq9KvSq0KtCr8q63YjPBy5wwLcbZ7795esNehX0KuhVfO56o3zgAgdc4YTx0qugV0Gvgl4FvQp6FfQq6FXQq6BXQa/i6dXeq6dXh9nnyj6fXp09PL16GC+9CnoV9CroVdCroFeRrDdZb7LexJt4Ey+9CnoV9CroVdCroFdBr4JexdOrvT9Prw53mH0+vTr7dnp1mF4FvQp6FfQq6FXQq6BXQa+CXgW9ioF34B14B96Bd+ClV0Gvgl4FvYrJ+2ry8zv5+Z0V5ud3NhgvvQp6FfQq6FXQq6BXQa+CXgW9CnoV9CroVXC+qpyvKueryvmqcr6qnK/q576v6qfDA57wfV+d+faX8dKrSq8qvar0qtKrSq8qvar0qtKrSq8qvar0qtKrSq8qvaqcryrnq0qvKr2qtcAB3/9fOPPtL+OlV5VeVXpV6VWlV5VeVXpV6VWlV5VeVXpV6VWlV5VeVXpV6VVtrLdVOGHeV6dXZx9Orx7Gy/mq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKr+pgvYP1Dn6OBj9H4/b5zLc/zPmqcr6qnK8q56vK+apyvqr0qtKrSq8qvar0qtKrSq8qvar0qi7Wu1jvYr2Lbqy73jPf/vL1Jr1KepX0KjlfJeer5HyVnK+S81Vyvkp6lfQq6VXSqyx3vVk6POAJs95gvfQq6VXSq6RXSa+SXiW9SnqVfB5MPg8mnweTz4PJ+SrrfT9nZb2V9VbWW+/7+cy3P0yvkl4lvUp6lfQq6VXSq6RXSa+SXiW9SnqV9CrpVdKrpFdJr5JeJb1KepX0KulV0qukV0mvkl4lvUp6lfQq+/3/o+TzYPJ5MPk8eObbn9fP58HkfJWcr5LzVXK+Ss5XSa+SXiW9SnqV9Con+zx5X03eV5Ofo8n7avFzRK+SXiW9SnqVnK+S81VyvkrOV8n5qvF5sPF5sPF5sH0qfPf5zLe/3HnOAU8YL71q9KrRq0avWrnv50avGr1q9OrMtz+vjV41zleNXjV61ehVo1eNXjV61fg82Pg82DhfNc5Xjc+Djc+DjV41Pg82zleN81XjfNU4X7WKl/tXjftXjftXZ779eQ3cv2r0qtGrRq8avWr0qjW8DS+9avTqzLc/3sb7ivtXjftXjV41etU63o634+14O96Ol141etXoVaNXjV41etXoVaNXjV41etXoVeN81Qbvq4GXz4Nnvv15zsn7il61yc8RvWr0qtGrM9/+Pg8/RwvvYr2L9S72ebHexT6fXpW2ecATXr+5P+ervrnAZ71r8/Z+/9tY9cy3v9zg7Y26ecDbG+c51+XTq4cLvL0xN1d4e79znvXMt7/c4e2t+zWfXj28vd+Zz3rm21/e3u/MZz3z7S9vb+7nPL16uMHbm/v5T68e3t62X/Pp1eHTq4e39zvzWc98+8vb2/drO716eHvH3ufTq4cHvL1j7/np1eHTq7Ff8+nVw9s79ms+vXp4e+f2nl493OHtnXuvTq8e3t61vadXDxc44O1d+314evVwg7d37dd8erX26zy9evjrHZ+9D7tXL5fN+7XtXr1c4dy833u7Vy9/veP8jOxevTzh7S37te1evby952dn9+rl7T3v592rlxu8vXW/H3avXt7euvd/9+rh3auXt7fude1evVzh7a3btXv18vae9//u1Tjv892rl9fl3auXCxxwhRNucIfxLrzres98+8sFDrjCCTe4wwOeMN6Ct+AteAvegrfgLXgL3oK34A28gTeOd22ucMLb2z6bOzzgCa/L9XOfpxYY7+7V+/UJ4614K96Kt+JNvIk38SbrTdabeBNv4k28iXf36uUCB8x6G97W4A4PeMJ4O96Ot+PteDv73FlvZ72d9Xa8p1eHB/s82OfBPg+8A+/AO/AOvIN9Hqx3st7JeifeyfWd7PNknyf7PPFOvBPvwrvwLvZ5sd7FehfrXXgX13exz+vu8/x84Os98+0vVzjhBnd4wBO+650FbylwwBVOGG/BW/AWvAVvfGDWG6w3WC+9OvPtL3d4wBPGW/FWvBUvvZr0atKrSa8mvTrz7Y+3cn3p1aRXk16d+fbneRIvvZr0atKrSa8mvZr0atKrM9/+eBvXl15NejXp1Zlvf58HL72a9GrSq0mvJr2a9GrSqzPf/ng715deTXo16dWZb3+eZ+ClV5NeTXo16dWkV5NeTXp15tsf7+T60qtJrya9OvPt7/PgpVeTXk16NenVpFeTXk16NRfexfWlV5NeTXp15tvP85z59pcLHHCFE25whwd8vetzr++iV4teLXp15tuf5yl46dWiV4teLXq16NWiV4teLc5Xi/PVoleLXi16tThfLc5Xi14terXo1aJXi14terXo1Zlvf7x1wOwzvVr06sy3P8+TeOnVoleLXi16tejVoleLXp359sfbuL70atGrRa/OfPv7PHjp1aJXi14terXo1aJXi16d+fbH27m+9GrRq0Wvznz78zwDL71a9GrRq0WvFr1a9GrRqzPf/ngH15deLXq16NWZb3+eZ+KlV4teLXq16NWiV4teLXq1Ft7F9aVXi14tenXm29/nwXt7lZ/bq/zcXuXn9io/t1f5ub3Kz+1Vfj6/vfn5DHjC6/LtVZ759ud5Ct6Ct+AteG+v8nN7lZ/bq/wU1ht4o8ABVzhhvIE38AbewFvZ58p6K+utrLfirQ1mnyv7XNnnijfxJt7Em3iTfU7Wm6w3WW/iTa5vY58b+9zY54a34W14G96Gt7HPjfV21ttZb8fbub6dfe7sc2efO96Ot+MdeAfewT4P1jtY72C9A+/g+g72ebDPk32eeCfeiXfinXgn+zxZ72S9k/UuvIvru9jnxT4v9nnhXXgX3oWXXhV6VehVoVeFXpXP9ZZPgzs84AnjLXjpVaFXhV4VelXoVaFXhV6Vgrfc61voVaFXhV6VwEuvSrDeYL30qgTewFvx0qtCrwq9KpX1Puer2HzWOzYPeMJnn+eXn14d3t6+n+f06uHt7bk54e3t+zlPrx4e8Pb2va7Tq8OnV2N7T68eDrjC2zv3ek+vHu7w9s79mk+v5n6dp1eHT6++fy9Knvn2l7d37td2evVwwtv7/XtR8sy3v/z1zs9+DbtXL6/Lu1fzs1/b7tXLsXm/tt2rl7/e+f17S364wR3e3u+9/Tzz7S9vb9n7tnv1c5djc4ED3t7Yr2f36uXtjf2cu1cvD3h7Y1/r3auHd69+7k5sLnDA21v369y9enl7c+/t7tXL25t77btXL2/v9+/2yTPf/nKBtzfn5gpv7/65OPPtL3d4e9vaPOHt7d/XdubbX97e799bkme+/eUKb++IzQ3e3u/vwvLMt7+8vSM3r8u7Vy8XOOAKJ9zgDg8Yb+CteCveirfirXgr3oq34q14K97Em3gTb+JNvIk38SbexJt4G96Gt+FteBvehrfhbXgb3oa34+14O96Ot+PteDvejrfj7XgH3oF34B14B96Bd+AdeAfegXfinXhPr8b+uTu9ejjhBnd4wBNel0+vHi7w9u7/7zjz7S9v79w/m6dXD3e+ZsCTr1m/+cy3n6858+0vH2/fXHk84cbzdHjwNRPGe3r1MN4ScL2voeA9vXoY7+nVw3hPrw4H3tOrh/EG6z29Oq8h8EaH8caE8Vb2ueI9vXoYb2W9p1fnNVS8lX2ueCv7nHiTfU68p1cP403We3p1XkPiTfY58Tb2ueFt7HPD2xLG21jv6dV5DQ1vY5873s4+d7ydfe54O+/njrez3tOr8xo63sE+D7yDfR54B/s88A7ezwPvYL2nV+c1nF49vL3rszngCifc4A4PeHu/fxdZnvn2h0+vHi5wwBVOuMEdHjDe06vvTEue+faXC3y8c/PXu74zLXnm219ucIcHPDfn5rX5u7dnvv3lAgdc4YQb3OHt/c6h5Zlvf3l7y3ftZ7795+795gIHXOGEG9zhAU94Xa7HuzYXOOAKJ9zgDg94wuty4k28iTfxJt7Em3gTb+JNvA1vw9vwNrwNb8Pb8Da8DW/D2/F2vB1vx9vxdrwdb8fb8Xa8A+/AO/AOvAPvwDvwDry7V+s705hnvv3ntzZf3r16ucABVzjhBnd4wBPGu/AuvAvvwrvwLrwL78K78K7rPfPtLxc44Aon3OAOD3jCeAvegrfgLXhPr2rd3OAOH29unvC6fHr1cIHjPs/p1cN4T6+er+8w3sAbeCveirfirXgr3sp6K+uteCveijfxJt7Tq4crnDDrTbynVw9PeF0+vXoYb8Pb8Da8DW9jnxvrbay3sd6O9/TqYfa5s8+dfe54O96Ot+PteAf7PFjvYL2D9Q68g+s72OfBPg/2eeCdeCfeiXfinezzZL2T9U7WO/FOru9inxf7vNjnhXfhXXgX3oV3sc/rrrd/PnCBr7d/Kpxwgzs8eJ4J4y14C94ScIUTbjDeMuAJ333u8YHxBt7AG3jpVadXnV51etXpVa94a4HZZ3rV6VWveCteetXpVadXnV51etXpVadXPfEm15dedXrV6VVPvA0vver0qtOrTq86ver0qtOr3vA2ri+96vSq06ve8Xa89KrTq06vOr3q9KrTq06v+sA7uL70qtOrTq/6wDvw0qtOrzq96vSq06tOrzq96hPv5PrSq06vOr3qC+/CS686ver0qtOrTq86ver0anyud3wKHHCFE248T4cHPGG89GrQq0GvBr0anK8G56tBrwa9GvRqcL4anK8GvRr0atCrQa8GvRr0atCrEXjjXt9Brwa9GvRqVLwVL70a9GrQq0GvBr0a9GrQq5F4k+tLrwa9GvRqJN7ES68GvRr0atCrQa8GvRr0ajS8jetLrwa9GvRqdLwdL70a9GrQq0GvBr0a9GrQqzHwDq4vvRr0atCrMfAOvPRq0KtBrwa9GvRq0KtBr8bEO7m+9GrQq0GvxsS78NKrQa8GvRr0atCrQa8GvRoL77rXd9KrSa8mvZqf652fhBvc4QFP+K530qtJr2bBWyqccIM7jJfPg5NeTXo16dWkV5NeTXo16dUMvDHgCbPP9GryeXBWvPRq0qtJrya9mvRq0qtJr2biTa4vvZr0atKryefBmXjp1aRXk15NejXp1aRXk17NhrdxfenVpFeTXk0+D86Ol15NejXp1aRXk15NejXp1ex4O9eXXk16NenV5PPgHHjp1aRXk15NejXp1aRXk17NiXdyfenVpFeTXk0+D86Jl15NejXp1aRXk15NejXp1Vx4F9eXXk16tejV4vPg+gRc4YQb3OEBT/iudxW8pcABVzhhvPRqcb5anK8WvVp8HlyBl/tXi14terXo1eJ8tZ5e9c3b+/3z1Hnm2x8+vdrzJGe+/eWAK5xwgzs84Amvy4k38SbexJt4E2/iTbyJN/E2vA1vw9vwNrwNb8Pb8Da8DW/H2/F2vB1vx3t6ted2znz7ywOe8Lp8evVwgQOucMLb2/ZrOL16eHv33N2Zb3953a85vXq43K85vXq48jUJH2/bjPf06mG8p1eHF97Tq4fxnl49jHex3tOr8xoW3tOrh39725lvf/m3t5359pcrX5Nw42s6PN7X0M58+/v4ulzwlgLjLRXGe3r1MN4y4HlfQ8EbHxhvBIw3EsZ7evUw3mC9p1fnNVS8lX2ueCv7XPFW9rnirQPGW1nv6dV5DYk32efEm+xz4k32OfHmhPE21nt6dV5Dw9vY54a3sc8Nb2OfG97G+7nj7az39Oq8htOrh493bW5whwc84XX59Orh7f3OFrYz3/5yhRNucIcHPOF1+fTqYbynV71vrnDCxzs2b+931rGd+faXJ7wun149vL1j7/Pp1dh7e3r1cMIN7vCAJ7x+85lvX99Zr3bm21/e3u9/P66d+fb1nQlpZ779p7qbG9zhAU94XT69erjAAVcYb8Fb8Ba8BW/BG3gDb+ANvIE38AbewBt4A2/FW/FWvBVvxVvxVrwVb8Vb8SbexJt4E2/iTbyJN/Em3sTb8Da8p1ffuZp25tvX2u+r06uHG9zhAU94XT69erjAAePteDvejrfj7Xg73oF34B14B96Bd+AdeAfegffbq/h89s/mt1e/ucABVzjhBnd4wBPGu/AuvAvvwrvwLrwL78K78K7r3fPtv7nAAVc44QZ3eMATxlvwFrwFb8Fb8Ba8BW/BW/AWvIE38AbewBt4A2/gDbyBN/BWvBVvxVvxVrwVb8Vb8Va8FW/iTbyJN/Em3sSbeBNv4k28DW/D2/A2vA1vw9vwNrwNb8Pb8Xa8HW/H2/F2vB1vx9vxdrwD78A78A68A+/AO/AOvAMvvQp6FfQq6FXQq6BXQa+CXgW9CnoV9CroVdCroFdBr4JeBb0KehX0KuhV0KtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qtKryq9qvSq0qukV0mvkl4lvUp6lfQq6VXSq6RXSa+SXiW9SnqV9CrpVdKrpFdJr5JeJb1KepX0KulV0qukV0mvkl4lvUp6lfQq6VXSq6RXSa+SXiW9SnqV9CrpVdKrpFdJr5JeJb1KepX0KulV0qukV0mvkl4lvUp6lfQq6VXSq6RXSa+SXiW9SnqV9CrpVdKrpFdJr5JeJb1KepX0KulV0qukV0mvkl4lvUp6lfQq6VXSq6RXSa+SXiW9SnqV9CrpVdKrpFdJr5JeJb1KepX0KulV0qukV0mvkl7l06vv/YR2evX9cyutnV59/2x4a6dXD2/v9890t3Z69fD2xtrc4QFvbz3Ps731e9+snV49vL3f36+1dnr18PbW+fdff/jf//y3P//zv/zlT//rD//tP3/+8X/8x7/+8d///Nd/ff7x3//Pv73/5l/+9ue//OXP//Of/u1vf/3jn/77f/ztT//0l7/+8fvv/vB5/ucf5s//Mf76+aX/5x9//eHH/A/r+9cU/9x27D//XPe//7kV+/NF7fvvv9/Qfz6Z/vr5n/l9YH/Hd2N+/qf949/3U/zn/r4avzLe72nlV+vffx3ff70fivIr9kP190Ol/4ryfSjfJ4n5q873STJ/5fr+6/b/fke/z5u/Yn/VuA+NXzW+D837jetX5Peh9e7Dz2fOXz+fvZ5V9/lr/BbHV/Pjedb780n45x/HXu3vbfz5ePPjzefb2+dX//z+9p8NjPOP+9v7d+V1f3t5v/3nzt2vnztYz7f/3Lf89XMP8X2Cn1uIP//4e79/7m79fO3euxL/1SeovxeQP4vs4/dmj18t7kuev34+4+1vyLuH42cb9mPt/3/Ry706/Wdj2vu0c/yaP5fq73//x7//Xw==", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "notify_created_nullifier_oracle_wrapper", - "notify_created_note_oracle_wrapper", - "random", - "decompose_hint", - "lte_hint", - "field_less_than", - "build_msg_block", - "attach_len_to_msg_block", - "get_random_bytes", - "get_random_bytes", - "get_app_tag_as_sender", - "increment_app_tagging_secret_index_as_sender_wrapper", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "AAAAAAAEAAAAAAAAAAAAEgAAAAAAAAAQAAAAAAAAVgkAAAAA//////////8AJo0brSz14UV3dMY4\n8F04kbq5kkpqD001snSvTKLiIKIKeHaViRvCUF71juxRM7VUgxsC/U2LH8+y8ybo8F7/ERoc973N\nV7iaukQyzsgx4xBuZia9jJsUwDMl+Mc5ZBEcB8X5LMQG+eIlL5Tout1luofK3XHDKiVrtIuUYShF\ngKECBf2+LdiSy0uEv1ytNkHfsKruYL0KQhgRpJ9NwOEeABGU1ku1LtYo1zF35V2w4R82h3ALh3Ev\n2tWIVaLJZtjMDBzMXnaimxDSjTYrXRbmp3b/HhRBPSjMnD6TqcXRGD0bLtoVpAVgcYDSn+4wsrz3\nPhDjkkCFat4MYmqfFPdrtCg2wijvmP3VUC82IUBGN3bXZVnEmTq4mKPeBbTPGhUDBwN+8wT36vXd\nIdSHetxxnw7hJcpApj7GdpxBj30kRGQS/g+4Vmey2GJjuPdagF3tW3GHPCiac/dBzeAf2aoIxgWt\nh8dZS7n3uVmmako1bGUTrCOUe33uDx/SBfsFlhFKEabVvIpfVK1Cmo0sICvRD9kVavxZhNfishhT\njnOjarMEaHGye2msWK1jh5dtDtpyAx4+e0Dduaitynb2eIOYxRh/VfVGtLRhV/a+BFuVRaXoytaQ\noB//6iBpJJwKMw7rLrj+HbyrMZ0B+GxjgUpZfwUg5X3FTj7CJv4+zvYKIRkG+SadW++twNlEKHtl\naZGtTPESghG0X2RTbkE/o8tHHxW0kPWdfcen+onf8PUWnQ82y/KXNNwwKxZ7GPRVHn05DU8eLJbD\nM/SF79iPTyhmw/oigQHswj9CrIPktuZd+HIXAKDvRdQ10wK6dGH53CBRYARQ4NnTrnUBQY8W6GlJ\nnB96I4J44CbLcGUqbPF3gYIrtHtc2dALZ18OHjbA653SF8a3h6WDJVqLyibRsYBgNNr8vLQdXghY\neO2tMPNmi/srymGJA934yEhPlQWxaMvG1LFkkoo8SCziPyiv4dgr6gzoSLgDKRC2WBAskfLbk77p\nmxuWvmwv9ro4pu+MSZKlAlrlnB+NLoom/p2jSKRqYr4EDm70EqpL9lLU3HD9dSQvtIcftX0sD4E6\nrvAHhtKljWQ6Go00n4uO4OhElAR7iBKdOT8Pg0eBFV4XwUBf8FyllLjWWuPekwpGMYESKSjaFZfi\nYOHwudc+dkUpD2RqLXtYvmcJD9s0vGjNta6CxpkuQSPsRGWQdeEPYMeW2GjQ6s4cNBVSCz0H4Aa6\nNNSFICKrbIxhLSHCFAqS5/xCbLHPQzpRYHpchgpDSTvIHMv/JSKpN9dSqpQPXNdPA59ab4l2t3IL\nAiibPvlyH1eirXoH3t7c1WiCMKrbgaybg2AmJASYIUPDNhhY62eI1/doXifCQ1aBMgS6yxiPnBvS\nc7TdEq1C92ERWSkMKr0EmT4sE1tG592tg9WErfoRrNylWwP0fHrq5+d8rZPv4U/VK1UJk5zv0lZn\nQ3Ly1lCn9/RF2Noc7g2FMsi7uBGkcIIAfiwrKYSIiL0rHx/ZxaheY4dxq2fFZPq1bcYY99PSXCVz\nGT9JF+lH0cLqRxftWDR00sWVEer3E4tchWpH3UEOPPwupaIoSDSrZC4hR2UgeC1kRFOwi/6JpZ92\nMIZ+S0lQbh8iql6emforzVu8JYvNvCfU+HHL9IBnewZTz1XeurInFbqAe12qtRxqJmNdtiC6wmIX\no2dTGuYHQDJ63DtV8wIFe8kGSi7Qy4+19I5QdT8f0vt2ygANYOnqJJWV1aacthcHyJohE2ZswGbf\nQwEl70FGKxJQytBqZrmEes5tW0qJBIEI/qpmwYZPclDUVnOK3L2e25CyPUHKF8Y5rqOhLPQB1o3e\nrp39lipnVkiwPUg71RLRVvTdLyF6Lp9quAC4RAtaDT7C5fKzBDrVkn917iJOe4uwdsAdnRXmldtJ\nYoR5L0k+SqJepx+Q/5V+KqqeomSYTxXLfqssT2ml2Ailb00MDfwyFqfkTkJc7/GGGfQrfw/rg2SO\nEbH+DYvGtgxvIQt+Bww1reRIgasMq+ppQb4/zeTE4IFhvnl5SCKu+7P2F0xNqsxv6+gtiDGpBETv\nEX32GkvxinRGtU2OzdDlJyENPQ9wXJw7Qm4veGR5CujPFMTyBusHozGX/1z2u6wLrwcDm+cLVXtv\nDU1Z+xKAoZlYPQqQ5tVT5L1kSbWO9QehChGFSw0wrqddreiukl/tbL8F77PitlsEvecaM00v6zMA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAACGvY2L6d3RK8HL4R0WW7VYQI1hvTSVN0eiPnGFPfys18urTPBDHNgj/ZwHhjaE41hGGLI\nWfrR9k0O1WcFP5hKdADENyb3W2/aDeIs4ODfq2vMegX/lalrKJQkxfczZw2WL5tuC04sAZaN5cMk\ngqp9HQoJ1xeOyTuteFj5bmTwtI0dWKphxkrVIgQ9ecSAIhnlW6GXUa3+bDYyTT+2wtoJiS18GKk8\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "TJ3JjjTNjlzf5a61SB9Ip/eraCFoRgONbkDDqqF3VwXNSbPNrWP//cqPx0BmZKRX5L//47/99//yf//nf/rnf/0f//a///FP//Hf//Ff/tc//8u//PP//E//8m//9T//n3/+t3/9+6///o/f9z9j/+Of1pz+//7DP8aX9/rHP43/8I+98cPww/Hj4Efgx80f9sOPgR8TPzCKYRTDKIZRDKMYRjGM4hjFMYpjFMcojlEcozhGcYziGMUxysEoB6McjHIwysEoB6McjHIwysEoB6MERgmMEhglMEpglMAogVECowRGCYxyMcrFKBejXIxyMcrFKBejXIxyMcrFKOP3ez/H+znfz/V+7vfT3k9/P8/7Ge/nG2+88cYbb7zxxhtvvPHGG2+88cYbb7zxxhtv/o1n38/xfs73c72f+/2099Pfz/N+xvt58XO98dYbb/2N59/P9X7u99PeT38/z/sZ7+ffePfv5/62d30wCmbBKtgFVvBt9fngFETBfZAnfnwwCmbBN/K3d7IAEqzgb+S5PzgFUXAffMUAGAWzYBXsAiuokb1G9hrZa+SvQOa3e74SAcyCVbALrMALTkEU3AdRI0eNHDVy1MhRI0eNHDVy1MhRI0eNfGvkWyPfGvnWyLdGvjXyrZFvjfwV1vyOzldaH8yvtgCjYBasgl1gBV5wCqKgRh418qiRR408auRRI48aedTIo0YeNfKokWeNPGvkWSPPGnnWyLNGnjXyrJFnjTxr5FUjrxp51cirRl418qqRV428auRVI68aedfIu0beNfKukXeNvGvkXSPvGnnXyLtGthrZamSrka1GthrZamSrka1GthrZamSvkb1G9hrZa+SvBtf4wAq84BREwX3w1SBgFMyCVVAjnxr51MinRv5qcO0P7oOvBgHfyPeDWbAKdoEVeMEpiIL74KtBQI18a+RbI98a+b6ONK8XnIIoeB1p/X4Fo2AWrIJdYAVecAqi4G/kPf/gq0HAKJgFq2AXWIEXnIIoqJFnjTxr5Fkjzxr5q8G9PrACLzgFUXAffDUIGAWzYBXUyKtGXjXyqpG/GrTfB/fBV4OAUTALVsEusAIvOAU18q6RrUa2GtlqZKuRrUa2GtlqZKuRrUa2GtlrZK+RvUb2GtlrZK+RvUb2GtlrZK+RT418auRTI58a+dTIp0Y+NfKpkU+NfGrkqJGjRo4aOWrkqJGjRo4aOWrkqJGjRr418q2Rb418a+RbI98a+dbIt0a+NfJ9I+/fr2AUzIJVsAuswAtOQRTUyKNGHjXyqJFHjTxq5FEjjxp51MijRh418qyRZ408a+RZI88aedbIs0aeNfKskWeNvGrkVSOvGnnVyKtGXjXyqpFXjVw1uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7anBXDe6qwV01uKsGd9XgrhrcVYO7atCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqgatatCqBq1q0KoGrWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q0KsGvWrQqwa9atCrBr1q8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgZP1eCpGjxVg6dq8FQNnqrBUzV4qgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owqgajajCqBqNqMKoGo2owsgbXB7vACr6RzwenIArug6zBhFEwC1bBLrCCGtlrZK+RvUY+NfKpkU+NfGrkUyOfGvnUyKdGPjXyqZGjRo4aOWrkqJGjRo4aOWrkqJGjRo4a+dbIt0a+NfKtkW+NfGvkWyPfGvnWyPeNfH+/glEwC1bBLrACLzgFUVAjjxp51MijRh418qiRR408auRRI48aedTIs0aeNfKskWeNPGvkWSPPGnnWyLNGnjXyqpFXjbxq5FUjrxp51cirRl418qqRV428a+RdI+8aedfIu0beNfKukXeNvGvkXSNbjWw1stXIViNbjWw1ctXgrRq8VYO3avBWDd6qwVs1eKsGb9XgrRq8VYO3avBWDd6qwVs1eKsGb9XgrRq8VYO3avBWDd6qwVs1eKsGb9XgrRq8VYO3avBWDd6qwVs1eKsGb9XgrRq8VYO3avBWDd6qwVs1eKsGb9XgrRq8VYO3avDvs/df02iaTatpN1mTN52maGrHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hboe1w9ph7bB2WDusHdYOa4e1w9rh7fB2eDu8Hd4Ob4e3w9vh7fB2nHacdpx2nHacdpx2nHacdpx2nHZEO6Id0Y5oR7Qj2hHtiHZEO6Idtx23Hbcdtx23Hbcdtx23HbcdXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbT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9ybuTd2bujd1b+re1L2pe1P3pu5N3Zsub+04PFk8WT3ZPNk9SZ4cnmRPiifdm2tJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWiLPpK6kaclzEaebllhyenu+qnfTEktOb88ViW5aYsnp7bn63E1LaNoVT+pKmpZYsniyenJ6e75+dtMSS5Inhyent+cbbTctsaSupGmJJcv6mWmJJd2buDfTEvvZ8KR7E/dmWjJ/ZlpiSfem7s20ZP7MtMSS7k3dm2mJ/Uw8ubzRcXiyXD8j0xJLNk92T5L/bHiSPSmeXDVJ5fCkeyvurayapNI96d6KeyvsPxNPurfq3uqqSarVk+6turdK/rPhSfdW3Vv1mmxek829NffWvCab12Rzb829Na/J5jXZ3Ft3b91rsntNdvfW3Vv3muxek929dffWvSbJa5LcG7k38pokr0lyb+TeyGuSvCbJvQ33Nrwmh9fkcG/DvQ2vyeE1OdzbcG/Da5K9Jtm9sXtjr0n2mmT3xu6NvSbZa5Ldm7g38ZoUr0lxb+LexGtSvCbFvYl7E69J9ZpU96buTb0m1WtS3Zu6t1NL6jMpntQrOU4tmUnz1p7J6snmye5J8p8NT7InxZO6fnZqyUy6t+LeTi15/uzUkpl0b8W9nVoyfyaedG/VvZ1a8vzZqSUz6d6qezu1ZP5seNK9VfdWvSab12Rzb829Na/J5jXZ3Ftzb81r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ha/ot0dx/6rwVeGrwleFr+i3B/32oN8eVXCL/cVXha8KX9Fvj+L+VeGrwleFrwpf0W8P+u1Bvz2K81Vxvip8Vfiq8BX99ijOV4WvCl8Vvip8Rb896LcH/faoCXexv/iq8FXhK/rtUdy/KnxV+KrwVeEr+u1Bvz3ot0dtuJv9xVeFrwpf0W+P4v5V4avCV4WvCl/Rbw/67UG/PerAPewvvmp81fiKfns0968aXzW+anzV+Ip+e9BvD/rt0VwP9vN8MBpfNb5qfEW/PZrrwcZXja8aXzW+ot8e9NuDfns099v7eT4Yja8aXzW+ot8ezf2rxleNrxpfNb6i3x7024N+ezT327vYX3zV+KrxFf32aO5fNb5qfNX4qvEV/fag3x7026O5397N/uKrxleNr+i3R3M92Piq8VXjq8ZX9NuDfnvQb4/mfntP9hdfNb5qfEW/PZr7V42vGl81vmp8Rb896LcH/fZo7rf3Zn/xVeOrxlf026O5f9X4qvFV46vGV/Tbg3570G+P5n57H/YXXzW+anxFvz0m968mvpr4auKria/otwf99qDfHpP7V5P7VxNfTXw18RX99pjcb5/4auKria8mvqLfHvTbg357TO63T54PTnw18dXEV/TbY3K/feKria8mvpr4in570G8P+u0xud8+eT448dXEVxNf0W+Pyf32ia8mvpr4auIr+u1Bvz3ot8fkfvvk+eDEVxNfTXxFvz3otwf99qDfHhNf0W+Pyf32yf0r+u1Bvz3otwf99vj22+fNb+75zW9f/f76+fj02/f9+rev9v36t6/2++sv9/f3ican3/7Jv9yfq56bF3nf/P7+58nXVz9XNzf/cn+uUG4OcpLr5jv79dU3X+5YNy/y5Y77nq+vPvn66v4++Xj32785yJcbdx2ur775cvNyr6++eZE3+XJ/f59yvPvt3zzIl5vr5sv9/Y2V8e63f/Pl/v4GnXj327/5cn//fwjx7rd/83ny9VX9/ubpePfbv/ly+76H66tvLvLl9n1v11fffLl939v11Tdf7u//IDLe/fZvHuTL/f39ofHut3/z5d7P9rvf/nN6v3mSF/ly130/11effH31c3q/eZCDfLn3M//ut3/z5d7P87vf/s2LfLnnvs/rq0++vvo5dd88yJd77uzXV9/8y/05ad/c5EleN7+//yb/cvv+XLz77d88yHHz/QxcX33z5Y773q6vvvly467t9dU3b/Llxl3n66tvvty83Ourn9PpzZf7/mxfX31fb/IkL/ImnydfX32+5xq8HryevA53wV2Tr4e74C64+0Uez9/dzLvhbri7+Xrm3YvX4e7zvH7gHuY9cA/rfOAeuAfugXvgnmfed7/9m5953/327+tJLr6meX3y+uL1zetwB9wxyHAH3AF3wB2TDHfAHXDj+Vy9++3f1+EG3Chy83fhxuL1zetwE27CTbgJN+Em8ybcZN6Em8/n6t1v/7xecCv4GrgFt+AW+1twi3Uu5m24zeeqmbeT1+E269zM23CbeRvuhDvh4qs9mXfyucJXG19tfLXx1cZXe8FdcBdcfLXx1cZXG19tfLXx1V7sL77a+Grjq42v9mbeDXfD3XDx1cZXG1/tAxdf7QP3wD1w8dU+cPHVxlcHX53XID+f54OvDr46+Oq8JnmRNxkuvjr46gy4+OqMIjdfAxdfHXx18NXBVwdfHXx18NXBVyeYNybfBy6+OvHs70nmzcHrcDN5HS6+OgkXXx18dZJ5i3nx1Sm4BRdfHXx1inXGV6fg4qvTcBtus7/NOuOr03CbefHVafYXX50Jd8KdcPHVwVcHXx18debia5gXXx18dThfHXx1FuuMrw6+OgvugouvDuerg6/OhouvzobL+epwvjqcrw7nq4OvDr46+Opwvjr46nC+OpyvDuerg68OvjqH/X18la/XH/ubr8dX+Xp8la/HV/l6FbnJk69fvL7J5/max1f5GoPXg9eT1+EOuI+v8jXgDrgDbsAN5g24ATfgBtyAG3Bj83dZ54SbzJtwk3VOuAk34ebi+zBvMm/BLbgFt5i34FbzOtxi3oJbzNtwG27DbbgNt+E23GbehtvMO+FO9nfyeZ6s84Q74U64E+6EO5l3wV3Mu5h3wV1wF9wFd8FdcBfzbrgb7oa7WeePr/bNb+65+XLvr+l+99u/eZPPk9+++uRBDnKSi9xkuAfugXse7rvf/s2DHOQkF7nJk7zImwx3wB1w376quDnJRW7ym5s3LzLcATfgBtxg3mDeYN5g3mDeYN6AG3ATbsJNuAk34SbchJtwE27CLbgFt+AW61ysc7HOb199Muv89tUnw224DbfhNvM28zbzNvM28zbzNtwJd8KdcCfcCXfCnXAn3Al3wl1wF9wFd7HOi3VerPNinRfrvFjnBXfD3XA33M28m3k38+Krga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8CXwW+itfjjXgluchNfrwRr0XefE+4+CrwVYwgJ7nITZ7kRYaLrwJfBb4KfBX4KvBV4KvAV4GvAl8FvoqPr+5afXz1zqxzss4fX901/PjqneHiq8BXga8CXwW+CnwVxbzFvMW8BbfgFlx8Ffgq8FXgq8BXga8CXwW+io+v7vp8fPXO58mTdf746q7bx1fvDBdfBb4KfBX4KvBV4KvAV4GvAl/FgrvgLrgL7oK74OKrwFeBrwJfxeZztfn53fz87knm53dvMlx8Ffgq8FXgq8BXga8CXwW+CnwV+CrxVeKr5HyVnK+S81VyvkrOV8n5Kl/P5ypfz+cqx4s8yM/nKj++eme4+CrxVeKrxFeJrxJfJb5KfJX4KvFV4qvEV4mvEl8lvkrOV8n5KvFV4qvMIjf5+e9C5iLDxVeJrxJfJb5KfJX4KvFV4qvEV4mvEl8lvkp8lfgq8VXiq2zm7UleZD5XH1/ddfj46p3hcr5KfJX4KvFV4qvEV4mvEl8lvkp8lfgq8VXiq8RXia9yMe9i3sXP0ebnaD9+zs3PEeer5HyVnK+S81VyvkrOV4mvEl8lvkp8lfgq8VXiq8RXia/yMO955q3XizzIz7z1SvLDLXxV+KrwVXG+Ks5XxfmqOF8V56vifFX4qvBV4avCVzWeeWswbzBvMG8wbzAvvip8Vfiq8FXhq8JXha8KXxXXg8X1YHE9WFwPFueryufzXMm8ybzFvPV8nquYF18Vvip8Vfiq8FXhq8JXha8KXxW+KnxV+KrwVeGrwleFrwpfFb4qfFX4qvBV4avCV4WvCl8Vvip8Vfiq8FWt579HxfVgcT1YXA/Wev57VFwPFuer4nxVnK+K81Vxvip8Vfiq8FXhq8JXtVnnzefq8Lk6/BwdPleHnyN8Vfiq8FXhq+J8VZyvmvNVc75qzlfN9WBzPdhcD/Zrkp917tcmw8VXja8aXzW+anzV+KrxVY/n89z4qvFV46uO5+e38VVzvmp81fiq8VXjq8ZXja+a68HmerA5XzXnq+Z6sLkebHzVXA8256vmfNWcr5rzVRdc7l8196+a+1ddz89Rc/+q8VXjq8ZXja8aX3XDbbj4qvFVN9zmc8X9q+b+VeOrxlc94U64E+6EO+FOuPiq8VXjq8ZXja8aXzW+anzV+KrxVeOr5nzVm8/Vhsv1YG8+V5vPFb7qzc8Rvmp81fiqDz9H+KoP3MO8h3kP63yY97DOH1/9PiOYH1+98yAH+c09Nxf5cjtuvtzf342V7377N2/y5fbvM4t3v/2bL7fv93z76pOTXOTLnePmSb7c355nvvvt33ye/PbVuu/57atPvtzfzme+++3ffLm/nc9899u/+XL3+3su8iZf7r7f/+2rT77cc9/z21efnOTL/e185rvf/s2Xe+57e/vqk3+5P7tz83ny9dU3j5vvml9fffMv92dHbi5y33zf8/XVN6+bL/f66pvPk6+v5rhrdX31zZcbl3t99c1FbvLlxv0cXl998yZfbt73fH01877P66tvvty863B99c2Xe5+dvfvt3zzJl3ufo7377d98ue+fkeurbx7ky+373q6vvvly3z8711fffLnvz/P11Tdv8uXO+3m4vvrmy513/a+vvjnJlzvvXNdX3zzJl7su6/rqmy933+9zffXNg3y5585+ffXNv9z1ujNeX33zJC/yJp8/8rvf/s2DHOQkF7nJk7zImwx3wB1wB9wBd8AdcAfcAXfAHXADbsANuAE34AbcgBtw482tm8+T80V+c/vmICe5yE2efJ9Fhpvn+fp6keEW3IJbcAtuwS24BbeYt5m34TbchttwG25P8iJvMvNOuHOQg5zkIsOdcCfcCXfCXazzYt7FvIt5F9zVZNZ5sc6LdV5wN9wNd8PdcDfrvJl3M+9m3g13s7+HdT6s82GdD9wD98A9cA/cwzqfZ979epEH+eHuV5KL3ORJXnyfTYY74A64I8hJLnKT4Y5F3uRnnXe8yHADbsANuAE3Jpl5g3mDefHVzkFmnZN1TtYZX+2Em3ATLr7a+Grjq42vNr7aBbfYX3y18dXGV7vgNlx8tfHVxlcbX218tfHVxle74Tb7i682vtr4ak+4Ey6+2vhq46uNrza+2vhq46u94C72F19tfLXx1V5wF1x8tfHVxlcbX218tfHVxld7w93sL77a+Grjq33gHrj4auOrja82vtr4auOrja/O6+Ge1yAHOclFbr7PJC/yJsPFVwdfHXx18NUZcEeTJ3mRNxluwMVXB18dfHXw1cFXB18dfHU4Xx3OVwdfHXx18NXhfHU4Xx18dfDVwVcHXx18dfDVwVen4Bb7i68Ovjr46hTcgouvDr46+Org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Rb+96LfXos+w6DPQby/67UW/vei3F/32ot9e9Ntr0WdYm/3FV/Tbi357LfoMiz4D/fai317024t+e9FvL/rtRb+9Nn2GTf+KfnvRby/67bXpM2z6DPTbi3570W8v+u1Fv73otxf99tr0GTb9K/rtRb+96LfXps+w6TPQby/67UW/vei3F/32ot9e9Ntrc77anK/otxf99qLfXpvz1eZ8Rb+96LcX/fai317024t+e9Fvr03/atO/ot9e9NuLfntt+leb/hX99qLfXvTbi3570W8v+u1Fv702/atN/4p+e9FvL/rttelfbfpX9NuLfnvRby/67UW/vei3F/322vSvNv0r+u1Fv73ot9emf7XpX9FvL/rtRb+96LcX/fai317022vTv9r0r+i3F/32ot9em/7Vpn9Fv73otxf99qLfXvTbi3570W+vTf9q07+i317024t+ex36V4f+Ff32ot9e9NuLfnvRby/67UW/vQ79q0P/in570W8v+u116F8d+lf024t+e9FvL/rtRb+96LcX/fY69K8O/Sv67UW/vei31+F68HA9SL+96LcX/fai317024t+e9Fvr0Nf9NAXpd9e9NuLfnsdrgcPfVH67UW/vei3F/32ot9e9NuLfnsd+qKHvij99qLfXvTb63A9eOiL0m8v+u1Fv73otxf99qLfXvTb69AXPfRF6bcX/fai316H68FDX5R+e9FvL/rtRb+96LcX/fai316HvuihL0q/vei3F/32OlwPHvqi9NuLfnvRby/67UW/vei3F/32OvRFD31R+u1Fv73pt/fruR7s19MXbfrtTb+96bc3/fam397025t+e78G3Kcv2vTbm35702/v14A74A64A+6A+/iq6bc3/fam396vgPv0RZt+e9Nvb/rt/Qq4ybzJvMm8CTfhJtyEm8ybzJtwi3mfvmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ovxpuw224DbfhNtyG23An3Al3wp1wJ9wJd8KdcCfcCXfBXXAX3AV3wV1wn/vt/XqeD/brud/er+f5YL+e54P9eu639+t5Ptiv5/lgv5777f16+qL92nCf++39eu6392vDPXAP3AP3wD1wD9wD9zDvYd7n+WCP5/lgj+f5YI+nz9Dj6TP0ePpXPZ7+VY+nL9rjeT7Y4+kz9Hj6Vz2e/lWPpy/a4+mL9hhwB9wBd8AdcJ/+VY/BvMG8wbwB9+lf9Xj6Vz2evmiPpy/aI+AG3ICbcBNuss7JvMm8ybwJ9+lf9UjWOVnnYp0LbsEtuAW34BbrXMxbzFvM23Cb/W3WuVnnZp0bbsNtuA234U7WeTLvZN7JvBPuZH8n6zxZ58k6T7gL7oK74C64i3VezLuYdzEvvhqL/d2s82adN+uMr8aGu+FuuPiKfnvTb2/67U2/vceBe9hffEW/vem39zhwD1x8Rb+96bc3/fam397025t+e8fTZ+h4+ldNv73ptzf99o4Bd8DFV/Tbm357029v+u1Nv73pt3cE3Kd/1fTbm35702/vCLgBF1/Rb2/67U2/vem3N/32pt/ekXCf/lXTb2/67U2/vSPhFlx8Rb+96bc3/fam397025t+e0fBLfYXX9Fvb/rtHQ234eIr+u1Nv73ptzf99qbf3vTbOybcyf7iK/rtTb+9Y8KdcPEV/fam397025t+e9Nvb/rtHZyvgvMV/fam39702zs4XwXnK/rtTb+96bc3/fam397025t+e8eBe9hffEW/vem3dxy4By6+ot/e9NubfnvTb2/67U2/vfPpX3U+/aum397025t+e+cL7oCLr+i3N/32pt/e9NubfnvTb+8ccJ/+VdNvb/rtTb+9M+AGXHxFv73ptzf99qbf3vTbm357Z8J9+ldNv73ptzf99s6Em3DxFf32pt/e9NubfnvTb2/67Z0Ft9hffEW/vem3dzbchouv6Lc3/fam397025t+e9Nv75xwJ/uLr+i3N/32zgl3wsVX9Nubfnsnvkp8Rb+96bd3LriL/cVX9Nubfnsn14PJ9SD99qbf3vTbm357029v+u1Nv71zw93sL76i39702zu5HswDF1/Rb2/67U2/vem3N/32pt/e9fRFu56+aNNvb/rtTb+9i+vBevqiTb+96bc3/fam397025t+e9Nv7xpwn75o029v+u1Nv72L68EKuPiKfnvTb2/67U2/vem3N/32roT79EWbfnvTb2/67V1cD1bCxVf025t+e9Nvb/rtTb+96bd3Fdxif/EV/fam397F9WA1XHxFv73ptzf99qbf3vTbm357V8Nt9hdf0W9v+u1dXA/WhIuv6Lc3/fam397025t+e9Nv71pwF/uLr+i3N/32Lq4H6bd3cb4qzlf027u4HqwNl/tX9NubfnvTb+/ifFVPX7Q//fYYN19u3K95+yrq5iQXucmTvMibfP7In377Jw9ykJNc5CZP8iJvMtwBd8AdcAfcAXfAHXAH3Levfv9fuP3pt7/z21efPMhBTnKRmzzJiww34CbchJtwE27CTbgJN+Em3IRbcAtuwS24BbfgFtyCW3ALbsNtuA234TbchttwG27DbbgT7oQ74U64E+6EO+FOuBPuhLvgLrgL7oK74C64C+6Cu+AuuBvuhrvhbrgb7oa74W64G+6Ge+AeuAfugXvgHrgH7oF74J6H++m3f/IgBznJRW7yJC/yJsMdcAfcAXfAHXAH3AF3wMVXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1aff/vt7W/rTb//93Uz96bf//l6k/vTbq26+3Fo3J/ly+52bfLm/v2OlP/32T97ky533Pbx9te57ePvqky933ff89tUnX+667+3tq9V/+dNf/a+//fM//u3f/dM//M+/+i//5+df//u///Pf/9s//ss/f/713/73v37/5O/+/I//9E//+D/+5l///C9//w//7d///A9/80//8ve/f/ZXr99//H7c/uuYf4rx1z9fPD6v/9efx9QVPy++Zv71n/4q36/M+n1l1c8r4/NFY/++FL9f9Pth/X1p3Zf26/f7xe/3+/3bP3tR8f17Pf7U8/eP84938HO/J+5L9R/fVH+/Sew/5f5+k5/dqvP7x/M//o31fN+ft3y/aj8vrT9l/L50nr94/hR15399F2D8vOPR3+HHz32tEX8MMH5uSY3Y36FH18/X3rc/xv/vN4jnXa0/xX2jI/+T1+qPrcqfBe/zx6b8cH8ekP+xITN/VrbvX+n/926MZyV/flzqvSDrP138z5//5S9//Zf/Cw==", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "lock_public_solver", @@ -6661,21 +6840,14 @@ "error_kind": "string", "string": "Function lock_public_solver can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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AgACgAMuAgANgAQuAgAMgAUlAAAIiy0KCwIoAgADBIB4JwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgADgAMuAgANgAQuAgAMgAUlAAAIiy0KCwMuCICYAAQuCICZAAUuCICaAAYoAgAHBICbJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAHgAMuAgANgAQuAgAMgAUlAAAIiy0KCwcoAgAIBIC5JwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAIgAMuAgANgAQuAgAMgAUlAAAIiy0KCwgoAgAJBIDXJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAJgAMuAgANgAQuAgAMgAUlAAAIiy0KCwkoAgAKBID1JwIMBFotCAELJwINBFsACAENAScDCwQBACILAg0uAgAKgAMuAgANgAQuAgAMgAUlAAAIiy0KCwolAAAI0SUAAAleKAIAAQSBTycCAgQAOw4AAgABAQCAA4AFgAcuAIADgAguAIAEgAkLAIAIgAeACiQAgAoAAAjQLgGACIAGLgSABoAJAQCACAACgAgBAIAJAAKACSMAAAifJigAgEMAAQAoAIBEBAADKACARQEAACgAgEYEAAAoAIBHBgAAKACASAAAACgAgEkBAAEoAIBKBAABKACASwAAASgAgEwEAAIoAIBNBAAEKACATgQABigAgE8EAAcoAIBQBAAIKACAUQQACSgAgFIEAAooAIBTBAALKACAVAQAFygAgFUEAB4oAIBWBAAgJiUAACHQHgIADAAeAgANADMqAAwADQAOJAIADgAACYIlAAAh+R4CAAwBHgIADQAKKgwNDiQCAA4AAAmeJQAAIgsnAgwAAi0IAQ0nAg4EAwAIAQ4BJwMNBAEAIg0CDi0KDg8tDgwPACIPAg8tDgEPJwIPBBAtCAAQLQoNES4IgEwAEi4IgEUAEwAIAA8AJQAAIh0tAgAALQoRDgsiAA6ASAAPCyIAD4BFABAkAgAQAAAKFCUAACPrHgIADwYnAhEEEi0IABIuCIBFABMuCIBIABQtCgwVLQoOFgAIABEAJQAAI/0tAgAALQoTEC0IAQ4AAAECAS0OEA4tCAEQAAABAgEuDIBGABAtCAERJwISBBgACAESAScDEQQBACIRAhInAhMEFwAqExITLQoSFAwq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", - "debug_symbols": "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", - "brillig_names": [ - "lock_public_solver" - ] + "bytecode": "JwACBAEoAAABBIE9JwAABAMnAgsE+CcCDAQAHwoACwAMgEUdAIBGgEYCHQCAR4BHAh0AgEiASAIdAIBJgEkCHQCASoBKAh0AgEuASwIdAIBMgEwCHQCATYBNAh0AgE6ATgIdAIBPgE8CHQCAUIBQAh0AgFGAUQIdAIBSgFICHQCAU4BTAh0AgFSAVAIdAIBVgFUCHQCAVoBWAh0AgFeAVwIdAIBYgFgCHQCAWYBZAh0AgFqAWgIdAIBbgFsCHQCAXIBcAh0AgF2AXQIdAIBegF4CHQCAX4BfAh0AgGCAYAIdAIBhgGECHQCAYoBiAh0AgGOAYwIdAIBkgGQCHQCAZYBlAh0AgGaAZgIdAIBngGcCHQCAaIBoAh0AgGmAaQIdAIBqgGoCHQCAa4BrAh0AgGyAbAIdAIBtgG0CHQCAboBuAh0AgG+AbwIdAIBwgHACHQCAcYBxAh0AgHKAcgIdAIBzgHMCHQCAdIB0Ah0AgHWAdQIdAIB2gHYCHQCAd4B3Ah0AgHiAeAIdAIB5gHkCHQCAeoB6Ah0AgHuAewIdAIB8gHwCHQCAfYB9Ah0AgH6AfgIdAIB/gH8CHQCAgICAAh0AgIGAgQIdAICCgIICHQCAg4CDAh0AgISAhAIdAICFgIUCHQCAhoCGBh0AgIiAiAUdAICJgIkCHQCAioCKAh0AgIuAiwIdAICMgIwCHQCAjYCNAh0AgI6AjgIdAICPgI8CHQCAkICQAh0AgJGAkQIdAICSgJICHQCAk4CTAh0AgJSAlAIdAICVgJUCHQCAloCWAh0AgJeAlwIdAICYgJgCHQCAmYCZAh0AgJqAmgIdAICbgJsCHQCAnICcAh0AgJ2AnQIdAICegJ4CHQCAn4CfAh0AgKCAoAIdAIChgKECHQCAooCiAh0AgKOAowIdAICkgKQCHQCApYClAh0AgKaApgIdAICngKcCHQCAqICoAh0AgKmAqQIdAICqgKoCHQCAq4CrAh0AgKyArAIdAICtgK0CHQCAroCuAh0AgK+ArwIdAICwgLACHQCAsYCxAh0AgLKAsgIdAICzgLMCHQCAtIC0Ah0AgLWAtQIdAIC2gLYCHQCAt4C3Ah0AgLiAuAIdAIC5gLkCHQCAuoC6Ah0AgLuAuwIdAIC8gLwCHQCAvYC9Ah0AgL6AvgIdAIC/gL8CHQCAwIDAAh0AgMGAwQIdAIDCgMICHQCAw4DDAh0AgMSAxAIdAIDFgMUCHQCAxoDGAh0AgMeAxwIdAIDIgMgCHQCAyYDJAh0AgMqAygIdAIDLgMsCHQCAzIDMAh0AgM2AzQIdAIDOgM4CHQCAz4DPAh0AgNCA0AIdAIDRgNECHQCA0oDSAh0AgNOA0wIdAIDUgNQCHQCA1YDVAh0AgNaA1gIdAIDXgNcCHQCA2IDYAh0AgNmA2QIdAIDagNoCHQCA24DbAh0AgNyA3AIdAIDdgN0CHQCA3oDeAh0AgN+A3wIdAIDggOACHQCA4YDhAh0AgOKA4gIdAIDjgOMCHQCA5IDkAh0AgOWA5QIdAIDmgOYCHQCA54DnAh0AgOiA6AIdAIDpgOkCHQCA6oDqAh0AgOuA6wIdAIDsgOwCHQCA7YDtAh0AgO6A7gIdAIDvgO8CHQCA8IDwAh0AgPGA8QIdAIDygPICHQCA84DzAh0AgPSA9AIdAID1gPUCHQCA9oD2Ah0AgPeA9wIdAID4gPgCHQCA+YD5Ah0AgPqA+gIdAID7gPsCHQCA/ID8Ah0AgP2A/QIdAID+gP4CHQCA/4D/Ah0AgQCBAAIdAIEBgQECHQCBAoECAh0AgQOBAwIdAIEEgQQCHQCBBYEFAh0AgQaBBgIdAIEHgQcCHQCBCIEIAh0AgQmBCQIdAIEKgQoCHQCBC4ELAh0AgQyBDAIdAIENgQ0CHQCBDoEOAh0AgQ+BDwIdAIEQgRACHQCBEYERAh0AgRKBEgIdAIETgRMCHQCBFIEUAh0AgRWBFQIdAIEWgRYCHQCBF4EXAh0AgRiBGAIdAIEZgRkCHQCBGoEaAh0AgRuBGwIdAIEcgRwCHQCBHYEdAh0AgR6BHgIdAIEfgR8CHQCBIIEgAh0AgSGBIQIdAIEigSICHQCBI4EjAh0AgSSBJAIdAIElgSUCHQCBJoEmAh0AgSeBJwIdAIEogSgCHQCBKYEpAh0AgSqBKgIdAIErgSsCHQCBLIEsAh0AgS2BLQIdAIEugS4CHQCBL4EvAh0AgTCBMAIdAIExgTECHQCBMoEyAh0AgTOBMwIdAIE0gTQCHQCBNYE1Ah0AgTaBNgIdAIE3gTcCHQCBOIE4Ah0AgTmBOQIdAIE6gToCHQCBO4E7Ah0AgTyBPAIuCIBFAAEoAgACBIBGJwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgACgAMuAgANgAQuAgAMgAUlAAAIiy0KCwIoAgADBIBmJwIMBCAtCAELJwINBCEACAENAScDCwQBACILAg0uAgADgAMuAgANgAQuAgAMgAUlAAAIiy0KCwMuCICGAAQuCICHAAUuCICIAAYoAgAHBICJJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAHgAMuAgANgAQuAgAMgAUlAAAIiy0KCwcoAgAIBICnJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAIgAMuAgANgAQuAgAMgAUlAAAIiy0KCwgoAgAJBIDFJwIMBB4tCAELJwINBB8ACAENAScDCwQBACILAg0uAgAJgAMuAgANgAQuAgAMgAUlAAAIiy0KCwkoAgAKBIDjJwIMBFotCAELJwINBFsACAENAScDCwQBACILAg0uAgAKgAMuAgANgAQuAgAMgAUlAAAIiy0KCwolAAAI0SUAAAjgKAIAAQSBPScCAgQAOw4AAgABAQCAA4AFgAcuAIADgAguAIAEgAkLAIAIgAeACiQAgAoAAAjQLgGACIAGLgSABoAJAQCACAACgAgBAIAJAAKACSMAAAifJigAgEMAAQAoAIBEBAADJiUAAEEtHgIACwAeAgAMADMqAAsADAANJwILAQEkAgANAAAJCSUAAEFWHgIADAEeAgANAAoqDA0OJAIADgAACSUlAABBaCcCDAAALQgBDScCDgQEAAgBDgEnAw0EAQAiDQIOLQoODy0ODA8AIg8CDy0ODA8AIg8CDy0ODA8rAgAOAAAAAAAAAAACAAAAAAAAAAAtCAEPJwIQBAUACAEQAScDDwQBACIPAhAtChARLQ4MEQAiEQIRLQ4MEQAiEQIRLQ4MEQAiEQIRLQ4OES0IARAAAAECAS0ODRAtCAENAAABAgEtDg8NLQgBEQAAAQIBJwISBAAtDhIRLQgBEwAAAQIBJwIUAQAtDhQTJwIVAAInAhYEASQCABQAAApIIwAACgEtCAEXJwIYBAQACAEYAScDFwQBACIXAhgtChgZLQ4VGQAiGQIZLQ4MGQAiGQIZLQ4MGS0OFxAtDg8NLQ4WES0OFBMjAAAK3S0KEg8jAAAKUQ0iAA+ARAAXJAIAFwAAQKEjAAAKZi0LEA8tCw0XLQsTGC0LFxkAIhkCGS0OGRctCAEZJwIaBAUACAEaAScDGQQBACIXAhonAhsEBAAiGQIcPw8AGgAcLgIAD4ADKACABAQABCUAAEF6LgiABQAXACoXFhotDhUaLQ4XEC0OGQ0tDhYRLQ4YEyMAAArdLQsQDy0LDRctCxMYCioYFBkkAgAZAAAK/ycCGgQAPAYaAScCGAQCJAIAFAAAC0cjAAALES4CAA+AAygAgAQEAAQlAABBei4IgAUAGQAqGRgaLQ4BGi0OGRAtDhcNLQ4YES0OFBMjAAAL3C0KEg8jAAALUA0iAA+ARAAXJAIAFwAAQBUjAAALZS0LEA8tCw0XLQsTGS0LFxoAIhoCGi0OGhctCAEaJwIbBAUACAEbAScDGgQBACIXAhsnAhwEBAAiGgIdPw8AGwAdLgIAD4ADKACABAQABCUAAEF6LgiABQAXACoXFhstDgEbLQ4XEC0OGg0tDhYRLQ4ZEyMAAAvcLQsTFwoqFxQZJAIAGQAAC/YnAhoEADwGGgEtChIPIwAAC/8NIgAPgEQAFyQCABcAAD+JIwAADBQtCxAXLQsNGS0LERotCxkbACIbAhstDhsZLQgBGycCHAQFAAgBHAEnAxsEAQAiGQIcJwIdBAQAIhsCHj8PABwAHi0OFxAtDhsNLQ4aES0OCxMAKhsWEC0LEA0KKg0MEAoqEBQRJAIAEQAADIUlAABCCB4CABAGLQgBEScCEwQYAAgBEwEnAxEEAQAiEQITJwIXBBcAKhcTFy0KExkMKhkXGhYKGhokAgAaAAAMzy0ODBkAIhkCGSMAAAywLQgBEwAAAQIBLQ4REycCEQQXLQoSDyMAAAzqDCoPERckAgAXAAA/PSMAAAz8LQsTDy0IARMAAAECAS0ODxMtCAEPAAABAgEtDhIPLQgBFycCGQQYAAgBGQEnAxcEAQAiFwIZJwIaBBcAKhoZGi0KGRsMKhsaHBYKHBwkAgAcAAANXy0ODBsAIhsCGyMAAA1ALQgBGQAAAQIBLQ4XGS0KEg0jAAANdQwqDREXJAIAFwAAProjAAANhy0LGQ8tCw8TACITAhMtDhMPLQgBEycCFwQMAAgBFwEnAxMEAQAiEwIXJwIZBAsAKhkXGS0KFxoMKhoZGxYKGxskAgAbAAAN3S0ODBoAIhoCGiMAAA2+LQgBFwAAAQIBLQ4TFycCEwQLLQoSDSMAAA34DCoNExkkAgAZAAA+XiMAAA4KLQsXGS0LDxcAIhcCFy0OFw8tCAEXJwIaBAwACAEaAScDFwQBACIXAhonAhsECwAqGxobLQoaHAwqHBsdFgodHSQCAB0AAA5gLQ4MHAAiHAIcIwAADkEtCAEaAAABAgEtDhcaJwIXBAwtChINIwAADnsMKg0TGyQCABsAAD39IwAADo0tCxobACoPFhwtCxwaHAoaHAQcChwPABwKDxoFACoZGBwtCxwPHAoPHAYcChwZABwKGQ8GACobGBwtCxwZHAoZHAYcChwbABwKGxkGDCoQGhsWChsQHAobGgYcChAbBgQqGg8QBCobGQ8AKhAPGScCDwYACioZDxAkAgAQAAAPEiUAAEIaHgIAEAYoAgAZBQcIACoQGRoOKhAaGyQCABsAAA81JQAAQiwMKhoGECQCABAAAA9HJQAAQj4tCwIQACIQAhAtDhACLQgBEAAAAQIBLQ4PEC0IARkAAAECAS0ODxknAhoEECcCGwYILQoSDSMAAA+BDCoNGhwkAgAcAAA9uCMAAA+TJwIcBCAtChoNIwAAD6EMKg0cHSQCAB0AAD1zIwAAD7MtCxAdLQsZEC0LAxkAIhkCGS0OGQMtCAEZAAABAgEtDg8ZLQgBHgAAAQIBLQ4PHi0KEg0jAAAP6wwqDRofJAIAHwAAPS4jAAAP/S0KGg0jAAAQBgwqDRwfJAIAHwAAPOkjAAAQGC0LGQ0tCx4ZLQgBHicCHwQEAAgBHwEnAx4EAQAiHgIfLQofIC0ODCAAIiACIC0ODCAAIiACIC0ODCAtCAEfJwIgBAUACAEgAScDHwQBACIfAiAtCiAhLQ4MIQAiIQIhLQ4MIQAiIQIhLQ4MIQAiIQIhLQ4OIS0IAQ4AAAECAS0OHg4tCAEeAAABAgEtDh8eLQgBIAAAAQIBLQ4SIC0IASEAAAECAS0OFCEkAgAUAAARFSMAABDOLQgBIicCIwQEAAgBIwEnAyIEAQAiIgIjLQojJC0OFSQAIiQCJC0ODCQAIiQCJC0ODCQtDiIOLQ4fHi0OFiAtDhQhIwAAEaotChIfIwAAER4NIgAfgEQAIiQCACIAADxdIwAAETMtCw4fLQseIi0LISMtCyIkACIkAiQtDiQiLQgBJCcCJQQFAAgBJQEnAyQEAQAiIgIlJwImBAQAIiQCJz8PACUAJy4CAB+AAygAgAQEAAQlAABBei4IgAUAIgAqIhYlLQ4VJS0OIg4tDiQeLQ4WIC0OIyEjAAARqi0LDh8tCx4iLQshIwoqIxQkJAIAJAAAEcwnAiUEADwGJQEkAgAUAAASDyMAABHZLgIAH4ADKACABAQABCUAAEF6LgiABQAjACojGCQtDgEkLQ4jDi0OIh4tDhggLQ4UISMAABKkLQoSHyMAABIYDSIAH4BEACIkAgAiAAA70SMAABItLQsOHy0LHiItCyEjLQsiJAAiJAIkLQ4kIi0IASQnAiUEBQAIASUBJwMkBAEAIiICJScCJgQEACIkAic/DwAlACcuAgAfgAMoAIAEBAAEJQAAQXouCIAFACIAKiIWJS0OASUtDiIOLQ4kHi0OFiAtDiMhIwAAEqQtCyEiCioiFCMkAgAjAAASvicCJAQAPAYkAS0KEh8jAAASxw0iAB+ARAAiJAIAIgAAO0UjAAAS3C0LDiItCx4jLQsgJC0LIyUAIiUCJS0OJSMtCAElJwImBAUACAEmAScDJQQBACIjAiYnAicEBAAiJQIoPw8AJgAoLQ4iDi0OJR4tDiQgLQ4LIQAqJRYeLQseDgoqDgweCioeFCAkAgAgAAATTSUAAEIILQgBHicCIAQYAAgBIAEnAx4EAQAiHgIgJwIhBBcAKiEgIS0KICIMKiIhIxYKIyMkAgAjAAATki0ODCIAIiICIiMAABNzLQgBIAAAAQIBLQ4eIC0KEh8jAAATqAwqHxEeJAIAHgAAOvkjAAATui0LIB8tCAEgAAABAgEtDh8gLQgBHwAAAQIBLQ4SHy0IASEnAiIEGAAIASIBJwMhBAEAIiECIicCIwQXACojIiMtCiIkDCokIyUWCiUlJAIAJQAAFB0tDgwkACIkAiQjAAAT/i0IASIAAAECAS0OISItChIeIwAAFDMMKh4RISQCACEAADp2IwAAFEUtCyIfLQsfIAAiIAIgLQ4gHy0IASAnAiEEDAAIASEBJwMgBAEAIiACIScCIgQLACoiISItCiEjDCojIiQWCiQkJAIAJAAAFJstDgwjACIjAiMjAAAUfC0IASEAAAECAS0OICEtChIeIwAAFLEMKh4TICQCACAAADoaIwAAFMMtCyEgLQsfIQAiIQIhLQ4hHy0IASEnAiIEDAAIASIBJwMhBAEAIiECIicCIwQLACojIiMtCiIkDCokIyUWCiUlJAIAJQAAFRktDgwkACIkAiQjAAAU+i0IASIAAAECAS0OISItChIeIwAAFS8MKh4TISQCACEAADm5IwAAFUEtCyIhACofFiMtCyMiHAoiIwQcCiMfABwKHyIFACogFiMtCyMfACogGCQtCyQjHAojJQYcCiUkABwKJCMGASIAIIBEACUtCyUkJwIlBAQAKiAlJy0LJyYcCiYoBhwKKCcAHAonJgYnAicEBQAqICcpLQspKBwKKCoGHAoqKQAcCikoBicCKQQGACogKSstCysqHAoqLAYcCiwrABwKKyoGJwIrBAcAKiArLS0LLSwcCiwuBhwKLi0AHAotLAYnAi0ECAAqIC0vLQsvLhwKLjAGHAowLwAcCi8uBicCLwQJACogLzEtCzEwHAowMgYcCjIxABwKMTAGJwIxBAoAKiAxMy0LMzIcCjI0BRwKNDMAHAozMgUAKiATNC0LNDMcCjM0AhwKNCAAHAogMwIAKiEWNC0LNCAAKiEYNS0LNTQcCjQ1BhwKNRgAHAoYNAYBIgAhgEQANS0LNRgAKiElNi0LNjUcCjU3BhwKNzYAHAo2NQYAKiEnNy0LNzYcCjY4BhwKODcAHAo3NgYAKiEpOC0LODccCjc5BhwKOTgAHAo4NwYAKiErOS0LOTgcCjg6BhwKOjkAHAo5OAYAKiEtOi0LOjkcCjk7BhwKOzoAHAo6OQYAKiEvOy0LOzocCjo8BhwKPDsAHAo7OgYAKiExPC0LPDscCjs9BRwKPTwAHAo8OwUAKiETPS0LPTwcCjw9AhwKPSEAHAohPAIvCgAOACEcCiE+BBwKPj0AAiohPT4sAgAhAC1eCYuCuje0O5mhMWEY/SDUL1FmyenxP7XqZaltHgptBCo+IT0cCj0/BBwKPz4AAio9Pj8EKj8hPRwKPUABHApAPwAcCj9AAQIqPT9BLAIAPQAwM+okblBuiY6X9XDK/9cEywu0YDE/tyCynhOeXBAAAQQqQT1CHApCQwQcCkNBAAIqQkFDBCpDIUIcCkJDARwKQyEAHAohQwECKkIhRAQqRD1CHApCRAQcCkQ9ABwKPUIFFgpDPRwKIUMFHAo9RAUEKkNCPRwKQUIFFgpAQRwKP0AFHApBRQUEKkBCQRwKPkIFHgIARgYMKkZCRycCQgW0JAIARwAAGIsjAAAYcwQqQEFDBCpFQkAAKkNAQi0KQh4jAAAYowQqQz1ABCpEQkMAKkBDQi0KQh4jAAAYowAqRh5CDipGQkMkAgBDAAAYuiUAAEIsDCpGIh4WCh4iHAoeQwAcCiJEAAQqQx9FBCpEIB8AKkUfIBwKHh8GHAoiRQYEKh8jRgQqRTQjACpGIzQEKkMkIwQqRBgkACojJBgEKh8mIwQqRTUkACojJCYEKh8oIwQqRTYkACojJCgEKh8qIwQqRTckACojJCoEKh8sIwQqRTgkACojJCwEKh8uIwQqRTkkACojJC4EKh8wIwQqRTofACojHyQcCh4fBRwKIiMFBCofMjAEKiM7HwAqMB8jHAoeHwIcCiIeAgQqHzMiBCoePB8AKiIfHi0IAR8nAiIEGAAIASIBJwMfBAEAIh8CIicCMAQXACowIjAtCiIyDCoyMDMWCjMzJAIAMwAAGdUtDgwyACIyAjIjAAAZti0IASIAAAECAS0OHyIcCkIfAC0IATAAAAECAScCMgABLQ4yMC0IATMnAjUEIQAIATUBJwMzBAEAIjMCNS0KNTYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDgs2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2ACI2AjYtDhQ2JwI1BCEtChZAIwAAGz4MKkA1NiQCADYAADlJIwAAG1AtCzA2BCo+NjAAKh8wNi0IAR8AAAECAS0OMh8tCAEwJwI3BCEACAE3AScDMAQBACIwAjctCjc4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4LOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOC0KFjMjAAAcqwwqMzU3JAIANwAAONkjAAAcvS0LHzMEKj8zHwAqNh8zHApBHwAtCAE2AAABAgEtDjI2LQgBNycCOAQhAAgBOAEnAzcEAQAiNwI4LQo4OS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OCzkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OCzkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDkAIjkCOS0OFDktChYwIwAAHh0MKjA1OCQCADgAADhpIwAAHi8tCzY3BCofNzYAKjM2Hy0IATMAAAECAS0OMjMtCAE2JwI3BCEACAE3AScDNgQBACI2AjctCjc4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4LOAAiOAI4LQ4UOAAiOAI4LQ4LOAAiOAI4LQ4LOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOAAiOAI4LQ4UOC0KFjAjAAAfigwqMDU3JAIANwAAN/kjAAAfnC0LMzYEKiE2MwAqHzMhHAo9HwAtCAEzAAABAgEtDjIzLQgBNicCNwQhAAgBNwEnAzYEAQAiNgI3LQo3OC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OCzgAIjgCOC0OCzgAIjgCOC0OCzgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgAIjgCOC0OFDgtChYwIwAAIPwMKjA1NyQCADcAADeJIwAAIQ4tCzMwBCofMDMAKiEzHy0LIiEuAgAhgAMoAIAEBAAYJQAAQXouCIAFADAAKjAWMy0OHzMtDjAiHAo0HwAcCiYhABwKKCYAHAoqKAAcCiwqABwKLiwAHAokLgAcCiMkABwKHiMALQgBHicCMAQMAAgBMAEnAx4EAQAiHgIwLQowMy0OIDMAIjMCMy0OHzMAIjMCMy0OGDMAIjMCMy0OITMAIjMCMy0OJjMAIjMCMy0OKDMAIjMCMy0OKjMAIjMCMy0OLDMAIjMCMy0OLjMAIjMCMy0OJDMAIjMCMy0OIzMcCgQYABwKHQQAHAoQHQAcCg0QABwKGQ0AHAoGGQAtCAEGJwIfBAwACAEfAScDBgQBACIGAh8tCh8gLQ4MIAAiIAIgLQ4YIAAiIAIgLQ4FIAAiIAIgLQ4EIAAiIAIgLQ4dIAAiIAIgLQ4MIAAiIAIgLQ4MIAAiIAIgLQ4QIAAiIAIgLQ4NIAAiIAIgLQ4ZIAAiIAIgLQ4yIC0KEhUjAAAijQwqFRMEJAIABAAANtAjAAAiny0LIgYtCwYNACINAg0tDg0GLQgBDScCEAQEAAgBEAEnAw0EAQAiDQIQLQoQFS0ODBUAIhUCFS0ODBUAIhUCFS0ODBUrAgAQAAAAAAAAAAAXAAAAAAAAAAAtCAEVJwIdBAUACAEdAScDFQQBACIVAh0tCh0eLQ4MHgAiHgIeLQ4MHgAiHgIeLQ4MHgAiHgIeLQ4QHi0IARAAAAECAS0ODRAtCAENAAABAgEtDhUNLQgBFQAAAQIBLQ4SFS0IAR0AAAECAS0OFB0tChIEIwAAI28MKgQRHiQCAB4AADTxIwAAI4EtCx0eCioeFB8kAgAfAAAjmycCIAQAPAYgAS0KEgQjAAAjpA0iAASARAAUJAIAFAAANGUjAAAjuS0LEBQtCw0eLQsVHy0LHiAAIiACIC0OIB4tCAEgJwIhBAUACAEhAScDIAQBACIeAiEnAiIEBAAiIAIjPw8AIQAjLQ4UEC0OIA0tDh8VLQ4LHQAqIBYQLQsQDS0IARAnAhQEGQAIARQBJwMQBAEAIhACFCcCFQQYACoVFBUtChQdDCodFR4WCh4eJAIAHgAAJFgtDgwdACIdAh0jAAAkOS0IARQAAAECAS0OEBQtChIEIwAAJG4MKgQRECQCABAAADQbIwAAJIAtCxQGJwIQBBguAgAGgAMoAIAEBAAZJQAAQXouCIAFABEAKhEQFS0ODRUtDhEULQoSBCMAACS3DCoEEAYkAgAGAAAz7yMAACTJLQgBBgAAAQIBKQIADQCeWk8DLQgBDicCEAQNAAgBEAEnAw4EAQAiDgIQLQoQES0ODREAIhECES0OAREAIhECES0OGBEAIhECES0OBREAIhECES0OGREAIhECES0ODBEAIhECES0ODBEAIhECES0ODBEAIhECES0ODBEAIhECES0ODBEAIhECES0ODBEAIhECES0ODBEtDg4GLQsHBQAiBQIFLQ4FBycCBQIALQgBDicCEAQfAAgBEAEnAw4EAQAiDgIQJwIRBB4AKhEQES0KEBQMKhQRFRYKFRUkAgAVAAAluS0OBRQAIhQCFCMAACWaLQgBEAAAAQIBLQ4OECcCDgQeLQoSBCMAACXUDCoEDhEkAgARAAAzpSMAACXmLQsQBy0IARAAAAECAS0OMhAtCAERAAABAgEtDgwRJwIUBB0tChIEIwAAJhIMKgQOFSQCABUAADM5IwAAJiQtCxEHLQsGEC4CABCAAygAgAQEAA0lAABBei4IgAUAEQAqESsVLQ4HFS0OEQYtCwgHACIHAgctDgcILQgBBycCEAQfAAgBEAEnAwcEAQAiBwIQJwIRBB4AKhEQES0KEBUMKhURGBYKGBgkAgAYAAAmoy0OBRUAIhUCFSMAACaELQgBEAAAAQIBLQ4HEC0KEgQjAAAmuQwqBA4HJAIABwAAMu8jAAAmyy0LEActCAEIAAABAgEtDjIILQgBEAAAAQIBLQ4MEC0KEgQjAAAm8gwqBA4RJAIAEQAAMoMjAAAnBC0LEActCwYILgIACIADKACABAQADSUAAEF6LgiABQAQACoQLREtDgcRLQ4QBi0LCQcAIgcCBy0OBwktCAEHJwIIBB8ACAEIAScDBwQBACIHAggnAhAEHgAqEAgQLQoIEQwqERAVFgoVFSQCABUAACeDLQ4FEQAiEQIRIwAAJ2QtCAEIAAABAgEtDgcILQoSBCMAACeZDCoEDgckAgAHAAAyOSMAACerLQsIBy0IAQgAAAECAS0OMggtCAEJAAABAgEtDgwJLQoSBCMAACfSDCoEDhAkAgAQAAAxzSMAACfkLQsJBy0LBgguAgAIgAMoAIAEBAANJQAAQXouCIAFAAkAKgkvEC0OBxAtDgkGLQgBBycCCAQfAAgBCAEnAwcEAQAiBwIIJwIJBB4AKgkICS0KCBAMKhAJERYKEREkAgARAAAoVi0OBRAAIhACECMAACg3LQgBCAAAAQIBLQ4HCC0IAQcnAgkEHwAIAQkBJwMHBAEAIgcCCScCEAQeACoQCRAtCgkRDCoREBUWChUVJAIAFQAAKKgtDgURACIRAhEjAAAoiS0IAQkAAAECAS0OBwktCAEHJwIQBB8ACAEQAScDBwQBACIHAhAnAhEEHgAqERARLQoQFQwqFREYFgoYGCQCABgAACj6LQ4FFQAiFQIVIwAAKNstCAEFAAABAgEtDgcFJwIHBFonAhAEPC0KEgQjAAApGgwqBA4RJAIAEQAAMN0jAAApLC0LCActCAEIAAABAgEtDjIILQgBCgAAAQIBLQ4MCi0KEgQjAAApUwwqBA4QJAIAEAAAMHEjAAApZS0LCgctCwYILgIACIADKACABAQADSUAAEF6LgiABQAKACoKMRAtDgcQLQ4KBi0LCQctCAEIAAABAgEtDjIILQgBCQAAAQIBLQ4MCS0KEgQjAAApuQwqBA4KJAIACgAAMAUjAAApyy0LCQctCwYILgIACIADKACABAQADSUAAEF6LgiABQAJACoJEwotDgcKLQ4JBi0LBQctCAEFAAABAgEtDjIFLQgBCAAAAQIBLQ4MCC0KEgQjAAAqHwwqBA4JJAIACQAAL5kjAAAqMS0LCAUtCwYHLgIAB4ADKACABAQADSUAAEF6LgiABQAIACoIFwktDgUJLQ4IBi0IAQUnAgYEDQAIAQYBJwMFBAEAIgUCBicCBwQMACoHBgctCgYJDCoJBwoWCgoKJAIACgAAKqMtDgwJACIJAgkjAAAqhC0IAQYAAAECAS0OBQYtChIEIwAAKrkMKgQXBSQCAAUAAC9PIwAAKsstCwYFJwIIBAwGIggCBicCCgQDACoICgktCAEHAAgBCQEnAwcEAQAiBwIJLQ4ICQAiCQIJLQ4ICScCCgQDACoHCgkAIgUCCi4CAAqAAy4CAAmABC4CAAiABSUAAAiLACIHAgktCwkIJwIKBAIAKgkKBTcLAAUACC0IAQUAAAECAS0IAQcnAggEBwAIAQgBJwMHBAEAIgcCCC0KCAktDg0JACIJAgktDgEJACIJAgktDgwJACIJAgktDgwJACIJAgktDgwJACIJAgktDgwJLQ4HBS0LAgEAIgECAS0OAQItCAEBAAABAgEtDg8BLQgBBwAAAQIBLQ4PBy0KEgQjAAArzAwqBBoGJAIABgAALwojAAAr3i0KGgQjAAAr5wwqBBwGJAIABgAALsUjAAAr+S0LAQQtCwcBHAoEBgAtCwUELgIABIADKACABAQAByUAAEF6LgiABQAHASIAB4BEAAgtDgYIHAoBBAAuAgAHgAMoAIAEBAAHJQAAQXouCIAFAAEAKgElBi0OBAYtDgEFLQgBAQAAAQIBLQ4PAS0IAQQAAAECAS0ODwQtChICIwAALHsMKgIaBiQCAAYAAC6AIwAALI0tChoCIwAALJYMKgIcBiQCAAYAAC47IwAALKgtCwEDLQsEARwKAwQALQsFAy4CAAOAAygAgAQEAAclAABBei4IgAUABgAqBicHLQ4EBxwKAQMALgIABoADKACABAQAByUAAEF6LgiABQABACoBKQQtDgMELQ4BBS0IAQMnAgQEBwAIAQQBJwMDBAEAIgMCBC0KBAUtDgwFACIFAgUtDgwFACIFAgUtDgwFACIFAgUtDgwFACIFAgUtDgwFACIFAgUtDgwFLQgBBAAAAQIBLQ4DBC0KEgIjAAAtZwwqAikDJAIAAwAALfEjAAAteS0LBAEnAgQEBgYiBAICJwIGBAMAKgQGBS0IAQMACAEFAScDAwQBACIDAgUtDgQFACIFAgUtDgQFJwIGBAMAKgMGBQAiAQIGLgIABoADLgIABYAELgIABIAFJQAACIsAIgMCBS0LBQQnAgYEAgAqBQYBNwsAAQAEJgAiAQIFACoFAgYtCwYDLQsEBS4CAAWAAygAgAQEAAclAABBei4IgAUABgAiBgIHACoHAggtDgMILQ4GBAAqAhYDLQoDAiMAAC1nLQsEBhgqBhsHACIDAggAKggCCS0LCQYcCgYIBgAqBwgGDioHBgkkAgAJAAAubiUAAEIsLQ4GBAAqAhYGLQoGAiMAACyWLQsBBhgqBhsHACIDAggAKggCCS0LCQYcCgYIBgAqBwgGDioHBgkkAgAJAAAusyUAAEIsLQ4GAQAqAhYGLQoGAiMAACx7LQsHBhgqBhsIACICAgkAKgkECi0LCgYcCgYJBgAqCAkGDioIBgokAgAKAAAu+CUAAEIsLQ4GBwAqBBYGLQoGBCMAACvnLQsBBhgqBhsIACICAgkAKgkECi0LCgYcCgYJBgAqCAkGDioIBgokAgAKAAAvPSUAAEIsLQ4GAQAqBBYGLQoGBCMAACvMACIIAgcAKgcECS0LCQUtCwYHLgIAB4ADKACABAQADSUAAEF6LgiABQAJACIJAgoAKgoECy0OBQstDgkGACoEFgUtCgUEIwAAKrktCwgJAioUBAoOKgQUECQCABAAAC+0JQAAQlAMKgoOECQCABAAAC/GJQAAQmIAIgcCEQAqEQoTLQsTEBwKEAoALQsFEAQqChARACoJEQotDgoIBSIAEIBDAAktDgkFACoEFgktCgkEIwAAKh8tCwkKAioUBBAOKgQUESQCABEAADAgJQAAQlAMKhAOESQCABEAADAyJQAAQmIAIgcCFQAqFRAYLQsYERwKERAALQsIEQQqEBEVACoKFRAtDhAJBSIAEYBDAAotDgoIACoEFgotCgoEIwAAKbktCwoQAioUBBEOKgQUFSQCABUAADCMJQAAQlAMKhEOFSQCABUAADCeJQAAQmIAIgcCGAAqGBEZLQsZFRwKFREALQsIFQQqERUYACoQGBEtDhEKBSIAFYBDABAtDhAIACoEFhAtChAEIwAAKVMAIgoCFQAqFQQYLQsYES0LCBUuAgAVgAMoAIAEBAAfJQAAQXouCIAFABgAIhgCGQAqGQQdLQ4RHS0OGAgAKgQOEQwqEQcVJAIAFQAAMTAlAABCYgAiCgIYACoYERktCxkVLQsJES4CABGAAygAgAQEAB8lAABBei4IgAUAGAAiGAIZACoZBB0tDhUdLQ4YCQAqBBARDCoRBxUkAgAVAAAxgyUAAEJiACIKAhgAKhgRGS0LGRUtCwURLgIAEYADKACABAQAHyUAAEF6LgiABQAYACIYAhkAKhkEHS0OFR0tDhgFACoEFhEtChEEIwAAKRotCwkQAioUBBEOKgQUFSQCABUAADHoJQAAQlAMKhEOFSQCABUAADH6JQAAQmIAIgcCGAAqGBEZLQsZFRwKFREALQsIFQQqERUYACoQGBEtDhEJBSIAFYBDABAtDhAIACoEFhAtChAEIwAAJ9IAIgkCEAAqEAQRLQsRBy0LCBAuAgAQgAMoAIAEBAAfJQAAQXouCIAFABEAIhECFQAqFQQYLQ4HGC0OEQgAKgQWBy0KBwQjAAAnmS0LEBECKhQEFQ4qBBQYJAIAGAAAMp4lAABCUAwqFQ4YJAIAGAAAMrAlAABCYgAiBwIZACoZFR0tCx0YHAoYFQAtCwgYBCoVGBkAKhEZFS0OFRAFIgAYgEMAES0OEQgAKgQWES0KEQQjAAAm8gAiCAIRACoRBBUtCxUHLQsQES4CABGAAygAgAQEAB8lAABBei4IgAUAFQAiFQIYACoYBBktDgcZLQ4VEAAqBBYHLQoHBCMAACa5LQsRFQIqFAQYDioEFBkkAgAZAAAzVCUAAEJQDCoYDhkkAgAZAAAzZiUAAEJiACIHAh0AKh0YHi0LHhkcChkYAC0LEBkEKhgZHQAqFR0YLQ4YEQUiABmAQwAVLQ4VEAAqBBYVLQoVBCMAACYSACIHAhQAKhQEFS0LFREtCxAULgIAFIADKACABAQAHyUAAEF6LgiABQAVACIVAhgAKhgEGS0OERktDhUQACoEFhEtChEEIwAAJdQcCgQGAAAqDgYNACIRAhQAKhQEFS0LFQYwCgAGAA0AKgQWBi0KBgQjAAAktwAiBgIVACoVBB0tCx0QLQsUFS4CABWAAygAgAQEABklAABBei4IgAUAHQAiHQIeACoeBB8tDhAfLQ4dFAAqBBYQLQoQBCMAACRuLQsQFC0LDR4tCxUfLQsdIAwqBB8hJAIAIQAANIcjAAA04wAiHgIiACoiBCMtCyMhACIUAiMAKiMEJC0LJCIAKiEiIy4CAB6AAygAgAQEAAUlAABBei4IgAUAIQAiIQIiACoiBCQtDiMkLQ4UEC0OIQ0tDh8VLQ4gHSMAADTjACoEFhQtChQEIwAAI6QAIgYCHwAqHwQgLQsgHi0LEB8tCw0gLQsVIS0LHSIKKiIUIyQCACMAADUlJwIkBAA8BiQBCyIAIYBEACIkAgAiAAA1oSMAADU6DSIAIYBEACIkAgAiAAA1TyUAAEJiLgIAH4ADKACABAQABCUAAEF6LgiABQAiACIiAiMAKiMhJC0OHiQAKiEWHg4qIR4fJAIAHwAANYwlAABCLC0OIhAtDiANLQ4eFS0OFB0jAAA2Ni0KEh8jAAA1qg0iAB+ARAAgJAIAIAAANkQjAAA1vy0LEB8tCw0gLQsdIS0LICIAIiICIi0OIiAtCAEiJwIjBAUACAEjAScDIgQBACIgAiMnAiQEBAAiIgImPw8AIwAmLgIAH4ADKACABAQABCUAAEF6LgiABQAgACogFiMtDh4jLQ4gEC0OIg0tDhYVLQ4hHSMAADY2ACoEFh4tCh4EIwAAI28tCxAgLQsNIS0LFSItCx0jDCofIiQkAgAkAAA2ZiMAADbCACIhAiYAKiYfKC0LKCQAIiACKAAqKB8qLQsqJgAqJCYoLgIAIYADKACABAQABSUAAEF6LgiABQAkACIkAiYAKiYfKi0OKCotDiAQLQ4kDS0OIhUtDiMdIwAANsIAKh8WIC0KIB8jAAA1qgAqFRYEACIeAhAAKhAVHS0LHQ0tCyIQDCoEER0kAgAdAAA2+SUAAEJiLgIAEIADKACABAQAGCUAAEF6LgiABQAdACIdAh8AKh8EIC0ODSAAKgQTDQ4qBA0QJAIAEAAANzYlAABCLAAiBgIfACofFSAtCyAQDCoNER8kAgAfAAA3ViUAAEJiLgIAHYADKACABAQAGCUAAEF6LgiABQAfACIfAiAAKiANIS0OECEtDh8iLQoEFSMAACKNLQszNwQqNzc4AiocMDcOKjAcOSQCADkAADepJQAAQlAMKjccOSQCADkAADe7JQAAQmIAIjYCOgAqOjc7LQs7ORwKOTcABCo4FTkEKjc5OgIqMjc5BCo5ODcAKjo3OC0OODMAKjAWNy0KNzAjAAAg/C0LMzcEKjc3OAIqHDA3DiowHDkkAgA5AAA4GSUAAEJQDCo3HDkkAgA5AAA4KyUAAEJiACI2AjoAKjo3Oy0LOzkcCjk3AAQqOBU5BCo3OToCKjI3OQQqOTg3ACo6NzgtDjgzACowFjctCjcwIwAAH4otCzY4BCo4ODkCKhwwOA4qMBw6JAIAOgAAOIklAABCUAwqOBw6JAIAOgAAOJslAABCYgAiNwI7ACo7ODwtCzw6HAo6OAAEKjkVOgQqODo7AioyODoEKjo5OAAqOzg5LQ45NgAqMBY4LQo4MCMAAB4dLQsfNwQqNzc4AiocMzcOKjMcOSQCADkAADj5JQAAQlAMKjccOSQCADkAADkLJQAAQmIAIjACOgAqOjc7LQs7ORwKOTcABCo4FTkEKjc5OgIqMjc5BCo5ODcAKjo3OC0OOB8AKjMWNy0KNzMjAAAcqy0LMDYEKjY2NwIqHEA2DipAHDgkAgA4AAA5aSUAAEJQDCo2HDgkAgA4AAA5eyUAAEJiACIzAjkAKjk2Oi0LOjgcCjg2AAQqNxU4BCo2ODkCKjI2OAQqODc2ACo5NjctDjcwACpAFjYtCjZAIwAAGz4AKh4XIQwqIREjJAIAIwAAOdAlAABCYgAiHwIkACokISUtCyUjLQsiIS4CACGAAygAgAQEAAwlAABBei4IgAUAJAAiJAIlAColHiYtDiMmLQ4kIgAqHhYhLQohHiMAABUvACoeFiAMKiARIiQCACIAADoxJQAAQmIAIh8CIwAqIyAkLQskIi0LISMuAgAjgAMoAIAEBAAMJQAAQXouCIAFACQAIiQCJQAqJR4mLQ4iJi0OJCEtCiAeIwAAFLEtCyAhLQsfIwwqIxEkJAIAJAAAOpAlAABCYgAiIQIlAColIyYtCyYkACojFiUOKiMlJiQCACYAADq1JQAAQiwtDiEgLQ4lHy0LIiEuAgAhgAMoAIAEBAAYJQAAQXouCIAFACMAIiMCJQAqJR4mLQ4kJi0OIyIAKh4WIS0KIR4jAAAUMxwKHx4AACoOHiEvCgAhAB4tCyAhLgIAIYADKACABAQAGCUAAEF6LgiABQAiACIiAiMAKiMfJC0OHiQtDiIgACofFh4tCh4fIwAAE6gtCw4iLQseIy0LICQtCyElDCofJCYkAgAmAAA7ZyMAADvDACIjAicAKicfKC0LKCYAIiICKAAqKB8pLQspJwAqJicoLgIAI4ADKACABAQABSUAAEF6LgiABQAmACImAicAKicfKS0OKCktDiIOLQ4mHi0OJCAtDiUhIwAAO8MAKh8WIi0KIh8jAAASxy0LDiItCx4jLQsgJC0LISUMKh8kJiQCACYAADvzIwAAPE8AIiMCJwAqJx8oLQsoJgAiIgIoACooHyktCyknAComJyguAgAjgAMoAIAEBAAFJQAAQXouCIAFACYAIiYCJwAqJx8pLQ4oKS0OIg4tDiYeLQ4kIC0OJSEjAAA8TwAqHxYiLQoiHyMAABIYLQsOIi0LHiMtCyAkLQshJQwqHyQmJAIAJgAAPH8jAAA82wAiIwInAConHygtCygmACIiAigAKigfKS0LKScAKiYnKC4CACOAAygAgAQEAAUlAABBei4IgAUAJgAiJgInAConHyktDigpLQ4iDi0OJh4tDiQgLQ4lISMAADzbACofFiItCiIfIwAAER4tCx4fGCofGyAAIgMCIQAqIQ0iLQsiHxwKHyEGACogIR8OKiAfIiQCACIAAD0cJQAAQiwtDh8eACoNFh8tCh8NIwAAEAYtCxkfGCofGyAAIgMCIQAqIQ0iLQsiHxwKHyEGACogIR8OKiAfIiQCACIAAD1hJQAAQiwtDh8ZACoNFh8tCh8NIwAAD+stCxkdGCodGx4AIgICHwAqHw0gLQsgHRwKHR8GACoeHx0OKh4dICQCACAAAD2mJQAAQiwtDh0ZACoNFh0tCh0NIwAAD6EtCxAcGCocGx0AIgICHgAqHg0fLQsfHBwKHB4GACodHhwOKh0cHyQCAB8AAD3rJQAAQiwtDhwQACoNFhwtChwNIwAAD4EAKg0XGwwqGxEcJAIAHAAAPhQlAABCYgAiDwIdACodGx4tCx4cLQsaGy4CABuAAygAgAQEAAwlAABBei4IgAUAHQAiHQIeACoeDR8tDhwfLQ4dGgAqDRYbLQobDSMAAA57ACoNFhkMKhkRGiQCABoAAD51JQAAQmIAIg8CGwAqGxkcLQscGi0LFxsuAgAbgAMoAIAEBAAMJQAAQXouCIAFABwAIhwCHQAqHQ0eLQ4aHi0OHBctChkNIwAADfgtCxMXLQsPGgwqGhEbJAIAGwAAPtQlAABCYgAiFwIcACocGh0tCx0bACoaFhwOKhocHSQCAB0AAD75JQAAQiwtDhcTLQ4cDy0LGRcuAgAXgAMoAIAEBAAYJQAAQXouCIAFABoAIhoCHAAqHA0dLQ4bHS0OGhkAKg0WFy0KFw0jAAANdRwKDxcAACoNFxkvCgAZABctCxMZLgIAGYADKACABAQAGCUAAEF6LgiABQAaACIaAhsAKhsPHC0OFxwtDhoTACoPFhctChcPIwAADOotCxAXLQsNGS0LERotCxMbDCoPGhwkAgAcAAA/qyMAAEAHACIZAh0AKh0PHi0LHhwAIhcCHgAqHg8fLQsfHQAqHB0eLgIAGYADKACABAQABSUAAEF6LgiABQAcACIcAh0AKh0PHy0OHh8tDhcQLQ4cDS0OGhEtDhsTIwAAQAcAKg8WFy0KFw8jAAAL/y0LEBctCw0ZLQsRGi0LExsMKg8aHCQCABwAAEA3IwAAQJMAIhkCHQAqHQ8eLQseHAAiFwIeACoeDx8tCx8dACocHR4uAgAZgAMoAIAEBAAFJQAAQXouCIAFABwAIhwCHQAqHQ8fLQ4eHy0OFxAtDhwNLQ4aES0OGxMjAABAkwAqDxYXLQoXDyMAAAtQLQsQFy0LDRgtCxEZLQsTGgwqDxkbJAIAGwAAQMMjAABBHwAiGAIcACocDx0tCx0bACIXAh0AKh0PHi0LHhwAKhscHS4CABiAAygAgAQEAAUlAABBei4IgAUAGwAiGwIcACocDx4tDh0eLQ4XEC0OGw0tDhkRLQ4aEyMAAEEfACoPFhctChcPIwAAClEoAIAEBHgADQAAAIAEgAMkAIADAABBVSoBAAEF96Hzr6Wt1Mo8BAIBJioBAAEFvh4//z6k9vo8BAIBJioBAAEF0C8ypaCSjSU8BAIBJi4BgAOABgsAgAYAAoAHJACABwAAQZUjAABBoC4AgAOABSMAAEIHLgAAAYAFAQAAAYAEAAEBAIADgASACS4AgAOACi4AgAWACwsAgAqACYAMJACADAAAQfMuAYAKgAguBIAIgAsBAIAKAAKACgEAgAsAAoALIwAAQcIoAYAFBAABAwCABgACgAYjAABCByYqAQABBQLcbieAdhKdPAQCASYqAQABBZbc+SbTS+DfPAQCASYqAQABBUWnynEZQeQVPAQCASYqAQABBQcqg+4Q95DwPAQCASYqAQABBSiGkrBH3P1DPAQCASYqAQABBcVrxFoOEAACPAQCASY=", + "debug_symbols": "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" }, { "name": "process_message", @@ -6784,18 +6956,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -6803,22 +6972,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -6835,19 +6998,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -6858,57 +7040,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -6924,13 +7098,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -6939,32 +7109,19 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "vb3friW5cWf9Ln3ti00yIkjqVQYDQ/ZoBgIEyZDlD/hg+N1nM5jkijrlw8qz9+m5US91V8XKf/ztTJLJ/M/f/tef/uU//s8///mv//tv//7bH/7Hf/72L3//81/+8uf/889/+du//vEff/7bX5//9j9/e4z/SbX+9ofyT89/tt/+oOOf/bc/1Oc/2/M/9/HP9NsfUhqQnzD+Wa5/yvVPff5zVGi2oC5oC/oF/bEgLcgLygJZsCr3Vbmvyn1V7lfl/HgsSAvygrJAFugCW1AXtAWrclqV06qcVuW0KqdVOa3KaVVOq3JaldOqnFflvCrnVTmvynlVzqtyXpXzqpxX5bwql1W5rMplVS6rclmVy6pcVuWyKpdVuazKsirLqiyrsqzKsirLqiyjch1QF7QF/QJ9LEgL8oKyQBboglVZV2UdlduAfoE9FqQFeUFZ8Kyc04Bn5awDbEFd0Bb0C+pjwbNy7gPygrJAFjwrl8cAW1AXjMrjQI3m5zDa34Rn5TIUowFOKAtkgS6wBXVBW9AvGG1wwqrcV+W+KvdVua/KfVXuq3JflftVuTweC9KCvKAskAW6wBbUBW3BqPw8p2W0wQlpQV5QFsgCXWAL6oK2YFXOq3JelfOqnFflvCrnVTmvynlVzqtyXpXLqlxW5bIql1W5rMplVS6rclmVy6pcVmVZlWVVllVZVmVZlWVVllVZVmVZlWVV1lVZV2VdlXVV1lVZV2VdlXVV1lVZV2VblW1VtlXZVmVblW1VtlXZVuXRBuUxoF8w2uCEtCAvKAtkgS6wBXXBqlxX5bYqt6uyjMM7WqWMwytpwPjr/m/agn7BOJgT0oK8oCyQBbrAFqzKuirrqmyrsq3Ktirbqmyrsq3Ktirbqmyrsq3KdVWuq3JdleuqXFfluirXVbmuynVVrqtyW5XbqtxW5bYqt1W5rcptVW6rcluV26rcV+W+KvdVua/KfVXuq3Jflfuq3FflflXWEWhiA9KCvKAskAW64FlZHwPqgragXzACTdOAtOBZWWVAWSALdIEtqAvagn7BCLQJacGqnFflvCrnVXkEmuqAuqAt6BeMQJuQFozKdUBZIAuelW3s6Qi0CXVBW9AvGIE24VnZxvaMQJtQFsiCUXnYR6BNqBeMhqZtwPjr41yMZmX+b55/uI7jPJrVhLagXzCa1YS04FmnjsqjWU2QBbpgVB6u0awmjMp9QL9gNKsJaUFeUBY8K7dx1Y1mNcEW1AXPym0chNGsHEazamMzRrOakBeUBaPyUIxmNcEW1AVtQb9gNKs+pKNZTcgLyoJn5T42YzSrCbZgVB5XwmhWE/oEG21nwvjrOuD5h3sbMG7e8oDnH+7PzbDRUiakBXlBWSALdIEtqAvaglU5r8p5Vc6rcl4b5nfdj8cg21Q3tU19kd96P2RQ2pQ3lU2ySTe5YxwHvwOf1Db1RX4T/hgb6nfhk/Km4UhjW/xGfJJuGg4/xH4vPm7PzW/G09hfvxt38tvxSWlT3lQ2DUcelf2efJJtqpvapr7Ib8wnpU15U9m0HbYdth22HdXrjX2raVPeVDbJJl3kz7Hjt938QXaSVx5npu8t7XtL+9rS6s+c4zmg+kPnpLJJNukm21Q3tU19kT98TtqOtB1pO9J2pO1I25G2wx85sw3yv1sH+d/tg3STbaqb2qa+yK/2SWlT3lQ2bUfZjrIdZTvKdpTtkO2Q7ZDtkO2Q7ZDtkO2Q7ZDtkO3Q7dDt0O3Q7dDt0O3Q7dDt0O3Q7bDtsO2w7bDtsO2w7bDtsO2w7bDtqNtRt6NuR92Ouh11O+p21O2o21G3o21H2462HW072na07Wjb0bajbUfbjr4dfTv6dvTt6NvRt6NvR9+Ovh19OdrjsSltypvKJtmkm2xT3dQ2bUfajrQdaTvSdqTtSNuRtiNtR9qOtB15O/J25O3I27HbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY7b7udt93O227nbbfzttt52+287Xbedjtvu5233c7bbudtt/O223nb7bztdt52O2+7nbfdzttu522387bbedvtvO123nY777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO923nc777ud993O+27nfbfzvtt53+2873bedzvvu5333c77bud9t/O+23nf7bzvdt53O++7nffdzvtu5323877bed/tvO92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", - "brillig_names": [ - "process_message" - ] + "bytecode": "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", + "debug_symbols": "TL3LsjS7jpz5LnvcgyRIAOR5lR7IWn2RlVmZyqwljerltQJO0H2i87lq/3QEI+CZGYGV+Z///D//73/9X//tv/zbf////uN//POv//M///mv//+//fu//9t/+y///h//9//1P//tP/773//vf/7z+/6fPP/8a/4f/+w/EX//M/751/77H/vnX+P397/z73/t73/X3/+uv//1f/71/U/gfxL/s//+j9+/Pfjf87v/O+7/2v3fef933f/1+79x/zfv/971zl1v/H4No8EaZsNq8IZoyIbd0CuPXnn0yqNXHr3y6JVHrzx65dErj1559MrWK1uvbL2y9crWK1uvbL2y9crWK1uvPHvl2SvPXnn2yrNXnr3y7JVnrzx75dkrr1559cqrV1698uqVV6+8euXVK69eefXK3it7r+y9svfK3it7r+y9svfK3it7rxy9cvTK0StHrxy9cvytbL8PoiEbdsO5kL+G0WANs2E19MrZK+e38vhgN5wLX68BRoM1zIZv5fXBt/L+IBqyYTecC1/rAf5WnvaBNcyG1fC38pwfREM2fCt/O/b14Af29SDgW/l8YA2zYTV4QzRkw244F74eBPTKo1cevfLolb8eXOODaMiG3XAufD0IGA3WMBtWQ69svbL1ytYrW688e+XZK89eefbKs1eevfLslWevPHvl2SuvXnn1yqtX/npwzQ9WgzdEQzbshnPh60HAaLCGXtl7Ze+VvVf2Xtl7Ze+Vo1eOXjl65eiVo1eOXjl65eiVo1eOXjl75eyVs1fOXjl75eyVs1fOXjl75eyVd6+8e+XdK+9eeffKu1fevfLulXevvHvl0yufXvn0yqdXPr3y6ZVPr3x65dMrn7vy/P0aRoM1zIbV4A3RkA274Vv5r6nn14OA0WANs2E1eEM0ZMNu6JWtV7Ze2Xrl6sHzwWrwhr+VfX2QDbvhXPh6EDAarGE2rAZv6JVnrzx75dkrr5tIc40Ga5gNq8EboiEbdsPNuum9svfK3it7r/z1oOcH3hAN2bAbzoWvBwGjwRpmQ68cvXL0ytErR6/89aD/vZTMrwcBo8EaZsNq8IZoyIbd0CvvXnn3yrtX/now/IPV4A3RkA274Vz4ehAwGqyhVz698umVT698euXTK5+78vr9GkaDNcyG1eAN0ZANu6FXHr3y6JVHrzx65dErj1559MqjVx698uiVrVe2Xtl6ZeuVrVe2Xtl6ZeuVrVe2Xnn2yrNXnr3y7JVnrzx75dkrz1559sqzV1698uqVV6+8euXVK69eefXKq1devfLqlb1X9l7Ze2Xvlb1X9l7Ze2Xvlb1X9l45euXolaNXjl45euXolaNXjl45euXolbNXzl45e+XslbNXzl45e+XslbNXzl5598q7V969cvfg6h5c3YOre3B1D67uwdU9uLoHV/fg6h5c3YOre3B1D67uwdU9uLoHV/egdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3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MPd6cRCNOImL6MQgJnET6ZZ0S7ol3SpLZhQuohODmMRNPA8rSy4OohHptum26bbptum26bbpduh26HboVlkyvXARnRjEJG7iacTc68VBNOIkLqITg5jETaTboNug26DboNug26DboNug26DboJvRzehmdDO6Gd2MbkY3o5vRzeg26TbpNuk26TbpNuk26TbpNuk26bbotui26Lbotui26Lbotui26Lbo5nRzujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tbptum26bbptum26bbptum26bbptuh26HboRuzZDNLNrNkM0s2s2QzSzaz5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSzD3OrPQiJO4iE4MYhI38TxElgDptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HbabWLu9eIgGnESF9GJQUziJtJt0G3QbdBt0G3QbdBt0G3QbdBt0M3oZnQzuhndjG5GN6Ob0c3oZnSbdJt0qyz5fhZvYu714iJ+bve30YKYxE08DytLLg6iESdxEem26Lbotui26OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HbeW6Ye704iEacxEV0YhCTuIl0G3QbdBt0G3QbdBt0G3QbdBt0G3QzuhndjG5GN6Ob0c3oZnQzuhndJt0m3SbdJt0m3Zglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpgl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" }, { "name": "public_dispatch", @@ -7008,15 +7165,6 @@ "error_kind": "string", "string": "HashlockAlreadySet" }, - "2830029349304997821": { - "error_kind": "fmtstring", - "length": 27, - "item_types": [ - { - "kind": "field" - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" @@ -7045,10 +7193,23 @@ "error_kind": "string", "string": "attempt to multiply with overflow" }, + "9174444391250494040": { + "error_kind": "string", + "string": "Function get_htlc_public can only be called statically" + }, "9323748002447105156": { "error_kind": "string", "string": "NotPassedTimelock" }, + "10492081608786484886": { + "error_kind": "fmtstring", + "length": 27, + "item_types": [ + { + "kind": "field" + } + ] + }, "10870837545714573535": { "error_kind": "string", "string": "HTLCAlreadyExists" @@ -7061,10 +7222,6 @@ "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "15001264570739363109": { "error_kind": "string", "string": "Function lock_public_solver can only be called internally" @@ -7073,10 +7230,6 @@ "error_kind": "string", "string": "Function add_lock_public_user can only be called internally" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17618083556256589634": { "error_kind": "string", "string": "Initialization hash does not match" @@ -7091,11 +7244,8 @@ } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "public_dispatch" - ] + "bytecode": "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", + "debug_symbols": "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" }, { "name": "redeem_private", @@ -7177,7 +7327,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -7233,7 +7383,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -7262,7 +7412,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -7456,7 +7606,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -7734,351 +7884,450 @@ { "name": "include_by_timestamp", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -8087,30 +8336,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -8167,26 +8412,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -8195,53 +8455,80 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "note_hash_counter", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -8250,50 +8537,59 @@ } ] } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -8302,17 +8598,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -8335,7 +8631,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -8391,7 +8687,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -8420,7 +8716,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -8614,7 +8910,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -8753,6 +9049,18 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, + "1004672304334401604": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "1186437190978851533": { "error_kind": "string", "string": "Non-zero hint for zero hash" @@ -8761,41 +9069,20 @@ "error_kind": "string", "string": "Hint values do not match hash" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -8804,6 +9091,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -8812,33 +9103,14 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6485997221020871071": { "error_kind": "string", "string": "call to assert_max_bit_size" }, + "7136043998373234005": { + "error_kind": "string", + "string": "Field failed to decompose into specified 40 limbs" + }, "7233212735005103307": { "error_kind": "string", "string": "attempt to multiply with overflow" @@ -8855,45 +9127,79 @@ "error_kind": "string", "string": "Proving public value inclusion failed" }, - "11418088424205762236": { + "10676044680617262041": { "error_kind": "fmtstring", "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -8909,17 +9215,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -8928,47 +9226,20 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "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", - "debug_symbols": "vL3dkvS6cp55L/vYBwSQP0jfysSEQ2PLDkXskByyPCcK3/sUE0C++XWr0OiqWnPi79H26nxIkJlFAiDw73/7b//4//zv//Ff/umf//u//K+//ef/69//9v/86z/9/e//9D/+y9//5b/+w7/907/88+N//fe/Xff/U9rjn/KfHv+W+W+d/7b5L81/ef4r81+d//b5r41/acajGY9mPJrxaMajGY9mPJrxaMajGY9nPJ7xeMbjGY9nPJ7xeMbjGY9nPJ7xZMaTGU9mPJnxZMaTGU9mPJnxZMaTGU9nPJ3xdMbTGU9nPJ3xdMbTGU9nPJ3x+ozXZ7w+4/UZr894fcbrM16f8fqM12c8m/FsxrNHPL7/bfNfmv/y/Ffmvzr/7fNf83/rdc1/y/y3zn/b/PcRT+5/ef4r81+d//b5r41/yyOe3f/ex9duqAvaAlrAC2TBfdZ6Q19gE+q14I7cb6gL2oI7crmBF8iCR+R6K2pfYBPulBlQFtQFbQEt4AWyYEVuK3JbkWlFphWZVmRakWlFphWZVmRakWlFphWZV2RekXlF5hWZV+Q7l+p9Me9kGqAL+gKbcCfUgLKgLmgLaMGKLCuyrMiyIsuKrCuyrsi6IuuKrCuyrsi6IuuKrCuyrsh9Re4rcl+R+4rcV+S+IvcVua/IfUXuK7KtyLYi24psK7KtyLYi24psK7KtyDYjt+taUBbUBW0BLeAFskAX9AUrclmRy4pcVuSyIpcV+c7B2m+QBbqgL7AJdw4OKAvqgraAFqzIdUWuK3Jdke8cbI9btN05OKAsqAvaAlrAC2SBLugLVmRakWlFphX5zsEmN9ACXiALdEFfYBPuHBxQFtQFKzKvyLwi84p85yBdN/QFNuHOwQFlQV3QFtACXiALVmRZkWVF1hVZV2RdkXVF1hVZV2RdkXVF1hVZV+S+IvcVua/IfUXuK3JfkfuK3FfkviL3FdlWZFuRbUW2FdlWZFuRbUW2FdlWZJuR6boWlAV1QVtAC3iBLNAFfcGKXFbksiKXFbmsyGVFLityWZHLilxW5LIi1xW5rsh1Ra4rcl2R64pcV+S6ItcVua7IbUVuK3JbkduK3FbktiK3FbmtyG1Fbisyrci0ItOKTCsyrci0ItOKTCsyrci0IvOKzCsyr8i8IvOKzCsyr8grB2nlIK0cJM/BekNZUBe0BbSAF8gCXdAX2ARdkXVF1hVZV2RdkXVF1hVZV2RdkXVF7ityX5H7itxX5L4i9xW5r8h9Re4rcl+RbUW2FdlWZFuRbUW2FdlWZFuRbUW2GZmva0FZUBe0BbSAF8gCXdAXrMhlRS4rclmRy4pcVuSyIpcVuazIZUUuK3JdkeuKXFfkuiLXFbmuyHVFrityXZHritxW5LYitxW5rchtRW4rcluR24rcVuS2ItOKTCsyrci0ItOKTCsyrci0ItOKTCsyr8i8IvOKzCsyr8i8IvOKzCsyr8i8Iq8c5JWDvHKQVw7yykFeOcgrB3nlIK8c5JWDvHKQVw7yykFeOcgrB3nlIK8c5JWDvHKQVw7yykFeOcgrB3nlIK8c5JWDvHKQPQflhr7AJngOOpQFdUFbQAt4gSxYkW1FthlZrmvB/RbYbqgL2gJawAtkgS7oC2zCnYMDVuSyIpcVuazIZUUuK3JZkcuKXFbkuiLXFbmuyHcOMt9AC3iBLNAFfYFNuHNwQFlQF6zIbUVuK3Jbke8c5Lsx7xwcYBPuHBxQFtQFbQEt4AWyYEWmFZlWZF6R7xxku6EuaAvuV/lyAy+QBbqgL7AJdw4OKAvqgrZgRZYVWVZkWZHvHBS6wSbcOTigLKgL2gJawAtkgS5YkXVF7ityX5HvHJT76tw5OIAW8AJZoAv6Aptw5+CAsmBFthXZVmRbkW1FthXZVmSbkfW6FpQFdUFbQAt4gSzQBX3BilxW5LIilxW5rMhlRS4rclmRy4pcVuSyItcVua7IdUWuK3JdkeuKXFfkuiLXFbmuyG1FbityW5HbitxW5LYitxW5rchtRW4rMq3ItCLTikwrMq3ItCLTikwrMq3ItCLziswrMq/IvCLziswrMq/IvCLziswrsqzIsiLLiiwrsqzIsiLLiiwrsqzIsiLriqwrsq7IuiLriqwrsueg3qAL+gKb4DnoUBbUBW0BLeAFK3JfkfuK3FdkW5FtRbYV2VZkW5FtRbYV2VZkW5FtRu7XtaAsqAvaAlrAC2SBLugLVuSyIpcVuazIZUUuK3JZkcuKXFbksiKXFbmuyHVFrityXZHrilxX5Loi1xW5rsh1RW4rcluR24rcVuS2IrcVua3IbUVuK3JbkWlFphWZVmRakWlFphWZVmRakWlFphWZV2RekXlF5hWZV2RekXlF5hWZV2RekWVFlhVZVmRZkWVFlhVZVmRZkWVFlhVZV2RdkXVF1hVZV2RdkVcO9pWDfeVgXznYVw72lYN95WBfOdhXDvaVg33lYF852FcO9pWDfeVgXznYVw72lYN95WBfOdhXDvaVg33lYF85aCsHbeWgrRy0lYO2ctBWDtrKQVs5aCsHbeWgrRy0lYO2ctBWDtrKQVs5aCsHbeWgrRy0lYO2ctBWDtrKQVs5aCsHbeWgrRy0lYO2ctBWDtrKQVs5aCsHbeWgrRy0lYO2ctBWDtrKQVs5aCsHbeWg3Tmo1w1tAS3gBbJAF/QFNuHOwQFlwYrMKzKvyLwi3zmo5QZd0BfYhDsHB5QFdUFbQAt4wYosK7KsyLIi64qsK7KuyLoi64qsK7KuyLoi64qsK3JfkfuK3FfkviL3FbmvyH1F7ityX5H7imwrsq3ItiLbimwrsq3ItiLbimwrss3I5bquoBJUg1oQBXGQBGlQDwpHCUcJRwlHCUcJx52Tyk4SpEG3ozvZojsxJ5WgGtSCKIiDJEiDwlHD0cLRwtHC0cLRwtHC0cLRwtHC0cJB4aBwUDgoHBQOCgeFg8JB4aBwcDg4HBwODgeHg8PB4eBwcDg4HBIOCYeEQ8Ih4ZBwSDgkHBIOCYeGQ8Oh4dBwaDg0HBoODYeGQ8PRw9HD0cPRw9HD0cPRw9HD0cPRw2HhsHBYOCwcFg4Lh4XDwmHhsOUo1xVUgmpQC6IgDpIgDepB4SjhKOEo4SjhKOEo4SjhKOGIPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae18jzGnleI89r5HmNPK+R5zXyvEae+xSifjm1IAriIAnSoB5ki+48n1SCwmHhsHBYOCwcFg4Lhy2HTyqaVIJqUAuiIA6SIA3qQeEo4SjhKOEo4SjhKOEo4SjhKOEo4ajhqOGo4ajhqOGo4ajhqOGo4ajhaOFo4WjhaOFo4WjhaOFo4WjhaOGgcFA4KBwUDgoHhYPCQeGgcFA4OBwcDg4Hh4PDweHgcHA4OBwcDgmHhEPCIeGQcEg4JBwSDgmHhEPDoeHQcNx53osTBXGQBGlQD7JFd55PKkE1KBw9HD0cPRw9HD0cPRwWDguHhcPCYeGwcFg4LBwWDlsOn7g0qQTVoBZEQRwkQRrUg8JRwlHCUcJRwlHCUcJRwlHCUcJRwlHDUcNRw1HDUcNRw1HDUcNRw1HD0cLRwtHC0cLRwtHC0cLRwtHC0cJB4aBwUDgoHBQOCgeFg8Lhec5OtsjzfNDt6E41qAVREAdJkAb1IFvkeT4oHBIOCYeEQ8Ih4ZBwSDgkHBoODYeGQ8Oh4dBwaDg0HBoODUcPRw9HD0cPRw9HD0cPRw9HD0cPh4XDwmHhsHBYOCwcFg4Lh4XDlsMnR00qQTWoBVEQB0mQBvWgcJRwlHCUcJRwlHCUcJRwlHCUcJRw1HDUcNRw1HDUcNRw1HDUcNRw1HC0cLRwtHC0cLRwtHC0cLRwtHC0cFA4KBwUDgoHhYPCQeGgcFA4KBwcjshzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hzjjznyHOOPOfIc44858hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc4k8l8hziTyXyHOJPJfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hzjTzXyHONPNfIc40818hznxBmxYmDJEiDepAtuvN8UgmqQS0oHBwODgeH485zq0626M7zSSWoBrUgCuIgCdKgcEg4NBwaDg2HhkPDoeHQcGg4NBwajh6OHo4ejh6OHo4ejh6OHo4ejh4OC4eFw8Jh4bBwWDgsHBYOC4cth08km1SCalALoiAOkiAN6kHhKOEo4SjhKOEo4SjhKOEo4SjhuPPc5KY7zyeVoNvRnVoQBXGQBGlQD7JFd55PKkHhaOFo4WjhaOFo4WjhaOGgcFA4KBwUDgoHhYPCQeGgcFA4OBwcDg4Hh4PDweHgcHA4OBwcDgmHhEPCIeGQcEg4JBwSDgmHhEPDoeHQcGg4NBwaDg2HhkPDoeHo4ejh6OHo4ejh6OHo4ejh6OHo4bBwWDgsHBYOC4eFw8Jh4bBw2HL4ZLVJJagGtSAK4iAJ0qAeFI4SjhKOEo4SjhKOEo4SjhKOEo4SjhqOGo7Ic4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHOLPLfIc4s8t8hzizy3yHNbeV6vlef1Wnler5Xn9Vp5Xq+V5/VaeV6vlef1Wnler5Xn9brCUcJRwlHCUcJRwlHCUcJRwlHCUcJRw1HDUcNRw1HDUcNRw1HDUcNRw9HC0cLRwtHC0cLRwtHC0cLRwtHCQeGgcFA4KBwUDgoHhYPCQeGgcHA4OBwcDg4Hh4PDweHgcHA4OBwSDgmHhEPCIeGQcEg4JBwSDgmHhkPDoeHQcGg4NBwaDg2HhkPD0cPRw9HD0cPRw9HD0cPRw9HD0cNh4fC1b67iWIENSEAGClCBHWgLfWLcwgK8T0mdWhAFcZAEaVAPskWe8oNKUDhKOEo4SjhKOEo4SjhKOGo4ajhqOGo4ajhqOGo4ajhqOGo4WjhaOFo4WjhaOFo4WjhaOFo4WjgoHBQOCgeFg8JB4aBwUDgoHBQODgeHg8PBy+GThcaqQr7c1lUd/f4jRwIyUIAK7EAL9GW3JhZgBcJGsBFsBBvBRrARbAwbw8awMWwMG8PGsDFsDBvDJrAJbAKbwCawCWwCm8AmsAlsCpvCprApbAqbwqawKWwKm8LWYeuwddg6bB22DpsvAHb5beZrgE3sQAv0xcAmFuBtG7en18SJBGTgbSt+/3pNnHjbCjvaQp9ctLAAK7ABCchAASqwA2ErsBXYfDWxIo4NSEAGClCBbuuOFuiri028bbU4VmADEpCBArxtvtqTTzxaaIFeNSa6zY/Ml+qb2IB+6Obowe5r7NOJHgXY8f6zVh0bkIAMFKAC77jNbV4UBnpRmFiAbvNj8KIw8bbdy6ZUn1y0UIAK7EAL9KJA5FiAFdiAbvPm86Iw0W1+kF4UJnagBXpRYBd7UZhYgQ1IQAbeNvbD8aIwsQMt0IsC+0F6UZhYgX5ufvd5UZjIQAv0nGc/C89u9pvAU3r+r/eRiR+kp/TEDrSFPo9o4X1k97fy1WcSLWxAAjJQgG7rjh1ogZ7SE91mjhXYgLdN/cg8pScK8LZpdbxtOtbZu23390CVxoKBAwuwAhuQgLetu8JTeqICO9ACPaUnFmAFNiABYWuwNdgabJ7z3c/Yc35iAxKQgRLoCdnHYoMKdIVfQsGhCw5dcOieIt0bylNkIgEZKEAFdqAFeopMLEDYOmwdtg5bh63D1mHzX8gujh5BHT2C33KeOBMV2IG20CfmLCzACmxAAjJQgArsQNgKbAW2AluBrcBWYCuwFdgKbAW2CluFrcJWYauwVdgqbBW2CluFrcHWYGuwNdgabA22BluDrcHWYCPYCDaCjWAj2Ag2go1gI9gINoaNYWPYGDaGjWFj2Bg2ho1hE9gENoFNYBPYBDaBTWAT2AQ2hU1hU9gUNoVNYVPYFDaFTWHrsHXYOmwdtg5bh63D1mHrsHXYDDaDzWAz2Aw21BJGLWHUEkYtYdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkEtEdQSQS0R1BJBLRHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1BJFLVHUEkUtUdQSRS1R1JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqic8iKvdkwurTiBZW4H041hwJyEABKrADLdATcmIBViBsCpsnpA+3+KyihQrsQAv0hJz4sFUfuPO5RQsbkIB8Y3UUoAL7jX5kvjnAQN8eYKLbyLECG5CAbmNHjyuOttDnFS0sQI/bHT2uOd5xy+XIQAEq8LZ5z79PMJroGwZMLMDb5rty+NSi6h3wPreoek+6Ty6q3mfus4tqHX/WgRboOwdMLMAKbMDbVqsjA2+bd4n7PKOFHWiBvqPHxAK8bc3bYezrMZCADLxtzQ9n7O8xsANvm3ef29jlY2ABuo0c3ebHMHb7GMhAASqwA91239U2dv4YWIAV2IAEZKAAFdiBsAlsApvAJrD5riDN70nfF2SiAP26+R3lu4NMtEDfIWRiAVbgbSNvX98pZCIDBajADrRA3zVkYgFWIGwdtg5bh82LAvlBelGYWIAV2IAEZKAAFdiBy9Z8atLCAqzABiQgAwWowA6ErcBWYCuwFdgKbAW2AluBrcBWYKuwVdgqbBW2CluFrcJWYauwVdgabA22BluDrcHWYGuwNdgabA02go1gI9gINoKNYCPYCDaCjWBj2Bg2ho1hY9gYNoaNYWPYGDaBTWAT2AQ2gU1gE9gENoFNYFPYFDaFTWFT2BQ2hU1hU9gUtg5bh63D1mHrsHXYOmwdtg5bh81gM9gMNoPNYDPYDDaDzWBDLSmjlpBjAVZgAxKQga64HDvQAkcBGViAFdiABGSgAGErsBXYKmwVtgpbha3CVmGrsFXYKmwVtgZbg63B1mBrsDXYGmwNtgZbg41gI9gINoKNYCPYCDaCjWAj2Bg2ho1hY9gYNoaNYWPYGDaGTWAT2AQ2gU1gE9gENoFNYBPYFDaFTWFT2BQ2hU1hU9gUNoWtw9Zh67B12DpsHbYOW4etw9ZhM9gMNoPNYDPYDDaDzWAz2Cxs9bqABViBDUhABgpQgR0I26gl6liAFei27khABgpQgR1429htXksmFqDbzLEBCchAASrwtt37VrSxJeFAryUTC7ACG5CADBSgAmFrsBFsBJvXEq6ODUhABgpQgW5jRwv0WjLRbeJYgQ1IQI/rF3ZsUuhXaGxTOLAC7wjiV8jrw0QG3sd7b0zRxpaFEzvQAr0+iJ+Q14eJFdiAHtebz3P+nhrTxgaFEwvQj9cVY5vCgQRkoAAV2IEW6Dkv3r6e8xMrsAEJyEABKrADbeHYyHBiAVZgAxKQgW4TRwv07J5YgBXYgARkIOJ6dk/sQNgqbBW2CluFrcJWYauwVdgqbBW2BluDrcHWYGuwNdgabA22BluDjWAj2Ag2go1gI9gINoKNYCPYGDaGjWFj2Bg2ho1hY9gYNoZNYBPYBDaBTWAT2AQ2gU1gE9gUNoVNYVPYFDaFTWFT2BQ2ha3D1mHrsHXYOmwdtg5bh63D1mEz2Aw2g81gM9gMNoPNYDPYLGx0XcACrMAGJCADBajADoQNtYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsItYRQSwi1hFBLCLWEUEsYtYRRSxi1hFFLGLWEUUsYtYRRSxi1hFFLeNSS7liAFdiABGSgABXYgRZYYauwVdgqbBW2CluFrcJWYauwjQKijhXYgARkoAAV2IEWOArIQNgINoKNYCPYCDaCjWAj2Bg2ho1hY9gYNoaNYWPYGDaGTWAT2AQ2gU1gE9gENoFNYBPYFDaFTWFT2BQ2hU1hU9gUNoWtw9Zh67B12DpsHbYOW4etw9ZhM9gMNoPNYDPYDDaDzWAz2Cxscl3AAqzABiQgAwWowA6ErcBWYCuwFdgKbAW2AluBrcBWYKuwVdgqbBW2CluFrcJWYauwVdgabKglgloiqCWCWiKoJTJqiTnetvsTj+YzMBdaoNeSiQVYgQ1IQAYKEDaCjWBj2Bg2hs1ryf0dSvMZmAsZKEAFdqDb7g4Kn4FZ+8ACrMAGJCADBajADrRAhU1hU9gUNoVNYVPYFDaFTWHrsHXYOmwdtg6bV417gdzmsyqrkmMBegR2bEACMlCACvTj9bvP64Ojz6pcWIC3zS7HBiTgbbtn1DSfVblQgbftXnOp+azKiV4fJhag25qjxyVHASqwAz3u/eDi8yfrPTWm+fzJen9M33z+5KMPx7Hd6Ed2V4J2ufiuBAsFqMB+ox/ZXQkm3pVgYQG6jR1d4YfTXOGH01zh7Xunfyt+OHf6Pzp5HC3wTv+FBViBDUjA21b8GO70X9jXzeUzJSd6zk8swApsQAIyUIAKhI1hEz8hbxIpwAr0E/KGEgIyUIAK7EAL1AtYgBUIm8J253yrfrx3zi9UYAda4J3zC29b9Va/c35hAxLQbX7/dgEq0G1+ZD0qjM+UXFiAFdiABGSgABXYgWHr1wUswApsQAIyUIAK7EDYCmwFtgJbga3AVmArsBXYCmwFtgpbha3CVmGrsFXYKmwVtgpbha3B1mBrsDXYvIDc30A3nym58L5L2vgPFNiBFugFpDXHAqzABiQgAwWoQLeRowWO5wd29Kcg/2/HW8dAjzv+AwEqsAMt0KvGxAL0s1DHBiSg27qjABXoNnG0QK8aE2Moo4+3joENSEAGClCBHRgDJx0DJ2Pipg//jImbE/0s/Mp7fZiowA60QLuABXi3GRXHBiTgbbsnfDVfIm6hAm+bj076dM6BPp1zYQxXjemcExuQgAwUoAI70ALLBfSzaI4EZKAA/SzIsQMtsF5An1esjhXYgARkoAAV2IEWOFZDGOhn4SfkOT+RgQJUYAfeZ+FDkj5bc2EBVuBt8wFQn625kIG3jb0dPOcndqDb7hTx2ZrN71Sfrdnur/Wbz9Zc2IAEZKAAb5sPX/pszYUW6JVgYgFWYAMSkIEChE1gE9gUNoXNnx98LNRnay4koNu8dfz5YaICO9AC/flh4m3ztySfrbmwAQl42+7tQ5vP1lyowNvmb18+h/PxhHSj14eJBViBDUhABgpQgW7z+8Hrw43kczjbvesU+RzOhRXYgLftflwkn8O5UIAK7EALvOvDwgK8bfcyAeRzOBe6rTkyUIAK7IH+ecXlEaoryLECG5CADHSFt46/akzsQAv0V42JBXjbzM/NC8hEAjLwtpkfrxeQiR1428zPzQvIxAJ0Gzu6TRzd5ofjBWSiABXYgRY4JnY7tSAK4iAJ0kV3BtP9akc+c3KhBd4ZvLAAK7ABCchAAcKmsClsHbYOW4etw9Zh67B12DpsHbYOm8FmsBlsBpvBZrAZbAabwWZh85mTCwuwAhuQgAwUoAI7ELYCW4GtwFZgK7AV2ApsBbYCW4GtwlZhq7BV2CpsFbYKW4WtwlZha7A12BpsDbYGW4OtwdZga7A12Ag2go1gI9gINoKNYCPYCDaCjWFj2Bg2ho1hY9gYNoaNYWPYBDaBTWAT2AQ2gU1gQy0pqCUFtaSglhTUkoJaUlBLCmpJQS0pqCUFtaSglhTUkoJaUlBLCmpJQS0pqCUFtaSglhTUkoJaUlBLCmpJQS0pqCUFtaSglhTUkoJaUlBLCmpJQS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkopaUlFLKmpJRS2pqCUVtaSillTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy1pqCUNtaShljTUkoZa0lBLGmpJQy0h1BJCLSHUEkItIdQSQi0h1BJCLSHUEkItIdQSQi0h1BJCLSHUEkItIdQSQi0h1BJCLSHUEhqJXh0LsAK9s9aJgjhIgjSoB9mi8cmFUwmqQeGgcFA4KBwUDgoHhYPDMdKaHCuwAb0JxZGB3oTmqMAOtMCR1gMLsAIbkIAMhE1gE9gENk/r4hfM03piBTYgARl42+7hZfLZkws70IelbhrzFZxKUA1qQRTkEf128SS911EgnwtJxdvbk3RiAxLQj9SvgifpRAV2oC2ccyGdSpC71LEBCegucxSgAm/XPXhLPhNyoqfovToD+UzIhRXoA09OFMRBEqRBfZH/pNeB95FWcryP1G9pn9e4UIEd6EfqJ+g5PbEAK7ABvavaiYMkyHv8nXqQLRqDC04lqAa5pDsSkIE90BO2euN7wk70kRAnCuKgu0WaXxrP1okdeLfIaF7P1om3akTwbJ14H+w4bs/Wcfqerc3bybP1HtQin6q4sAMt0LN1YgFWYAPeNvLj9Wwlv5U8W8mP139uyQ/Sf27JD9J/bidWYAMSkIES6IlKfpqeqBMrsAEJyEBZ6JMH6f4KkXzy4EICMtD/rDt6S5qj3wxOtmhknFMJqkEtiII4SII0KBwlHDUcNRw1HDUcNRw1HDUcNRw1HDUcLRwtHP6kfH9USTKelJ00qAfZovGU7FSCalALoiAOCgeFg8JB4eBwcDg4HBwODgeHg8PB4eBwcDg819hbwXNtIgPvQOw3i+faPRBJPpWP2O8bzyr2+8Yz5f5wkXwiHon/t/67NtECPX/Eb1jPn4kV2IAEZKAAFeg2crRAT7CJt0393DyV1A/HU2niHVfHf6vADrSFPj1v/JlPz1tYgQ1IQAYKsAP90G/yvBtUgmpQC6IgD86OAtRAT7OJfnj+Z55UPijo8+4WClCBHWiBnloTvTG6YwU2oNvMkYECvG0+PuhT8BZaoGfgxAKswAYkIAMFCBvBRrAxbAwbw8aweT76IKbPxlsoQI/rF9p/AX3c0afVLfTD8Svkmdb9Cvmv2kD/VZvoEbzV/Vdt4n04PsLok+LIhwp98hqZKzxPJlqg58nEO64PK/rktYUNSEAGCtDj3gfp09QWFqDHVccGJCADBajADrRAv+3vOabkk8wWdqAFejJMLEA/MnNsQAIyUIAKfNjYX+t8ktnEO0UWFmC9sTjyjdVRbmyOCuxAC6QLWIAV2G4kRwIy0G3sqMAOdJu3Dl/AAqzABiQgAwXoNm+z+weK/Q3IJ46xv8X4xLGFDBTgfWT+muNTxBYWYAU2IAEZKMD7yPyVyKeILbTAfgEL0BXeZp2AHsxve/PD8TvVXOztYC72djAF3mIPcGeTk8/pmlSCalALoiAOkqBbUi/HDrTA+5dnYQFWYAMSkIEe976ePm2L/dXMp23dU5TIZ21NoiAOkiAN8ojN0QI9qyYWYAU24B3V3+h8ahb7C5tPzVro7yRONagFURAHSZC3qTp2oAV65kwswAr01uuOHsEc7whO98vTpBJ0/7n/iWfNIAriIAnSoFvir2g+v2qip9HEBrz/vvk19NSY2IF3BD8Nz4xBJagGtSAKug/T3wp9ttRCBXagBdoFLMAKbEACwmawed75i6fPllpoE9lnS/H9Dso+W2qh27qj28zxtt0vk+yzpRYK8Lbd9w37bKmFt+1+xWSfLcXk4jsBxf/qzr9JLYiCOEiCPKLc6KlHftCee+RH6sk3kYFeKS5HBXagBXoCTvTy42JPtfstgn1qE7OfoP+ATbRAT8CJBViBDUhABrrNG87TcGIHus2b09NwYgFWoNu8zfwHbCID7+b1sPfv16Qe9FCJH9Wdr5NKUA1qQRTkEr9GnrATFdgD/Tduoh+m34T+azbRI/j19JSd2IH3kXqAO2UnlaAa1IIoiIMkSIN6UDgsHBYOC4eFw8Jh4bBwWDgsHLYcPh9qUgnyn5zLsQEJ6L861VGACrybzC+uz4aa6Bk6FP4TObECG5CAbuuOAnSbOd429SPz7L3ni7LPhlpYgF5W/SA9pycS8GEbse6UnqRBPcgW3ek8ySM2x/tI1U/bs/l+gWSf27TQAj2bJ/qR+ml7Nk9sQAIy8D5UPz9PZvVm8WTu43+1QE/m7sd4p+38Hx9/b376vuWtx/QtbweVIP/tFMcGJCADBajADrRA/wWdWICwKWwKm8Lmqdv9ID11J3agBfrP7cQCbKsNfPPbQRx0t5CbfPPbQT3Ig/t96T+xEwuwAhuQgPepmN9F/hM70U/Fr6b/xE60hXXtd8117XfNde13zXXtd8117XfNde13zXXtd8117XfNde13zXXtd821hKOEo4SjhKOEo4SjhKOEo4SjhKOGw3P1fhVnn220sAHvRvOL4rONFgpQgXej3S/z7LON+H5X57kXrAfzVd4nVqDb2JGADBSgAjvQAj27JxZgBcJGsBFsY4fYy1GBHWiBY4fYgQVYgQ1IQAbCxrD547Xf7HU8XjuO5+uBBViBDUhABgpQgW5TRwv0KjGxAT2CZ8Od+TKO9878hRbov9oT75+7cbn9d3tiAxKQgQJUYAdaoP9+T4TNYDPYDDaDzWDzn/HL72r/HZ/otvuu9hlECwvQbezYgARkoAAV2IEWWNwmjgVYgQ3otu7IQAEqsANv2923wD6DaGEBVmADEtCf79VRgArsQLe5uF3AArxt95s6+wwiqa6468NCBgpQgR1ogXd9WFiAFQgbwUawEWwEG8FGsDFsDBvDxrAxbAwbw8awMWwMm8AmsAlsApvAJrAJbAKbwCawKWwKm8KmsClsCpvCprApbApbh63D1mHrsHXYOmwdtg5bh63DZrAZbAabwWawGWwGm8FmsHktuft62GcQLXQbO1ZgAxLQbd1RgArsQAv0WjKxACvQbeZIQFm/AT5taGEH+nvlXT192tBCf7NsjhXYgP5y6SfvBWSiAO8T8i4OX+ltoQV6AZlYgBXYgARkoABhu0uFP7D7VKRJNeh+nB//HQVxkEcURwV2oAV6kZhYgH783rJeJCYS8Jb5BbtrxCQN6kG26K4Pk0pQDWpBFBQOCYeEQ8Ih4dBwaDg0HBoODYeGQ8Ph5aAN7EALHH14fmOOTryB/hI3/oMGJCCv1zFft22h95Jcjh1427w3zOcqLSzA+6l8UAuiIA6SIJ3k85HkHuBnn3sk3r/mc4/E+9d87tFCASrQj1QcLdCTe2IBVuBt894wn3y0kIECVGAH3jbvtfJV2BYWYAW6jR0JyEC3qeNt8x4Pn6200AI9zycWYAU2IAEZKEDYGmwNNoKNYCPYCDaCjWAj2Ag2go1gY9gYNoaNYWPYGDaGjWFj2Bg2gU1gE9gENoFNYBPYBDaBTWBT2BQ2hU1hU9gUNoVNYVPYFLYOW4etw9Zh67B12DpsXhm8p9oXZFvoNk9erwwTC7AC3eb3uj8oTGSgABXYgbbQF2Rb6DZxrEBXqCMDBahAV3RHC/QCMrEA66pRPptqIQEZKEAFdqAFegGZ2Ganms+gmsRBd5ebn7j3Dg7qQX7890+AjCIxsAArsAEJeJuqkwRpkHflXo4W6BVi4kPlvzA+z2pSC6IgDpIgDepBtuguDJPCweHgcHA4OBwcDg4Hh4PDIeGQcHgxGG3vxWAiAb3z2y+dF4OJ3v3tF8WLwUQL9GKgfrN6MZhYgQ1IQAYKUIFu8xt7DBs4jnGDgQXoNr/uY+hgIAEZKMDb1v16ezGYaIF3MZhUgmpQC6IgDpIgDepBNskndU0qQTWoBVEQB0mQBvUgP5H72vq8Lrln+7BP7FpYgQ1IQAYKUIEdaIEVtgpbha3C5k8R/ojtE8EWClCBHWiBXiC8v9Ingi2swAYkIAMFqMAOtECCjWAj2Ag2go1gI9gINoKNYGPYGDaGjWFj2Px5wfttfcqXv+/58mqT/I/UkYAMFKACO9BHb/zW0gtYgBV4lzTvbvPV1RYy0AeK/GhVgR3oNr9d+gUswAp0m98Y3eOKowI70ALN43ZHj+sNdee6Fk8m818zP17znzM/MvPfMxebABXYgbftnp7DPkFtYQFWoNvU0RXm6L9kl6P/lBXHW+FdED4rTe9vIdgXT1tYgBXYgARkoNv8GIoCXeGHUy9gAd6K5gfpTwATCchAASqwAy3QhwknFiBsDbbmNm8Sfw6YKEAFdqAFktv8jP1RYGIFNqDbuiMDBXjb/B20I8070rwjzTvSvCPNO9K8I819ittCASoQNoZNYBPYBDaBTWAT2AQ2gU1gE9gUNoVNYVPYFDaFTWFT2BQ2ha3D1mHrsHXYOmwdtg5bh63D1mEz2Aw2g82rhncu+OpqC++7hMZ/IEAFduB9T/q0HJ+Jt7AAK7ABCchAAbpNHDvQf1bvu9qn3ikNbEACMtDjdkcFdqAFjnkF5FiAFdiABGSgADXQ64NPJvJpeQsrsAEJyEB//bjT1Kflqc8r8nl56vOKfGLeQgLeEXxWkM/NW+hvNX5k/hYw0QL9PcD7THxy3sIKbEACMlCAbvNL6O8DEy3Q3wgmFmAF+hwkv0Ii0Q6iQLSO//p7H4/P3VtYgBXYgH4WrvBf/4kCVOBt81d2n+c30X/9J942fyP3qX4LG/C2+SQnn+23UIBu8yvvzwQ+ycZn+6m/kftsP/XXcJ/tt7ACPa6fm+fxRAV2oMd9nJv4DD6/ucRn8C0kIAM10Kf/TCzACvRLWB0JyEABKrADLdDTdGIBeqOaIwMFqMD75O+3afHJexM9TScW4JoqKGNK30QCMlCACuxAC/TJAxPX1FIZU/om3mehAwWowA70s/B28OSdWIAV2IAE9ImgAwWowA60QJ8mMLEAK7ABCehn0Rw70AI9eSf6WZBjBTYgAX3WsF9jnzwwUYEdaIHewz+xACvQrwU7ClCBHehnITd6mk4swApsQAIyUIBu8xvGk3eiLfQJfwvd1h0rsAEJ6G3GjgJUYAdaYLmABViBDehxi6OfhTl2oAX6o/vdSyA+uU/vYRPxyX0LG5CADBSgAjvQe6PuG8YXNdPuB+l5fM/MF5/Mp/fsM/HJfBP9wXtiAXoEb/XRCzeQgAwUoAI70OIYxgz5gQVYgQ1IQJyF5/FEDRwdcH7lRw+ct7r/3E5sQALeZ2F+WfxHeKIC77Mwv8aexwM9jycWYAU2IAHd5sfrP8ITFeg2v5r+IzzQf4QnFmAFNiAB3eb3g2f3RAW6ze8Sz+6Bnt0TC7ACG5CAbvN7x7N7ogLd5ldo9MXd7VtHZ1xx9N646liBDUhA75EjR++SY0fvkxPHDrTAcgHd1h3dZo4+w9SP7P5FX8hAAfq5qWMHWqDn/ET/fsht/uA9sQEJyEABKrADLbD5uLq3ZGtAAjLQz8Jb8v5FX9iBFjjG8AcWYAU2IAE9bnPsQAtkj+uXkAuwAhuQgB7XL7cPxhe/mj4aP7ECG5CAPL++lLF02EQFdqAFjm8yBxZgBTagt69feVVgB1pg97PwS9j9CvmN2AWowDtC9bvvztiJ3mk+8T5j/0nyCXq9elN7H3n15vNO8tEO3ks+sQNtoU/QW1iAHpcdGShABfb5/bGMxbwG+jfPEwuwAhuQgAwU4B33nnUjY9muiQV43w93V5r4pLuFfhbmyEAB3mdxd26JT7pbaIH3c3X35z6fdLewAhuQgLeteet4Fk5UYAdaoGfhxAKsQI/rTTIW+/Cz8MxqfsaeWRMb0I/MG8pnw0z0IxsRFNiB95GRt4Nn4cQCrMAGJCADb9vdUSM+ZW5hB1qgT46ZWIA1ztjnwpA3tWfhRAV2oMe9U8Qnxy0swAq870nPobG81kQGClCBHWiB/h32RG+dgQRkoAD9LPxye8ZOtIU+DW7hnQFeacdCWhMbkIAMFKACe+BYPZ/dcd/hwZSYE0tiTdwTG/i+0YNL4uSl5KXkpeTl8b93Z04siTVxT2xguRKXxDVxS5y8krySvJK8krySvJq8mryavJq8mryavJq8mryavJq8PXl78vbk7cnbk7cnb0/enrw9eXvyWvJa8lryWvJa8lryWvJa8lryGrw+jSy4JK6JW2JKzIklsSbuiZO3JG9J3pK8JXlL8pbkvfPLvMPFJ2Qt7EALvHNrYQFWYAMSkIGwEWwEG8HGsDFsDBvDxrAxbP6V191PLj4ha2EHWqB//TWxACuwAQnIQNgENoFNYFPYFDaFTWFT2BQ2hU1hU9gUtg5bh63D1mHrsHXYOmwdtg5bh81gM9gMNoPNYDPYDDaDzWCzsPmErIUFWIENSEAGClCBHQhbga3AVmArsBXYCmwFtgJbga3AVmGrsFXYKmwVtgpbha3CVmGrsDXYGmwNtgZbg63B1mBrsDXYGmwEG8FGsBFsBBvBRrARbAQbwcawMWwMG8PGsDFsqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWiKoJYJaIqglgloiqCWCWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJYpaoqglilqiqCWKWqKoJTpqSXe8bT785lO8FgpQgR1ogV5LJhZgBTYgbAwbw8awMWwMm8AmsHkt8RE+nxu2kIAMFKAC3UaOFui1ZKLbvM28lkxsQAIyUIAKvG33OLD43DATPwuvJRMLsAIbkIAMFKACOxA2g81gM9gMNoPNYDPYDDaDzcLmM8YWFmAFNiABGShABXYgbAW2AluBrcBWYCuwFdgKbAW2AluFrcJWYauwVdgqbBW2CluFrcLWYGuwNdgabA22BluDrcHWYGuwEWwEG8FGsBFsBBvBRrARbAQbw8awMWwMG8PGsDFsDBvDxrAJbAKbwCawCWwCm8AmsAlsApvCprApbAqbwqawKWwKm8KGWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglHbWko5Z01JKOWtJRSzpqSUct6aglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCWGWmKoJYZaYqglhlpiqCU2aklzLMAKbEACMtBt4qjA2+bzp3zW2kSvJRMLsAIbkIAMFKDbzLEDbaJeo5YMLMAKbEC3VUcGClCBHWiBXksm+rmxYwU24G27v37Ra6ynM1CAt+2eA6PXWFJnoAWORXXIsQAr0M9t/LduU0cGClCBHWiBXksmFuBtM1d4LZlIQAYKUIEdaIFeS8zPwmvJxAp0mx+D15KJDBRf3KY5a+Ke2MBzZZ3BJXFN3BKTs1/LubzOYEmsiXtiA8uVuCQeXj8XaYkpMSeWxJq4JzawXolL4uTV5NXh9UxRTiyJNXFPbOB+JS6J/a1rYAMSkIECVGAHWqDXm4kFCJvBZrAZbAabwWawWdh8+t3CAqzABiQgAwWowA6ErcBWYCuwFdgKbAW2AluBrcBWYKuwVdgqbBW2CluFrcJWYauwVdgabA22BluDrcHWYGuwNdgabA02go1gI9gINoKNYCPYCDaCjWBj2Bg2ho1hY9gYNoaNYWPYGDaBTWAT2AQ2gU1gE9gENoFNYFPYFDaFTWFT2BQ2hU1hU9gUtg5bhw21pKCWFNSSglpSUEsKaklBLSmoJQW1pKCWFNSSglpSUEsKaklBLSmoJQW1pKCWVNSSilpSUUt8st+jzFRnSsyJvTzfM8DUJ/wF98Renu/5Vepz/oJLYv9ZuOc0qU/7C6bEw+vHViSxJnbvPedKffLf4rlT+WD33lO01Of/BbfE7r0nbKlPAQyWxPFMU/FMU/FM4ysFjgcOXylwYQX6UwY5EpCB/kwzgimwA8c59pvpSlwS+zk2N/pkjcWU2M+x+TUdjzaTNbG3bfMDG482g8ejzWS/LQf6DegtNQrHQAschWNgAVZgAxKQgQKETWAT2BQ2hU1hU9gUNoVNYVPYFDaFrcPWYeuwddg6bB22DluHrcPWYTPYDDaDzWAz2Aw2g81gM9gsbO26gAVYgQ1IQAYKUIEdCFuBrcBWYCuwFdgKbAW2AluBrcBWYauwVdgqbBW2CluFrcJWYauwNdgabA22BluDrcHWYGuwNdgabAQbwUawEWwEG8FGsBFsBBvBxrAxbAzbeNu550tqG28793RHbeNtZ7Ik1sQ9sYHH287kkrgmbomTV5JXkleSd7zt3LMutY23ncHjbWdySVwTt8TDK86cWMB9jR5pGyVkYAU2IAEZ6NHuSZnqsyCDe2I/i3sGpvpEyOCS2M+C/Kr5rK/FlJgTS2JN3BNbsE+UDC6J10iZ0tWABBxScpbEmrgnNvB4EplcEtfE42TVmRJzYkmsiXtiA48nkckFPJYVJj+vsa7w5Jp49cspRX+qUvSnKkV/qlL0pypFf6pS9KcqRX+qUvSnKkV/qhLBRrARbAQbwUawEWwMG8PGsDFsDBvDxrAxbAwb4zlzTBRdXBLjOXNMFF1MicfVNWdJrIl7YgOPQjC5JK6JWzyvjomiizmxe+/vjXVMFF3cExt4dHtMLolr4pbYvV6Ix0TRxZJYE/fEBh4lY3JJXBMPr7ftKBmTObEk1sQ9sQWPiaKLS+Iaz/ljouhiSjye5y9nSayJh1edDTyqxuSSuCZuiSkxJ8Z7BI+qMbknHt4783lUjcklcU3cElNiTiyJ3eu54ysUBht4VKXJJXFN3BJTYk7sXvHzGu8m9/fmyuPdZHJLTIk5sSTWxD2xgTm6lce014kVOKTsTIk5sSTWxD2xgUfxmTxO1ht8FJ/JLTEl5sSSWBP3xAYexUf9Bh7FZ3JN3BK7V/0CjeIzWRJr4p7YwKP4TC6Ja+Lovh+TYicycEirsybuiQ08Ks/kkrgmbonHyfpFGZVnsiTWxD2xBcuoPJNL4pp4xL9vMBkV4/4MWmVUjMk1cUtMiTmxJNbEPbGPcNw3/pjtOrEAh9ScW2JKzIklsSbuiQ08ysW98aLKKBeTa+KWmBJzYkmsiXti9/pQlIyuj8klcU08vH6BRnmZzIklsSbuiQ08uj4ml8Tex+PXnxuQgEMqzpJYE/fEBh7lZXJJXBOPk/WLMsrLZE4siTVxT2zgUV4ml8Qe//6oWmWUkcmSWBP3xAYeZcT84o4yMtnP6/6MWmU8w0weXr+44xlm8vD6hRiVZPLwevuMSjJ4VJJxXUYlmTy8nlmjkkweXj/3UUkm317f8EJ9dmxwd/Zz9Eoy2CfIPrg6l8TVuTm3xORMzpx4eNlZEw+vOBu4DK86l8TD251bYvfen1mrz5d9sB+/V6Ti/cA+Y/bBfpxekRYb2J9hFpfENXFLTIk5sSRO3pq8NXlb8rbkbcnbkrclb0velrwteVvytuSl5KXkpeSl5KXkpeSl5B1Fyft1dRSlyegH9im1j//e7w0uiWvilpgSc2JJrInH+fo9wwaWK3FJXBO3xJSYE0vi4fXzkp7YwHolLolr4paYEnPi0fni9/moV5N74uG9890n3AaXxDVxS0yJObEk9vOtnlNerxYb2OvV4pK4Jm6JKTEndm/1mjDq1eTh9fYf9crvqz6efHwsoI8nn8k1cUtMiTmxJNbEPbGBS/KW5B31yq9LH/VqMiXmxJJYE/fEBh71anJJPLzFuSWmxJxYEit41BnvAO2jzkyWxJq4JzbwqDPeadhHnZk8/nt1NvCoD5P9v/euwD7qw+SWmBJzYkmsiXtiA4/6MDl5R33wHrc+6sNkSsyJJbEm7okNPOrD5OH1cx/1gbwNR32YTIk5sSTWxD2xgUd9mDzuWz+G8TwzuSUeXs+1UR8mS2JN3BMbeNSHySWxny97m4/6MJkSc2JJrIl7Ygu28TwzefSJ3V4rV+KSODr/MAlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWMQlWxyRYf08fk2AH0gWMCYdzEuzABhzXtTpzYkmsiXtiA496Mbkk9omHAxuQgEPanCWxJu6JDTyKxeSSuCYeN7E4U2JOLIk1cU9s4FEsJpfEw6vOLTEl5sSSWBP3xAYexWJyTO4c02QnNuCQehaNSjFZEmvintjAo1JMLon9ZMd9OCrFZErMiSWxJu6JbXG/RqWYHL23/RpPEpNbYkrMiSWxJu6JDTz2onTt2IxyYAXebXxPf+1zAu1ABo4zrc6auCceZ0o3j2eIySXxaGF2bokp8Wjh7iyJNXFPbODxzjO5JK6JW+LhNWdOLIk1cU9s4PEsMrkkrom9kb0ZfFxpIgNdqt7go0BN7okNPArU5JK4Jm6J/WTvlR/7mFu7WBJr4p7YwKNGTS6Ja+LRzzs4Oqn7nCs7eHSsTC6Ja+KWmBJzYkm8Jid1nyq70AJ7dFL3OVF2ck3cElNiTiyJNXF0UverG3j0tkwuiWvilpgSc2JJPLom/eLOftvBFlyuK3F0Uvdy1cQtMSXmxJJYE/fEBi5rElgfk2gnVmB0UvcyO38Hc2JJrIl7YgPXK3F0UvdSa+KWmBJzYkmsiXtiA49+3rvju5cWndS9tJ7YwHQlLolr4paYEnNimV3cfcyOndiB0Undy+i0nVwS18QtMSXmxJI4Oql74Z7YwHIlLolr4paYEnPi0W/r5zX7bQf3xAbW6KTuRUvimrglpsScWBJr4p7YZhd3H3NnJxZgdFL3MsrLZErMiSWxJu6JDWzRSd2LlcQ1cUtMiTmxJNbE0Tne6+i09Tu/jk7byS0xJebEknj81ohzTzx+a+52GxNnFw9vd66Jh9ePbXSCTHavP8CMibOL3etPPmPi7GL3+s02Js4udu+9vm0fE2cXu9dvtjFxdvHw+jmOB5jJw+vnOB5gJg+vn+N4gJk8vH6O4wFm8vD6OY4HmMnu9epaxwPMZPean+N4gJnsXvNzHA8wk93rBWRMoi3mxz86bc2Pebxk+b09JtEulsSauCc28HiGmVwS18QtcfJy8nLycvJy8nLySvJK8krySvJK8krySvJK8krySvJq8mryavJq8s7vg/x+m98HDZbEw+v3xnjPmmzg8Z41uSSuiVtiSnx76+X3zFhRbbIm7okNPFZUm1wS18QtMTn7fThWVJssiTVxT2zBbayoNrkkronHd1jsTIk58fA2Z03cExt4rKg2uSSuiVvicb7izIklsSbuiQ1cr8QlcU3s3ntAq/sk3mD33oNb3afxPtjbp8b3br3VntjA7UpcEtfELTEl5sSSOHlb8o4VGu/BmN7GCo2TS+KauCWmxJxYEmvinnh4/X7gK3FJXBO3xAQeKzfeAx59zMxd3BJTYk4sif04q1+7sXLj4LHiYvXrOFZcnKyJx3/vxzNWXBw8VlycXBLXxC0xJebEklgTJ++oD/fgSh9zbxeXxDVxS0yJObEk1sTubX7uoz7cK7T2Mfd2cUlcE7fElJgTS2JNHN9p9jn9dnC5Erv3HtTpY/rt4paYEnNiSayJe2I/33uwpI/pt4tL4pq4JabEnFgSK3isyHoPrvS5IutkSsyJJbEm7okNPPJ9ckmcvJS8lLyUvJS8lLyUvJS8nLycvJy8I9/vmfJ9rvg6mRNLYk3cExt4rPg6uSQeE3n9+kpLTImH1++xUTcma+Ke2MBjxdfJJXFN7OdL7horvk7mxJJYE/fEBh71Z3JJ7N57XnyfK75OpsScWBJr4p7YwKP+TB4Tpv1+Hu9Nk1vi4SVnTiyJNXFPbMFzxdfJJfE4X3VuiSkxJ5bEmrgnNvB4Ppk8vN3Z49+TpPta2XWwx78Ht/qYsLu4J/b49+BIHxN2F5fENXFLTIk5sSTWxD1x8rbkbcnbkrclb0velrwteVvytuRtyUvJS8lLyTtXim7OlJgTS2JN3MHj06L7NhwzPKu/oo0Znos5sYf017Uxw3NxT2zBY4bn4pK4Jm6JKTEnlsSaGN4x87P6K86Y4Vn9VWPM6lz/+zi2u+T4tM7S7nll3ed1BtfELTEl5sSSWJ2Lc09s4Da81Xl4m/PwkvPwsjPhXMZtNTmd47hlvCtiTNpcXBO3xJSYE0tiTdwTG3j8lHlXx5i0Wb17Q8ZP2eSWmBIPr5/7+CmbrIl7YgOPn7LJJXFNPOJ7e46fJu8yGXMvq3eTjLmX1btGZPwcTW6JKbGCx8+Ld5+MOZaLRxy/x8bPiHeZjLmR1btJxtzIxTXxuIe9fWYODubEknjkgp/vzMHBFv+NzhwcXBLXxC3aZ8yNXMyJJbFFO4w5kOPcxxzIxRU87uF7saE+5gFW8b8d9/BkTdwTG3jc5z5SMeb7VR8HG/P9FnNiSayJe2IDj/vZRzbGfL/FNXFLTIk5sSR2r49gjPl+iw087ufJJXFN3BJT4uHy6zgexyb3xAYe9//kkrgmbokpMSdOXk3e8TjmQ3Zjjt/kkS+TS+KauCVO17Sna9rTNe3pmo7cuTeW62M+XvUu4TEfb3FPbMFjPl71ruIxH29xTdwSU2JOLIk1cU9s4JK8JXlL8pbkLck7fuP8fMccvOpd2mOu3eKCcxyPS5NbYko8zqU7S2JNPM7FnA08HpcmJ29L3pa8LXlHTZgsiTVxT5yu3agJk5OXkms+/vixzcefwQYeuT/Z49wLcvUxl29xS0yJx/1ZnCWxJu6JDTxyf3JJXBO3xJQ4eSV5JXkleSV5NXk1eUe++/yLMTev+pD7mI9XfUh8zMdbXBLXxC0xJebE45j9Gs1cHtwTG3j8ho7jGb+hk2vilpgSc2JJnM5x1AfnsQil96qMRSgH+hi093GORSgnVmAD3lMyvA90zL+bKEAFdqAF+vy7iQVYgQ0Im0+v8xf3Mb2u+An59DrvfhzT6yZWYAMSkIECVGAHWiDBRrARbAQbwUawEWwEG8FGsDFsDJtPq/OX7DGtbiIBNdAXS7m/Wu5jhciJBGSgABXYgRboi6VMLEBXqCMBGShABXagBfrw8MQCrEBXdEcP5reyL4Ay0QJ9ARTv/B2rPk6swAYkIAMFqMAOtIk2lnqcyDPJbKzkOPGOcE9utrGS40SbSWZXJKSNiWjF/4NSgQ1IQAYKUIEdaIGRkHZV2CoOveLQfb7rxA60QE/IiQVYgQ1IQNgabA22BluDjWAj2Ag2T702ECc/dqjw9uUSTc0V2IAEZKAAFZgUaF9B+wraV3A1BVdTcDUFV3OkXr1xpF5zXEXBfCrYwgYkIAMFqMAOtMB+AWHrsHXYOmwdtg5bh63D1mEz2Aw2g81WwbOxWOJEBvaFY6nDuzDZWOpwIgMFqMAOtMByAQuwAlfBs7G+4UQBKrADLbBewAKswAbkWftsLF94VzkbyxcOHD+LA6MajeULJzYgARkoQAV2YBS8sXzhRCjGljH3TTtWEZzIwPQfKLADLXDs8jKwACuwAWET2AQ2gU1gE9gUNoVNYVPYFDaFTWFT2BQ2ha3D1mHrsHXYOmwdtg5bh63D1mEz2Aw2g81gM9gMNoPNYDPYLGxjFcGJBViBDUhABgpQgR0IW4GtwFZgK7AV2ApsBbYCW4GtwFZhq7BV2CpsFbYKW4WtwlZhq7A12BpsDbYGW4OtwdZga7A12BpsBBvBRrARbAQbwYb0rwQbwUawMWwMG8PGsKGWVNSSilpSUUsqaklFLamoJRW1pKKWVNSSilpSUUsqaklFLamoJRW1pKKWVNSSilpSUUsqaklFLamoJRW1pKKWVNSSilpSUUsqaklFLamoJRW1pKKWVNSSilpSUUsqaklFLamoJRW1pKKWVNSSilpSUUsqaklFLWmoJQ21pKGWNNSShlrSUEsaaklDLWmoJQ21ZCwseA822lhYcGIFNiABGShABXagBVbYKmwVtgpbha3CVmGrsFXYKmyjEtyPSWN1Pn9WHqvzDeQLWIAV2IAEZKAAFQgbwyawCWwCm8AmsAlsApunnj/xN41H7DYy63KMp/imAlRgB8Y72Vhvb2IBQtEbkIAMFKACOzDeGdp40vUbcTzpNsd4rvaJPAsV2IHxXO2TeBYWYAU2IAEZKEAFdiBsBbYCW4GtwFZgK7AV2MrqzDAqHWiBtQLjKZ5qB8ZTPLULWIAV2IAEZKAA4yl+rJo3kC5gAVZgAxKQgQJUoCvuJ/6xKJ4/249F8SYSMJ7ix6J4ExXYgfEU71NpFhZgBTYgAaHQuGlJ46YlvHoSXj0Jr56EV0/Cqyfh1ZPw6kl49SS8ehJePQmvnoRXT8KrJ+HVk/DqSXj1JLx6El49yWAz2JCQhIQkw02LF1KyuGn5qsC4aRmvnoxXT8arJ+PVk/HqyaUBCchAAcZNy3j1ZLx6Ml49Ga+ejFdPrgRkoAAVGDctt7hpuTUgAeOmZbx6Ml49Ga+ejFdPxqvn2CV5YgU2IAGh8B+Je9KnjX2AJxKQgQJUYAdaoN+/EwsQNr9/76U2bCx5NpGBAlRgB1rg6OEcWIAVCJvBZmEbu/jeKwva2MX33vHexi6+ExkoQAX6kd139div914uxMZ+vRMbkIAMFKACPa46WqDftBMLsAIbkIBu644CVGAHWqD/dEwswAp0hTkyUIAK7EALHLfywAKswAaEjWDzu/pehMTGJr0TO9AC/QlvYgHiYjEuFuNiMS4WRwEZe/Dek4dt7ME7sQIb8A7W/JbzB7iJAlRgB1qgv1FNLMAKbEDYFDaFTWFT2BQ2z+PmeeF5PNEj+G3vWdj8tvcsnFiAFdgiyUYWDmSgABXYgbZw7KA7sQArsAEJyEABKtDWuY1tc+/lYmxskDuR1gmNDXInClCB3qjqaIGevBO9obpjBTYgbBW2CluFzZN3YlyWsUHuxAKswAaErQ3F//lPf3v80b//7U60fs8IvdNsgC7oC8zh8Sf1/pPi/6c8/s92/593dvV7CYU7twbQAl4gC3TBHfwexr4TzuFOtwHlhsdteqfagLaAFvACWaAL+gKboNeCFVk98r2eRltAC3iBLNAFfYFN6NcCj3wPZdYFHtmnDS/wyD6b7QafJrWgL7AJdi0oC+qCtoAW8IIV2VZkW5FtRfaPwieVoBrk0ftNFMRBEqRBPcgWlSuoBNWgcJRwlHCUcJRwlHCUcNzp1u+ZWz600O85Vj6yMOl23POc/DvvSbfjnrPk33j3e0aOf+Hd77knPugwyRY1d8hN7rhbqNUgd9zH0ijIHXbT7bhnX/pYQ7/nXvpQwyRbdP9E9numpX8N3u85kT7i0O8Zkf4l+KTbcc/q86/AJ0mQO+4j9bwdZIvYHfcx+61mTrbIb7ZBJeg+gnvOqnedT6IgDpKg+wjuGbveaz7JJnmf+aQSVINaEAVxkARpUA8KRwlHCUcJRwmHl+97HvDo4r5n+45u7Xuu7+jVHsRBEqRBPcgWjYHidlMJqkEtiJZ3jBE7SZAG9SBbNIaHneLox+Cwk0ehmzSoB9mi0RkmN5WgGtTiv6MgDgrH6AXzv+hBtmh0gd3/3egBc6pBLf47CuKgcEich8R5SDg0zkPjPDQcGuehcR4aDn9iGhTnoeHQaKse59HD0aOtepxHD0ePtupxHj0cPdqqx3lYOCzayuI8/BHr/hBy9DgP4qBwWLSVP13da5mOzuabRl/z1R+/3HT/cnvB6/6fTPBy51AW1AVeh+6/ZX8I8MJjj/9T4v+8vzzwku3g+XlXJk/P+xQ9O+/nBsWfXOs/qI//vf/+icT8RPxP7syWBbqgL7AJfo4O9zneH7r4OTq0BbSAF8gCXXBHvr/x8Ep+gxdyh7KgLmgLaAEv8MhtnqZDX+CRH43p5duhLKgL2gJawAtkgj8bOfQFK7KuyLoi64rsz0b3Fyf+bOTACzyyzGcjh77AJvizkYNHvq/7XZ8fV+v+v+8Pj/zH2qEtoAW8wK/ofduVXz+vPv7o7//yX//h3/7pX/75v/zbv/7jP95/v/6H//W3//x//fvf/uc//Os//vO//e0///P//vvf/9Pf/t9/+Pv/9v/of/3Pf/hn//ff/uFfH/+/j4v9j//83x7/PgL+93/6+z/e9H/+E/76ev6nj4Ecmn/9GMiRCPB4LDoO0XQdQHv0PacQ9EeI+jyEL5XhER4/tBHgcUB/BGjPA/RrnUVv9jQAPQ9g91OIBzB7LYCsI3g8v9anEXbtyD0uxaP35Wk76vMQ1b/pGg3ZGlry8YD3R4i+u5q8DsIYAfT8jhLcUY/ul6enUTYxWHQdBUvHecifjXkP2jy9peh+khoXhLk+DVF3N9W6Jx7lGOfB/TwCr9N4PKM/j7C5raovtz6u6OPlJmJQ/TMEbw7ifmAft3apzw9CNgfRbIV4PNylm1vqa9dDn1+P3V2htC7Io3uYnoawzZlwiTNhLc9C1Ovda1o3TVF9md95Tbk8u6Z1c2P5h3Kzaj8N8ENbFrRlf9oQ71e8XYhHiYmfDrPNT4fsbiyN43hc3YjxeCn7M8ambsq1fn8e3dMpAh+fyWO0d+XpY/T0efGutvsV5EiRXlPxLfbn7+Dmut4rHK6b615JCVny6IT4M0p5v01bfbdNt+fy0K1GvVeA4efnsqugRVFBu6Uj+TNj26aEPl7iIsajvxTZ8otzaSZxLpSy/tu57H7fhVeQx/sn2uNRUf6MsfuB94XjR849fhlTjC/HYdtHvnWTtcdvw/MYu+OoFE8aj9fRpzFoc58+xnzXcfB12fPj2F4ZuSLtHldXnl4ZartWjTukVd3E2N2pYiXusnY9j7G7U321nRHj0TnzWgwiip97e15BaFdRaTXHY2QJvw2Pe+WPCH33RN7j56XY8xCb21RKRw3i62kM3t0e9/bn60Duzb6fR9ncqOxfuY8btVq6Pf6sQbyrp1qjSZX6sxDb9qis0R79+WXhzU1a7iUF4lfqMQD7/MrsbnWNp6gHPk+XbeK2Fo366N+W5wnDuvvB9J6M+YP56K5/Uty5/6U/D3TFU/qjl52f/9TJ9Zf+5JLELfJge/4zJbun04b3+fwW+XiZ+TNGe7dNt0dBJUoh0fX0KHaPZNV3aZgPD1qePpKJ7F6I4+2paeqdeDzeHMegFu+i1P6407/E6O8/1Im9/aC8bdF4dbl/q5626DaGL5k2Y2yuir7d5aRv9znp251O+5bokSWPfpfnLbF7gWoWv7SUf1i+/LKo7h4Ia9zjrevzGNsXufhNeKTaJsauPVqJRxcmeRpj26ZCUTfkj3P5xR0q0aaPgR15GqO/fYf2t+/Q/tfeoRo/KI/houf53nf9T5eiw6TlF+M/K1ff3KH3DoQzhuYOj9/EuFd3Wg0q+RXuawx7vwrb9ZdWYZ9TNK+Kymv3uO9ZMDuhan8aw9q797jRu/e48V95jz/+W4uXv1aft4RuX0PjLbT9cY/reQzj+F28Oj2Psbs/pUmUYWk9t8jXDvxdL2mMCfX0A92+PETueygv9FCmnm85HlChFs3x+F2TzUhE2w6QRVdr+WM4Q34RpF76H98gX4Pw+yMal7w9pLENcTamcfX3BzUue3tUY3eHHQ9rHF+V3bjGtvMoOlxa3fyu+Haj7xXCUt7+td+HOBsU2DcHRylssm2O3e+9xg1yb/L5dCh0H6THWKb+kTDfgtgHRiKv94ci3x63KttRp8O8re3tvN2NtZwPR9r7ebu/PSTusW4v3mO9xMBAb+lAvgWpu3d7bpF3kn6zv47b7/POYvZAe3SsP8+7fQ/S2d2+G346vNu3Ic7u9tbev9t3g0+Hd/t27On0bj++Kq/+Sln03DxGO2Vze/QP3B72/u1h70/MKO/fHlTfvj12A0/nt0f/q2+PqB6P26O/9qBMV4l+zos299hu7Ol09hB94D6l9+9Tev8+5Q/cp/z+fcqfuE/pA/fp9u54/71S63qbI1V7/l65G3eSGj0wQm3zs78beLILY6TpRv/2q79vj4r2qPpim57NzJLdfUroknoMQD+PUd/PWmlvZ+02xFnWCr+ftbtBo9OJf/qBrD2+Kpus3d8dMWvlcXfIazEY3WMsz38XtOy6Xq/VsSVXoZdisKmdxNify9FExqL09p2+DXF2p6u8f6fvhp8O73TtuxkaNUpYTaPF3+707fDT0bTMbWuczQ31QdQ3j2LTGGS8XifJUqZ8b4zjIP21IHzFrBe+tpdlG0Ti2l55OtLvgkTvGD96BF8MUqLHgIttgvTdU5BdMaWx3OuCIkzpr5aQp1OAy24kStEBoptXoP2jw8lEZN/88+23hm2QFpX98Ty2eX+x7bwmwbwmff4TYx/o57f3+/nt/X5++0A/v73dz1+vT/Tz2wf6+fd3B9qjb374dzEeQ0kYa9w8rv8Q43o7BpX4laE0rv+rGJh58gj3NIYPnr35QLaNcfpAtm8PlTgX62/H4Ku+2KbxcvoY/nx6bevus6VHF3JMrFTaPFBtD0TxGKLWnh8IvX9xdzE+cnHxI9X67jh2g/OXYZ5pnt39q0bFgNRjaP75Zzu7kQ+KsWiqm4pat1NvLeYI0PX80W5/HC1+b/MHM9+aY/ubHSOF1PIAzJff7LobkTrseKi7IanD32zfYva93+x9iLNv03afQh3+ZtfdaNThb/Z2ctHhb/b5VdHNVWlvdzzsY5x1PNTdaNRhGfvhOM6+fmzv36XtA3fp8Zk8r4O7QY+zd5dt+aH4hIkkzeX7Vn7oenfeRt0NRR3O29ifSsFcqc3bz/44Did/bA/E1x9br9l1cyD8fpvKu226D/GB5uCCbqlCu+awv/JOZ4ofWmZ7/oZdef+1Hk4lQtTrS0XfDUSdfRVS959iRX9Dmuz+/Sh2H/uWeG+hmp+xz0Pc4zUNYzd8vRYEEz4fLOXFIHjaL3lg/zeNGpO8ue8urf2lIcqleC69enl+KvaJK2OfuDL2/pXZZ67EzCC2PDPoN31jUuJs5M+v238VJPL/cUybh/XdgFR0fKb5SfSLeioUM86Fr1ebo2mLIPp8gqJv2/rmb5S+/bu/D/GB3yjhOA6RsmuOXRliX/l1PqwbP81d3fzui8Tneo+h/c2v5W4I5lHS41Go2vOR+ar7qfgxjnO1568e2wGUsxf13YBU6ReWHeiPS/x0qOCni3M1XJz0qPuLrNEWz+z66O57fnF6fbuDve4+izp9We9vj53uQ5y9BvX3x05rf3vstO4GpI5f1o+vyuZlfX93HHWwb2McdrD/FON6O8ZZB/s+xmEH+27gI3U8sJm+FOO0H/fwOLYx9m2KD7XyGizfjsM+0B72V5/L0YDDcYzNgMMP99jRgEO76P0Bh/2BnA04tN3HTYcXdxvj8GY/PY7Xb5CzQYu2+0TqdNBifyBngxat1HefhdruA6nTQYv9cRwNWvz4pEvpSffpeiG7JflOH5e3QQ77MbbPuRorUhWVzU32/gdS7f0PpNr7H0i1D3wg1d7/QKp94gOp9oEPpH54C4q3j5q/Cfh2Zd8fnN+/SR1m7W5czL8CnZe2tpeao5boWXqMjNrT5th92HRYCHcr8x0Xwu1xnDXpD/1b6dflSnPqftNJ9vhDQ5D6tBA2eb+nbRvkI73Cpy1CH2gRuj7QIrsgZy3yw4TJEt/ylPrq/M9yYUypludBth974gf30cusT7uF2n5pvaO5Bo3k/Z/L3azLw5/LbYizn8vduNTpz+Vufb7Dn8vtF1KnP5fHV0U3V4Xfnmuwj3E216Dx+6/r2xiHP9s/nMvRfIW2+0Tq8E7fhji804/P5PmD0G6+9tko7r6Exaosmt9uv5Uwae8/8cv706WavD0RZR/i7MLK+9Olmrw9XarJB6ZLnV+VTQnb3h2HT/y7pflOS8f+OI7GX5rS24/auwGps6fk/VGchdiupXn27vJDjLN3F3175qmv6vr2u4u+P/N0v2pHLEnXS3++08Z+hauzL2/t/efJ/v73Jq2//b3JPsRZMe7vf2/S+tvfmzT7wPcm51dl973J24+T+/0yzp4m7f1J/NsYp51Ab/cQ1vdXUmj2/m/9doW+88//jndCefpDTde7T6Tb/T80pp88CnZeHJS+HMV2cT0McrZ8b/wiBL4j+GP52q8h+O3en11jiMWgcb940xjbF/ujjbCu7cL7R1thbUMcbg0j716S7aYusaheXkTu2yqpuwiCTQz68wjbYZrovrqX6Eox5DwGxTjeIwY/jUG7TaCK1dhd7MH2rEHb2915+91pRGLFksegb6qAX/eWKP3tjN+GOMv4+n5z7H5QFOsaa67BX0ZH3r3HtxGO7vHtZkGH9/h+w6HDe3ybKKf3+G7orEZX8R/L03/bLWgXg7GAOPMmxnZXmhovKQ+W5xsx0C7MYaZsQ5xlyu4e+0Dh+NIc9rQ59tsn4YFYWt62qL0YQ9+Pkaa7/Gobp0viaeGS51sf0XbdN9+KfLRq720TZPfGFPN/eprV+bsQsXRcZ30xBMVRpFUkXg0h7bUGrYydKfK79C+D4GdBCr94aa3E+6PtrkvZPZHG20rLq4r+aouuFj8wj+Ntr8XANl9k/fnVPd6ybBfjdPs1fZ63xO++NG2PQrFofr/a5ig2bzzKkfnK+cvpL7tJ8XapgY5fhjycoF9i7AZGLC1WlD/3+xpDtgPesdvYg9O+eKWft2qvFq2af7R/U9d7vPc8UJ7H2P7SMcUUgEcleP5LR7utoAxdBFfuaFD+0q67Hl+0SOHNVnK7td96DAdYed6o2xBpSkQeUfgeY9d/dLb/Gu1Gi043YNsuhXfF9nwlL2f1/WS2s6rwEmW2KQC7QafTAiD2fgHYfQZ1WgB2HzEdF4D9tWnYgq1Zfe1m/TOIbYrz7h0EPzO1b578tzHQV/l4CXgtRhMMLlybfSC3Y+fxTNVf28SR0Jv+eEnsL8XgEvP+ufTNloW7oSeReAV5YHktiLbooNOWpmb9MkjnCGL9xSCEvQ2otReD9Bgf0PzQ/KuLQzFdjfNHKr+KodEi3K/yYox4o+JedzfJ7rG7XfHB/oN3TbLdJapi8v6DZXdGu4cJZsziY7mul48Gn0Q/jmaXyNt1YDtjp7mu/dUmxg7GD+ZX75i87qC+FgOTDNjSFsa/2qP2ijtXSnntOKTEm6uUzS23m0d3+HSz3SpXOMrsg9P3t7/acFfwZPLg/moUQV+g6KUvRtGKM8ob+f0ySgypPHhTsPdReoyjPriUV48ltW4vu9aVT9Qn3o1W3fUpzT0wez3MWZn76aQOyxxvv5l6/GIWlLldE/8Q5rBa/nC9Od178vK9F8sSP5hfzSbDTSMm9GoUbMgtpvZaFK2xU+jN/GoUbB6tj3fM51F2EyQ+si23YhSmK5cXo3R8OtB7uV6MYulYbPeovF0sFRsF626kcBejY+JbT78Bv4vB6BiS529B+04dQ/60/F3Ht63K6/bL0pN9P/chjgYM9yGORgx/2HM9fVxi17PVcXjXplYUXUtPx6X2IWqsJmW19lfGpRqjQ6fleTS/28ke2wWXpuV5FG707mDfPsTRYB+//xnUL5qjvt6oyDltL2buvWU7ovDznhSmt8dh9yHOLg39teOwfzbHbhz2h0uDl2TV62mUXRf3WSnbRjib+7B9SGstbZ6+6STjXS/Z2USQbYhHNWzYPl3oxSCanmfy3f67IDFA9eAur9xn94a90a7cnv/87zeekXiyerCVl6I8ulLjQaSlh4h62Wsx0hvBr2JwrDb66CAuL8VomDra8o5R32K8v6zlLgRdJQZ0S+5sqNd5jBI97Y+6Rk9j8O6bqsO6vA1xVpd331ac1eVtY9SGTyv+eFj+2hi7KawW762PfjzZBNmtXIKl8dLrw9depP1hCA4jLfH1y3PBYqN/bE7/yyDYN4ZfbtX4YuXR+3A9v9f36xfEBidtF8Pe/rm0d38uZbtN7dlUwW2Mw6mCrB+YKrhdOI3jdaxzfb76M+vbU1n3Ic4KUH97Kuu+MSRN4Xq+dzDvl007aYzdsvGtxldEreVvzIp9OYzt2n4nc+h59/XO2Rz6fYizn1n7QIjtqzpexeofWyvpl1PZXBWLTiVLqy/onxH2n7ycpes2hviqTLPfsKavTR5Dsr+IglUsH5x+WX4bpSIK1adRym5jIyyVnheAal+ebX84EHxPKX98UPmr0yHCMAnl0YBfReHUtJw+iPwahXdfWH0oTL3wfdSVuzC/vtdtg2D19kd3M78YpEZprVWfB7HtPp4xdlQfxf5pGsv1/gqdP8RAEnJpz58AtkFOHyP2R3L2HCHbkafTwrS7NoSbhK1vrs12EkXMwuY/1rX+8j2ybIeczpZ2kFIOb5LnXxPLbpG9s0819yGOviaW3cZRh597yu6zq7PPPWW3SN/p18TnV2WTutu742xpBynvL3z6w3EcLe0g9e1V1GS31t/50tr7Izlai2DbIIfLO/wQ42h5B6nyfqPu6unh8g774zhq0h8eaNKMDUoThr8+Q8j7X1/J+19fSat/aYiz98MfWhQz0h+ty09bdPdmdvhCs3tRfXRqx9xJKc93stm+7GK+VW+VXnzZPbws9vZr++6TJ4klSHruFvp6Jvb2OIy9PQ6znaF4+ES4jXH6QEgf+M56u6o/Rz9szRONv14UofcX5pXtSM7hs9xubuLhs9w2xNmzHL+/dIfs9p46fJbbfXV1/Cx3fFU2z3L0/sK8wu+vUf7DcZw9y/Hb26QIf2SblP2RnD3L0fvLDP8Q4+xZbjskddao2+XkTp/ltsdx9iy3ndgc86s7v/bzFDNmpT+fdqXvP7fs1o5uNZaffXRy59GGfh5D46e62R8rzJzHoCti0JWnw3xNFH27o39/GPGATmV7GO8vePhDjMMOrf2WAIcdWvsjOXx+0f7+88t20ylizEQp+vw22y1PhdksVURei8ExmaU+Wu75PdLru4NBstvZ6GwwaB/isIBsWzTNp71k0xof2HZC+vYD9ri27fpjkO7rkex+aw93aZPtI//h48fu1+Hwl9LKRx4/frg4R7u01e3Wpj1eKfOzw9dFyMS2U7ePNmkTe39VSp9I+Oa7h729KqXY+6tSir29KqVeH1iV8vyqbH4x93fH0SZt2xiHm7T9FON6O8bZJm37GGebtOl1tknKbt+qbYzDdTpPj2P7Trhv06NN2nQ33nHaHocx3jiXo03ajmNsNmn74R472qRNt1tOHW7Stj+Qs03adLd23/HF7e/f7IfH8foNcrZJm25Hog43adsfyNkmbVrfXjBdK7/fabA/jrN+mJ8edE82adPa339a3gY5nBy8fcw96wvW9v64vra3x/X3IY6ex7S9P67vLylvPo+1D4zrn1+VzfPY/iXoqC9Y2wfG9bcvUodZa+/3nu5jHPWeKr3de6r0gd7T/XGcNam923u6j3DSe7r/8CXeSR+Y1lT6zcczgg9wxNprMXosVlBz9+nvPsDBg9hVn58L83btz7OveLZBHtczxm27Pv0EdxvCIt3Eqr4WAqPHeVc1Ob8qGj/UVfOSar+5sn/EoBdjVMRozy+Ksr3dMb4NcTSvQN//pGkb4vCpZdue8h9+E/m7a5L6PO3FypGP49UYeGy5lxN4MQbVoxhvj4XJ22NhP3x1H4MdVuuLH+7HMrsPfPqV6nYVg6Om+CHESVvs15bAcsF/PBL/an2KguVgN9/K72PE82zN6/T9LgbypNvzT7p/WH+EsHJI581SVudRdutQ/RCFEEWfrxDjRebpk/HZyqO6G4M6XZtrvyZLxVLftll58Ic2wfvG4yK/vD5MPpb2chS8oXejF1cT0ooP+B+/4O3VKJLWAXp5TSJ85vngWl+NQikKv7qyUWs5irwaJfUZtv5yu2iKYteLUSit+ET11StNV47y8l2HZWIfb3Cb2rL9OI/Sx2i0u2F+CoOlIx4HUzZhtsP+pwuW/XQ08WLy4M1yhr85qTfCKBaiyMsCfw3T9x8bfaptUq9AXm7kjZN6IwwVLK+xW0O2b7+h+lTbYC/EBxN/5KTo1fJ5XZgDk7dP/+VSd3alKM9vvh9W+o31wh9oLwaRgnnzVV8MwjG56PEO++rpaHScan95HeZ8Oq8HwV4Ooq+uw6wx21u10KtHEstdPILwq0fC2JqC6QNXp2xKQv3QSsHb1amLHN0p20XQGxZS580iYttNpWJLh5rnbn7dEKpvN8Q76hrq7++p12v/S0McrkK2a8+GlZCaPt9gq++GTo4WqtkeBaFzKY/tfz+K9vbrYd8dyOHr4X7LsordQCs/PZd9jLxX7PP2oLqds3m2d9o2yFnX9j7EUdf2DyFOura3e/Md9VHtI5x0UW33wDw6hn2Ek2PYDQzGaIfkj+3YTgNgUy7Og8ZSTgNI7E8muWfrFwFiStMfO7uyngbA7kQ9Z/gvAsSTV8/TOr8E6LzdDiym7abZ1PemXq+ESONWX0Nse35jLnXafO8X7VDx0yH6yhFULNVoL52CRHHKy9IX/Xoltl8/xMcP+YbW41bAN5uaxpa/H8NuyL9Gp8yjrz49crY/87LvhhNq2vynPJuJsY1QBG99kt/yf3MYBaPDj66Z+mIQi6fNYpU/EKS9fiTx8mlpSPSXQfB488cL7K+u71Uwt4Q2p7O901qNFfSa7trEtnmfntZeD4Knk22b7B9xKh5xXj0Sxt5MkjtwfhkExTBvrfSrIP6x6gySdwb4XZC0AO718pFEr9ZjML68GERxOsqvHokqxmqvl49EMThY+MUgGMSqf4yn/S5IvCtVu14PEm1i5dXcMeSOvZo7j47yeAqp9GLDPl6EG16EX0zARvEb2vh6Xqh3z7Z41clTzUROAxxvnrd7uIw+nz8eLo8fRyx+w/OL0pe/71b+4rOI3QB6Xv3261G0k8cqyZ/o/iZCx8tSfzHCFY927YVrUfDaWiytNfsYyXspRHr//kWIe809PDjYayEwIeH644XlFyFic6562YsnEr1dteRftl+FIIR4sS1qjAE8OLfGeX4QdlOh3vrTEN518vxRu6aVL9PJfHmZ3gfBloGF8qP2b4JoDMH+sSXX+Us9Y0CZ/xhPPr8uzDGH4VHIXwwR838e0V67Rws+ts776T1+J38RAvdo+sTgVyEwRbem2/w3ITAv7NHnXl8Kgfr550ThX4RQvPRoe605a+xFWau+FqLFx8CPVimvHQUmPLfrpebk6Lfi11qCDVsb8isByoWCk58LfhOixDz6krcr+FUIweNJf+0oWtrPxl47irRbEZO+FkLwxUm3104E1TuvoPyrEHjCaPzaiUikWMmDt78JoYpZPPZSfhSsjf3oNHophMaDb96g8hcBLLpEjV9qB4vPXfLEwt8EiOQw5TdP4bUAzNGl+kB97YcY3VS52P0mBMUNxZR3Pj0P8ccHJn8MFZyHKFgmqObdJr6EsN2nR/GynzYDoF90suOTn56XMz4/i6KcdiHKix19WfmJdh/pabwT1twxLL/Ib0VXrDw9iu2J9PjpyJ87fz+R7TJ8J8vY2G420tkyNvsQZ8vYbB8S4yhqTQsufGuM3TJ8viEwav/zBU1/CNLyzqrtaZDd7BLGB4ucZ5d8O53dt8o9mrX+2axfFt/n7ZqmGKIsrJsgvO1tTCv7tM3pbHezbnjkS9395Sq/CCIx5UYkb1P3qyDosvxjEsC3IPL2EPwPxyFpMkLfHAd94O1dPvH2vj0dw4/DdW2ujezWsrvimfz+HBK/MV8WKrLdXkJW4rNlK6m/7XuQ3bznxmk/esvdRN+adnssMQXnMXq4ORYtH8jibdPW+Dzjj9//70ey3aOhxwhVYTPehKFPlCXbPiHH7Mieq+zXG267ZZQWzMXNq8nx1910duvjXHi+uzYh+gdu/N1icMc3fr8+cuPvt8A6vN12n0j94nbbrbN3fLvtLjIKbc/b1329yH37XICeF72eL5ZuuzVMPnMy+FDlSr1I389muw0O4aGtbPYY2i5Vfnw22zWMoj/q8Vi9OZ3dWFO74l2x5VGB70HqB66wfeJ23Z5OidG7x3Cobk6HP3CJTf7qYm/xqqMmm2Jv2zWlY3koutKT37disv8gquJjnTRPy/58QSjXtX0Zj/7ox4VKD5D9W5TtLRvPbS33YLZWvkap71+fH86oooeipd+e/+CM6C8/FipYay51uPwHx7JbCR2znPjKGSS/uOOQQI+nFXl6xz2OpP/Fb3GPOyRuuXo9f8d+ZNT1foG7f1b+6hOqDRUurxX7/YTa+yXuEeUTD7TbJ3RMuGj5y+dSvqbzdkG/X7y47A4Gaz9RyTNavx/MJ+7c7aPkcbvU/x+ea4/bpX6g5m6Ly2PYJ3aHqyy7Q6EP/J5V/sTv2fZLpuPfs/qBPq8fzuj496zaX34sx79n20+jPvB7xhJ7JPEfr0Hfbrn2gQfc7dcjsU3zY3TFXumBJ6mYb0+6+f1o8m4X/COGvtsH/0OM042F953f2GxAlJ8twVMuut7vQt9HOdycjPfbgWOUhl/uQY/y2Ev+zPp3QeJ7q17Lbl/g3Uerj3eg+PDV8qzf71F2RTa+eqLyfFh339WLDi/hNCX7d129WPmqmZSXHzDOLs9PUU6vz+4zqPPrs9uQ6gPXR6WnT76fj7U8DmS/unT86KSB1vo1xOaOZcyZYtXNmPP+8e/0Rtk/cZ3eKPsoxzeKfeJG2X2Fc3ijbDuu40fjjy2K+esPz24kjPAFO7X6fFB/3zOKHrwqVF7tGT0s1fsgp1dY5CNXWP/SK4w1uYx5d4V3X2qVWAOTS54B/+0K754cC+61+keX8/Wb3uLTK2yfuMK7kbDzK7wbCDu8wruO3oq5ZjXP9Pp+jXW7y298IEWX0fPLs+39Ps3ife/34TXeBzm9xtuVRo6v8W6twA9c41ZiNngroptrvBsGox5P99Q7b64xfyCP7ROV2j5Sqbc7B59f4/7uNf6hI6Y1zAROo1jfOmL2y63HPn75Ckv/RQyOfQVYXo6Bz8jTuom/jBEfyEj+5unlGP3FGBLtIS+3h0R7yMvtIYbP+9sHYrzaHth3Ql9uD4320JfbQ+Nc+svtkWO82h5Yl6bLq8fR40OuvC7WL2NEN7m93B45xqvHYVGXbVuD9l3BWFPkyiuvfu0KLtf2c17G57x5hdHfRfnje97+ahTsd9Akr9T7uyga/Y33JkP/59Uu8uOX4U/0apXyiV6tUt7u1fqhm71h67iW1iT6bZf/cdt+4iWl1E88wJZa/uK2pXi4eQxhlOdt6/Mlnz8Hx4jXY4CInw1hlLJ9zkqd3H/8gOnXIJvzOfom/IcQJx+F/xTi4Kvw/agQWXTf8B87P39r0s3dSnjMIslTIF8P0p4G+cVQ2WYgsrTtSpX4koBaf34+u1EuuQi7J9mmUXbL7935HYfyuBfoM2F007rbseKrH4wV74cQKR4xmGkzgF7abhO2cuHjzT+WUfkWZXfLxQAR5d/Sen2JQdupXChsdRNjexwlKmxe8f77cdRP1PrdB16nnRW7C8waFUVyh/C3C7wb7GqMHYvb03fhsh/p+o9C3P0nvxmqPv01b5/ojir0iWGDwu8PG+w/aohZ2VavzTzK/UcNh31A+yCnDbsb6fpFw/L7vfXbzyvSkPXj57BsmpY+0bT0kab9yD37iaEu+8Q9uw1y9jXP42w+MP3lpyiHlemHKKdX+SPDXeUDw137D0aOE6h/Ygyif6Rp9ROTCoq+P6lgO+/9sHu6KL3dPb2Ncdg9vY9x1j29j3HWPX0co78Y47B7eh/jrHt6H+Ose/o4xqvtcdg9vY9x1j29j3HWPX0c49X2OOye3sc4657exzjrnj6O8epxnHZP77+8Oe2e3o1Sn3dPb6Mcd09voxx3T2+jHHdPXx+Zq3V9Yq5WsU88wNbr7QfYH75qOu6evugjbfuJl4N60Ufalv/itj3tnq67Pa9Ou6fr7mOv0+7puhsmOuue3oc46p7+IcRR9/TuI7zT7um6+8brtHv6F0E23dPnXyZuuqfr9hOvw+7pWvT97ula+ie6p38VZvNxiv21vdN0RTfBI9rzdRhK3e50ddo7XXejXYe903XXY3/YO70/jrPe6Vo/0UNQ6/s9BPsvcuNOe/QKy+4C7wfzD3qna7ve752+PvL1w/WJrx9q+8SE2NrenxB7vFwVPV+u6nEg2+W30j7E6VtE+vr9w/Zr6cMJsT99LX38jcsnusorfWJGQaUPzCjY/R6fTkT96cPt47b9yOPwR77vqp/4vms/ESaWQskbB39f8I13v6SYbXzJ5vP8uhvz+kyUs63jfohxtHfcTzFONo/bL8gdq98Xfrq30v0ktiuQB9sz7Veuj+UzS9ov5/tB7GZvxydqlhKmcP8aY7err12KRTTz49ov1r/n2Gyb02D1LzaySwHoeiWAxGNr7nj5TYD0tldeChAr9cofWzyeBzjaT3Ab4N3tBI++F959tkyK3QfSgqytHm8d8MjIeHXnRi+F0FiOpOSP0n8TomMt757WYvhNCIvvTR7dff2lEIKFekVfOxExLMR9vXYiV1rorL92FDW+zi81f57/ixDYVahQ2pb2V0cR32eVP7Y4/M1RxFfbpRV5ty1eDsGGE0kFt/zmKBRXpL4fQl4K0WIR6Qf210IIhlTTahq/CZFLDr3WFs1Q+NKSTi+HeO2i5mVo0oYnvwqBtf9J5MUQOJG8Q8dvQsQDeKH+2kWl6GoseQOx390X2NChvnRRKfbd+6On8jwAbk2uz9vhkX+8rXuEcpEeFM+f7wjb+ehLp6HxdEUvXQtmzIeklwLEUvFs7bUAMd3B6L0Aea7DrxoRnc0v1UqJTsi8QvVrR0AvJjaeJfID4r151+mbE8fySVXya8+XEI8flM1rT23YuLGlNXH1W5D9+rwx3ptfA78H2fW4c1esz9v7pv+klQ88LD6ilPef1H6Icviwdn4suyelH9rl8G3gp6tk8YrqE+R2V2m3bUaJBbNqHt78D85JP3KV9CPtqx+51rt2qfH6/Bi94Feeih9P9wWFoW0Kw27YibDFC5WO09FfPMhhSZhH4+RtP78fyfZb9lh35A6ZosjXKLsf/yv17zyGMOzZGT3CbO9bwdZtj15jfqVhCDf/41E1Txw6L//3aHk8od5760UQ/nY+uz7RuN0ovTR87fbeh4jjyM+XvwrB0WPDqePtdyEsjUA/C7FtT4wB3AOy9Xl77sacDttzG+KsPRu93Z7bEG+3Z8MW84/RsV177gZHLXZpoevK67V+Wa2k7UaaevR097R55X1Qr51NemL7dja776pK2n7ywamDVehXYRqmODwGUq9NmN34qGLiYU+j8d8e23YDTb95bCP5xGMbfeSBgD7yU04feazYtsvxY9v+Kp0/tu0WFDx/bNuuDXp8lU6j7Nt3G+X4Wm/b5fCx7ce8Jvymt9TH/C2vefc6plhELw24yi8PBXuJ1jxX59uhyLbzP+2xZ3mTvW9PXVI+8NT109F0bN17Xa1twmxuGR+qHqdU8l5b/IuHNzwn3L3x9vznZLvXVsMjyz3nKI7kWwXffXBV4huHmhf7/ToC2+QTK181eX/lq7ZbYPB0R+JHJ/m+Q/5oA9pHlM1te7br6Q/nc7hVdGnbj0EP96F9RNl97XC0Dew+xulmyz+cz+GmuD/kD3V0bOetN7/lz25NWcF3ClolL53/NYN2n4MWwxWyPIXWrteqCqd5TN+qym6NQUWraJ7G8PVIHlHqrkjG1vfGm/N5RNntqIFRrT9+hOqXPvsfomD/sEcT2S7K5m6xHidk2yPZTUGnCEJ5tevHO9BvonCLX3jOTxu/jRKzV9lePpZ8Rqmy/DKKRD7TH5Mbfxsl2kXyx9Avn5Fwf/lYYhoLaX46/W0UQn9C/cAZaXrq+WUU5Sui9JevkcanAqTWP3FG+Q3id1F6wbAky+tRsG2qtg+cUU+bR/4yCjZOJeubdqFr+07U02SCvLzr17lwjzi733rGvOc8YPp1L9gfojQ8MbTGL0aReJ3R/Jb37aWob3fxiiUb+NpVKdp+lPWb1rWPtK59pHXtA6277aHH+Vwsz39hqXzi0wEqb3868IjBH3gToe33WQXPdKXzq1FO32do92nV4fP/Nsbx8//pkSi/en1O36xo+3nW6ZsV7T6LOm3ZwxjbNtnFOL862zY5fjvbPrUzPnjJO9//8tmfLJ79Od/536pK3e+GjGbBCdnXGrn7SOv4ww5qn1jDhVp9v7619on6tl9N8LS+bY/lOJe332kd5/J296zDXN7FOM/D7fmc5uH23n/0caZhfH1+82+DpF2iLQ0ofguyX5YQa13l/PkWY3vXxkDIo1tAX47S0N9Pr0cpKUp/OQqnsYfyiWPR11tXsQNq/l7g9WOxbevueqCisFiXF2N0zAK+8sPxtyD8idU0idv7JXv7tdZxyWb+xMPk7qOt0zK53ZXvuExuWwVrS1TJk2K/R7FPtMpuiOq0VQ5jbB8Et9f4+Gd527LHP8tCn/hZ3nX2H7csf+J+257PZ36WU23KixN++0XdjS5pzCHW9LFe+7p+Ael+2OFkWv3+QPCFfJ6J8v1AtjFiOktPExZ/F8PQNXNdZdciu7lTV9ywXK7dk75+4hNu0vc3M6Ddxm/nPxvaP1FStsdyXFL69YmSshspOy0puxjnJWV7Ph8qKXHH7UvKLkhlwvTjNIHxW5C+nQ2Wtv3Ni830b1F2sxIwD1LzxyrfKtN2O64WN3/LE/++Lj1Fu30C24UdwPO8k98FKYyd2/JSkr8LEt82t1o2R/LD5ny4xrvTse0YPuZCGvXXgtTrwoyeujuS7daysQVx6r3+dpfsj4Mwi0Y218b0rz2OggHz0unFRi1SPhAk7tY3guRfnvr8HuHd4o0F3ziVlga6fxcEK1c96t9HgvCrQSq+KyV6OQjWN2P7wOm8HiStldD7+0HyuqW/C5K/c00/Ot+C7D7WOsvhH45D8B32JnN4u6TRYS3ZVnnGF4abmsa7UZbTKr8NclrlubxdXX84jrMq7zfSX3kch1X+pyDlA0HOqjwfj5Tuqvz+M7HDKr/flOiwyp8H4VeDHFb5H4KcVfnj03k9yGGVPw2yrfLbIKdVvr1dXX84jsMq3/ivrfLaOF6oZdOo2/Gq0+TbBjlNvvMg/GqQw+T7IchZ8h2fzutBDpPvNMg2+bZBTpNv90nUYfLtj+Mw+ai/nXzbt/Ea8zsfP3yby8vX+2/jzOUDz2m7IMfPafx+bd0fx+FzGvNfexynz2k/BCkfCHL4nLYNcvqctv0I6/SnQq4P/FScB+FXgxz+VPwQ5Oyn4vh0Xg9y+FNxGmT7UyHXB34q5P13rf1xHP5U6Pu9Avsqf/g2rh/oc90GOa7y+n511Q/0ubLqX3scp1VeP9Dn+kOQwyqvn+hz7Z/oc+2f6HPtn+hz7Z/oc+2f6HPtn+hz7Z/oc+2f6HPtn+hztfera/9En6u1v7bKn76Nbxc6PE2+bZDT5DsPwq8GOUy+H4KcJd/x6bwe5DD5ToNsk28b5DD55KK3b/r9cZwln1xv9wrspy4IVsTX6/n8B9l+3nU6dUF2H1SdTl2Qcr0/dUFKeX/qwj7I4dSFH4KcTV2QQu93lsgnBrXkE4Na8v6glnxiUEveH9SSTwxqyScGteQTg1ryiUEt+cSglnxiUEs+MaglnxjUkk8MasknBrXkE4Na8olBLfnEoJa8P6glnxjUkvcHtX6o8medJbIdJDit8rsgx1W+vV9d98dxWOWp/LXHcVrlfwhSPhDksMo3/UCV367xd1rlt0FOq/x5EH41yGGV/yHIWZU/Pp3XgxxW+dMg2yq/DXJa5d8f1vrhOA6rPOtfW+UPO0tk/93WYfJtg5wm33kQfjXIYfL9EOQs+Y5P5/Ugh8l3GmSbfNsgp8knb08Z+OE4DpNPr/eTr7w/dUH0Ax8SyCcGteQTg1ry/qCWfGJQS94f1JJPDGrJJwa15BODWvKJQS35xKCWfGJQSz4xqCWfGNSSTwxqyScGteQTg1ryiUEt+cSglrw/qCWfGNSS9we1fqjyh2/j9ok+V/tEn+v7n2n9cByHVd7srz2O0ypvn+hztU/0udoH+lz1+kCf6z7IYZX/RRB+NchZlf8pyFGVPz+d14OcVfnjILsqvw9yWOX1/c+0fjiOsyqvhf/aKn/4Nq7lAx8S7IOcJl/5wIcEPwQ5TL7ygQ8Jzk/n9SCHyVc+8CHBPshp8tW3pwz8cByHyVff/5BgO3VBK5JPN+urbYN0rLjY04oWvwwSi3A/grx6JBZ757arPl9w8YcFJGMjlMo979f6qwUksVvoH10Uv4yCxVzuc3seRXcL+rVYcOTeQi6C8NcQmxv2cYljEb1W0zI57VuU3R1bY1N3roTT+bppyA9B4lC4pdP5FmS3tZdF/llaNftXLdKwO1iTXYvsVoo7bpF9kNMWoTdbZLsDRPcPF0eLcFrx8dveDbr9TKvHOw53o127bqKoxYqC/bqul6PElvf9j3WdfhXlUdkiSslTu34ZJVYw6uWPXQq+Rtl+r3V1xnLZXcrTe5+3N1y7cNfWF2NYbCndrhfvOIlnx/5HD8G3O243tEUc22cR97y3gP4iCnv3+zgfMX4xyuPStrjKf+yW8LsoqNa1vX4ssVppr3kDxG9Rth/CHN9xu628Tu+4fYyTO267ZB1X7G7G+nSnnH2MtAFrfjL4TQxR7Aep/DTGoz02FUVkFRRJd1q5+BcxqFlstClVdlG2a7wZzudClK+bxqlsP4o9205ct6sSnu94qLr9cPJwx0PV7XZ6hzseHkfZ7ni4j3K44+HxfWvX881dVbeTInrspMft+RaDuhvrOtztcH8gjCaRSzcHshuYFV+ifEYRer7D9D6M9niSfPBmr8P9KSljhUPtz09pN4CgsTWgpp9Tbb8I0WOAt6cd1r6H2E3zsFg7vF3p5+tbPejb38B4Qe5FNrvU6nYHGOy5wkxpTc5+/epYDncC0N3ChMfrg+p2BYKz9UHVrsNu9936oLob8DpeH3R/LKfrg6p9Yr/Ex4vF5k3sbH3QbYzj9UH353O6Pug+l8v1cy5vfzYMW/w8ftk3Pxu23Sqxx6BVfpn7+qhyfiRpmeyvR/J4W9uFOd3P+4cwp/t59922Xaf7eff9aMLxft792g7X4lfMWn/+rLKP4mvtfX9C+GWU073F+/bDrhp9CPfzz8tRDp8E91Ha1Y6eBI+P5Y0opzto76/R6T7n+yg9+o1Lt90T8rbOxe3SU+3/+szSy37rldiJ78E9/ch/7fH9IR2PX2P6bsOs49eYXuwTKbCPcnrbnUbZJ9I2yvnNuy/ghxu3993XM4evMj8dyuHG7b1u79/Tjdt7/eFDjbON2384mtON2/t2F6/3N25v6NZ7dKq151ss990mXocdNtsYxx02fffN12mHTd/t4XXaYdMbf6bS7cbIzivd9tuv4xp1GmVfo/aLK77fYfPnfZu+Bf923+6+/zrtsOm7Qa7TKrc9kMMOm74bKDvvsNmHOe6w2d+3VdIGXNtf6P6JKNvmPew86mTvdh5tQ5x1HvXtmnWHnUed6wc6j/p2YcPTzqMfjuWw86jzJzaX6fz+5jKdP7G5jD+Vv915tD+W086jLp/YXKbL+5vLbGMcdx7tz+e082ify+92HrUWSVgapTb59hO2G+f6RZfNPsxxl81uvOy4y0bsM1022yGz4y6b/cDbaZfNNspxl832y7Dj99V9lNOnuG2U4y6b02N5I8rxW+/2Gh122RwndUuN+y2p99tfnfUI/3A+p51H+zp31nnU22c6j/aF4fyVqvMnXqm2e3odJ+M+ymkCnEbZp/Q2ynEa/fBTctp5tBs+O32t+uFQTjuP9qNNx51Hu6GvX3Qe7Y/muPPI5O3Oox8y6fD1bFOlpMbviNSSJmdejwP5vx//5z/813/61//y93/5r//wb//0L//8v+6/rOTJ8vizykESpDfVh7L2IFvUrqDi9PiLVoOa0+OeaRTkjrtHqLnjnu/VNKgH2SJyx/1YRiWoBrUgir/goHBQOKjHX9giDgeHg+v6C25B4eBwsMRfaFA4OBxyrb+QEhQOCYdQ/AUHhUPCIdFWEm2l4dBwaLSVRltpODQcGm2l0VYaDg1Hj7bq0VY9HD0cPdqqR1v1cPRw9GirHm1l4bBwWLSVRVtZOCwcFm1l0VYWDgtHuaKxylWAFdiAhD9joAAV2PFn0WqlwFZgK9FwpTQgbAW2IvgzBcJWYKvRgKUWIGwVtkr4MwbCVmGrHX+GlmywNdgaWrKhJRtsDbaGlmxoyQZbg43QkoSWJNgINkJLElqSYCPYCC1JaEmGjWFjtCSjJRk2ho3RkoyWZNgYtlkk6o0FWIENOGztRgYKUIEdf2aBCpvCNgvG/WezYjjCprDNouF/pkDYFLZZOO4/m5XDEbYO2ywe/mcMhK3DNguI/5kFGmwGm6ElDS1psBlshpY0tKTBZmGrV7RkvQqwAhuQ8GcMFKACO/4sWrIW2ApsJVqylgaErcBWBH+mQNgKbDVastYChK3CVgl/xkDYKmy148/Qkg22BltDSza0ZIOtwdbQkg0t2WBrsBFaktCSBBvBRmhJQksSbAQboSUJLcmwMWyMlmS0JMPGsDFaktGSDBvDJmhJQUsKbAKboCUFLSmwCWyClhS0pMKmsClaUtGSCpvCpmhJRUsqbApbR0t2tGSHrcM2awnfyEABKnDY5EYLnLXEsQBr/NmsJY6wGWyzlvifKRA2C1ubtYRvLMAKbEDCnzFQgArs+DMLLLAV2GYtuf9s1hJH2ApsRfBnCoStwFajJVstQNgqbJXwZwyErcJWO/4MLdlga7A1tGRDSzbYGmwNLdnQkg22BhuhJQktSbARbISWJLQkwUawEVqS0JIMG8PGaElGSzJsDBujJRktybAxbIKWFLSkwCawCVpS0JICm8AmaElBSypsCpuiJRUtqbApbIqWVLSkwqawdbRkR0t22DpsHS3Z0ZIdtg5bR0t2tKTBZrAZWtLQkgabwWZoSUNLGmwWNrqiJekqwApsQMKfMVCAChw2vdECZy1xLMBh6zc2IAEZKPgzBcJWYJu15P6zWUscYauwzVrif8ZA2Cpss5b4n1lgg63BNmvJ/WezljjC1mCbtcT/TIGwNdgILUloSYKNYCO0JKElCTaCjdCShJZk2Bg2RksyWpJhY9gYLcloSYaNYRO0pKAlBTaBTdCSgpYU2AQ2QUsKWlJhU9gULaloSYVNYVO0pKIlFTaFraMlO1qyw9Zh62jJjpbssHXYOlqyoyUNNoPN0JKGljTYDDZDSxpa0mCzsPEVLclXAVZgAxL+jIECVGDHn0VLcoGtwFaiJbk0IGwFtiL4MwXCVmCr0ZJcCxC2Clsl/BkDYauw1Y4/Q0s22Bpso5bco0c8aslAAjJQgArsQAsctWRgAcJGsBFsBBvBRrARbAQbw8awMWwMG8PGsDFsDBvDxrAJbAKbwCawCWwCm8AmsAlsApvCprApbAqbwqawKWwKm8KmsHXYOmwdtg5bh63D1mHrsHXYOmwGm8FmsBlsBpvBZrAZbAabhU2uC1iAFdiABGSgABXYgbAV2ApsBbYCW4GtwFZgK7AV2Apso5bcM6Nk1JKBbmP/D9x2j/XIqCUD3SZ0o9vU/0yBHWiBo5Z0H0IoQLfd303KqCUDCchAASqwAy1w1JKBBQgbwUawEWwEG8FGsBFsDBvDxrAxbAwbw8aweS2he6xKvJZMtECvJRMLsAIbkIAMFCBsApvAprApbAqbwqawKWwKm8KmsClsHbYOW4etw9aH7b65OgMF6LZ7SwrxWjLRAr2WTHTbPZ1UvJZMdNs9b1a8lkxkoNvuSW7itWRiB7qN9B7zuoAFOGz9xmGzGwnIQLexD6C5jf3POtBt92qY6rVkotvuSZ3qtYTuz97Va8lEAjJQgArsQAv0WjKxAGGrsFXYKmwVtgpbha3C1mBrsDXYGmwNtgZbg63B1mBrsBFsBBvBRrARbAQbwUawEWwEG8PGsDFsDBsP231hmYFu644K7EALHLVkYAFWYAMSkIGwCWwCm8CmsClsCpvCprApbAqbwqawKWwdtg5bh63D1mHrsHXYOmwdtg6bwWawGWwGm8FmsBlsBpvBZmHr1wUswApsQAIyUIAK7EDYCmwFtgJbga3AVmArsBXYCmwFtgpbha3CVmGrsFXYKmwVtgpbha3B1mBrsDXYGmwNtgZbg63B1mAj2Ag2go1gI9gINoKNYCPYCDaGjWFj2Bg2ho1hQy3pqCUdtaSjlnTUko5a0lFLOmpJRy3pqCUdtaSjlnTUko5a0lFLOmpJRy3pqCUdtaSjlnTUko5a0lFLOmpJRy3pqCUdtaSjlnTUko5a0lFLOmpJRy3pqCUdtaSjlnTUko5a0lFLOmpJRy3pqCUdtaSjlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhlhhqiaGWGGqJoZYYaomhltisJXyj28xnPglQgR3otnt6qI1aMtBt9xRLG7Xknt9oo5YMJOCw9RsFeNv48mAdaIFeS/iekWheSybeNr7XTTWvJRMJyI73kXktmei2e86neS3h+3sE81oy0GsJ368w5rVkotvu6YjmtWQiAd12TzQ3ryUT3XZ/kmVeSyZaoNcSvgdOzGvJRLfdXX/mtWSi2+7XEvNaMlGAbrvfRcxryUS33V9RlcuLCd9L7D24JK6J3Xj3NjyYErvz7np4sCTWxK6VMS/OwF5WWMckuZK4Jnav+nF6aVnsXvVj8+LC6sfj1WWxe+/ZyQ82sBcY7n4MXmEW18TuvTPjwZTYvebH4GVmsSZ2r/mxeaWZ7KWGzY/Na83i2yv36hIPbokpMTursyS+vb5Q8IN7YgN70VlcnP1cvOwsdm/x4/HCI8XbyivPYkns3jrmL/bE7q0e08vP4pLYvdXPyyvQYvc2byuvQYslsXubH6eXocXubX5sXoiE/Hi8Ei12L3k7eC1a7F7yY/BqtFgSu5e8zb0gLXbvyAUvSYtLYveyH5tXpcXuFT82r0uL3SueO16ZFvfE7tUxJ/RK7N6RF16eZOSC16fFlNi9Iy+8RC1278gFL1KLDexlSkZeeJ1a7N6RC16pFlNi94688GK12L0jL7xcifnxeL0aPCbX6jVmvpbE1bk5t8SUmJ3ZWRLfXr1/DMqYZLvYwF6v/EPNMubZLnav58WYabvYvffM9DLm2i6WxO69144oY7rtYveOubler9TnDY4Zt+pTBMeU28Xu9RwZk24Xc2JJ7N7m5+71arGBW3SRljH3VmlMJq6JW2JKzIklxXEvjfg9sYG9Xi0uicf5eptTS0yJObEk1sQ9sYH5SlwSJy8nLycvJy8nLycvJy8nrySvJK8krySvJK8krySvJK8krySvjnb2+1BL4pq4JSZcRx3X1+9zr1eLx/X1e1h7YsPf9nRfeb1SHrPNa+KWmBK7l/2e93q1WBP3xAb2erW4JB5ePx5riSkxJ5bEmni47jwdk3YXl8Q1Mc5xTNxdzImRO3Pu7uRxjuJs4FGjJpfEw6vOLTEl5sSSeJxjd+6Jh/e+vmMi7+KSuCZ2r/i5jxo1mRNLYvfeX7qVMaF3sYG9Ri0uiWvi4RqfJnBiSayJO465pXMcdWm0yahL4tdi1KXJLTElHl52/v/6upfdNo4gCsPv4jUX7HtVXiUIAtsxAgNCYihxgCAvn+463ex/5Y3waajRUQ9ZxSFZpDo8YIMjN+7HNdp7HLkjfkZ9abvAkRv345rvHaY3YHQ4cuN+XCO+x37db51qynfE/bvGfEfcR2vOd8T9sgZ9Lc5LNel73OEBWziObfSl7ehLxwnOcIEr3OAODxi5A7mGXEOuITf6ksW5tIZ/j5FryDXkGnINuY5cR64j17Fex3odudGXLM7nNQl8bLBy430x0aMszm00DXyc4QJXuMEdHrDBkbv+EVTSWPBxgjNc4Ao3WMe5hwdssF/nJ5zgDBe4wvf2rDHh4wEb7NflCd/rV8PCxwWucIM7PF63PY0MH/t1fcIJznCBK4zcitw6YIPv7Vnjw8dYb0NuQ25Dbmtwh7HehvU2rLcjtyO34zh3HOeO49yx3o71duR25HbkDhxn9CsNFavuNFV8XOEGd1i5cZtRv9r2W1OG+jXUr6F+DfVrqF9D/RrqV/1K9aV+tY36ddSvo34d9euoX0f9OurXUb+O+nXUr9/61cDxcYIzXODIjeclNHV83OEBG+zX6lc53senfrWd4QJXuMHITchNyE3IVb/aTnCGkZuRm5GrfrU9YIORW5BbkFuQq361jdyC3ILcgtyCXPUrWf0qniPSZPJxhgtcYeW2sHItPGCDI1dvyFS/qnKCMxy5NbLUr+IxqeaUjyO3xm1P/WrbrnFOpbFki8dWmkvev6e/BreSJpPPdv3++Pv7PX/TcLLF4wVNJ1uc92o82eJ8UvPJx5Ebz6NqQvm4wpEb55waUj4esMF+rb60neAMF7jCyDXkGnINuYZc9aURx1N9aRu5jlxHriPXkevIdeT6zdXw8nGCM6xcC1e4wcr18IAN9mv1pe0EZ7jAFY7c9VnEScPMxwM22K/Vl7YTrNwULnCFG9zhARvs1+pLcfvUbPNxhgtc4Qbf61cTzscG4/qtuH4rrl/1pbiNac75uMIN7vCADfbrhtyG3IbbVStwhRuM9TbkNuQ25PYnnGCst2O9HevtyO3I7TjOHce54zgPrHdgvQO5A7kDuQPHGf2q7X4V9bX7lezXu1/JCY7c6NWahz5GHe1+JaN+DfVrqF9D/Trq11G/6leqKfWr7Qqjfh3166hfR/36rV8NSB+nV331Z4YLXOEGd3jABit3XS8alT5OcIYLXGGt18IdHrDBfr37lYzcjNyM3Ixc9avtDg8YuRm5BbnqV9sZLjByC3ILcgty1a+2kVuRW5FbkVuRq361HbkenxehfrU9YIP9Wv0qXt/RTLWtf5meNFR9XOAKK3d9qtA/H9+/fvz09uWvDz/9tz5k6Psfn88HCs1v//7327nk0/vXt7evv//67f3Pz19++/7+ZX340Lrsw3N/+Xn9F8mHzQr8ZYbM7329+u1z4/y+xOXzKeD5Q2VdvnaYByw95pe+Nqw95trqY37p6xOO0vq9a7/5YkzNZ5+WHi0uzuvi2DRPaHNsKucvmc8yPOaj7bPPfAz0mOdjJ2U+l/GYz1usPerJmC+etPTKyI821sXtlZH8keva1G9sfWRfm8bdNB4lr03247/dX3vMFyF7ey1/Hr74jel59p8vUBU/+8+z49ri8h8em/UBUf8D", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "storage_read", - "get_public_data_witness", - "field_less_than", - "decompose_hint", - "lte_hint", - "store_in_execution_cache_oracle_wrapper", - "call_private_function_internal", - "load", - "store_in_execution_cache_oracle_wrapper", - "directive_integer_quotient", - "directive_invert", - "directive_to_radix" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "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", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "redeem_public", @@ -9055,14 +9326,6 @@ "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17814817983036354427": { "error_kind": "string", "string": "Function redeem_public can only be called internally" @@ -9073,11 +9336,8 @@ } } }, - "bytecode": "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", - "debug_symbols": "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", - "brillig_names": [ - "redeem_public" - ] + "bytecode": "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HwYtCAEfJwIiBAkACAEiAScDHwQBACIcAiIAIgYCJQAiHwImQD8AJgAlACItDh8SLQoLAyMAABHNDCoDGQYkAgAGAAATASMAABHfLQshBi0IARIAAAECAS0OExItCAEcAAABAgEtDhMcLQoLAyMAABIGDSIAA4BMAB8kAgAfAAASuSMAABIbLgiATAADIwAAEiYMKgMeHyQCAB8AABJxIwAAEjgtCxIDLQscBi0LGBIKKhIDHCQCABwAABJWJQAAQe4tCxoDCioDBhIkAgASAAASbCUAAEHuIwAAFX0tCxwfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABKkJQAAQgAtDh8cASIAA4BQAB8tCh8DIwAAEiYtCxIfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABLsJQAAQgAtDh8SASIAA4BQAB8tCh8DIwAAEgYtCxIcACIcAiIAKiIDJS0LJR8cCh8cACcCIgEALQgBHycCJQQFAAgBJQEnAx8EAQAiHwIlJwImBARDA6IAHIBOACYAIgAlBSiATQADABwtCgsGIwAAE1gNIgAGgE0AIiQCACIAABN+IwAAE20BIgADgFAABi0KBgMjAAARzQAqHAYiDiocIiUkAgAlAAATlSUAAEIAACIfAiYAKiYGJy0LJyUtCyEmDCoiHickAgAnAAATuSUAAEISLgIAJoADKACABAQAISUAAEEYLgiABQAnACInAigAKigiKS0OJSktDichASIABoBQACItCiIGIwAAE1gtCxIcDSIAA4BMAB8kAgAfAAAUDSUAAEISLgIAHIADKACABAQAESUAAEEYLgiABQAfACIfAiEAKiEDIi0OCyItDh8SASIAA4BQABwtChwDIwAAEMotCAEiAAABAgEtDgsiBSIABoBNACUHIgAlgE0AJwoqJwYmJAIAJgAAFHclAABCJC0KCxwjAAAUgA0iAByATQAmJAIAJgAAFO0jAAAUlS0LIhwtCyEiDSIABoBMACUkAgAlAAAUsiUAAEISLgIAIoADKACABAQAESUAAEEYLgiABQAlACIlAiYAKiYGJy0OHCctDiUhASIABoBQABwtChwGIwAAEDEAKiUcJw4qJScoJAIAKAAAFQQlAABCAAwqJx4oJAIAKAAAFR8jAAAVFi0K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FCctCyIoLQslKQwqISgqJAIAKgAAOFwjAAA4uAAiJwIrACorISwtCywqACImAiwAKiwhLS0LLSsAKiorLC4CACeAAygAgAQEAAUlAABBGC4IgAUAKgAiKgIrACorIS0tDiwtLQ4mBy0OKhQtDigiLQ4pJSMAADi4ASIAIYBQACYtCiYhIwAAGLotCwcmLQsUJy0LIigtCyUpDCohKCokAgAqAAA46yMAADlHACInAisAKishLC0LLCoAIiYCLAAqLCEtLQstKwAqKissLgIAJ4ADKACABAQABSUAAEEYLgiABQAqACIqAisAKishLS0OLC0tDiYHLQ4qFC0OKCItDiklIwAAOUcBIgAhgFAAJi0KJiEjAAAYBi0LByYtCxQnLQsiKC0LJSkMKiEoKiQCACoAADl6IwAAOdYAIicCKwAqKyEsLQssKgAiJgIsACosIS0tCy0rACoqKywuAgAngAMoAIAEBAAFJQAAQRguCIAFACoAIioCKwAqKyEtLQ4sLS0OJgctDioULQ4oIi0OKSUjAAA51gEiACGAUAAmLQomISMAABcHLQsSHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6GiUAAEIALQ4cEgEiAAOAUAAcLQocAyMAABXNLQsGHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6YiUAAEIALQ4cBgEiAAOAUAAcLQocAyMAABWtLQsiJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA6qiUAAEIALQ4lIgEiAAaAUAAlLQolBiMAAA8cLQshJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA68iUAAEIALQ4lIQEiAAaAUAAlLQolBiMAAA78LQscIgAiIgImAComBictCyckHAokIgAnAiYBAC0IASQnAicEBQAIAScBJwMkBAEAIiQCJycCKAQEQwOiACKATgAoACYAJwUogE0ABgAiLQoLISMAADteDSIAIYBNACYkAgAmAAA7hCMAADtzASIABoBQACEtCiEGIwAADr4AKiIhJg4qIiYnJAIAJwAAO5slAABCAAAiJAIoACooISktCyknLQslKAwqJh4pJAIAKQAAO78lAABCEi4CACiA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", + "debug_symbols": "tZ3Zji63rbbvZR37oDRQQ25lYyNwEicwYNiB4/zAjyD3vosvJb5aNj61urrXif0sdn2kBpYGaqj/fPnbD3/59z/+/OPPf//lX1/+9D//+fKXX3/86acf//Hnn3756/e//fjLz7f0P18u/U+v/cuf8ndfestf/lT1//e/w3VDrzeE776E64qTwuUkN2WlqLIKUllTSpdTm5TTlz9FAbVJEp3qpOKy4rLqslomtctJnPqknp3UWrkphD4pJif/a3JZcll2Wa6TJDiVSeVyEie3VrOTatZSCy061Uk9OMmgeF1O2WlqiSE5uSxGpzIpBSeXif5CayaixI3qpOqy6rLmslYm9ctJnPqghDQbqbWuFKJTmRRdlm99ST0slTvNKYLEqU+qyalO0vQNujUnzWXS9A2SQfm6nFwWXBZcFl2mJZnUm3KKTn1SzpPkcmqTtHRTAZVJ9XJymXpxqqA+qScnzaWWpOjbaIQ0G8mkNGtL4LsguZxmHYmW7qBZl6KpQi0IPNZo1pu0WUflmnVU4qyjEsVp1lFJyWnWUcnRadZRkctpln0pLisuqy6rLmsua7OOSo9Os47qNeuohstp1lGNs45qnPVR0+XksnzbzRdIm00tgyp5ktb0oDpJ05fTTe26yypnkDj1SfomD6qTNFWD7hRkTUHTVA2SSdll2WXiMnFZcZnWedZaaFqmg7JTm6R1ntX/mr5Hg+7n5AL1Qf2asq5v96A7H6Kp75oPaaAySVukQS7LLssuE5eJyzQfg8SpT9L2wKj5b5v/trusj9/eTew1ST1CupKmqlxKWrolgrJTnyTJqU5SPxikWpKSlvMgmdRc1lzWXdanLFyXU3bqk9RzjPRtHOS/Tf5b9ZcioD4JOQIh9UUJ6asgfU5L43Y2pzZJ37IaQGVQVB8f5LLgsuCy6LLoMk3pIHHqk7T/NRL/rfhvi8uK/7a6Pk1z1fpISJWWRtJWoF6g7NQn6figCqhO0pZ/kMuyy7LLxGXiMqTPqExC+ozapOa/bf7b7rI+f5uvqS8jzVpvGanSesv6HtUG6pPUT2sHtUnllrULdMualhD6IyP1zkHidOtrWUlbgUFTJuqdeE60FRg09Un0v+qYy36hPcQgl2m/Zc/lmSoRl2mZ2nP6lg1yWXW72goYNZdpK2DPaSswaMqKlimeK9dMcwku0x7WntNRwSCXpVlWJc2yKtll+pY1AfVJ4jLp87mSnTTnWqtFxzmDXKZvY9NaLciHkQyq2loMuvX1C9QnBZep59hz6uNGKTj5X7U+7BdaH0biMvUme64kpzr/qvUxyGWoDzzX3K7mw/6q9QFCfzmojOdaCE4y/6r1MchlaZYBeslBWgbaHjStj0EuQ33gOZk5b5qjHkFtUnWZ1kfX2m9aH4Om17UenaasX9HJZWF6MfpLo+iy6LLksuS/za4vu0z8OX9Tur8p3d+UXl1WXdZc1lzWXdaHLGE+OMhlyIeA6qTosuiy5DLkoyghH0YuE5eJyzQfEkBlUg1O4tQn6aR2UJvUXYvmCBSu4DS1BO0hBmWnqQUzyEGuJbmWNNMXsmvJriXP9AVxLeJaPJfBcxmqa/FconfuWpJBcznIZZo3UNTaGlQm6Xs0SN+ZpqR98qAySWvrLhxgcdT+ZaIGCa6kKIFYHAulhdJKaaW0UapdzkAdEU3MExNiEgNdQwqBSGm8iK43aWt2D6gULWVaHuiV78gDMBO7o77sdxhCsUdim4g55UCESwYWxxiIeLYBYaIrpkRsjjkSi6OVuqEq0+jMjd1RO5U7zKGIvA2sji0Sm6POPCf6s2LxHy0+UWcPGgG6EYa1+CRfxOIoidgcLWWG3bHi2QLsjq049kCsEwtK3TAEIqQN2B0jDHdgc0SpD6Q0U5opFUqF0hKJ1RG+PrA7Nmpo1NAp7a6hXpFYHK0uDIWoJuKlqE3UxOaYKE2UZkozpUIp3mNDvBdRnaviDYgRqCnTyFJqOgKZKESkTOsYk92JzREtjMbJEvrbu2FVRM1rfCJhDjoRaUhAPKuZ71dyhBMMLI5oCdIFFEcUycDmiPdNwxwJ3etAobRcRCFqNjXCkdCLDoTTpju9d/CpO6IcBjbHCBMF2BwtkYbQ0BVRbwObow5mgsYfbmyOOpyZSGmltFLaKG2UoroH1onoPCd2x5CIrgHd5kRqSK43ZMSVo6KlNwHxbFbE6zSwOOpk5f4tsDjidRrYJiKQOrE7WnoLENaqItrqgcUR4e2BmdgdUS25A6sjfEeDIxnB14HwHUM00AOLI7rFgXwWGdKRQMa8NYiWGSau96gC2B3xZhmi7x5YHS1lhnhWCzWhPRvYHfH6G6LUBzbHzgcskVqoGY3YQBjWgsp4TQcWx0hppDRRmijNlMJ3DOUiZkfLkCE1VGqolDZqaNSL1RFDONfANlEsmw1YHC2bhpRGSiOlidJEac6OguJTjxIdDQYNU2XrLDXqdE/wE7E54uXVUFDGpNcQs96BOsy9w7KK6Ls1MJQxKQ0aGcqYlQ6sUBaAeFYzX+CpA7sj/GEgNGguKtpqQ5SOIYoEhisaaA01ZYRig0ZmbhTHTClKR4M9GYFZSyQisxMpRVtiaLkwLI6oWJRDRSunoaPbHfRZjR3dWB0DpajYqj9ryIXGZzIitwMTpWgqDC3phs3RGoUOxLOaMoRoJ1KK6tbIz41YbdMiacjFwDoRU9CJlAZKA6WRUpR60/K1DlDnmve4ME3v6+iaWwLKQEFgdWJzREurs0axXs8wUoqewRBlNrA4oswG9pEGuUQc8aIPrI6eXrGuzrBR2vgsOmxgsKSLohUUEEOJgXwAvbTOVgVR1oF4nQwxXh9YHZHegZRWPosX3RDvcavAMhGR14l4tilaUQPhkwOLI7ovQ3hf64pwOY2kSESZDayOaBENOx+wPlbrOFkfC8TbPbA4wrkGVsdEaeKzeNENUWYasRHrnQZSioIyRAuusRqxHqerBizvDUQVauBGbCJmmChFN67z5BuhQSsg4w3oFehFYn3LQEqrF5R1KAPzRLlm23ejOGJsPxDPdmBzxNsyUFf8LijDMu/A4qivSNTp+j35wgNaJIJFWp0JS9GmeCKSroZtGjVQiN3R0mDInyX+LPFn+jJE3VYgmFFNbI5CqVBaKMXStKG+FxOLI/YDDBQiDGvmMbma2CaiH5pIaaA0VMcYiMUxXUQhumH0ThPVhE7X7647Eqsj1mUHiiNWZgdmIpW1RKSyTmW9TGyWtwSsjliCH0hpojRRmgNRHLHMPDATu6PVZgZWR6tNQ0qxm0An8YL5W9QdJoL528RMbI6WXsPqaOntQHG09BpSWigtlFZKK6V4nXRSLJjrDcTWk4F94L1mLo6ogIH4WVCEcw0Ux0SpNoNRJ9sFHeDE5giP0klxse00hsiFIXJh2GZtlqtPfyhYaZwojiEQi6PVRQZmYnO0ugBaURdFq+4KFGJ3hCsPrI49EsuogGK7YwaKY6A0UBopjZQmStFkolpijkSvwijZEV4ysDli0wwqC/O3gWiYBlIKB9fAR7H9Mhr4KLZhxhD7ZAZWR6RXYyB36wrX6EAhdke8bwOroyXSUJOjYYuCznKiOHZKu0uxf2YipYFSeImGbwr62ImZ2BzhJRokuZfJLqI+q3szCtYwBwql2LM0EBuoYBjONbA4NkobpZ3S7lL0xxPFEXkbmB1tp5UhNSRqSJRmasjUi65Oox1FLL36ZgnqQqMSN2Zid8QbO7BOLFckQpk6TLGkG4pjpDRSmihNlGZKUS0DuyP6bkN0XwOpoVID3vncgN3Rsgm0DKl7IqwZNdpRENaMGuIoCGtObI5wIw06FGzXGYiGfyClQqlQWigtlCLpA4XYHdFGGXZq6K4B65gTXUMLrrdZhrTerGPVIEmxjlVDMgWrlAPxBgxE5rXMmm2ZNKyOldJKaaO0UdoptaQrdku6oTii+xroGjBbnEhpooZEvZYhrWOsSEadZ90Vj42VAdgd0R1oBOPG5og3QMMWN0J6F9+98l0cUb4DhQi9VRGt0UBKU/Zn0QcMpF7hA6gA+xla2oGU1uTPViYSFWAPoAIMO6V4A/BsuCKRUvTHeNb6Y8NIafT0Yk1yIqV4pe1Z+JmhUCpeZmNvq6GX2djdCqyUWr3h2ZaJXiShJ6JL4+UFZXtbDdEB6iSoIiI7MFIavUiwUDkR2eyKeJ0GUorXX4NFN3ZHVOHA5oh3SOM71fbBGjZKUYX2LHrIga43Xf4AZsL2M9v6ahgpRb3ZsykQxR9AvQ2kFPVmz4oQuz+AehtIKerNnq1ML943ewD1Ztgp7V46+UpEL50cIpFS1Js9G71IcvLMI6Y7MFOavUgy6y1bNrMi3HMgpdWLBFPwicimegmm4BMpxdBdQ15VMMjROFe1gYAhmhUNY1XsuY0ahKqCgfdA7L9VZWLbqg0hLYq2sboCIVVXts21AylFo6AhmWr9vIYMakEbNVCTrtGOal3zQEg1vdhmFDXaUbHPKGpcoyKmO5FS2/QrQEg1vdY1a7Sj2lzaEAWlU/uKPbamwebSkNpc2jBQil3qGrao1o0jm9h/NKR4jwdSik3DGsy4UXcSa6yiYgKddNW+ogtNuj5/Y3NMlKpHTdTdvDoTrk0C0Ru8xgavFUorpZXS5k1ma96QYqFyokv7dRFdQ2dH1dlR2UTXno3UkChNlLIx72zMOxtzm90aFkoLpZXSSinz1pm3zrx1z1u7PG/NJrqGlrcGFMdIaaQ0UWp564qWN0NKhVKhFFvGdW56YyZ2x0pppbRR2ijtlGqDZxjUwSdWR+y+H+gaMCmeSGmihkS9cHCdKjccNEk6VW6IFU8sjoVSbI3XPQ0tWDaBlk1DShuljVIcMBhYJ2LL0MTiGALRDWNaPTET3URMidgcM01kGhaaEBouNMEcR+Y4Msex0kSj4UYTnYa7m0hXILoJbBKemIluGMutE90wotgT3TBWXifSsNCE0LDQRKHhQhOVhitNNBpuNNFpuLsJOwQzMBPdcA6J6IbRjU90w+jGJ7rhnGki03CmCaFhoYlCw4UmKg1bFeo7b0dgNPjSMDFPGlu5EUdQoiJ8UjegNGw7HmgnUwzVhMZW7rlVIBZHoVQoLZTa8STD7gifHNgc4ZMDaRgZGugmsDQ70U0Uy7FhJrphhOUnuuGSItENF+a4MMd2HmcgDQtNFBouNFFpuNJEo+FGE52Gu5vA1uWJmeiGMZSY6Ibt9M5AN4y9zBPdMBaNJ9JwpgmhYaGJQsOFJioNV5poNNxootNwp4nuhtuViG4YC8wT3XCLgeiGset5ohBpIrvhZrWpvXSzytI3q1nSO1D16k6o1lBZGtlrCA4k3abUMJyZKETVq3G5hjjBxOYYKY2UJkrhnoZwz4HFEe45UIg0DPccSBOVJipNwD0H0kSn4T5N9Ou6iJnYHT3H/fIcd+znmlgdUyAWx0wTmYYzTQgNC00UGi40UWm40kSj4UYTnYY7TXQ3bEOfgW4YC+IT3TBCERPdMI4iTRQiTeRMpAmhYaGJQsOFJioNV5poNNxootFwp4nuhm0UNNAN2yhooBuOVptF0SpLj1JHS3oDQm9XRGVp/LfjvO1AVNZA1auh4B7teKOhOHZKu0vTdREzsTnCPQdWR7jnQDeM+MNEmsg0kWkCOTYUmhAaLjRRaLjSBHOcmOPEHKdGE52Gu5tAKGKim0AoYqKbwPayiW4C6/4TM9ENYzfARBoWmhAaLjRRaLjSRKXhShONhhtNdBrubsLOAQ90E9hpNtFNSLyImeiGbUA00A1LpolMw0ITQsOFJgoNF5qoNFxpotGw1eY9KOvFKkvfrGJJL0Do1TerWGU1oEp1laAXO5INtDPZhjjmGxVRWQOrY6G0UFophXsawj0HCrE7wj0HumFERia6iRoi0U1gl8FEN2HHkQdmohvGFu6JNMwcV+YYax0TabjSRKXhShONhhtNdBrubgL75Sa6CRzgmugmcIRrYia6YYvkDHTDLdNEpmGhCaHhQhOFhgtNVBquNNFouNFEp+HuJrBaMtFN9HARM9EN24BooBvuKRLdsA2IBtKw0ITQsNWmvlndKkvfrG5JFyD03m/WvexvtTUYmnGjx2UeOriTrZqMzTMHN3JefovU6jLPzaigyYu8LPKyyOsir4scAxldJFKGPIIxeNO1IWVxxuYG50UeFnlY5Z2MSprcyKimyZWcw8KFLIstWWzJYgvD18mLrbqkoS622pKGtthayiEs5RCXcsBeeGemARsHUynGjRwXeVzkaZGnRZ4XOVqlAn+wkZFG+5Qb2S7LGFzJdZHXRd4WueXdGCOkybJwd7ZB0mSmwYZJk2nLBkqTacuGSpNpywZLkxdbeUnDUg5pKYe0lENaysHGTJOXNKAD0jBouGz8U/GOZIvZRWMhW9RusKZN1z+UGxl1OnmR50WeFzm6msmFjPd6spDRQE1GGuAnGfU1uTvjeLnzIg+LPCxy+OrkSsY7O7mQ8c5OZhpwfYozbGXjRsaYfnIlo74mFzKGEZMXnXb1i3FfdHbqxD6PyajTinfKrlup3Vifb/ABu3JlMPIyWchoZxr8wQYzDe0A9kw6V+eKvm6ykO1KmsGarybGjYx6mbzI0yJPizwv8rzIURctGDcy3p3JhQx/a8W4kdGGtG5cyGg/J1PerrDwIg+LPCxyvGuTZeFOtvoyzouevOiRRS6LnrLoRx/RUacWtunBWJ/vqF8L3EwuZLR7kxsZ7cPkTk7L80hnh08i/BJxX86F+MtktOF9cCGjH5+8yPsi7y7XgcjCixy+N1kW7mS0A4PToictevIiz4seWfTD9yY3MtqBwZbHCsa7o2ugIdgYQxc2b1S7WVc2b8Y1Pro5Wzkv3JUTWG1NxnVDkyu5LvK6yNsib4WMq30my8K0i3GCM9OAcYIzbWGXhjNtIU7iLAsvtvKiMy+2BDrFuJBLWBg6i3En43KjwQ3pRL1gLSdfqBes1eQL9YLFGmfVGVBHWK5xVp24De+uxmvhSkZdTG5klP9glD/6YrukLAfkF5e8ODcyynxyJ8dKTstvUc5BjDsZPjYZ+lE+6MedKxlXReGmP7uELONev4DgQg7dOC+sOiPKCvEFZ9UZkXdc9jIZZTtZyKjfyYVsV1dFYzyP/OKQg3Mj97Rwdy7w7cl8vujcJ4+7/EIhx7DwIk+LPC1yvNeT88KdLGnhRi5LGuBXg+tiqy622mKrycKLrb7Y6rSFY3g5on5rxPOo32p1140bOS/yvMhlkcN/BlteBi/yusgtL8ZWj4OFjPdlMuU4du5MPS3EhZlObBrJuMcuYNfIZB0fOldyXuSoO9xjF7An03mRF+hPxtXLE330ZKuvwULuYeHijBiDsyzM+sIla+PdxI6RjPvxAraMZNx3F7BnxHmVI/3why58l7G6MrkscmvfBlcy6m4wfAztRkScIafBKNsGRh1NXuR41zRsrqz5wu17EX238yLH+zW5k+GTg9FuXKYf/QJu6ovYE5Jx713EphDnRY53B/f5RewLsT4iYnXEeZGj3Rgcw8JChl+hP4qIFWTc+Rex/SNrEFS5kMsiR3+HO/0iLonJ2fSgPRzcFjnaw8GWl8HVOQbkvRl3Mt6X3I0bGe0D7vyLmPtPRr4mVzLa9sHoNyUYFzLekcmNjHqZ3Ml9kXc+j2tibHwVsRNzMtq6wciLoH6T5WXwIke9DEa9TEZe4A82BpgMOeoRV8o454U7GWOSwR3lJsbNGWctJodr4UKGj01e5Gl5HuFjjEWjLW8MxjxrsOWlGMMufMPGAGLPwMcGt0WOOkKM7l4Lgxx+Iih/xOvsgjjnRY70T5Y5f4mSwsKNbGke3Mk2Ph+8yMvyPObpgzEHx/w3YswwGeHSycUZV6DmYmxzW9S7bb6YvMjRp5TBlZwXOXyswAeKBP5WKhmxwcmdXIXcroVX+fJ8X9LJeX1c5vVxmcvbFXG5wH+q5WXwIseYGfG9aBelTu5ktMOT8Vv4jI0NBsPHJsvC0ANfsr4eMa6I3RKT8S4Mhi/VYFzJ6v/OnYw0D8ZYdPIqx/Ood+vTB6MfHIx3YbIsvPwWbe9k6sEW0IzYTsSBiYz4WLT+enJeuJExbp9cyegvECOK2PQ5GeU8eZG3Rd4WeV/k3eUJ8/Gst0wGuxBuMvqRyZ2Mvm8w2tvJddZdwhzcWciyyO062wLG2APllrAu4CwLd7KVv/pSwnEKK6tk/fXguMiRZsTKEvYxOK9y1Y9Yk132Nn8r18KVXOLCjYy+b/Iib8vzbUlnX/R32sWpismYo6HtStZ3471O1ndPXuRolyYXMsp/cidjTNhQtrjFxrmSkf7JjYy6mEy59d2I9SXruweHRW75Goy6gD8kq6PBq7yTUUeD8e5M9vh5ShbXNbZ49WAhI341uZD7Iu98HnN5LMxpmAF2qzHyiHcB2yydF7nlxRhtwuRFjjZ2MsoTfo59lc6LHG1Xt7ShvtAn2sVwGfG9myG3NGN8glif3Q2HlUUNjcSFCxl9Yh4MPagvxOEzYmXJYgKD8yLHuzNZyGWRIy+D8e4g5pawy2ByW+SWF5SPWF66cdWrq1EOiLHLFYwhRzkU21AixpVsW0qMMT7BHCqhfxfEr26GHpQDNiI4L3JcaD0Ylz5OXuSaF+embHZ7WpjyankpxrCFcqh2VXczhhzlgO2UghhXsv2UyZ7HusnkQsYaVhysehDXStUusozGlVwXufY1zkLuixx5McYmSUFcK6HfnxwWOfKCb1OkZnkRY8hRDpjjC+akCXN8wXw52ZaCOLiSbROwsW3DRlk1y8tg1YMYV8IpS+dFjkvHjRGHd17kyMtkzSPiXQkbBZwXOfKCOFjCXgFB/MousBN868FusBN8D8OusBPEfBLGCWnYwrrJ5EKGv1n9YifB5O7yjDGAc1Fu4BAWXuTxWhgnBS+wnQIZXMl2GHNwI+Po8eRFXpbncZp3sOWlg3EV/OTijEvWne/+QhJ+a9fATl7kqJfJmmbMm7J9UGQwzrFMFrIdRR5cyGWRl+V5bdMEMaWM8YCzpn98vwL5mtydEcMX+yZFtHwZh0UOf7PvUSBuPxlX207uZFxqO3n5LXwMsbIcLV8oH/vUyOROxtmzwfZhl8FC7ou8L8/jQKJx0vGz2BczMDYQxJEyxgaS7RnLSzdW/Yjn2NV4zo1sx9sHdzLWuSYv8ro8jyN+g+1eEEsP0myMm/GcCxkXECM2lceFCUgz1uWdFzned8SpMq4rmiyLHB9RsPRgXX7+1u+HuBl1MbmTUReDUReTVzmflystTP3Yojg5Uo99ugTtcxa7sWWwLNzJuDwZ44osfquIciG3RY7+BX30HZG4Fl7l6tuIp2WsC4zf2i0KkyvZbs0Z3Mioo8mLPC/PZ6azyKJfFrtl0WMXHFnacCpzciPbNSmDi5cP1uKHHrtLYXBc5OhTrBwQ83de5OZjxZjlUIXprOVaWMhLHdWljupSR7Utz7clnX3R32kXcf7JOFGKcVq2vj6bHP0jYpjZ+vrBeZHjgyOIZ2b09bgOS7mQyyLH+z7YbmQa3Mh4LzCGzPapFGuj7GMpiE9mxO0nh0WOdhgxxmz9PuYL2fr9wWmR49MpkwtZ/WoyriWzPhp3LQjG5xlr8YLYYLZPpkxe5HhfrA+yC/7si0F2w9/kRW43/A5uZFz7NhgX5GEcIrjHVhBjFPTvIvYM3vHJixxjS8QV7YY/Qf8uOPLgvMjx7g9GXiZn52BXBgdjPG+MfmTyKte6QwzwHnlCjxh3MvI1uZFlkcsiL4u8LHLUC2IdgiMKghiaRLvuGWnAxQeCWJng5gPnRS55YaQTZYj5u/Mir2nhSsbYY7CV52Dx9OBMpXMjm28MZvoTruWevMjT8nyqZOQFc2rB3rnJuDZ/cF2ewWcBEMcTHC2YjA8CTK7OOFLg3MhhkYfleZ0DTkabiZieWL88uZLxaSO95UC5k+HPg+HPgzFXGgy/RSxLsM9fEOcR7H+bjHZjMMY8k5dncJPmZYw7cydXMm42nNzIuBpy8iJvy/O4jNm4WHkW40YOi9zKcDDqEX6O9XFBnFBwx5AznoHvYU3ceZFrPyKI0dkdgIIYnV0CKIiJ2S2Ao0yqpc04LPIYFi7kdJFRv4iJ2QV/zovcPlpljDk+4l2CWPfktsjxEYvJzT7yc6O6gCF2pE0sjjq/n1gdI6WRz+LjS4aWBWQHoe/J9tWtwY2MJgKhM0H3N7ktckyBB+v0xLwYkW9DdIoTu6O69kBthScuUj6L1wwhLRnfDzNGF4jwlt3zNxlN7WRNN8JegnOCzoscTR7CYWLd4WSZfK8KpYUbOcSFkbYK1kyVgcVRG7yJzRHf6hrYHYVS4bP4ApkhWj1E7op9DgWRu4JouCBqVi7Lghh3+/BZsCsAB2oGJlZHbWEmNsdEaeKz2iMNRFASKbIY+MDiiAjyQCQZWcEdgBjPlrFerYhjehO1aBHZKzin57zI0Zsj4mf3AI6f2oYCw+aILS4DuyM2RgyktPDZwtRV6q201lzDuHnAUIjd0c7hG6I4UYi20xweZRvNBy5SVKT9EF4yeZEXVJU9bye5gXZ2HWgngg2Lox1YN6wTMZGd6M/alzUHZqJbs3sEDLFNPhg2R2wsH1gctT0ahZErtdkJe0NKe/RMI2Y9GDFr5+KFYcfoBnryxmUCht2RNSGsCcmLlM9KIlJvoTUsMsT//ve7L/NbvX/+7dcfftBP9S4f7/2f/3z55/e//vDzb1/+9PO/f/rpuy//7/uf/o2H/vXP73/G/3/7/tf7r3fx/PDz3+7/3wr//uNPPyj99zv++nr9U0Tox881Ml1dRbjaV0rCRskVXccdxFtUyFcq4kbFHQAuU4deOuNKavxKR3qt417c0kA3dOhXjfIrHdusaKthybjjfy+zIp+QlfKtsyLNa6W9rpX2WkWtbaq4BygvE9E3GbnbrTAzcq8PfTQj97TgZUZ2bh6j50Q3CZXXbr5z0r68LP1uB15mZu+lOoycVdtfKtlmB8d6ZnZSfJ2dz3DU8Bmeel47Kb/MzrYlw5a60ZLdATBXIuHr3GzctWDLF3Rot8F0tK9b1LhLiMxCjYuGO0Vfa9g4fMWGUnvt7gkhddwN0lc6Nr6aPCP32oJruKOwX2vYOGrEDfuWkXsp4bWO/FoHVlig4o4OPNOgw0KrkCDP8oHL9SwfaamRP+iouzqNs5PV+fpDHcW7lnva8kwHLrIbPh7bSx3p2nlXdOcqjzT0PBuwLs/S8NWIobyu17Sp14wthObidxyT7+p7inNpMuRhtSb3UF06faTjM7KCD5qNTjK3Z29KDd501c37mvq31aEfhp95KbU901FrYt/2+q3P8aNvyk7D2Zuy03D6pmT5sHtti7Oz4enxdXFuO1fE+awtL2sn/7vONW9GpKWmmY7bu9jH34P1r3XsXPTK3iFcZRkK1v5wsNHTq8GGbLr5VIMPje+1uJfpkI17RKGT3izp1fBLtkPSenFIWuNrJdvclOy5aa9LVXaOWvocB+Y1GX/QsRuQXqVNN0vXHed9mZlNa6ofR/bBz83xoRLPjnJ/pqS35Ep6e61kXyZ1KZPXFVy2Fdynp6W2uGsq79DRik8W2uIk79PRZw+j3/p8rSPvxrZ5loceu3mkIwTv6fQMLnW09A4dnFDewdOXOrYvTeVQv1355UtT2rfVoWcUvce9Fv8IX5dp3bSrMeXLx+pLj5l+l469Dk/HHeWND3V0f+nS8uKm95RHTcHLo8TX5ZE/oTzyJ5RH/sbl0X1iHPoykvl9eRzrqPGpDnEdX82uz3XomUUfQixjw9/raGE7Qo0+c6g1LyWS0ju0tIta2hL2+IOWzQggsE29Z/2v2/atjuJDMw18P9LRPDTW+qZl39bMEn5prz2k1U+pmfopNdM/oWb6J9RM/2jN7AeIHlq/m6HXA8S+87EefGbYv3rv6jtWPBg7vVc/8quh+1ZHkYurJr2+0tE3g7LOlYZrmShr8/qVivpNVehJAx+2L7XyBx17H62sFXmpI1zXN1YSca2Dvf25tI2S3bQfH/i1OWao8lBJvzx40EN4pqTh+nJ761IqD8ukNJ8h3pX9TIke9PMJxMbV9koSZxCpP01J9lBsyk/LJDEiokeXXisJ1y4W4aGZUpeQW2jnOrDNxNvma10weE9SdLOED2pKvOpTNZljo7IGqd+rJrLDuZdUnqoR9n2lxKcOIx4Z1SNlm7TUb6wktMCu5+b0WE334FOL6XFqllW3m/tTNWlJTQ6vU7PtUKsveeEg2cvFu7gdPc7Gki+jXOe/D97GhWWt6V0allw80xB9gBNDfKbB3724OKq8Y0tIbYxttocDpFY5yOoxPNLRpS8rK+mJjnwFH1Xkq4RnOpo30XoQ7JGO4IuQeljqeunfKX94uBeSfFsdp2PGkOonjPdS+8ZKjgeN+fqEQeNWyemgcafkeNC4LZPTQeNOyfGgcavkdNC4VXI6aNwrORw07hewzgaNOx3vGDRu1ZwPGvdqjgeNb6g5HTTu1RwPGrd1fTre20XmP0XJOwaNb6g5HTTu1RwPGvdqPmPQmCOV6Cnfl53qbjnpZNC4+/3ZoHGr4WjQuNNwNmjcavjooDEn7tnI65az9wySMqP7eoL4UX3GxBWTZzWKo9xjRT18WEN/5hPiXlXSMw2+0nqvPn1UQ8sPc+Ge3V579hsNRWRDse50fW97s6rJ4bka5ihJfq2mbjoXiT6hkNjLyzFA7R8fR+yzg9sRZxVf8rhUKj1FlwQfqvk6Nc/VBNZRfjpO0yNCiYOjlB+rCW1Rcz2dGOTiE4NcH04MLl/EbeGSp0rK9Lt7eethdlr03TUtXfkzstMfKgnZU/LVRpD3KandlfT4WIlQSXpasL7n4Mb4uHa8imN76ifcdb2t4u14QJbAS7leBwV7+9j4bvf7s/HdVsPR+G6n4Wx8t9Xw0fGdRDbOEuPLuojXJoB1frxi18Cfna+4Nkuvxwcsru2SwNEJi2tbr4dHLK6+G00cnbHYqjg7ZLHNyukpi+0Bq9NjFnslh+cstkoOD1rE3QGrs/3jWxVnG8i3Kk53kGOg8krJ6QmFfZkenrbYKzk8brFT8im5OT1wsX1rDk9LxN0RqU9RcnrmYq/k8NBF3J1kOXxrdioO35rteZrTt2Z3zOnUz7ZlenjyYt/xHh69iLsDV6dnL+JuDeszDl98PRaRlwty+CbV6xiNn1uNeVk6+n1C4m4RKxYPK+jV7hslu7b18NRD3B3QOT72EHej9uNzD29pOTv48IaWw5MPb5XL2dGHmDdee3r2Ya/k8PDDG0rOTj/EvHPbw+MPWyWn5x/eUHJ2AGL/Ah2eXoi77amfouT0DETcHcc63fT/hpKzXf9vKDnb9r8vk8NzEHF7DOq4TOpnlEn91mVyeBbiXEmNj5UcnYbYKjk9DhHLfvB4uOv+DTWn2+5jKdudJUf77vdKDjfeb5Wc7bx/o37ODkXE3Zmod9TPXs1x/dT4CfWzVXJaPzslh/WzH0b6GCWWpU35Q99TN34i4lu7pMRNB1brZwwj63bjz8Vbf67r9UU5cbfElSQJN9ykll9r2RVL8UXIOzC0GaK37YIuX6B7uP76BdorYbRPUnysxDtC2TW1WyXC3V3Sn6akXIVzn/xYibiStV9/nxLfkxLXwzjvU1J9p2hcF1Tfq4ShmGW36TuVMDu1P01J811DseXwWIl7bBN5qsS3E+snsR4q6YFzwfxciZdJl6fvTue705++OykWXrjQHhZswjeTTUmOD1/AJIF71PJm/Lftv2qi2y9v8e/b2HRtG6XDqyzS7sjU8V0Wb2SIrey9RLzJ0DZy59vT4pXW91jekZLe2JNuUrJVcpcYN+IuOyv/mJ2Nkla4VF7W3Yy/O3uZru3h67MDnPvsBG8g7xW7jbttT28VX9gtpe2UbHyWNRyuJWYQ4+88drsYcXlY6MbXY4u9EvGIzr1qnh8qKf4C6scqNkp2i16XN/c3LnHV9g4dwVv7GtbbDX+vYxdZilxtiiU+TIdUT8eyk+99OjwWWrfp2FaMB7z1yyEfd5Gy6cz3SurFWHV43YWm3QmlUxfZ6jh0kSgfd5F9Os5cZK/jM1zEA/f3IsL1cRepMTx1kUQXqU/bs+qx/1z7JiUpftzPtjoO/Wy35nXqZ/t0nPnZXscn+FlNdJEun+BnvTxU0rL7WduM5tN2Y+Whi+yPfp25yPaav0MX2afjzEX2Oj7BRTj11O8pfdxF2mbV4I2U+MbMO/bytCnqvuc797TJzu7OwWM/6x/3s224/9TP+if4Wf/Wfubbzu+KKR/3s57qUyVJfPSdH47P5HIlsk7S/qBEtvvNlwPPd4Auv4yuJ9nensqTgW0JAv8+qr1XIj4Q0I8WPVNSeay21Y2KN7by+yJzWQ9f/6FM9vXjt6XfMZNNJW9Xp87rp8gn1M9WyWn97DP0OYUbuIs15IfNvUSfnEjcKtl+bYAt5LpB6Q9z+voJN7in+uEr3FP9hDvcU/3wJe57FUcbjPdZ4dGGuFbu+5Sc3k5d2zdWcnzH9VbJ4X7L1La+enQf/E7F4YXw7fQbMrsb4dvGzU4vut6W6eF+yzeCi74WW2p8vbkw7S4QTDEEvzEv3g3ky4B4263F1sLLOlp43Z5tlTQuNbRdoHOvJCwXALanSrhy0uouJduSvXwR5y7Z6+XKctpdRphCYlr040mvtGz3siZ+3EZyenkxTOq7iwbasjuRGq5zDdk78ZzyMw2+YiLX9UiD+PqC5Ge54A6Icr08d72tDbnyMiR6eYo97xaycinFA63r2ev4Dh3V35W8NiDv09E4Dw+bdGxa1IPTc9vfH52e22s4OT231XB0em6v4eT03L4uGmeIbTn78q76bNH9qi3z//fpqNTRn6ajMDRT0zMd3fdz5nXv4u91hA/6Zviwb4YP+2b4sG+Gb+ub3ScJcq23bryrPtnW9LU+3qHjDoCwC8n9oY7IvMSX/r3tAzJPHd/9wcvTJXl3aicvk7dU66uRQY7bz7ZwrS2v16yV9B4ljJLnpVDfp0SWHu0KGyWnRdLK6yLZ6vCNJreOlwPinLa30IoHT251sTysHC5Q5a/2fb6nXIsPN+6Zy6Zytg3AyYU3ew0nF94ca+jPmtKTC2/2Gk4uvDnV8PrCmzdycXDhzX6ocVSb14dr8/pwbV4frs3rw7V5fbg2r4/W5n5C4kEeKeWZBl/WlxYfavA0tP5Mg9emrDfzvmdy6Bu5szzU4NfO5PpwisvYUHs2Qc2ZqzzttYZtyCAvW9fWENX7Ag/Z434f0SK+q0i5P02L39J7awkvt/pn2W71z4XbUGUZYrwr1NU8RHyHCWUTG9rFMv10So9Pw6Huq73KhyOq9WnAPF08qBbC06j72bUeeXeC6TAsu9Vxet3CG0oKT5s2eajk8AaKvZLDm07eUHJ208kb2Tm76STv3OTwS5k7FYefytypOP5WZv3Wznp408m+QI4aor2Ko4botFp2DdF+bddHYhJqeri2G/yInIT+dItF8Lq99T1Vgtt25ipzeKokU0nZlMl+E81y5/gypnnXRpzoJ/XqegX0OzfzdOpoH9cRHqYj+vtf16sWH29MWnZ7vS8dHuy9Y/dP85K8bp9vCDz0j+sT/OP6BP+4PsE/rk/wj+sT/OP6BP+4Pu4fKX7cP7Y6Dv3jjX3JR/5xrCM8TMehfxzvsd74xz4dZ/7xho4j/9ifSzjzj62OQ/9443zEkX8c6wgP03HoH8dnPTb+sU/HmX+8oePIP/ZHm878Y6vj0D/eOGJ15B/HOsLDdBz6x/FxsY1/7NNx5h9v6Djxj/1VOZk3BKxbGN933072b+LcSupGSfqMlKRPSMn+witODcN6ivb3X/xOu29W+F6bvt7j/QcVm/6Bt2J8daDwXSp82bhe5aGKRhX1mQpeSlPXewH+cAnZ9uOWly+i35ye3Vd3/3L53NEHtJxdnSLpU65O2V6jeRSB2Ks4ikCcXua5U7G9RfcsI1sVZxk5vMt3o2J/jffRx022Go4+bnKqoT/ScPZxk62Go4+bHGrYfNxkn4uTj5vE9NHa3Go4qs1TDf2RhrPa3Go4qs1DDZva3OfipDbf+BDq6adq3qFm96mat9ScfapGStrFKY8+VSO7I0LH30neZuf4UzVvlMrpp2rek5rnak4/VbP/TvLxp2reUHP6qZr9h88PP1Wz/fD56adq9koOP1WzVXL6qZrz7PSHSk4/VbNXcvipmjeUnH2qZl+wh5+qeaN2zj5Vs1dy9qmamj8+wXxDx9H8cne75nE6ro+no+RPmObujukcTnN3W0IOp7lbFWfT3K2Ks2nuTsXZNFfqJ8xy31ByNsl9Q8nhHLfLJ8xxd/duHC6yxw+vsccPL7FfH83FVsPZlqXrUS7+9/7n93/98dc///TLX7//7cdffv7X/bv/qqpff/z+Lz/9MP7593///Nflr7/9/3/Ov/zl1x9/+unHf/z5n7/+8tcf/vbvX39QTfq3L9f4z/+kO0j5XYot/e93X9L973AP0O7hzv2vYH+W6/6ziAqCCvSaupTuJ/6rCfw/" }, { "name": "refund_private", @@ -9159,7 +9419,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -9215,7 +9475,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -9244,7 +9504,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -9438,7 +9698,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -9679,352 +9939,451 @@ }, { "name": "include_by_timestamp", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::include_by_timestamp::IncludeByTimestamp", - "fields": [ - { - "name": "_opt", - "type": { - "kind": "struct", - "path": "std::option::Option", - "fields": [ - { - "name": "_is_some", - "type": { - "kind": "boolean" - } - }, - { - "name": "_value", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - } - } - ] - } - } - ] + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 } }, { "name": "note_hash_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifier_read_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::read_request::ReadRequest", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", - "fields": [ - { - "name": "request", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { - "name": "pk_m", + "name": "request", "type": { "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { - "name": "x", + "name": "pk_m", "type": { - "kind": "field" + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint", + "fields": [ + { + "name": "x", + "type": { + "kind": "field" + } + }, + { + "name": "y", + "type": { + "kind": "field" + } + }, + { + "name": "is_infinite", + "type": { + "kind": "boolean" + } + } + ] } }, { - "name": "y", + "name": "sk_app", "type": { "kind": "field" } - }, - { - "name": "is_infinite", - "type": { - "kind": "boolean" - } } ] } }, { - "name": "sk_app", + "name": "sk_app_generator", "type": { "kind": "field" } } ] } - }, - { - "name": "sk_app_generator", - "type": { - "kind": "field" - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "note_hashes", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "struct", + "path": "aztec::protocol_types::abis::note_hash::NoteHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "nullifiers", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", - "fields": [ - { - "name": "value", - "type": { - "kind": "field" - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "note_hash", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_call_requests", "type": { - "kind": "array", - "length": 5, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", - "fields": [ - { - "name": "call_context", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 5, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { - "name": "msg_sender", + "name": "call_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { - "name": "inner", + "name": "msg_sender", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "function_selector", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", + "fields": [ + { + "name": "inner", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" } } ] } }, { - "name": "contract_address", + "name": "args_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ - { - "name": "inner", - "type": { - "kind": "field" - } - } - ] + "kind": "field" } }, { - "name": "function_selector", + "name": "returns_hash", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", - "fields": [ - { - "name": "inner", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] + "kind": "field" + } + }, + { + "name": "start_side_effect_counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 } }, { - "name": "is_static_call", + "name": "end_side_effect_counter", "type": { - "kind": "boolean" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "args_hash", - "type": { - "kind": "field" - } - }, - { - "name": "returns_hash", - "type": { - "kind": "field" - } - }, - { - "name": "start_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "end_side_effect_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "public_call_requests", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "msg_sender", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { - "name": "inner", + "name": "msg_sender", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] } - } - ] - } - }, - { - "name": "contract_address", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", - "fields": [ + }, { - "name": "inner", + "name": "contract_address", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "is_static_call", + "type": { + "kind": "boolean" + } + }, + { + "name": "calldata_hash", "type": { "kind": "field" } @@ -10033,30 +10392,26 @@ } }, { - "name": "is_static_call", - "type": { - "kind": "boolean" - } - }, - { - "name": "calldata_hash", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -10113,26 +10468,41 @@ { "name": "l2_to_l1_msgs", "type": { - "kind": "array", - "length": 2, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 2, "type": { "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "recipient", + "name": "inner", "type": { "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { - "name": "inner", + "name": "recipient", + "type": { + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress", + "fields": [ + { + "name": "inner", + "type": { + "kind": "field" + } + } + ] + } + }, + { + "name": "content", "type": { "kind": "field" } @@ -10141,105 +10511,141 @@ } }, { - "name": "content", + "name": "counter", "type": { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "private_logs", "type": { - "kind": "array", - "length": 16, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", - "fields": [ - { - "name": "log", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 16, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log", + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } - } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + }, + { + "name": "counter", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "array", - "length": 1, - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", - "fields": [ - { - "name": "inner", + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", + "fields": [ + { + "name": "array", + "type": { + "kind": "array", + "length": 1, "type": { "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", + "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash", + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { - "name": "length", + "name": "counter", "type": { "kind": "integer", "sign": "unsigned", @@ -10248,17 +10654,17 @@ } ] } - }, - { - "name": "counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } } - ] - } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ] } }, { @@ -10281,7 +10687,7 @@ "name": "historical_header", "type": { "kind": "struct", - "path": "aztec::protocol_types::block_header::BlockHeader", + "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", @@ -10337,7 +10743,7 @@ "name": "state", "type": { "kind": "struct", - "path": "aztec::protocol_types::state_reference::StateReference", + "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", @@ -10366,7 +10772,7 @@ "name": "partial", "type": { "kind": "struct", - "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", @@ -10560,7 +10966,7 @@ "name": "tx_context", "type": { "kind": "struct", - "path": "aztec::protocol_types::transaction::tx_context::TxContext", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -10699,6 +11105,18 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, + "1004672304334401604": { + "error_kind": "fmtstring", + "length": 48, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "1186437190978851533": { "error_kind": "string", "string": "Non-zero hint for zero hash" @@ -10707,41 +11125,20 @@ "error_kind": "string", "string": "Hint values do not match hash" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "2920182694213909827": { "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -10750,6 +11147,10 @@ } ] }, + "4456244908619624852": { + "error_kind": "string", + "string": "Preimage mismatch" + }, "5019202896831570965": { "error_kind": "string", "string": "attempt to add with overflow" @@ -10758,37 +11159,23 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "6336853191198150230": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, "6485997221020871071": { "error_kind": "string", "string": "call to assert_max_bit_size" }, + "7136043998373234005": { + "error_kind": "string", + "string": "Field failed to decompose into specified 40 limbs" + }, "7233212735005103307": { "error_kind": "string", "string": "attempt to multiply with overflow" }, + "7542496824365424242": { + "error_kind": "fmtstring", + "length": 20, + "item_types": [] + }, "7764445047318889914": { "error_kind": "string", "string": "Public data tree index doesn't match witness" @@ -10801,50 +11188,79 @@ "error_kind": "string", "string": "Proving public value inclusion failed" }, - "11091894166229312484": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] - }, - "11418088424205762236": { + "10676044680617262041": { "error_kind": "fmtstring", "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ] }, - "12822839658937144934": { + "11732781666457836689": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "length": 77, + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -10860,17 +11276,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -10879,24 +11287,14 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" }, "18313900523101689315": { "error_kind": "string", @@ -10904,26 +11302,9 @@ } } }, - "bytecode": "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", - "debug_symbols": "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bUe2HXnnYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg23nYNs52HYOtp2Dbedg2znYdg62nYNt52DbOdh2Dradg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYdw72nYN952DfOdh3Dvadg33nYN852HcO9p2Dfedg3znYRw7aNaBu4A2yQTfYhrahLxg5OKFs2JFlR5YdWXbkkYNWBtiGtqEvGDk4oWygDXUDb5ANO7LuyLoj645sO7LtyLYj245sO7LtyLYj245sO7LtyG1Hbjty25Hbjtx25LYjtx257chtR247ct+R+47cd+S+I/cdue/IfUfuO3LfkfuKXK7rCipBFFSDOEiCNMiCWlBolNAooVFCo4RGCY2RkyZOGmRBQ6M59U0jMReVIAqqQRwkQRpkQaFBoVFDo4ZGDY0aGjU0amjU0KihUUOjhgaHBocGhwaHBocGhwaHBocGhwaHhoSGhIaEhoSGhIaEhoSGhIaEhoSGhoaGhoaGhoaGhoaGhoaGhoaGhoaFhoWGhYaFhoWGhYaFhoWGhYaFRguNFhotNFpotNBoodFCo4VGC40WGj00emj00Oih0UOjh0YPjR4aPTT61ijXFVSCKKgGcZAEaZAFtaDQKKFRQqOERgmNEholNEpolNCIPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5yXyvESel8jzEnleIs9L5HmJPC+R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R5xR5TpHnFHlOkecUeU6R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", - "brillig_names": [ - "discover_new_messages", - "store_in_execution_cache_oracle_wrapper", - "notify_enqueued_public_function_call_wrapper", - "get_note_internal", - "storage_read", - "get_public_data_witness", - "field_less_than", - "decompose_hint", - "lte_hint", - "call_private_function_internal", - "load", - "store_in_execution_cache_oracle_wrapper", - "directive_invert", - "directive_to_radix", - "directive_integer_quotient" - ], - "verification_key": "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\nPa5YgJ+q7saoanj0s7xh8Z1ucGk1m79H5/kH" + "bytecode": "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", + "debug_symbols": "TJ3JjjTNjlzf5a61SB9Ip+tVtBA0NhpodAMaVg29uypoTpptbh3771d+PAYyIyO9Iv/9H//9f/zX//tP//mf//V//tv//sd//E///o//+r/++V/+5Z//6T//y7/9t//yf/753/7177/++z9+3/+M/Y//uKaN//cf/jG+vP/+d/yHf+yJHws/Nn4Yfjh+HPwI/Lj5w374gVEMoxhGMYxiGMUwimEUwyiGURyjOEZxjOIYxTGKYxTHKI5RHKM4RjkY5WCUg1EORjkY5WCUg1EORjkY5WCUwCiBUQKjBEYJjBIYJTBKYJTAKIFRLka5GOVilItRLka5GOVilItRLka5GGX8fu/neD/n+7nez/1+2vvp7+d5P+P9fOONN95444033njjjTfeeOONN954442/8ez7efFz/t7P8X7O93O9n/v9tPfT38/zfr7x5htv/Y3n38/xfs73c72f+/2099Pfz7/x7vfz2971wX2wfwWjYBasgm+rzwdW4AWn4Bs5PrgP8tRP+Eb+9k6e/gmr4G/kuT+wAi84BVFwH3zlABgFs2AV1MheI3uN7DXyVx7z2z1fgSR8JQIYBbNgFewCK/CCU1Ajnxo5auSokaNGjho5auSokaNGjho5auSokW+NfGvkWyPfGvnWyLdG/spqfkfnKyxAFFzA/KoLMApmwSrYBVbgBacgCmrkUSOPGnnUyKNGHjXyqJFHjTxq5FEjjxp51sizRp418qyRZ408a+RZI88aedbIs0ZeNfKqkVeNvGrkVSOvGnnVyKtGXjXyqpF3jbxr5F0j7xp518i7Rt418q6Rd428a2Srka1GthrZamSrka1GthrZamSrka1G9hrZa+SvBtf4YBXsAivwglMQBffBV4OAUVAjnxr51MinRv5qcO0PTkEUfCP/db/51SBgFMyCVbALrMALTkEU1Mi3Rr418q2R7+tI8+4CK/CCUxAFr9et369gFMyCVbALrMAL/kbe84MouA++GgSMglmwCnaBFXhBjTxq5FEjzxp51shfDe71wSrYBVbgBacgCu6DrwYBo6BGXjXyqpFXjfzVoP0+OAVRcB98NQgYBbNgFewCK6iRd428a+RdI1uNbDWy1chWI1uNbDWy1chWI1uNbDWy18heI3uN7DWy18heI3uN7DWy18heI58a+dTIp0Y+NfKpkU+NfGrkUyOfGvnUyFEjR40c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Xeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9c51iXlauWsc9AtyjoHjabZtJp2kzV5UztOO047oh3RjmhHtCPaEe2IdkQ7oh3RjtuO247bjtuO247bjtuO247bjlsOLFwCjabZtJp2kzV502mKpnaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsdlg7rB3WDmuHtcPaYe2wdlg7rB3eDm+Ht8Pb4e3wdng7us531/nuOt9d57vrPBdA+UhaTbvJmrzpNEXTLfrq/NFoake0I9oR7Yh2RDuiHdGO247bjtuO247bjtuO247bjtuOW45cHPVoNM2m1bSbrMmbTlM0tWO0Y7RjtGO0Y7RjtGO0Y7RjtGO0Y7ZjtmO2Y7ZjtmO2Y7ZjtmO2Y7ZjtWO1Y7VjtWO1Y7VjtWO1Y7VjtWO3Y7djt2O3Y7djt2O3Y7djt2O3w9ph7bB2WDusHdYOa4e1w9ph7fB2eDu8Hd4Ob4e3w9vh7fB2eDtOO047us6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3rPBdgOf4CajTNptW0m6zJm05TNN2i0Y7RjtGO0Y7RjtGO0Y7RjtGO0Y7ZjtmO2Y7ZjtmO2Y6vzs8v6TRF0y366vzRaJpNq2k3WVM7vjo/ue+/On90i746fzSaZtNq2k3W5E3t2O3Y7bB2fHV+VtJsWk27yZq86TRF0y366vxRO7wd3g5vh7fD2+Ht8HZ4O047TjtOO047TjtOO047TjtOO047oh1fnZ/8076vzh+tpj9HzCRr8qY/R2CUaLpFX52HJY2m2bSadpM1edNpiqb7KBd5PRpNs2k1fQ783aI1edPnuEnRdIu+On80mmbTatpN1uRN7RjtGO2Y7fjq/P6SZtNq2k3W5E2nKZpu0Vfnj9qx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdth7bB2WDusHdYOa4e1w9ph7bB2eDu8Hd4Ob4e3w9vh7fB2eDu8Hacdpx2nHacdpx2nHacdpx2nHacd0Y5oR7Qj2hHtiHZEO6Id0Y5ox23Hbcdtx23Hbcdtx23Hbcdtxy1HLiR7NJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdrx1fn9OmYuLns0mmbTatpN1uRNpyma2rHasdqx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdth7bB2WDusHdYOa4e1w9ph7bB2eDu8Hd4Ob4e3w9vh7fB2eDu8Hacdpx2nHacdpx2nHacdpx2nHacd0Y5oR7Qj2hHtiHZEO6Id0Y5ox23Hbcdtx23Hbcdtx23Hbcdtxy1HLlZ7NJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdrRdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/XeS6Bu5Z0mqLpFmWdg0bTbFpNu8ma2nHbcdtxn2PmerjrSaNpNq2m3WRN3nSaoukWjXaMdox2jHaMdox2jHaMdox2jHbMdsx2zHbMdsx2zHbMdsx2zHbMdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux27HZYO6wd1g5rh7XD2mHtsHZYO/LhT7/fh/kAqIeDOD9ciYu4iUZ04iEG8Tbmg6IeDiJth7ZD26Ht0HZoO7Qd2oK2oC1oC9qCtqAtaAvagrag7dJ2abu0XdoubZe2S9ul7dJ224bnUz0cxElcxE00ohMPMYi0DdoGbYO2QdugbdA2aBu0DdoGbZO2SdukbdI2aZu0TdombZO2SduibdG2aFu0LdoWbYu2RduibdG2adu0bdo2bZu2TdumbdO2adu0GW1Gm9FmtBltRpvRZrQZbUab0+a0sZcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yUIv8cQg3kb0EuAgTuIibqIRnUjbom3RtmlDLzmJk7iIm2hEJx5iEG8jegmQNqPNaDPajDajzWgz2ow2p81pc9qcNqfNaXPanDanzWk7tB3aDm2HtkPboe3Qdmg7tB3agragLWgL2oK2oC1oC9qCtqDt0nZpu7Rd2i5tl7ZL26Xt0nbbtn8/4iBO4iJuohGdeIhBpG3QNmgbtA3aBm2Dtuwl39NnZ646LAziZxvfUxhz4WHhIE7iIm6iEZ14iEGkbdG2aFu0LdoWbYu2RduibdG2aNu0bdo2bZu2TdumbdO2adu0bdqMNqPNaDPajDajzWgz2ow2o81pc9qcNqfNaXPanDanzWlz2g5th7ZD26Ht0HZoO7Qd2g5th7agLWgL2oK2oC1oC9qCtqAtaLu0XdoubZe2S9ul7dJ2abu03bblQsbCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26CNvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucveSwlxz2ksNecthLDnvJYS857CWHveSwlxz2ksNecthLDnrJSVzETTSiEw8xiLcRvQQ4iLRN2iZtk7bsJXMkHmIQb2P2koeDOImLuIlGpG3RtmhbtG3aNm2btk3bpm3Tlr1k/hIPMYi3MXvJw0GcxEXcRCPSZrQZbUab0+a0OW1Om9PmtDltTpvT5rQd2g5th7ZD26Ht0HZoO7Qd2g5tQVvQFrQFbUFb0Ba0BW1BW9B2abu0XdoubZe2S9ul7dJ2abtty0WfhYM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07ZpYy8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSi14yE43oxEMM4m1ELwEO4iQuIm2LtkXbom3RtmjbtG3aNm2btk3bpm3TtmnbtG3ajDajzWgz2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1oC9qCtqANvcQTnXiIaYvE24heAhzESVzETTSiEw+Rtlu29fv9iIM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07Zp27Rt2jZtmzajzWgz2ow2o81oM9qMNqPNaHPanDanzWlz2pw2p81pc9qctkPboe3Qdmg7tB3aDm2HtkPboS1oC9qCtqAtaAvagragLWgL2i5tl7ZL26Xt0nZpu7Rd2i5t7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLsO71+1rZhXWvD29j9pK1EgdxEhdxE43oxEMM4m08tB3a0EtO4iJuohGdeIhBvI3oJcBBpC1oC9qCtqAtaAvagrZL26Xt0nZpu7Rd2i5tl7ZL220b1r0+HMRJXMRNNKITDzGIt3HQNmgbtA3aBm2DtkHboG3QNmibtE3aJm2Ttklb9pL8kl6se314iJ/tfdfubcxe8jDPyZ04iYu4iUZ04iEG8TbiW+qBtG3aNm2btk3bpm3TtmnbtBltRpvRZrQZbUab0Wa0GW1Gm9PmtDltTpvT5rQ5bU6b0+a0HdoObYe2Q9uh7dB2aDu0HdoObUFb0Ba0BW1BW9AWtAVtQVvQdmm7tF3aLm2Xtkvbpe3Sdmm7bcO614eDOImLuIlGdOIhBpG2QdugbdA2aBu0DdoGbYO2QdugbdI2acNnwjdxETfRiE48xCDeRqwvAQ4ibYu2RduibdG2aFu0Ldo2bZu2TdumbdO2adu0bdo2bZs2o81oM9qMNqPNaDPajDajzWhz2pw2p81pc9qcNqfNaXPanLZD26Ht0HZoO7Qd2g5th7ZD26EtaAvagragLWgL2oK2oC1oC9oubZe2S9ul7dJ2abu0Xdoubbdtb90rcBAncRE30YhOPMQg0jZoG7QN2rKXbE/cRCPmlUIkHmIQb2P2koeDOImLuIlGpG3SNmmbtC3aFm2LtkXbom3RtmhbtC3aFm2btk3bpm3TtmnbtG3aNm2btk2b0Wa0GW1Gm9FmtBltRpvRZrQ5bU6b0+a0OW1Om9PmtDltTtuh7dB2aDu0HdoObYe2Q9uh7dAWtAVtQVvQFrQFbUFb0Ba0BW2Xtkvbpe3Sdmm7tF3aLm2Xtts2rHt9OIiTuIibaEQnHmIQaRu0DdoGbYO2Qdugjb3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLDnvJYS857CWHveSwlxz2ksNecthLDnvJYS857CWHveSwlxz2ksNecthLDnvJYS/ButfvO10X1r0Cs5c8HMRJXMRNNKITD5G2SduiLXvJ90DnhXWvDxfxs31PO15Y9/rQiZ/Nb2IQb2P2ku8JxgvrXh9O4iJuohGdeIhBvI1Gm9FmtBlt2UuOJRrRiWnzxCDeRvSSkziIk7iIm2hEJx5iEG/joe3Qdmg7tB3aDm2HtkPboe3QFrQFbUFb0Ba0BW1BW9AWtAVtl7ZL26Xt0nZpu7Rd2i5tl7bbNqx7fTiIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmgbtA3aJm2TtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPajDb2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfYSrHv9Hl++sO714SJ+ttiJRnTiZ/se+7uw7vXhbcxectOWveThJH62G4mbaMQ/29+ntomHGMT74fcakOteCwfxz/b3AW7iIm6iEZ14iEG8jV8vKRxE2gZtg7ZB26Bt0DZoG7RN2iZtk7ZJ26Rt0jZpm7RN2iZti7ZF26Jt0bZoW7Qt2hZti7ZF26Zt07Zp27Rt2jZtm7ZN26Zt02a0GW1Gm9FmtBltRpvRZrQZbU6b0+a0OW1Om9PmtDltTpvTdmg7tB3aDm2HtkPboe3Qdmg7tAVtQVvQFrQFbUFb0Ba0BW1B26Xt0nZpu7Rd2i5tl7ZL26Xtlm3nutfCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpm7RN2iZtk7ZJ26Rt0jZpm7Qt2hZti7ZF26Jt0bZoW7Qt2hZtm7ZN26Zt07Zp27Rt2jZtm7ZNm9FmtBltRpvRZrQZbUab0YZe4h+ilwAH8bN9f5a4c91r4SZ+tm/J+c51r4WH+NkmBruN2UsefraVg2UvebiIn23lYNlLHjrxs62bGMTbmL1k5xZnL3k4iZ/te+e+c91roRE/28ZghxjEz2a5QdlLHg7iZ/u+bXLnutfCTfxsvhKdeIif7eR8s5ck5rrXws/2fXHPznWvhYv42U4kGtGJn+3cxCDexuwlCziIk7hqp+a610Ijeu3UXPdaGMRbOzXXvRYO4mf7vjdn57rXwk00ohMPMYi3MXvJw0GkbdG2aFu0LdoWbYu2RdumbdO2adu0bdo2bZu2TdumbdNmtBltRpvRlr0kTqIRnfjZLv5tEG9j9pK7EgdxEhdxE43oxEMM4m08tB3aDm2HtuwlqJbsJQ+deLpaspc8vI3ZS1At2UseTuLqasle8tCIuW3AQwzin239cjpfLykcxPlhbtDXSwo30T7M6Xy9pPAQ48O03VuY614LP9v3cLKd614LF3ETjejEQwzibfx6SSFtg7aRtkjcRCOmLec7DjGIn23ah18vKRzEz5avQ7nutXATP1u+zOS618JD/Gzf8sid614ffr2k8LOttH29pHARP9vOwb5eUujEz7YxWBBv49dLVjbHXPdaOImfzX6Jm2iNWJGQ9A1riXmaWRryNHu4iUZ04iEG8RbmksjCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpm7RN2iZtk7ZJ26Rt0jZpm7Qt2hZti7ZF26Jt0bZoW7Qt2hZtm7ZN26Zt07Zpw2nmiU48xCDeRvsRP5v/EidxETfxs30fauxcEln42b5PMnYuiSy8jd9LVuEgTuIibqIRnUib0+a0HdpO2ixxEhdxE43oxLSdxCDexu8la+XLWy6JLJzERdxEI362k/P9XrIKg3gb8yXr5MzyJevhJH62yMOSveShET9bYLBDjMJc/Pi3ZxO/cb+vJty5zHHlFUouc1zfXcKdyxwLg3gbsz88HMRv3Ju27A8PN9GIacs5ZH94mLacZPYHYPaHh4M4iYv4Z/vbwEQjOvEQ48OVeBu//vD3njJxECdxEdOW4mVEJx5iEG/j1x/+dlziIE7iIn62kZP8+kOhE9PmiUG8jbaJOUJuxVfde+RJ4DmdnJkP4iQu4iZ+g+V711yZWHiIQbyNX0kXfra8fMiViYWLuIlpy/keJx5i2nJm5zbGj/jZVp60X0nvfNOcKxN3XoDkysRCIzrxEIP42VYqvpIuHMRJXMRNNKITDzGIbcuViYWDOImLuIlG/Gx57ZQrEwuDeBu/8i8cxG/cvRON6MRDDOJtzCrcXyfIBYKFqfiOfC7Z29+HJTuX7BVuohGdeIhBvI32Iw4ibUab0Wa0GW1Gm9GW5ZTv1nMZ3s6LzFyGt/NyMpfhFR7iN0JeWuYyvIdZOA8HcRIXcRON6MRDpO3QFrQFbUFb0Ba0ZYlYnhpZDHllk0vr/lpd4iQu4iYa0Yk5bp4wWQwPc77fCZNL6woHMWfmiTnCSQxing/fXs/lcn8bkDiIk7iIOe5NNKITP5tj3CDexknbpG3SNmnL17eHfTRzuVzhIQaxj2YulyscxElcxE2kbdG2aFu0Ldo2bZu2rNg8NXIJHE4NR23iH9xG1CZwECdxEXedD7kErtD7JMjafBiNWZs4NbI2cT6gNoHepwZqMw8AahN4Gw+PJmozTwLUJnARd58EWZsPnUjboe3QFrQFz50sBv/2b64NKxzEbzp5MZ1rwwo30YhOPMQg3sYsnIdpi8RJXMRNNKITP9vJ+WbhPLyNWTgPP9v3peI714YVLuJny6vtXBtW6MS0WWIQb2MWzsO0eWKOexKN6MRDzHFv4jdufMc4V4HtvIrPVWCFk7iIny1vOeYqsEInHuJny4v/XPq1I+ebNZRX/Ln0a0dOJ2sob0Tm0q9CIzrxEIN4G/MiMu8d5tKvws92U5wXkQ830YhOPMQ/29/lTeJt/OqtcBDnhzmdr94KN9E+zJl99VZ4iGnLw33SlnOIH3EQJ3ERN/Gz5UV6Lv0qPMQg3sbvdbNwECdxETeRtkvbpe22LRd5/V2vJU7iahz5Xz1xEdN2Eo3oxEMM4m2cuW2RmHO4iZO4iJtoRCceYhBv4/oRaVu0LdoWbYu2Rdui7Ste+55utnOBleUnfLnAyvJNWy6wKnTiIQbxNlqOCxzEb74zj5st4iZ+486v5nPRlOUd21w0VZhbnJP01QfAN9GITsxx88hnFT68jVmFOLBZhQ8nkbZD26Ht0JZVCMxqmcBDDGL2ndzivMp8OIiTuIib+M0h3wHm4qbCQwziLczFTYWDOImLuIlGdOIhti2XMVneMs9lTIWLuIlGdOIhBvE2ZhU+pG3SNmmbtE3aJm2TtknbpG3RtmhbtC3aFm2LtkXbom3RtmjbtG3aNm2btk3bpm3TtmnbtG3ajDajzWgz2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1oC9qCtqAtaAvagragLWi7tF3aLm2Xtkvbpe3Sdmm7tN2y2e/3Iw7iJC7iJhrRiYcYRNoGbYO2QdugbdA2aBu0DdoGbYO2SdukDb1kJS7iJhrRiYeYLzP3w2wgDwdxEhdxE43oxEMMIm2btk3bpm3TtmnbtG3aNm2btk2b0Wa0GW1Gm9FmtBltRpvRZrQ5bU6b0+a0OW1Om9PmtDltTtuh7dB2aDu0HdoObYe2Q9uh7dAWtAVtQVvQFrQFbUFb0Ba0BW2Xtkvbpe3Sdmm7tF3aLm2Xttu2XLtUOIiTuIibaEQnHmIQaRu0DdoGbYO2QdugbdA2aBu0DdombZO2SdukbdI2aZu0Tdombewlg71ksJcMXIx44iJuYrark+jEQwzibcTFCDCbY9pwMQJcxLRFohGdeIhBvI3ZS77b8pZrlwoncRE30YhOPMQg3kanzWlz2py27CXf3TrLtUuFTjzEIN7G7CXfBwaWa5cKJzFtlriJRnRijpsHNvvDziOU/eHhJuYIeYSyPzw8xG++3317y/VID7M/PBzEz2a5QdkfHm6iEXPcb/flGiP7bpdarjEqXMSc7y/RiE48xCDexqz5h2nzxElcxJyvJRrRiYcYxNuYNf9wECdxEWmbtGXNf/dpLdcYmefUs+Yf3sas+YeDOImLuIlGdCJti7ZF26Zt07Zp27Rt2rLmvzUYls/WKzzEIN7GrPmHuScjcRIXMW15wmTNP3TiZzsYLIi3MWv+5DmZNf9wEj/bycOSNf/QiJ/tuz9p+Wy9wiB+tshjnDX/cBA/2819ljX/cBM/2835Zs0/PMTPdnOXZCcA5vXDw8/2LTG0fLZe4SL+2fyXxfD1h0Inng9zi7/+UHgbv/7gI7f46w+Fk7g+zC3++kOhET/bzA36rh8Kg/jZvhs1lgvJCgfxs30fnlsuJCvcxM/23ZWwXEhWeIifbWGw2/j1ksLPli+AuZCscBE/W3bwXEhW6MTPlm07F5IV3savl3i2wVxIVjiJn81ysK+XFBrxs2UN5UKywiB+tu8zFMuFZIWD+Nm+zy8sF5IVbqIRnXiIQbyN+0ccRNo2bZu2TdvXS/zkjvp6SWEQP9vJg/X1ksJB/GyRe/LrJYWb+NmyeHMhWeEhRh9Nu41fLykcfTS/XlK4iLuPphvRiaeP5tdLCm/j10s88pT7eknhJH62m0fz6yWFRvxsF//2EIP42bKB5EKywkGcvde/XlK4idZ7PXvJw0OM3uvZS4DZSx6O3uvZSx4u4p/t/IBGdOL5MKfz9ZLCW5jP1jvfOibL5WWFk/hnO9/nDJbP1is04mfLLpeLzgqD+Nm+jxwsF50VDuJnmznY10sKN/GzzRzs6yWFh/jZvsVAlovOHn69pPCzZZfLRWeFi/jZsonlorNCJ362vDLPRWeFt/HrJSevuXLRWeEkfra8DM1FZ4VG/Gwbgx1iED9bVkAuOiscxM+Wl1S56KxwE09dHmxca8zEQZzERdxEIzrxEL/55qVlPi/vfB+TW65KKxzESVzETTSiEw8xiLQd2g5th7avP5y8VMtVaYVGdOIhBjGvf3Ov57XGw0H8bPmKk+vPDvZOOPEQg3gbv05QOIiTuIibSNul7dJ2abtty/VnhYM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07Zp27Rt2jZtmzajzWgz2ow2o81oM9qMNqPNaHPanDanzWlz2pw2p81pc9qctkPboe3Qdmg7tB3aDm2HtkPboS1oC9qCtqAtaGMvMfYSYy8x9hJjLzH2EmMvMfYSQy+xxE00ohMPMYi30NFLgIM4iYu4iUZ04iEGMW3fy4yjlwAHcRIXcRPTthKdeIhBvI3oJcBBnMRF3ETaJm2TNvSSSLyN6CXAz5aXlrnUr3ARP1teWjq6Rv4a+sNJHMRvhG/xkuXT7go30YhOPMRvvnkZmkv9HmZ/eDiIactJZn94uIlpy6lnf3h4iGnLqWd/AGZ/eDiIacuNz/6QNxJyAeDJWwa5ALAwiLcxO0G+UcgFgOfmEcpOcHO+2Qluziw7wUMjOjFtObPsBA9vY3aCh2m7iX+K+OV0vvKPX07nK//Ia/t8mF388GuHGMTb+JV/4SBOYtpyn91N9D6NLs+oyzP19pl6fj/iIE7iIm6iEZ14iEGkbdD21Xx8f9hvuUqxcBG/DfoWzFiuUix04iEG8TZ+NV84iJO4iLRN2mbaduIhBvE2rh9xENOWW7wWcRONmLabeIhB/Gx5YynXLsa3Nsly7WLhZ8t3X7l2sfCz5VuuXLtY6MRDDOJttB9xECdxEWkz2ow2o81oM9qcNqfNaXPanDanzWlz2pw2p+3Qdmg7tB3aDm2HtkPboe3QdmgL2oK2oC1oC9qCtqAtaAvagrZsIN/6M8tljIWTuIi7XpJyGWOhEw8xiLcwn2BXOIiTmFvhiVGvevlUusibnflUusJBnMRF3EQj5n74yikXN2I/5OJGbGYubizcRCPm/r2JhxjE27j6aObixsJJXMRNNKITT88ha/7hbdw/4ug5oOaBi0gbaz5Y88GaD9Z8sOaDNR/W504Y96RxTxr3JGo+52Dck8Y9yZoP1nyw5oM1H6z5YM0Haz6cxw01D+SedO5J53FDzQO5J1nzwZoP1nyw5oM1H6z5YM0Haz6Cxy24J4N7Mrgng3syaz5vhOVizMLPlne/cjFm4W3Mmn/42VbOIWv+4SJuohGdeIhBTNs3yVyMWZjXDzdxVxXmssvIDyJy2WXhIQaxj9AdP+IgTuIibqIR+wjlYszCIPYRysWYhYM4iYu4ibkVJzGItzH7Q95ozGWXkasMctll4SJuohGdeIhBvI27711d3D0AbqIRnXiIQbyNuHsAHETajDajzWgz2ow2o81oc9qcNqfNaXPanDanzWlz2py2Q9uh7dB2aDu0HdoObYe2Q9uhLWgL2njP8QZtQVvQFrQFbUFb0HZpu7Rd2i5tl7ZL26Xt0nZpu2Xz3+9HHMRJXMRNNKITDzGItA3aBm2DtkHboG3QNmgbtA3aBm2TtknbpG3SNmmbtE3aJm2Ttknbom3RtmhbtC3aFm2LtkXbom3RtmnbtG3aNm2btk3bpm3TtmnbtBltRpvRZrQZbUab0Wa0GW1Gm9PmtDltTpvT5rQ5bU6b0+a0HdoObYe2Q9uh7dB2aDu0HdoObUFb0Ba0BW1BW9AWtAVtQVvQdmm7tF3aLm2Xtkvbpe3SdmljLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSXGsZ32esnmstC514iEG8jfkO5eEgTuIi0ma0GW1Gm9FmtDltTpvT5rR5rfJyrLV86MRDDOJtzHco38JNz7WWhZOYNvzbTTRibttOPMQg3sZ8h/JwECdxETfRiLQFbUFb0HZpu7Rd2i5tl7ZL26Ut36F8K1Q8V2vG96G853PigPmcuMJBnMRF3EQjOvEQg1ir8xxrOB8OYq3Oc6zhfLiJuTrvl+jEQwzibcw1nA8HcRIXcRNpm7Tl+5ZvyYLnusyw/K/5DsVyK/IdykMjOvEb4VsM5LnWMr6P1D3XWhZuohGdeIjf/v1WJHiutXyYNf9wECdxETfRiGnLvZ41/zCItzFr3vIYZ80/zNUWlriIm2hEJ6Yt92/elfDcv3lXApg1/3AQv23z3CVZ855bkTX/0IhOPMQg3sas+YeDOIm0ZXVj6lmbnvsha/OhEXMO+LeHGMRbmGsiCwdxEhdxE43oxEMMIm2DtkHboG3QNmgbtA3aBm2DtkHbpG3SlvcUvpsknmsiC2udrq9pRCeexrynkBWb6xwjO0yuc8y1t57rHAudWGtvPdc5Ft7GXDMdOZ1cM/1wEhdxE43oxEMM4m002oy2rNjsiLl2Mb4HRHiuXYzvDrLn2sWHWZsPBzFHyB2V9XZyr2e9PbyNWW8PB3ESv/0bufuy3h4a0YmHGMTbmPX2MG2eOImLuIlpyyOUVQjMF8tvuaHnwsLCTcxfy92XBfmwFin76kXKvrBI+cONRcrAHNcScwRPPG/psudiwcLbmAuPv3vxnosFCycxlznnuLnw+KERnXiIQbyNufD44SBOIm2TtrxxFzmdLKc8+3IBYGS15ALAwkXcxG+E77Nmz0V98X3W7Lmor3ASF3ETjfjt35szyxfAh0G8jfkC+HAQJ3ER05ZHM18AHzrxENOWhzCLDJhF9q2c9VzUd3+58d+LWuEhBvE2fkVWOIiTuIibSNupheiei/oKg1gL0T0X9RUOYi5ozl2di34fbqIRnXiIQbyNuej34SDSdmm7uc9yV9/cO99/zeV791sY4Ll8r3ASFzFH8MQc4Tt/c0le4SBO4iJuYu7fm+jEQwzibZw/4iBOYtoscRON6MTP9n3Y77kkr/Czfc/i8FySVziIk/jZRu6drzYLjejEQwzibdw/4iBOIm27Fox7LskrdGItGHfDQn/gbcRC/xwMC/2Bk7iIm2hEJx5iEG+j0+a0ee6znG/W8chTI+v4W5HguczuYdbxw0H8Rph53L7avPnSkUvnCm/jV5uFgziJ3/6dWRexiUZ04iEG8TbeHzHnm6fnncRF3MS05d7Jin2Y437HLRe+3e+jLc+Fb4VOPMQg3sas2IeDOImLSNuoP7rwXPhWeIj1RxeeC98e4k9zgPmnOTNxEhdxE43oxEMM4m3MP815SNuiLWvz+4DO87l19/ug0vO5dXflP8gqfDiIk/iNsHKDdo5gibfRfsRBnMRF/Pbv91md52K2QiceYhBvo/+Ig5i2PCy+iJtoxLTlMc4qfPjZ8m5SLnF7mFX4cBA/W94WyiVuhZtoRCceYhBvY1bsw0GkLeqPkTxXuxUa0d9fvXiudisMYv4JTQ6GP6EBDuIkLuImGtGJhxjEtuXCt8LcZysx944l5t7xxCDexqzjhzlCJOYIN/EQg3gb89X04SB++zdvqOQCtcJNNKITDzGItzFfTfOGVS5QK5zERUxb7p2s2Ic57k68jVmxDwdxEhcxx839m3X8MLci9+Q+xLTldLK6gVndeSsil6IVpi13X1b3w8+Wd1FyKVrhZ8t70LkUrfCzeW5mVjcwqzvvyJ6s7oefLW/J5FK0wrTlBmV1P0xbblBW98O05QZldQOzuvM+QS5FK0xbblBW98PPlrcBcila4WfLOwK5FK3wq4A32G3Ma+WHgziJi5i23CX5evzQiWnLLc7X44e3MV+PHw7iJC7iJhrRibTdtuWis5tXV/kFqTdvA+Sis5vv5/MLUgsPMYi3cfR8cyla4SQu4iYa0YmHyPmO3jv5TL5C2rLmsUFZ3digyflOzjer++EgTiLnuzjfxfkuzndxvovzXZzv5nw357u5dzZtm7asbmxQ1jE2yDhf43yzjh9uIo+mcb7G+Rrna5yvc77O+Trn65yvc77OveO0OW1ZsdigrE1s0OF8D+d7ePYdnn2HR/PwaOYr7/fAUs8lY4X5WpgKvPICN9GI37h5uymXgd28b5TLwPJPZT2XgRVuor0/lfVcBlZ4iF8vyZsDuQwMmMvACgdxEhdxE43oxEMMIm1ZhfnanQu+bl5K5IKvmzescsFXYRBvY77G5o7KJ+rd7+8OPJ+oV3iIQbyNWW8Pv/2bt4VyaVfhIm6iEZ14iEFMW25x1tvDQZzEtI3ETUzbSnTiIQbxNmZtPhzESVzETaQtF2nkbQss+HoYxO9D47wNgAVfDwfx+9A4b5JgwdfDTTSiEw8xiLcxF2k8HETaDm1ZsTfnm7WJsy9rM6slF3EVTuIi5gg38W+E8ctbWrkyq3kIT+ElvIUtOc/+/H7x4iMcwrf45Bqt5iE8hXP2kbiJRnQinCs5hOE8H4+fMJz5uwPOm/zt8+/Pyg8Waz00ohMPMYi3MRdYPBzESaRt0pZfNv77/u7j5Gqt5iMcwpec3zhePISn8BLewvDmvl8ufIRD+JL3Txj/Prdlh/Al2094CE9hzDOPl22y49/nsfMpvITz33/3g04uomp24e/4zTxNskIf3sas0O++y8EyqoeT+B2/mRudy6geGtGJhxjE25jLqB4O4iTSFrTlF37/Zh5BVDMmj2rGPFHNj5fwFsY4354fqM7vU5IzUJ2Pp/AS3sImjL19k49wCF8yKvTxEJ7CSxheSzZhFz7C6f2Wr59cCFU80/vdBDm5FOqP89/PKbyEt7AJu/ARDuFLRrU+Fm+uilq5C3NV1MNN/E6x7/bMwaqoh4f4nWIrD2auigLmqqiHgziJi7iJRnTiIdK2aUMtP8ZeyrkZ9lIeQTvCIXzJqPHvyW9noJa/ez5noJYfH+EQvuTzE869/X1qc3ItU/MS3sIm7MJHOIThzbMrfsJDeArDm0c/NhnVim1HtT42YRfGfL59Pn/c3okqfjyFMf5J3sImjPEj+cjvhjD38xziHeId4kUVP97CJuzC4h3iQoV+t6vORIU+3sI55nfr6UxU6OMjHMI5vuX4qNDHQ3gKp/e79X0mXje/W0xn4nXzcQhj/O/4TrxuPh7CU3gJb2EThjePO15/H4fwJeP19/EQnsJLGGPmOeD43dy3eC1+PIWX8BY24Zyz5z5H/T4O4UtG/T4ewlN4CafX8xihfh+78BEO4UtG/eLYoX4fT+EljG38JQf3G667wXilfjyEsS15Ll3ZV6jxx0cYc04vrq+TF2r/MfaVJfMYrd8S3sIm7MJHOIQvefyEh7B4h7gGrzoWXp0fXzJenR9jW8C86ljThF0YxxccwpeMGv9uL561eLWz1hRewuJd4l3iRe0/DuFL3j9h8W5xoa499xXq+nEI55jfDdazUNePh/AUzvG/u6Vn4br6sQm7cHq/79A5C7V/8rxC7T+ewhg/zzfU/mMTduEjHMKXjNo/edxR+4+n8BLewibswoeMuj55DuD19+S+RS0/duEjHMKXjBqP3Oeo8cdTeAlvYRN24SOc3shjhNpP3qj9x0N4Ci/h3cduo/Yfu/ARxjZ+/W2jrnO/bbymP97CJoxtWcncVxs1/ngIY87pxev74y2MfWXJLr97hENYvEu8S7yo/cdLeAubsHiXuPIe2QVO4iJuIrbDk3EPI/fxvmT7CePYnuQpvISxn3Lfo77f77rwERavidfF60N4Ci/hLSxeFxdqOnLbUdOPp3CO+d1DPBs1/diEXTjHv3le4/X88SXj9fxxem+ej6j7m+cU6v6xC2P8PNdQ948vGXX/eAhP4SUMbx531P1jFz7CIXybDXX/eAhjzEjG797kS8br9uMhPIWX8Dfn8a0iO7mCq9mFj3AIX3LWffEQnskzeQlvYRN24SMcfewMdQ9G3T8ewtjGX7Jzv+H1/HEIX/LGtqxk2Ve4Zn9swphzevcRDmHsq+88MZNjZHKMTI6RidfEa+JF7T8+wnJumJwbLl4XV34mlW0mH5NWeIhBxHbk+ZgfI2dLyieiFW4iDmz+4nHhI4ydhH9/+1fjRxxEGoPGoDGM6MRDDCJtl4qLEzN3zDVhF875583WfPBZ823OR581Z0HkTdV8+FnzEt7C6f0eq3pyxdcf7+RLHj9hjG/JU3gJb2ETduEjDK8nXzIK/fEQnsJLeAubMMb89nmu5vrjm7yEt7AJu/ARzjnnLdRcAFaMgn48hKfwEt7CJpzevF3rKPTHIXzJ9hMewpPHzpbwFjZhbOPXzHJ1WO03H8JTeAljW/JcctlXHsKXfDDn9J4hPIWxr/I8OXKMjhyjI8foiPeI94g3fsJDWM6NkHMjxBviCuz/PMcutuUkD+EpvIS3sAm78HkffZ9cBlZ4C3MZWOEgTuIibmItZDgHJf+t0TwHJQ9GyT8ewticm7yEt7AJu/ARDuH71h4crCl7OIiTuIibaEQnnsb16y1esjVoBo+X8BaWrVmyNUu2ZsnWvGaQ/JoBeAhzgzY3aHODNjdoc4M2Nyg/+n7I3WfcfViAkltssjUo9ccufIRla0y2xmVrXLbG5ZxwOSdczgnnBjk3yLlBzg1ybtDhBh2eD4e773D3YYVKbvGRrTlyhh85w0PO8JCtCdmakK0J2ZqQcyLknAg5J4IbFNygyw263KDLDbrcoMvz4XL3Xe6+7AR5jz2fXlY4iJOYm5IfXWElWd7nxkqyh0HM/fStbj6BTvB4COd++lY1H6wmw6/marKHRqRx0Dho7HWlJ3pd6YleV3ryIWiFtE0q8qp95OdxgRd88PoJY/6WPIWX8BbO45yfRgVq//ERDmF4v4MTeMHPT68CL/iPtzDGz/njBf/xEQ7hS8YL/uMhnN78hCjwgv94C5uwCx/hEL5kVHh+kpLLyv449y1e8B+H8CXjBf/xEMacc5/jBf/xFjZhFz7CIXzJqPX8hCtQ64+n8BLewibsPHao9cchfMm4EPiW+5/ACz72G17wH7vwEca2fOfS/XFfXVzUP17CGD+STdiFMf5NDvldHqM7fsLiHeId4sUr/2MTduEjLN4prqzq3FX5kLJCIzoxx8tPS7CULcsVS9keTmJONj+muyjuxyack82P5rCc7f1qEG/jpnHTuGnci7iJRnQibZsKFHF+PHhRxI+3MOaPf+/CRziE8yDnR3MXL+WPh/AUhjdPQBR6ftx0UeiPQxjj58mFQn88hKfwEt7CJpxezwONQn8cwpeMQn88hKfwEsaYedxxBZ8fo2FZW/EUXsJb2IQx59znKOjHIXyLA8vaiofwFF7C8HqyCbvwEQ7hS0ahf8cusLSteAovYRyXnRy13+KHd+xgFPTjIYxtOcm9rwJL1YqPMMZPL17MwXgxf4zxb/Lk764lvIXFu8S7xIsX88eXvH/CQ1i8W1xZ1d+KscjVbIW3Ma/UH+Z4B5x/MTcSjejEnOwBh/Alo7hP7ngf/as+iYtIo9PoNPohBvE2nh+RtkMFivjkjkERPw5hzD9PcBTx4yE8hfMgnzyR8Wr92IRdGN48AVHoJ08iFPrjKYzx8+RCoT82YRc+wiF8m7FCbnyr2gMr5Iqn8BLewibswoeMIv4+nwuschvfZ2aBVW7FLnyEQ/iSUdDf52SBVW7FU3gJb2ETduEjDK8nXzIK/fEQnsJLePexGyj0xy58hHFcvmY2UMTYb7hSf7yFTRjbcpJlX+GK/PEQxvjpxYv54y2M8fM8MTlGJsfI5BiZeF28Ll68mD9ewnJuuJwbLl4XF558kLsZTz4ALuIm5ng3z8f845Bf7qa82w7Mu+0Pc7Lfh3CBhW3FSzgne3PH5x3396tOPEQag8ZLY77nfjiJi7iJtN1WYIHc+D78CyyQK57CmL8lb2ETduE8yN8Hb4EFcsWXjFfrx/DmfFDo34dJgYVwxS6M8W9yCF8yCv3xEJ7CS/jzzu9D2cBiuWIXPsIhfMlZ6MVDGGPOZPxu7tt1yfsnPISn8BLGnHOfbxN24SMcwpdsP+EhDG8eI1vCW9iEXfgIB48dCh2MQn88hHFcdrJzv/kRDuFLPtiWPJeO7KuzhU0Y46f3HOEQxvh5noQco5BjFHKMQrwh3hBvuPARlnMj5Ny44r3iykcLZTvBs74eHmIQc7zvs5DAY72yvPFYr4ebmJP9PoQLrIArPsI52e+Dt8CjvfCr+Wivh4NI46Bx0JiP9nroxEMMIm2TChTxAJuwC2P+lhzCl4wifpwH+fvgLbAarngJb2F4TzLGj+RLRqE/xvg3eQov4S1swi58hNObl+NYGfcYhf54CE/hJbyFTRhj5nF3/G7uW1/CW9iEXfgIY865z1HQYBT04yE8hZfwFjZhePMYodAfh/Alo9AfD+HJY4dCf7yFTRjH5WtmWA339tsdwlN4CWNb8ly6sq9uCN9mrHqb32cAgVVvxVMY49/kLb9rwi58hENYvOMnPISn8BIW7xBXvoDP76Z+YDXc/O7NB1bDFU/hJbyFTdiFz3t0WuRiuMLbiOePAQdxEhdxE3MfrdwG1PzjS0bNPx7CU3gJb2ETdmHxbvFu8Zp4TbwmXhOvidfEa+LF4wBPYhBvIx4HCIRzJ+/3NL/IBXGFTsQGWXIIXzIawsod308KjN1PCoxcMFdI46Hx0JhPCnwYxNuYTwp8SFtQgVfylRuLYn8cwph/Fh2awOMhPIXzgOwsBDSBxybswun9/vwlsARufjfdA0vgiqcwxl/JW9iEXfgIh/Alowl8f/oTWD5XPIWX8BY2YRc+ZDSB74OLwBK4+X2YEFgCV+zCRziELxkv9N8HCIElcMVTeAlvYRN24SOc3u/GfmCZ3GM0g8dDeAov4c1jh2bw2IWPMM637/zE0ri331Doj7ewCeeYlueSyb7yn/AQxpzTiwuAx1s4x7c8T1yOkcsxcjlGLt4j3iNeXAA8XsJybhw5N454j7jw4p73gQ0v7t/nC2F4cX+8hU3YhY9wCN/3XNjIx6AVDuIkLuImGtGJ37h5C9rx5F7gIM73oNvwfnJveD+5N7yf3BveT+4N7yf3hveTe8P7yb3h/eTe8H5yb/igbdA2aBu0DdoGbYO2QdukbdI2aZu0TdombZO2SVteAHyfmkSup3uIhpAfEDgawuM8Md6/WcJbOE+M/IAAy+yK88TIG+lYZld8yWgIjzH+TsY4lny+R/PiPwfxNuIxvvlv8Rhf4CSuD1OSX0f+0IhOPMQg3kb/EQdxEmlz2lDy+ZENFsxNHA+Udn78gQVzxUt4C+c4WQpYADfzEwIsgCuewkt4C5tw7u28i+oo58chfMl4KX88hKfwEoY3zxa8lD924SMMbx47XOcnH7zE5/XVwUv84ym8hLewCbvwEQ7hSx7izecJ5/2dXERXuIj7Q/xbIzrxfJgblE9LfHgb82mJDwdxEhdxE43oRNombajxvJDDKrmZnz1gldz8lhcGVskVH+Eg40U8z/CDF+ssyYMX68cufIRD+JJx5Z7vMA6u3B9P4SW8hU3YhY8wvDP5kvFC/3gIw5vHDi/0j/G7X1UeVPTjIZy/m/fRDyr68XfY8s1ZPjit0ImnEVV+wRgj55WPXMr3A7mQrdCJOUbONR92+PA25sMO891FrmIrnMRF3EQjOvEQg3gLc21b4SDm0cv7WIFavPjveZTyRjnWsT1GLT4ewhgnkjHOTQ7hS8b77MdDeAp/e3t9f5US+Ri0ZhN24SMcwpecr7TF8J7kKbyEtzC8M9mF4d3JIXzJ+yc8hKfwEt7CJuzC4s0HDHtuVj5gGJgPGH74HfO8Msi1bYWL+J1heUmRC9sKnXiIQbyN+YDhh4M4iYtIm9Pm2Ht5Bh7spdzzB3spz66zhLewCec4ecsZK9VW3jnGSrXiJbyFTdiFc2/n3VysVCu+5HxlLh7CU3gJb2HMP8/868JHOITh/Y5+PnqtOW9MR2J+vPdLPMQg3kY8Qxw4iJO4iJtoRNryNTbfP+dCtcLbmK+x36rCyC/bLJzE71TJd/i5jq3QiE48xCDexnwi8cNBnETaFm25hC1bBRar5UcfWKyWRYfFag8XcRNPfaSL56nl2YznqT2cxEXcRCPm/r2JhxjE25jPOnw4iJO4iGnLvY7n+wOdeIifLevq4rngiXgu+EwcxElcxM+GMzWfi/jQiYcYxNuYH30/HMRJXETa8kU6L2TziWyFh/idO7nOJZ/T9jBfpB9+505eUudqtsJF3EQjOvEQg3gf3lzFVjiIk5j7zBJz75zE3DvxYdbxw0GcRHtrpm6uP8vVRTeXnz2cP+IgTuIi5rqnlWhEJx5iEG9jLjx9OIg535u4iJtoxLTl3smKBWbFfp+d3PyaynyA+s2vqSw8xCDeRiwuAw7iJC7iJtKWL56WG5Qvng+D+B15y/nmi+fDQfyO/Hcz6+Zqs8JNNKITDzGIt/H8iINI26Eta3Pmrs4qXHnkswpX/oOswoeTuIi15vjm10nm6tybC8gKB3ESF3ETcwFwnvb5RxwPDzGItzCXjRUO4iSmbSVuohGdmLZIDGL+9cVXWQPPBQcO4iTmX1/MxE00ohMPMYi3EX/rARzESaQtX00jtyJfTR868Tt3vreCN5eVFd7GfDWNHCxfTR9O4iJuohGdeIhBvI2btk1bvsbunG/W8XfRcPNhaPk09psryh5mHT8cxBwhj5vV39LcXBxWeBv9RxzESfz273fv+uaysEIjOvEQg3gb89X0Ydry9MTz/YGLuIlpy72TFfsQV4m5yfETHsJTeAlvYVwVp+ldFYNxVZz78V0Vg+HNvfOuisHpzZefgavix+nNFxU8ba04vTO3BVfFj9ObLxYDV8WP05svAVhkVgyvJU9heD15C8N7kl0Y3kgOYXi/bcQis+L0fp8tXzyFrTi92Uqx+Kw4vdk2sfisOL3ZfbD4rPirlJv/JK+pHw7iJC7iJsKYewnvph8fYRhzD+DdNBjvph8P4Sm8hLewCbvwERbvEi/eNWfXxRK0tXJv491xdlgsQSsO4UvOe13FMn+T+ZvM32T+JvM3mb/J/E3mbzJ/l/3m4nXxunEb8b4Y2+gy/yPzx/vlx1N4Ccv8j8z/yPyPzP/I/I/MP2T+IfMPmX/IfgvxhnjRMbCN6AzYxivzvzJ/dIbHJizH/cr8r8z/cv54RlvxEJ7CS3gLm7ALH2F61+sAkbx7G9fg/Ndw4SMcwjzueC5bMY77SJ7C63uGdWrzCccPjehEjP31A6w2W/namqvNzgBuohG/Mb73Vzefu1YYxPthDpyPQH04iJO4iJtoRCceYhBpM9pQwTvng0rNSwA8XW3lq+dCpT6+ZFTqY4yTRy8/Tl6WRyA/WyoO4UtGpT4ewrm387Ua68mKt7AJu/ARDuFLRqXmdQ7WkxVP4SUMbx5cVOpjeC35CIfwJeM1//EQnsJLeAubsHjzK+Pz5TOXohXewlyIdvJ1NNehFU7id4blC3MuQis0ohMPMYi3Mb8y/uEgTiJtgzbU9/fHgRerzdb3We/FarNl+W9Qx4+X8BbOcTy3C6/D333ci2epFU/hJbyFTTj39vcZ8MXqsuIQvmTc1X48hKfwEoY3DxZetx+78BGG15IvGa/bnvsBr9uP03vyd1H1J/fP97p9Nv6zEZ14iEG8jfkFBQ8HcRIXkTanDR3j+zutiwVnxSF8yegYj4fwFF7CW9iE4c39j47xOIQvGR3j8RDGv89zFZUORqU/HsJTeAljnnm8UOnJWCi2vs9BLxaKFW/h/Pf5FhALxYqPcB6/k3gbs1gf5vGLxElcxDx+nmhEJx5iEG9jfv3Aw0GcxEWkbdKGK+58R44lYutbS3GxRGxF/htU9OMtbMIYJ7cLFRq5t1Ghj5fwFjZhF869/X0ievHEtOJLRoU+HsJTeAlvYXjzYOH1+vERDmF48+jj9foxvLnfcGV989/jdfzxFjZhFz7CIXzJqNbHQ1i8+Z0FeV8vV4sVGvE7xfK1Lh+4VhjE7xTLF+R83FrhIE7iIm6iEZ14iEGk7dKGWr55RuWr8/5lbeZ19/7lEczr7uLbjEesFa/klYxxdvIRDuFLHj/hITyTPXkJb2ETduEjHMKXPOGdyUN4Ci9heE+ykb/Xa8v2jOVe+/sk5mK5V/ES3sIm7MJHOIQvef+ExbvFu8W7xbvFu8W7xbvFu8Vr4jXxGryRnN6Rp0Y2g2ITduEjHMKXnM2geAhPYfHmerE8s/O7OQud+K1Ouzn3rxEU3savDVhWe64sK5zERdxEIzrxEIN4G4O2oC2w9/IEDOylLI7AXrLkS74/4SGMcXJMFHfe2sPysOLbjOVhxUN4Cufezlt+WB5WbMIufIRD+JLRDB7D68lTeAlvYXhHsgvDu5JD+JLRDB4P4Sm8hLewCbuwePPuex66/AbPh3n3/eF3ly+PVT6CrXARv7t8+UY9V5YVOvEQg3gb8+77w0GcxEWkbdOGnpA3YbGcbOcNViwn23lTFcvJirewCWOcr8qwPGznez4sDytewlvYhF0493beYM0npzVfcr6wFw/hKbyEtzDmn2f+ceEjHMLw5n6LnzC8uQ9R3Y9NGNuV+xZV/xjblfsQVQ9G1T/G+DmHO4WX8BY2YRc+wiF8mwNd4vEQnsJLeAubsAsf4RAW7xDvEO8Q7xDvEC+6RN62C3SJx0c4hC8ZXeLx9zqQ74TjNQD8Zxc+wiGcQ+Y7SaxVwymMtWrFWzjHzzuBWKtWfIRz/Lzrh7Vq73dxmfB4CIt3i3eLd5uwCx/hEBaviQttIO9C4jlrxS6MbbHkEL5kXAI8zvHz/VWgbTxewlsY3pOM8fN0QHsAoz08xvh5vNAeHi/hLWzCLnyE05v3CvEstsdoD4+H8BRewlvYhDFmngMo/bzKxyq14i1swi58hDHn3Oco/WSsUisewlN4CW9hE4bXk49wCF8ySv/xEJ597PAstuItbMI4Ll/94plr2G8XL/6Pp/ASxracZO6rixp/fMkL46cXbxEeT2GMf5O3/K4Ju7B4l3iXeFH7j4fwFF7C4t3iQl3nxePF5f/jITyFc8y863ffZX5uox3hEM7x8+4nHsNWPIRz/Lyzed9lfv4uavyxCYvXxevidV7w4vFsxUN4Cov3iAt17bmvUNdg1PVjbEue86jrx0t4C+f4nuc2LgceH+EQhjf3P2rfc26o/cdbGOPn+Ybaf3yEQ/gWf9878dMwNKT6u2n7haVhazANruFoCA1XAkr8+5ObL2CAhXA0hIYrATVfYWjAJhjC0rA1mAbXcDSEhisBXeFbjfiFoWFqWBq2BtPgdWy/cDSEhisBPeG7hvnClj2KV/4KruFowMadDKY7Ee2gwtIAD2aAq4EKrgEenFWmh9H0MLoeRtcZuM7AdQZoGRVMg55IrieS6wyOSk/f+vrC1mAaXEMOHTiVo+9/fWFomBrS8/2p0Be2BtOQnsDxiaMDhIYr4eoMrs7g6gzQSipsDabBNegMrkjxiLcdC2Fp2BqwcYbgGo6G0JCeyMLAl6F2GBqmBszgIMATCEdDaIAnz1E8Fq7D0DA1LA1bg2nIGdwfwtEQGq4ENJQKQ8PUsDRg6DxdBq4XLnY8mkOFqWFp2BpMAzYBhwRto0JouBJwdVFhaJgalgbMAIcRDaWCazgaQsOVgIbyDjAaSoWpYWnAkcN5jU7x9iiuMF5A26gwNGDjcPId3YloGxWOBngwA1x1vICGUgEenFWhhzH0MIYextAZhM4gdAZoKBWuhKsn0tUT6eoMrkqx1Oft0RsaLsNbB1jhG9p+P4T+tOsLpsE1nPydgRAaroRsG/abCEMGGFPD0qAzGDqDoTPAooEKoeFKwHqCCjqDqdLsFIYXFqzz6xAasHFZMljq12FomBpWBkfYGkyDa8AM8lTG0+jsh4O1h4apAR5sz94aTINrOBpCw5WQDcUGzpBsKB2mhqVhazANruFIcAyN08UxAHa8mwbXcDSEhivhYBNwSM7QMDUsDVuDaXANRwNmgMN4roT4aRgapoalYcsBDtPgGo4GHLnso1g2WHv0Lg1bg2nAxuHku7ITsUiww9AATyAsDVsDPBfBdYCjITToDIbOYOgMxtSwNGwNpkFnMFSKTuEDYWpYGraGHHr+ELBOZyJcCVyZ9IXchIkB0DYqLA25CfP9jukAruFo0BksncHWGeyhYWpYGrYGncFWKTrFxE5Ep6gwNWDjDGFrMA2uIc+Q6Qih4UrwnwbM4CDAgzMRDaWCa4AH5ygaSoUrAQ2lwtAwNSwNOYOFMwQNpYJrOBpCw5WAhlJhaMDQOCSBAbDj0RxeuD8NQ8PUsDRgE3BI0DYquIajITRcBjwnr8PQgBk4wtKwNZgG13A0BA8wHphXAQ2lwtCAI7cRnHsU6xU7hIYrYWLjDoLsRCxa7GAa4MEMcB1SITTAk2cVljrWAGtomBp0BktnsHQGuA6pcDSEBjmRsOixg0rRKTYm+v4W4YWjITTk0DtP5bd+0V5YGraG3IQ9EFzD0ZCbsHF87MoA/tMwNOgMXGfgOgMslargGo6G0KAzOCpFp9jYiegUFVwDNg4lg05R4UpAp6iQZ8hGYeDSo8LSsDVgBjiV0VA2zkQ0lBfQUCrAg2OKhlJhadgaTINrOBpyBm9XoaEg4Jl7HYaGqWFp2BpMA4bO0wWPzzNbCEvD1mAaXMPRgE0whCsBbaPC0DA1LA1bg2nADBzhaAgNVwIaSoWhYfIAY7Flh63BNODIZR/F8/Zqj+K9TIWpYWnAxh0E3Yl4x1LhSsB1iGEGuA6pMDXAcxH0MJoeRtPDaDoD0xmYzgDXIRWGBj2RXE8k1xm4SnHp4TgtcemBq04srewwNSwNW4NpcA3oypBiPXSFK+H9DcULQ8PUsDRsDfjTIBwFNBRcQRoaygtoKBWGBmwpRkNDqbA1mAbXcDSEBvxZVJ4U/v4u6oWhYWpYGrYG0+AajgT8hSR2CBZwvi3FCs4OS8PWIFuKVZwdjobQcCWg71QYGnRLp27p1C2duqVTt3Tqls7QoPt66b5+fySJHbJ0S9FdKriGo0G3dOmWbt3SrVu6p4alYWvQLd26pVu3dOuWbt1S0y01PatM97Xpvn5/UYkdYrqlFhqkfrDcs4NuqeuWum6p65a6nlWuZ5XrWeW6pa5benRLj27p0S09uqVHz6qj+/rovs5HL+BFJtd9Ng/hKfw5Bt4i5RMGLy4ncklocwjf/IXsjO97eCsMDTMDdnI+oeH9fj6iodiExX3FfcWNr+BMxrfxFg/hKbyETThycgvhSnjfv/kCNsgQpoalYWuwDI7gGo6G0IAZ5Gs5loUOnNFYF9pha4AH24Pv+6lwNISGK+F9U+cLQ0POAG813hf1VtgaTINrOBpCw5WAb//B+w48fnDghRDPH+wQGq4EfAVQhaEBm4BD8r6X84WtwTS4hqMhNFwJ+I4QvB9439JbYWpYGrYG0+BygPHFfxVCw5WA7/tbG2HLHn1f4fmCazgasHE4+UJ34vu+zheWBngwg/eVnS+4BnhwVoUextDDePUwXp3B1RlcncH7fs8XTIOeSFdPpCszwPrSDus9eObjLWzCLpzD4v1Qrhi9qP5cMdo8hXPuNhC2BtOQc8cVPr66t34/hC95inuKe4obX/X5eAubsAuLd4oLbQGX3u87fCtsDdig9zuu4WgIDXk64O0UlpV2GBqmBszgIMATCEdDaIAnT8j3lb4VhoapYWnYGkxDzgDvRd43+1YIDVcCukeFoWFqWBowNE4RfPEnLjfeV/xWmBqWhq3BNGATcEje93++EBquhPcVoC8MDVPD0oAZ4DCie1RwDUdDaLgS0D3eAUb3qDA1LA04cijm902h2KPvq0Iz3PddoS8MDdi4gyA78X0BcIWjAZ5AuBJw0VEBnosgh/F9D3CFrUFnMHQGQ2fwvkf0hSth/jQMDTqDqVI8su0HDuFLxlPbHuew54WvEeFznFyH2uzCOffzQmi4EtAvsGwMT118v5+PXSxewuLe4t7ixlPfHofwJePBb4/Fa+JCW8B6rvddwRVCAzYo6+N9XXCFoWFqyNMBa/SwVrWDaXANmAHOW3QPLIp73xtcYWqAByckukcF0+AajobQcCWge2Cx2vsG4QpTw9KwNZgG13AkoC1g5dr7JmGsAXtfJVzBNRwNoeF2GO/7hHN12HhfKFxhalgatgbT4BqOBszAEa4EdI8KQ8PUsDTsPsDjfdVwBddwNODI7QzvG0knwtKwNZgGbNxB0J34vn/0haEBHszgfQXpC1sDPBfBdYCjITToDLbOYOsM3veVvrA0bA2mQWewVYpnuuIg4KGuj5fwFs5hc0Xd+OEZrth/eIgrGE9xfZxz//5A/gtTw9KQc784MHic6/t9Fz7C4nZxH3Hjq0sfT+ElvIXFe8SFtnCxx97Xlr4wNWCDUB/vm0tfMA2uIU+Hi52Li4oKVwIuKipgBpgbusfFaYfuUcE1wIMTEt2jwmV4X1JcYWiYGpaGbwb5vZ1fMA2u4WgIDVcCHtReYWjA0BMBAyyEKwFPaK8wNEwNSwM2wRBMg2s4GkLDlfC+1PSFoQEzcISlYWswDa7haAge4PeVxi+ge1QYGnDkNoLLHn1fffpCaLgS3refHgTdie97Tl8wDfBgBu+rTl8IDfDgrHI9jK6H0fUwus7AdQauM3jfi/rC0aAnkuuJdHQGR6W42zlwWuJuZ4WjITTgji92PJ/n/oWlYWvAfV2cO1hLVuFowJ1lnBTvAZYY4D3B8oWhQWdwdQZXZ4AH3VRwDUdDaJAZvOdXVsBN64NgGlwDNu4ihIYrAYtCKuRt87yYH1i22mFp2BpyBgdzw0cuedU+sDi1Aj5yqQDPQpgaloatwTS4hqMBM9gIVwI+6q0wNEwNS8PWYBowdJ4ub3HqwY7HZykVtgbT4BqOBmwCDgk+6n0BH/VWGBqmhqVhazANOYPAYcSnLBVCw5WAT1kqDA1TDjA+ZamwNZgGnKPZuN6y1bdH8VFvhalhacihAyff0Z2IFSIVrgSsEMHV61ucWmFqSA8u8N7i1BpAD2PoYQydQegMQmeAj3orDA16Il09ka7O4KoUX9KEVyYsW+0wNEwN2LiNkG0d1yHvq5YrhAacB9kt3+LUCkMDdqIjLBngfUvMC6ZBZzB0BkNnwK+Q+S4CfhqGhqlBZzBVik6BNy5YtloBnaICNg6/g05RYWnYGvIMwfU9lq12OBpCQ84AF/JYnGq4kMfi1A5bAzwLwTUcDaHhSkBDqTA0YAY4Q9BQKmwNpsE1HA2h4UpAp8A1+Vucimvytzi1Qmi4EtA2KgwN2AQcErSNCluDaXANR0NouBKyoTiur7E4tcPUsDRsDabB5QCjoVQIDVcCegjeNb9lq2+PYlFIBddwNETOIE++tzgVO/EtTq2wNGATJoJpcA0nw0IIHUAO41ucWkFnMHQGQ2eA65AKpsE1HA06g6nSieOzEbBxhmAaXMPREBquhPXTgF6FvfO+eeqFpWFrMA2u4WgICfzC5y9MDUvD1mAaXMPREBquBH7z8xd0BqYzMJ2B6QxMZ2A6A9MZmM7AdAauM3hfJffC1LA0bA042o6QHrxQvm+EfuF969wLqHqcSGdqWBpwVgWC6QCu4WjQGRydQegM8BWUFaaGpWFr0BmESi9O2IswNEwNuXF4X4LVrR1Mg2vIkhk4R9F3KlwGrG7tkDPIv1cZWMOaD8H6gmlwDfAYQmi4EsZPw9AwNSwNmIEjmAbXcDSEhith/jQMDRg6EDDARbgS0F0qDA1Tw9KQm5AfZwysYe3gGo6G0HAl5J2SDkNDzmDiMGbf6bA1mAbXcDSEHOB9JdhPw9CAzf4huOxROxpCw5Xg2DicfK470bcG04BNwAz8aAgN2Ik4q44exqOH8ehhPDqDozM4OoPjGo4GPZGOnkihMwiVvi+sxTF931j7wtEQGrBxOJXft9PiML6vp31ha8B5cBBcw9GAnYjj876kNgfw9y21LwwNU8PSsDWYBtdwNIQGncFQKTpF/knUwLLVDq4hNy7X2A0sW+1wJaBTVMgzZMGTb3k6LA1bQ84Ar41YnOq59mVgcWoFNJQK8BjC1LA0bA2mwTUcDZiBI1wJaCgVhoapYWnYGkwDhs7TBatOfWHHozlU2BpMg2s4GnITNg4J2sYLaBsVhoapYWnYGkxDzmDjMKKhVAgNVwIaSoWhYcoBRkOpsDWYBmx29lF8+XXtUbzlqTA1LA3YOJx8oTsxQsOVgOuQjRngOqTC1ICdiLPq6mG8ehivHsarM7g6gyszwHNNOwwNU8PSsDW4BhyfPC2xKtVzjd7AqtQOU8PSsDWYBteQvQp3trEqtcOVgHsoFYaGqWFp2Br+PJFLxEYuSm2+5K+bNGMrA2F//8cGm7AL41TH3kO/qHAloF/k0r2Rzyqt3//aRfMSFvcW9xb3PsIhfMn2ExaviQvdIxcDDixB7RAacoPejkL3qDA0TA15bjwPukcF0+AaMAMcQPQIwwmJHlFhaoAHJxd6RAXT4BqOhtBwJaCVGE4JtJIKU8PSsDWYBtdwJKB7OE4R9AjHjkePqOAajobQcBmw6tRzAdXAY007TA1Lw9ZgGlzD0YAZbIQrAa2kwtAwNSwNmwcYC1Y7uIajAUcuX0Xwbd1vj+LrujtsDaYBG2cIuhNx0VFhaIAHM8BFR4WtAZ6D4DrA0RAadAZbZ7B1BrjoqLA0bA2mQWewVfr1CXv78LsaacbAgbA1mAbXcDSEhisB7QSf2GFNaoepIWeA63c8DLWDacAMLsLREBrut204dfPR6MVDeAov4S1swi58hIOcT0PHa2yuV23G1mFno4VUMA2u4WgIDVcCrlPw0SCWq3aYGjADnP3oQRVMA2aArUEPqhAavv2LF/xc1No8hKfwEt7CJuzCRzjI6C/4BA5rWTssDdi+9zumwTVg+wIhNGAP58mEtawdhoacAT6FxFNXO2wNpsE1HA2hIWeAjxfxUNYOQ8PUsDRsDd9+xpv9XPiK56eMXPeKp3iMXPbaPISn8BLewib8HceBPfxdxzSH8CVbejHP7E/FU3gJb2ETduEjHGT0H3zMisWvHZYG7LuFYBpcA47eRggNOHrY4bjQqTA0YAbYb7jQqbA1mAbXcDSEBswAuxgXOhWGhqlhadga/maw7XF8jB31daJ8EPC3auQnPISn8BLewib8t4Ebr9m5ZrY5hG/xzAWz+fDfj4fwFF7CW9iEXfgIB3nw/JlYDdthaeD5M7EatoNr4Pkz8fjXDjx/Jh7/2mFo4Pkzf3Np2BpMg2s4GkIDz5/5Wz8NQ8PUsDRsDX3+zFwzi/Nn5pJZHPeZK2abh/AUXsJb2ISd58Y+wiEs54/J+WNy/picPybnj8n5Y3L+mJw/JuePyfnz+k8gTA1Lw9aAo4eNe/3nhaMhNHzbt8Ff+2kewlN4CW9hE3bhQ0ZzuTigaC4VpoalYWswDbmBFychLoEqhIYrAZdAF6cXLoEqTA2YAfYqLoEqmIZvBueHkyMvgU5+Oj2x7Pb8MNF8G/YClt12GBqmhqUBA+SJgVWzHTDARpgaMIAh/G3Cyhf4mWtrm134CIfwJU8YHMEyHIQcCep5hEM4R8LEvz7RPISn8BLewhAHgmvAMbgIoeFKyHdKJz9tmfl014VujFWytdP20RAaroT8UOcM7KD8UKfD1KDHI983dTANOgPTGTiGxi7wqWFpyKEHjko2hA6u4WgIDVdCXpCciU3IC5IOU8PSkDOY2KN5QdLBNeQMJk6NvCA580mvhPhpGBqmhqVhazANrgEzwKkToQEzwNlyfxqGhqkhZ7CwcdkzOpgG13A0hIbLgKfDdsgZ5McjE98T3wHnwUbADF4wDa7haAgJ6DP5IcjEmtsOUwM22xG2BtMAaSAcDZBehCth/jTkDPLP9ydW43ZYGrYG0+AajoacQX6GMbEat0JezXQYGqaGpQH74CAcNkx8VfzrB1iaW2H/NAwNU8PSsDUYW/98XeyFoyE0oIthouhiFYaGqWFp2BpMg2s4Ehx7FKcyWlqFqWFp2BpwTHHyoaVVOBpCw5WAllYBM8AphpZWYWnYGnIGhnMHLa3C0ZAzMBwftLQX0NIq5Axw0Ye1vflNm1/IGRgmipZWwTS4hqMhJHyNa+I8/NpW4SJuohG9ECtwj71wNISGv01FV8/1t4WDOImLuIkYO08YrKA9eXt85gpatKdcP1u4iN9lwgIa0YmHGMTbiJLHGwQsq+2QBwdvBbCstsPWkLPPu6gTT3Y9+ZfbE0927fDN/yHGgh9lXcE0uIajIXrfbe5949437n3j3jfufRTs2+V2ZZejYB3/DAVbAfvDEJYGbAPOh69gN+b5lWvhIQbxNuZ7kYcYG5NDwTkmlzdX3z8K4m3Mr5/EXs4brg8ncRE30Yjw4RRAeVXIs/7gqOOK4QVcMVTI2R+cD3j1Pxgar/4V8p4X8HL34YmsHYaGqQGWhbA1mAbnYcKi1w6hQWcwdAZDZzB0BkNnMHQGQ2cwdAZDZzB0BkNnMHUGU2cwdQa4EKiwq76wMvbVClbGdjgaQsOVgNfqg5mhpCsMDV9pBXARN9GITjzEIN7GLOSHg0ib0Wa0GW1GG16N87b2xALVDlcCyj5vXk8sUO2QuxxvmLBAtcPWYBpcw9EQGq4EvE5XGBp0BkdncHQGR2eAtoE3kFi62iE0XAl4na4wNGAGG2Fp2Bq+l6ABdOIhBvE2fu2jEGPj/ELzwF03rFA9uGmGFaodLgNWqHbANlyEqWFp2BpMw3cePUx//lnIxMrVDlcCmgfu2GDlaoepIf351xYTK1c7pD//hHpi5WqHo+Hbk5hZ3rAAfo2jcBAncRExtiNgG7DbcEmAez5Yutphalgavm0I3BrC0tUOruFoCA3fSyF2Tt7ufDiI3025AVzETTSiEw8RvheuhHw30GFpwOwxBTsavpdxzP3rJA+/PlI48l/jsGYX6bA0YM/hOLhpgBsHxY8GbAl2vWNLcFSziwRu9WC9auAtE9ardlga0jOwWdkRAjdXsPY08A4bj1mNgfMvMBomGhgNc8sLiJiYQV5AdAgJeWMhcAsFy00DN0qw3DQGtue6BoyGuV2MhrllD3gBy007DA056/y0b2K5aYetwTS4hqMhNFwJAx5HwGgHAf8sjxyWjgYaDJaOdpgalgbXkKPl8r+JBaIdcjR0VSwDDVwdYEln4OofSzo7DA05A7zNwJLODluDiSev2Pv/ORpCw5WA0nt7x4aGqWFp0H2AonybbaFB9w4KEOcb1ncG7uhgfWfgvg3Wd3ZwDUdDaLgSUIAVsEcxaxRghaUBM8BJcTADbBxKEw0Fiz0DzSy/fr5KxlG0L6BoK6Rnv7A1mIYcDe8/sKQzNo7PzbUgwEXESC9gJGwyCrbC0RAacsa5dmFiOWeHoWFqWBq2BtPgGuDJXYsVnIHbGliaGbh5gQWYgfcjWIDZYWiYGtb3jerATTSiEw8xiLcR3yEPHMRJpG3RtmhbtC3aFm2Ltk3bpm3TtmnbtG3aNm25SgH7NBcpPJzERdxEIzrxEIN4G502p81pc9qcNqfNaXPanDan7dB2aDu0HdpQnngjjqWVHa4ElCfuNmBpJZakTiytjDcayhP3WPDYzsCdlFwziVsS+dDOwkXcRCM68RCDeAuxQjLwbhDrIKP+n79RzvvvhxjE2/hdCxcO4iQu4ibCZwiu4UhAleLdLxY6Bm6ZYKFj4JYJFjp2cA1HQ2i4EvCyWmFomBqWBp3B0hksnQGuhnF7BUsgO1wJeJGuMDRMDUvD1mAaXIPOYOsMts7AdAamMzCdAV6kcesHayU7mAbXcDSEBFw/43YR1j3GO0O+Yj448F8xFx7idz7iNPmK+eFXzIWDOImLiDm+kPvijY36rTA05L7ADQWsa+ywNZgG13A0hIYrAd2gwtCgM7g6A7xg45YG1jV2cA05A3z6jXWNHXIGuLuAp3UGbg7gaZ2B9+x4WmeHpSFngHfmeI5nh5wB1nTgOZ6B99+5wLF+/TaOH3EQJ3ERc2y8OcfaxcinOUysXYyLbcCrfIWpIbcBb86xdrGDaXANRwL6B962Yx1i4E031iEG3nTjG+I7uIajITRcCegSFYaGqQEzwM5Gl6hgGjADHAZ0iQqh4UrILnHxfh7fKt9haviOzvuNTTTi9+cemMbXHQqDeBu/y4HCQYQPBzov9jtsDaYhJBzMHmf7mRowGk6OszWYBv8eTAo8xCDexvzugIeDOImLuIlGpC1oC9qCtkvbpe3Sdmm7tF3aLm2Xtktb9oqb9zcWntrZYWjAfnWEpWFrwH4NBNfwnZc372IsPLWzw5WQ9+Q6DA05g7zzsbBOsUPOIG+DLKxTvAOzzo5y8zbIwjrFDqEBM8AmzJ+GoeHb7/iNfHj4w000ohNP48LYBwHbgN2zsA0XwTS4hqMht2Fi92R/qZD9pcPQMDV8W4Fty+5yJ/Zhdpc7MefsLh3SP7EB2UN+j/Mv3HA88NCJ99+PcAjndPP9/sJXyncYGqaGpWFrMA2u4WgIDTqDozM4OoOjM0BDWdh7aCgVTINrOBpCAh4/gX2Gp088nsL4y0HwFjZh6N4vHA2h4Uq4Pw1DAzYYBXSXBmwwzpFrGlxDHnKc1nlZUnybsdKweAhP4SW8hU3YhY9wCIt3iHeId4h3iHeId4h3iHeIF20lb1YtPA+0AtpKBexwR5galoatATv8IGCHQ4pvTBrgEL5kdJ68U7XwMNAOU8PSsDWYBtdwNISGK2HrDLbOYOsM8EWyP/AWNmEXPsIhfMn4BqXHnxln6njfnwRewrnh+/2CaXANR0Nu+MbeRnd7Ad2twtKA0SBFp8o7eQurHjtcCehUFTAaThB0nY0TBF2nQmi4EuKnYWjIg7JxUGJp2BpMg2s4GkLDlYBGtFEXaEQVpoalIWdg2PFoRBVyBobdm42oQ2j4ZoDdhgWMxUN4Ci/hLQxDNk4sSrx552hhUeLNm0ULixI7LA1bA7YEQ+PSpcLREBquBPSYvCm1sCixw9SwNGwNpiFn4Nie7DEdQsOVgDbj2B60mQpTQ87AMWu0mbwftPCI0A6YQSAcDZgBJoo28wLaTIWhYWpYGrYG0+AajgadwdYZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGrjNwnYHrDFxn4DoD1xm4zsB1Bq4zcJ3B0RkcncHRGRydwdEZHJ3B0RkcncHRGRydATpbrnNaWMjYYWpYGvBWBmzCLnyEQ/iS0dMeD+EpnOPn7bO/kAMd9BG8I0PA40hv3ktbeBxph6lhadgaTINrgCcrEg8dffsODx19OwUPHe1gGlxD7pe8Cbfw0NEOVwJaVAU5MfDQ0Q5Lw9ZgGlzD0RAyN7SoF9ZPw9AwZW5oURW2Bp3B0hksnYG2qKUtammLWtqi8NTSms7Wo7D1KGw9CmhRb25bj8LWo6AtammLWtqilraopS1qaYta2qKWtig8tbTmZnoUTI+C61FwPQpoUXmbdmHpZgfsg4NgGlzD0ZAziDf0lYAWVWFomBqWhq3BNOQM8v7rwmNPO2iZoSsFahtdqcLUsDToyYe2VEEPfeihDz30oQV4tQCvHvqrh/7qob966K8e+quH/urpf/X0v3LyYW3ozRvSC2tDO2wN2L0bAbvXEI6G0HAl4HqswtAwNSwNWwM8jhAargS0tArwHISpYWnYGnDVhc1GS6twNISGK2H9NAwNUwOu1TFRNK4KR0NowJbmVReegfreIOAZqB22Bhw5HG20pwpHQ3rwcohnoNYA9tMwNOgMTGdgOoP3nu0F13A0hAadgasUfQfv2bB2tINryKHzturC2tEOOfTFqYy+U2FoyI3DrUKsHe2wNeQMLuaGvlPhaAgNmAEOI5pQhaFhasAMcLC+VvP9kTrC0RAabgbskK/VMAwNU8PSsDWYBswAe/QeDaHhMuQKU4ahYWpYGjB0HpJcIvr9fT3C0DA1LA1bg2nAJhyEoyE0XAnzp2FomBqWBswgEEyDazgaQsOVsH48wLnElGFqWBpwjjpCyB5dV8L+aRgaMPRF0J24XcPRkJ6BGeQa9Qq5Sr1DevCpgpkeRtPDaHoYTWdgOgPTGVhouBJcTyTXE8l1Bq7SbCjvkGY/Kb5kfFkdtgXfVfd4Cudm4cOSfOApg2lwDUdDaMCOzZeUXHTKMDTkBHAw35fkgrewCbvwEQ7hS37fjgsewuK94r3iveK94r3iveK99PrvJzyEp/ASxv5+wTS4BnywshBCAz7YyZ3vuKapMDTgg52DsDRgBo5gGjCD98+OhtCQmw/GN2I+HsJTeAlvYRiyqzi6Cj7JcnSVXG28HF2lwtKwNeSWvK1fruFoCA1XApoPPkNxNJ8KU8PSsDWYhpwBbjI72lKF0HAloC3hDr2jLVWYGnIGuDftaEv4TMDRlipgBtjXaEsVMAPseLSlF9CWKgwNU8PSsDWYBtdwNOgMXGdwdAZHZ3B0BkdncHQGR2dwdAZHZ3B0BkdnEDqD0BmEziB0BqEzCJ1B6AxCZxA6g9AZXJ3B1RlcncHVGVydwdUZ4EIJH6c4LpQqhIbLcHChhAvZgwulClPD0rA1mAbXcDSEBFxP5armddCl8FnIQZeqgNE2wtEQGq4EXDVVGBqmBngMQY7Pmbp30KsqDA1TA/aOI2wNpsE1yBlyls5gyRly9k/D0DA1LA1bg8lEt2s4GkKD7gP0KrwjOuhVFbBH4UGvqrA1mIacAT6NOehVFULDlYBeVWFomBqWhpwBPqA56FUVjhx6tCe8TT5oTy+gPVUYGqYcxqOH/uihP3rojx56tKcKoUEPvbano+3paHs62p6Otqej7eloezrang6aED6KOmhCFaYG7F7sNzQhfPp00IQquIajITRchkATqjA0TA3wHATXcDSEBnhySwNv6ioMDVMDLpsvwtZgGlzD0RAaroT50zA07FqSk6uhC52Ybwp+4BC+ZPQrfIwX6FcVpoalYWswDZ8cu/HrVoVBzE1zuNGpKgwN3yViLrlbWP9cvIVN2IWPcAhfMpYjPR7C4jXxmnhNvCZeE6+J18Tr4nXxunjRlPKPMFagKVUwDXku+fudoyHPJXx8GuhQL6BDVUg/zpR8C1i8hLewCbswDFnlgT6DT2sDfQYf0Ab6TAXT4BqwJTidcBlU4UpAB6owNOQM8AFBoANV2BpyhQ52Zb6vKz7CuTLo/fvbjGXSxUN4Ci/hLWzCLnyEQ1i8aEb4HPCiGeGzgotmVGFp2BpMg2s4GkLDlYBmVEFnMHUGU2cwdQZTZzB1BlNnMHUGuL7CxxAX/arC0DA1LA1bA2YwEVzD0YAZOMKVgK5VYWnItUaYNNYaPQ7hS8Zao8dDeAovYWzHQcjtwEdKF9dIFY6G0HAl4BqpwtAwNSwNW4POwHUGrjNwnQHaET7uumhHFYaGqWFp2BpwLAPBNRwNeX/mgi/5fUk6eAhP4SUMNw4GWlgF14Ctx+mGFlbhSkALqzA0TA3YepyVaGEVTANmgBMRF1EVQgNm8J1C+4dLpfx/dq7AziWHO9dfF+Yv559W7B+ujF5AM6owNEwNS0NO/2JoNKMKruFowAwwSTSjF9CMKmAG2DA0owpLA2YQCKbBNRwNmMFF+GYwftiebDkjPwzYuUabYWswDZ5hIZwMGyEyYHsWPJh1tpwOQ8PUgBlg1ntrMA2uIWeQt7t3PiT2e/5mhnwXNwYmmu/ixsAhyXdxY2CAfBfXYWswDa7haAgNmAH2tf806Mn6mtILW4NpcA1HQ0onDmM2pQrZlDrkZk/skGxKHZaGrcE0uIajITRcCfHToDMInUFgBjgksTWYBtdwNIQGzAD7+v40DA1TQ85g4dzJ1tTBNOQMFmadrQmLZ3cu+WbIGeRL3c5F3ww5A3SkXPbNsDRsDabBNRwNoeFKGD8NOoOhMxg6g6EzGDqDoTMYOoOhMxg6g6kzmDqDqTOYOoOpM5g6g6kzmDqDqTOYOoOlM1g6g6UzWDqDpTNYOoOlM1g6g6UzWDqDrTPYOoOtM9g6g60z2DqDrTNA58sb4juXgzNcCWiDFb6rhHwDtrEivHgJb2ETduEjHMKX7NjAg4C29gI2IxCOhtBwJaCtVRgapgbsrough+XoTgndKWhRFaaGPCy56n0PtKgKpsE16IkROoPQE+PqiXH1xLh6Ylw9MV6Lwtxei3rBNeiJgRb15oYWhTDRoirIDKa2qKktamqLmtqipraoqS1q/uTUnD85CnP8NAwNU+Y2loatQWegLWpqi5raoqa2qKktamqLmlPOg/la1Atbg2mQ82CiRVUIDToDbVFTW9TUFjW1RU1tUVNb1NQWNZecB3PpUVh6FLYeha1HAS0qP8HYEy2qAo7CRDANruFowD7A3NCiXkCLqjA0TA1Lw9ZgGjADbAKu1Cp8ncrwr3ywUUy0qrzHv3OpOMPWYBr0YLsebNeD7VpyR0sOTayCnvBHD/bRg330YB892EdPeG188+jpFnq6hZ5ur70FgmlwDdhS7De0N8Os0d5eQHurMDRMDUvD1mAaXANvZuz1+2kYGqaGpWFrgGciuIajAVu6EK4ENLEK2NKNMDUsDVuDaXANR0NouBLQxCroDKbOYOoMps5g6gymzmDqDKbOYOoMls5g6QzQxFBzC00sP6bYC02sgmlwDUdDaLgS0MQqDA1Tg84gb8ajOWGZebELfxc6Gwc3b4MVX3LeBkNjxALz4im8hLewCbvwEQ7hS3bxunjRs/KTnb3QmfJjib3Qmfz9sysBnanC0JCjOTYVXcZxbNFlKlwJ6DIVhoapIY+GoxDRfyqYBtdwNISGKwH9pwJmgCOK/lNhadgaMAOcKeg/FfLO6Bs5hG8znhZcPIQhD4SU5/38vXFlVcE0uAbccAHn1uf93r3Rk15AT6owNEwNS8PWYBpcw9GgM0DneduGXpF/fbM3esUL6BUV8rTFr+T67eIlvIVN2IWPcAhfcv4pSrF4t3i3eLd4t3i3eLd4t3i3eE28Jl4Tr4nXxGviNfHisiY/X9gbN6Aq5Dsw8PtWafAQnsI40oaAkXCu4inA+D/wEODHQ/gb6f3793hw8Bb+tuHNDo//fXyEQ/iS8ejfx0N4Ci/hLSzeEC/6RH4KsbE6e+RThjZWZ49AdaEbVDANriFHy5vYGyutR/5Rx8ZK6w5bg2lwDUdDHo28jb4N9f0C6rvC0DA1LA1bg2nADAbC0RAargRcc+BmJJZqd8AAgRAargS0gfzziI2V1h3QI8FLeAubcDrybys2FlYP3K7Hwur5eAlv4W8k3JHEcuviI/wZ5hNccr5vKR7CU3gJb2ETduEjLF4TL96uXEwOBZx/VrENb0rwyYPhpb9CaLgS8NYDny9glfTABwdYJd3haAgNVwJe+itgp2DWMTUsDVuDaXANR0NowAxwPuClv8LQMDVgBjgL7taAGWQR5hro74t7EIaGqWFp2BpMg2s4GkLDlTB0BlnseNeay6Cbl/Cnx1tJrIEuduHPjXtmWABdfMlZ48VDeAov4S1swi4s3inehT3rCNh/7//B/sOmLddwNISE7AIz/yRg+6v2iWAaXMPREBquBNR8rmTfWMfcYWpYGrYG0+AajgbMAEcLxf+C/zQMDZgBzhRfGjCDg2AaXMPRgBlgj/qVcH4ahoapYWnYGkyDazgadAbZZXAVjGXMxUP40x8c9uwwxVv4czvGzPZSfIRD+JKztRQP4Sm8hLeweK948wLidXasQH4vO1iBPPNPIzZWIHcwDa4Bo+VRz+cKf1+4hbA0bA2mwTUcDXk08uE/GyuQK2Sj6DA0TA1Lw9ZgGjCDjXA0hIYrYWEGF2FoSE/+dcHGOuOJz+uwzrjD0DA1LA1bg2lwDUdDaNAZ4JuBsNX4aqDHU/jT43Yb1hgXm3A29gM+wiF8ydlBiofwFF7CW9iExeviRX/Ah59YLjzx/hfLhed6/8w0uIYjITAaNhXXDXgRw9LfDqbBNRwNoSGPBm71YFFwh6FhalgatgbT4BqwPTiiNzRcBiwK7oAZLISpATMwhK3BNLgG7IODEBquBFxrVBgapoalYWswDa5BZ5C95GBDs5U8zk5SnI39gqfwEs7GjjGziRS78BEO4UvO/lE8hKfwEhbvEi+uQlC6WBE8cdc60FNyqf4O9JQKW4NpyNFwazlwrYHbqoFrjQpLw9ZgGlxDHo1cZb4D1xoVrgRca1QYGqaGpWFrwAwmgms4GkIDZoA9+v9re7tdaXokO+9e5rgPkn8RpG5FEIT2eGwM0JgRRiMDhqF7dxZXklxv7a+ioiq5T7rj+d5dwf+VTDKShJYMQDpoe2jJgMIgDMpQGXo6WBqtUJkBvaRYAEVI8ISeA6wRIiR4Qs8B1kkREjyh5wDrLQgJnoAcYIhCfwYgB6hE6M8A5AAVAv0ZgByg80F/BiAHKDb0Z0DPAaZPDfozoOcAk6YG/RnQc4BVvwb9GdBzgLW9Bv0Z0HOAFZgG/RmAHPRiI0J4AnIggMjQ51jw3OVn2IVsIVvJrmQj7V59iA2eEBh62ljwQWzwhMxQGIRBGSpDI8AsZkBg4BwkzgHeiLAqgzjfiMUoxPlGrCU1aNGAyJAYMgOXJ3N5Mpcnc3kyl6dweQqXp3B5CpencI0WzkHhHEClrmJDi65iC5dHuDzQogHCoAxcHuHyKJdHuTzK5VEuj3J5lMujXB7lGlXOgXIOoEVXsaE4V7Erl6dyeaA4AxpB4x7SuDyNy9O4PI3L07g8jcvTuDyNy9NWecpxHAyBITKUWeyCkF4UuyCkF0UoCOmdEBgiQ2LIDEgnA4ThUZ4rza4gw27L7gIybKRRAPAkgIendv1VJbstuwtBQ566Dgw7kv1IoaFK+nRk2IVsIVvJrmS3ZXfJGHYgO5JN6WZK99IE7XCN/AboLdHQlBj5AxJDZujerurALOQqN2YhAyJDYsgMhaG3RkPTYOQPqAyNACN/QGCIDIkBOUDtYOQPEAZlQA7QUzDyL8D8pK+rFgTVTogMiSEzFAZhUIbK0Aga56CrRUP7drEYdiL7TD4daM+HUkxbyO698vJZyW7TRiztsAPZkexEdia7kC1kK9krXQTKXgVAOGzqq8IF4bCpB8EXhMNOUIZKgFXTHh5fENqa+jpuQWjrBGFQhsrQCLpEpB44XxDaOiEyJIbMUBiEQRmQgwRoBPlgCAzIAWo0J4aeg4Da6fOLCT0H4XLQcxBQb4/5RQpohMf0YtgPjZl2IDuSncjOZBeyhWwlm9ItlG5Xo9Q3n04IDJEhMWSGwiAMylAZGoEiB2ggDQyRITFkhkLQ9SNFFK7rx4TMUBiEQRl6riMatevHgIbfoIWbMlQG/Kb3csSoTggMvZUr7ER2Jru3coMtZCvZvZUVdlt2OMgOZEeyE9mZ7EK2kK1kU7qB0sXmSl9yLYguTRGlgUpEZBsqMaAyNAJoQV/9LIgUTf07hoJI0QnKUBkaAUb8gN4afZGvIFJ0QmLIDIVBGJShMiAH/XGBSNEJgSEyIAfoKSUzIAeo0f5GkfL1G2WoDI0Ao39AYIgMiSEzFAbOwWP0j9p9DP5pt2U/hn7qy8elB5BOO5L96JZXmz+G/bQL2UK2kl3JbsuuB9mB7Eg2pVspXehDBjTUH3LaUH9o6BYZEkNmgLc+QBD+mfqiYkH454TIkBgyQ2FAazSAMlSGRhAOhsAQGRIDclAAhUEYlKHnoC8mFoR/DsDovyoEo/8CzBEGBIaet77MWBB8OeoAujBAGZCDCGgE0IUBPZ2+aFkQfDkcZG6FzK2QOQeZc5A5B9CFAY2gcD8o3A8K56BwohjwfT20JAz4AY0AA76g3jDgB0SGxNDTKUgHA36AMCgDctCVCRGYqaC74KE+IDH0dAT9AA/1AcKgDJWhEfRXjAk9B4IeginCgMSQGQqDMChDJcCoF3SXBgeoeMwXBihDZWgLMvRgAIoggMiQGDJDYRAGZagMyEFvRoReTggMkSExZIayGhihlxOUoRIgUqNHWZeMkAzUaMZLx4DCIAwoXO98iNAclQjZGBAZkA5ygFeLAYWhp9MXlUtOyg4qAzdj5hxkzkHmHEBQBmSGwiAMnIPMiRaaK+VrBnFBZigMKNwFNFfKcjAEhp6OXpAYMkNPR9E+IuxAGSoD50A5B8o5gKAMSAyZoTBwDpQThVIoKhFKMSAxoHAYMlCKAcKgDD0dxcDAy8QFmEYMCAzIAboyBEXREyEoA5QBkUjooxAUAE7VnRAYIkNiyAwIhAoAYVCGytAIICgDAkNkgOsEgINe8eUK47ogMESGxJAZUAQBCIMyVIZGAEEZEBgiA3KggMxQGIRBGSpDWw2Mw3cnBIbIgD5aAEo1iqnHgEaAqccAFK4CuBIhGwOEAekgB5iHDGgEEBQsj+JU3eFAuBmFm1E4B8I5EM4BBGVAZeCOpNyRlHOgnCiU4rhAGSpDI8DUA4ugiA291rkQGzqhMPR0sESM2NAJlaGng7VfxIYOB5CNAZGBc9A4B41z0IRBGSoDrdshnnRCZOiueyBvQaDoBGVA4QTQCKAUAwIDIkUVkBgyQ2FADioA6fSeeMWFDggMPYAIS7sIDZ2QGQqDMChDZejxS1iLxYG6EwJDZEgMmaEwCEGG6wSAA1R8zgyFQRiUoTKgCGgSxH4NCAyRITFkhsIgDMgBmhExYAMaAaLABgSGyJCogSEoAwqDMKCPol9roBrVyJAYMgMKh86nXInaCOrBgHSQgxoZEkNPJ6BXVW7Gys1YuRkr56ByDhrnoAWGyMAdqXFHapyDRoninNprCwzn1E6IDIkBhQsA7OskQGVoBF02MpbhcU7thMjQixCu32R2UBiEgXMQOAeBcxAPhsAQGRID5yByolAKbB4gMHRCYEDhBJAYMkNh6D0EK7U4znZCZWgEEBSsSCOYNGPpGcGkEwpDT6fHBBcEk06oDI0AgjIgMESGngMs1l8BpQMKgzAoQ2VoBBCUAXCNJkFwaETFS2VoBHowBIbIgCKgSSAbAwqDMChDZWgEEJQByAGaEYIyIDFkhsIgDEoNDEEZ0AggKAPQRwugUI02YVCGyoDC9c6HINKrEhFEOiEzIJ0GEAZl6OlgwR1BpMNBOBgCA+cgcA4C5wAfrQwQBmWoDJyDyIli6oEXdgSJZry5Ikp0gjJUhkYAQRkQGBBjIoDEkBkKgzAoQ2VoBHnFABVEkmYs/COSdEJhEAaUFLUDQRnQCCAoAwJDZEgMKCkqpBQGYVCGytAIEPcxIDBEBooOQozpKCl0Z0BlaATKJVUuqXJJlUsK3RlQGISBS6pcUuWSVi5p5ZJWLimiOwZwXVeu6yviCxVSuaRQlwGBITJwSRuXtHFJG5e0ca9q3Ksa9aorxhQZvWJMB0SGxJAZCoMwKAPV9RVJigpBJOlVUkSSTsgMhYFKimjSCZWBSxoPhsAQGbikkUsauaSRSxq5pJFLGqlXjXjSC7iuoUjYpMGJshOEQRlQ0v4wuuJJsUVyxZMOSAyoUQEUBmFAjSqgsoNGgKiyAZyDwjkonAOKhy+N4uFLo3j40q54+As4B8KJ4qsYbB8juHRCYeiFw7YugksnVIZGABHCLimCSydEhsTQc5DRppjiYGcVIaQTGgGmONhMbZjiDIgMiSEzFAZhQA7QQzDFGdAIIEIDAkNkSAyZAa4f3UUQNZr7JxeCqNEJiSEzFAZh6EXoO6uCSNMJjQBTnAGBITIkhszQc9A3YAWRphOUoTI0AqjLgDAbWHB47ITEkBkwABugUY1iijMgMEQGFC4CuBLxZjSgMqAIyAHejAYEBlRiBnAzZm7GzM2YOQeZc5A5B5jiXIApzgDuSIU7UuEcFE4USnFVIuYuF8jBEBhQuAJYX63JFZk6QBnQDwTQCCAbA1CJaB9Epl4ONDFkBs6Bcg6Uc6CVoRFg7jIgMHAOKicKpSioRCjFgEYApRD8BkoxIDIkht5DBAMD05UBwqAMPQf9Qx5BiGnuG6OCGNMJiQHpZEBhEAZlqAyNAIIyADkogMiQGDJDYRAGZagEUIq+7yyISM19C1gQkTpBGSpDI4BsDMBnpQcgMiSGzFAYhEEZKgM+a+3NiIjUCYEhMiSGzFCogSEoA5ShEkBD+ka8BCjFVaNYXRlQGIQBhUPnE65ELMoOiAwoAnJwfZ57QWFAJaJXCTejcDMKN6NyDpRzoJwDzEMGZAbuSModSTkHyolCKSK6Jd5yBmSGwoDCXYCvwbsM4mzVCYEB/eCCxJAZUIlonybsQBkqA+UAcasTAkNkSAyZoTAIAyWKQ1Nz3+wWHJo6ITH0wvUdacGhqROEQRl6D+nvTIJDUwdg6jEgMPQc9HcMQfBq7hujguDVCcqAdDKgEUBQBgSGyJAYMgNyUADCoAyVoRFAUAYEhsgA1wqAA1T89YX/BYEhMiSGzNCL0NAkkI0BylAZGgEEZUBgiAw4ZgDNCEEZUBiEQRkqQ6MGhqAMCAyRAQOwAZRqFO8yAxoB3mUGoHDofJUrEW8sA4QBRUAOMA8Z0AgwD2noVY2bsXEzNm7GxjlonIPGOcA8ZEBloI6EQNcJgSExdKXo+z+CCNYJlaERYOrRN+sEcao460YQpzqhMKAfCEAZKgMqsbcPjikdDrDLMyAycA4i5yByDrAeMkAZKkMjSJyDxIlCKRoqEUoxQBkerkvfkRaEwA7oSjEhMMQOqOs+9ZiQGQqDdEDeMtLpPRGBrhMCA9LJgMSQGQqDMChDZUAO0EPkYAgMkSExZIbCIAQK1+guCgeoeM0MhUEYlKEy9CIENEmXjQmBITIkhsxQGISh5+AaWV1QJjSCdjAEhsiQqIFbZigMwoAB2HUUIbBXjSIEdkJiyAwoXARQJSLQdUA4GFCEBIgMiQGVmAGFHQiDMnAOAucgcg5iYIgMiSEzcA4iJ4rTCSFcCIGdEBkSAwpXAPpP4xg8ydcJhRc0AshG310WBLpOiAyoRKSDs9eHg8IgDJyDzDnInAOcvT4gMESGxMA5KJwolCIAoBQDAkMvXN+RFoTATsgMhaH3kL67LAiBnVAZGgEEJaIrQ1AieiIEZUBhQDrooxCUAZWhEUBQBgSGyIAcoIdAUAYUBmFQhsrQCCAoA+Aa3aXBASq+VYa2AIGuEwJDZOhF6Lu+gkDXCYVBGJShMjQCCMqAnoO+aSsIdJ2QGDJDYRAGXQ2MQ00nNAIIygAMwAYoq0YRAjtBGSoDCtc7HwJdRyWmxJAZUATkIAmDMqASM4CbMXMzZm7GzDnInIPMOcA8ZIAwKENl4BwUThRTj75nJAiBLX3LRxACO0EZKkMjgKAMCAzQKrQ2LnAYkBkKgzAoQ2VoBIqeiMJBUAZkhsIgDMpQGRoBBGVAYOAcVM5B5RxUzkHlHFTOQeUcVM5B4xw0zgFOUcVLfrmOTL4gMxQG5ACD6ToyuXdlxMNOCAy9pFgwxvmqEzJDL2nfEBOhw5RF6DBlkesw5Qs4B4FzEDgH12HKFySGzFAYOAeBE8UMpW/WCSJlJyQGFC4DCoMwKENvxr47JoiUHdAnMhMCA3IgAKSjAGFQBqRTAY0AujMgMESGxJAZkIMGEAZlqAyNAG9GAwJDZOiusW+GeNiCLSzEw04IDJEhMWSGXgTsWiEedoIyVIZGgOnKgMAQGZADNCN0Z0BhEAZlqAyNGhi6MyAwRAa0HPo1BOWqUQjKgEYAQRmAwqHzNa5EvNgMEAakgxxgIjOgLUDYbMEGEsJmLwcIm52QGDJDYRAGZagM1JEQUDuBcxA4UcxQsHGASNmCLSxEyk5oBJihDAgMkSExdK3CyjZOWp0gDMpQGRrBdX3DBYEB6SRAYRAGHdcYiK6rGkTXVQ2i66oG0XVVg+i6qkF0XdUguq5qEF1XNYiuqxpEM6WbKd1M6RZKt1C6hdItlG6hdAulWyjdQukWSrdQukLpCqUrlC5mNdj2QnTthN5hsR2FM1knoFcVQGVoBNAdQTNCdwY8MoBN+R52O+1MdiEbaWAkQj+ww9PjZ4Ogs/cbG4adyX54ugqFGxsuW8l+VOHw2Zb9kJdpB7Ij2YnsTHYhW8hWsindttJFUG1BARA6W7CZiNDZgn09hM5OqAyNAG862LBDGGzBBhfCYCcoQ2VoBFCLAb01sKeF81QnJIbMUBiEQRkqA3LQ+wOiZScEhsiAHKBG8UI0oOcAW1KIlp2gDJWhEWBiMiAwRIbEkBk4B11QsN7Tw2inXcl+9A6sh/QY2mkHsh+9EovkPYB22pnsQraQrWRXstuyu6AMO5BN6QqlC9XALh5iYwtmrYiNLdhQQ2zshMiQGOANrjG/wB4N4lwnBIbIkBgyA1oDww3vNQOUoTI0AkxDBgSGyIAcYOhggjKgMAhDzwE21BABewECWAu2phDAOkEY4CABKkPfxugVep2RetmB7Eg20sgAeCqA/iVfb2hEqA47kN0/F0Se8FnwZWey8SEkbCFbya5kt2VfZ5fBDmRHshPZmWxKN1G6GPTozghILRhrCEgtWBBHQOqEwiAMD2+C3RgElwp2YxBcOiEzFAZhUIbaAU1TGkF/AZkQGCJDYsgMhQE5QO2IMlSGRqDIAXqKBgbkQAGJITMUBmFQhsrQCOrBEBg4BxAINDb04bIL2XhewVayK9mYt3f7ekGBHciOZCeyM9mFbCFbya5kz3T1OA6yUbMV0OuvbywpAlOl7wspAlMnNIIuDhO6t773oggylb73oggynVAZGkE8GAJDb42+PaEIMp2QGQqDMChDZWgECTmIgMAQGRIDcqCAwtA3jQ9UCELYD1Q8QtgHJIbMUBiEQRkqQyO4roy6gHOA40ca7ER2Jhsfi8IWspXsLrroQdcBAt3G+QGXHciOZCeyM9mFbCFbyaZ0hdJFGOqB5kSw6dW/EWx6oGgINh1QGRoBAsWu/l1XQIBeR5oOUIbK0AjawYCQBPRvHIA8IDFkhsIgDMpQGZCD3lo423RCYIgMyEEBZAbkQAHCoAyVATnoNYrI0wmBITIkhsxQGIRBGSoD5wCXPqCguPThsiPZj+T7i5XiINVhF7K7vlw+lexKdls2tOWyA9mR7ER2JruQTekmShcHsEcUAJrStyIVQae4skfDdQPdBcKgBFCOiFYvK3BQEWc6oTAIgzJUBoQu9lGJCNQJgSEyJIbMUBiEATnIgMrQCHDY8gDkADUKLRnQ00lo++uSGFQVgtAHRIbEkBkKgzAoQ2VoBI1zcMWIwY5kJ7IRZQe7kC1kIzYYdiW7TRuxpsMOZEeyE9mZ7EK2kK1kr3QRb4qbfRRRpbjZRxFViit7FFGlE5ShEsT1WcQJ6/sARezoBGFQhsrQCBDq1bdUFLGjEyJDYsgMhUEYlAHlqYBGcF0vdUFgQA4SIDEgBwVQGIRBGVAHqFHMNS6AYgwIDJEhMWSGwiAMysA56FqiKGiXkmEHsruwo9m7jgw7k92FHT67iAxbya5kt2V3ARl2IDuSncjOZFO6Sulen7ygANCUgq4GTekbG4q40wmFQRjwWSNava2PFxUxpBMyQ2EQBmXAx4sYlZhrABBDOiEwRIbEkBkKA3IQAcpQGRoB5hr93UtxWOoEzNkboDAIgzJUhkaA9xY8eRFqOqE/23t4kCLUdELPAR7QCDWd0HOAxzBCTSf0HOBJhVDTAZhb4GmNo1cnIAeoREwvBiAHqBBMMAYgBxWgDMgBip0aQdcfSSh2158JPQd4cCIidULPQUKxu/5M6DnA0w2Hsk7oOcAjAbGqAwpygGKXwIAcoNhYURnwyEFFqbv8DFvIVrIr2W3ZWEtJFwSGyNDTxjMDUaoTCoMwKENlaARYSxkQGCID50A5B1gxyWgZrIvgoYOQVcEzAyGrExJDZigMXJ7K5alcnsrlaVyexuVpXJ7G5WlcnsY12jgHjXKAI1yvYiNK9So2olSvIiBKdYIwKENloPIgfnVCYIgMiSEzFAZh4PKEysA5iJwDaNFVbCjOVezI5YlcHijOBVCcAYGBy5O4PInLk7g8icuTuDyJy5O4PJnLk7lGM+cgcw6gK1exoR5XsQuXp3B5SmRIDNxDCvcQrMf2cJkTlKE+biO5/qot+6Eg0w5kI40CgCcBdE8Vdlt2P7N92N1Tgx3JTmTnh62wC9lCtpJdyW7L7me2DzuQHclOZFO6ldK9NAFwjXzkFCMf86CMkT8gMxSG7g0TAgSaCuZBCDSdkBgyQ2EQht4aWEpFoOmERoCRPyAwRIbEkBmQgwAQBmWoDMhB7ykINJ2AHFRAZEgMmaEwCIMyVIZGALUYwDl4qAUu2dAeqDrtTPajd2DW0qNUp61kP3olZkM9RHXYD5WYdiA7kp3IzmQXsoVsJZvSzZQuVKOH2yhCUUXQNNAGQY+ENgyoDI0AswiBa8wVBHWDucIAZagMjQBzhQG9NXoMhSLgdEJiyAyFQRiUoTIgBxg6mF8MCAyRATlAT8H8YkDPgaJ2ML8Y0HOgl4OeA0W9PeYXuJhDe7zptAPZkexEdia7kC1kK9mV7JVujz+ddi93D2dShJ9OSAyZoTAIgzJUhkYANRqAHCggMiSGzFAYhAD60Xf1FXGlEwqDMChDZei57gG9irjSCfhNAlSGRoD5QUVdY34wIDI8WhmTgB4iOu1C9qOV8+VWya5kP1oZM4seHDrtQHYkO5GdyS5kC9lKdiWb0hVKF+8aFQ0NlehfbSrCQ6VHHijCQyc0AqjEACxMwzVGfEPdYMQPqAyNACN+QGDA+ncGJIbMUBiEQRkqQyPAG0UPkVBEhE6IDIkBOUBPwbxiAHKAGu1vFHpcv6kMbQFiRScEhsiQGDJDYRAGZejdo8Fuy+6XTA370S0xR+oHr047kd27ZYVdyBaylexKdlt2PMgOZEeyE9mUbqR0cZ12D5NQBIMqZsk4XVV7KILidNUJmaEwwFsfID3s8wQFRIbEkBkKgzCgNVDTuTI0gnIwBIbIkBgyA3JQAMKgDJWh5wAbfThDdUIPKUUJsAaKrUrEdU6oDI0A66ADAkNkSAyZoTBwDpRzoJwD5RxUzkHlHFTOQeUcVM5B5RxUzkFFDtD3KnKAflQbQTsYAkNkSAyZoTAIgzJwDnqAKJ569aEx0w5kP0LxesCc9sNYp53JfnQAPGR7OOm0lexKdlt2OMgOZEeyE9mZbEo3ULoBNdv7LWJIFVvK9dqfrYDMUBiEoXvDwiziQRVrsYgHnZAZCoMwKENvDazSIh50QJ+ETAgMkSExZIbCgPI0gDJUhkYAkcFbCc5VnYAcCCAxZIbCIAzKUBkaAURmQGDgHPQJC0Sq9lWPYReyH8kf198r2ZXsR9rQeISTDjuQHclOZGeyC9lCtpJdyaZ0K6ULtcHSOmJIFWvmiCFVLJMjhnRCI4CmDOjesEyOeFDFyjjiQSdUhrYAJ6JOCAy9NfByghNRJ2SGwiAMylAZGkFADgIgMESGxIAcCKAwIAcKaAQI9BiAdBogMvR0sECImNMJhaGng8k1wk4nVIZG0F9bJgSGyJAYMkNh4BwkzkHiHCTOQeYcZM5B5hxkzkHmHGTOQeYcZM5B5hxkzgH0By9SOEV1QmRIDJmhMDweRVc/gq5gKCCAdUJkSAzwjA4vNGIQpjqBRwzmNVi/RZjqhMiAEiBvmNcMB4VBGDgHyjlQzkHlMVt5zGJeMyAxcA4qJwpxwSoywlAnBAYUrgISQ2YoDOggGFgQpAGVoU2oCEjV/spREZGqfRGz4hDVCYWhp9NXdStiVSdUhkYA2RkQGCIDcpAAmaEwCIMyVIZGAEEaANcFAAcCqAyNAHoyIDBEBhShAjJDYRAGZagMjQB6MgA5QDNCTwYkhsxQGIRBqYGhJwMaAfRkAPqoAgrVKCYqA5ShMnTXgs4nXImQjQGZoacjyAFelAYoQ09H0KuEm1G5GZWbUTkHyjlQzgEEZYAwcEdS7kjKOaicKJQiog7wBjRAGJQBhUNXhmxEFLtFhsTQ0+mL2BWhrBOEAZWI9oFsDAdtAUJZJwSGyJAYMkNhEAZloBwgenVCd90/XayIUZ1QGFC4ClCGytAIoBQ9sLNeQaoDIkNiQFjRAUDcEjIKQRnQCCAofeW8Iih1QmRIDJmhMAgDcpAAlaERQFAGBIbIkBgyA1z37hIwv1BUPMRhQGLIDIVBGFAENAlkY0AjwDxkQGCIDIkhMyAHaMYr+uwCZagMjeCKQLsgUANfMWgXJIbMgD6qgEY1iqnHgMAQGbrris5XuRIhGwMqA2L3kAPMQwYEhp5ORa9q3IyNm7FxMzbOQeMcNM4BBAWAwNYJgSEyJIbCsBYUT2gEkI0BgQGFS4C1oFgR1DpBGXo6fc2m4qjUAZCNAajEAojkICaGzMA5iJyDyDm4FmIvaAQQlAGBgXOQOFEoRUWFQCkGNAIoRd/DqIhwnRAZEkNPp+9hVES4ThAGZeg56BsAFXGs2vc9KuJYJyQGhJJGQGEQBmWoDI0AgjIAOUAPuUJZL0gMmaEwCIMyVAIoRUN3wQSjoeIhDgOUoTI0AsjGABQBTQLZGJAYMkNhEAZlqAzIAZoRgjIgMESGxJAZCjUwBGWAMtQFiHnVHhRYEdl61SgiWycUBmHowYZ9H6cifvWqRMSvTogMqf8GOejzkAmFocc09s9CKyJbp4PKQM2IyNYJnIPIOYCgDMgMhUEYOAeRE70+iEGuU2LIDIUBhUuAtfFYr8DUAYEh9t9kQGLIDKhEtE8WdqAMlYFzUDgHhXOAIJEBiSEzFAbOQeFEu1JUPFgQdzohMaBwFVAYhEEZetxr33WqiDsd0KceEwJDz0FAV+6CUgMaqwvKBGXo6QSUpwvKgC4oEwJDZEgMmQE5QA+pwqAMlaERtIMhMEQGuEZ3aXDQKx6hphMCQ2RIDJkBRagAYVCGytAIwsEQGCIDctAAmaEwCIMyVIa2GhhBqBMCQ2RAH1WArhpFROqERpAOhu4aL6uIOx2VmAqDMPR08HKHuNMJjaALSu3B+hVxp8NB5mbM3IyZc5A5B5lzkJWhMnBHKtyRCuegcKJXoFkGKENlaASCwiUAwq9QowhEHVAYehHi5UAZKgMqEb+hELSarxC0CyID50A5B8o5UGFQhsrQCCrnoHKiUIqISoRSDFAGFA5DBkpxAZRiQGDoPSRiYPSpx4TMUBh6DhK6MgSlb4pUHKI6ITD0dPqad0Vs64TMUBiEQRkqA3LQewhiWycEhsiQGDJDYRACKEVf6q8ITa19x6ciNHVCYRAGZagMKEJvEoSmTggMkSExZIbCIAzIQQNUhkYAQRkQGCJDogaGoAwoDMKAPtp1FEeljhotkSExZIbuum+BVcSnjkrE5y8XQDYG9HQycoB5yIDE0NPJ6FXCzSjcjMLNKJwD4Rwo5wDzkAGRgTuSckdSzoFyolAKbA9cwaoDIkNiQOHQlRGgVi6oDI0AstF3kyrOQJ0QGVCJaJ+W2UFhEAbOQeMcNMoBTkedEBgiQ2LIDMLQ26fvJlXEnU4IDChcBSSGzFAYeg/BBpJg6jGgMjQCCAr2mRCrWrGLgFjVCYWhp4M2RazqhMrQCCAoAwJDZEAOUFUQlAGFQRiUoTI0AgjKALguADhAxUMcBjQCTDAGBIbIgCKgSSAbAwqDMChDZWgEEJQByAGaEYIyIDFkhsIgDEoNDEEZ0AggKAPQRxVQqEbxLjNAGSpDd419JkS8jkrEG8uAzNDTwW4SIl4nKENPB/tMiHgdDho3Y+NmbJyDxjlonAPMQwYIA3ekxh2pUQ4Q5Dqhu8aeEUJZK2adCGWdoAyVoRFAUAYEBnywhUSvD+ouyAyFQRiUoTI0Anw8g6cZzkCtmEHiDNQJhUEYUNLLW2VoBBCUAYEhMiQGlDQCCoMwKENlaATXp3YXBIbIUKhCMpcUujOgMjSCwiUtXNLCJS1cUujOgMIgDFzSwiUtXFLhkgqXVLikkhi4roXr+vpcFxUiXFKoy4DAEBm4pMolVS6pckmVe5Vyr1LuVZVLWrmklUtauaSVS1q5pJV7VeW6rlzX1+d8qJDGJW08fhqPn8bjp3FJG5e0cUkblbQeB0NgiAxU0npkhsIgDMpQGahX1XAwBIZHOjiZoeIE1gnCoAyPdHAzdsU5qziMoSJGdkJiyP03KCmuyhsgDNpBAZUdNAIcdzKAc5A4B4lzcN0BfkFhEAZl4BxkThSXauI9q17Xfl9QGHrh8PpSr1t6L6gMjeC6pTcAAkNkSAw9B1eb4ng0zP0RFjuhEeCqPEzqERY7ITIkhsxQGIQBOUAPue4Av6ARXHeAXxAYIkNiyAxwje5yXe6Nir8u974gMWSGwiAMvQiYrdfryt4LGgGuyhsQGCJDYsgMPQeY5iGedoIyVIa2APG0E8Jq4HbdDn5BYsgMGIAN0FaNIlB2QmCIDChcBFAlNlyVN6AyoAjIwXW59wWBAZWYAdSMLWaGwsA5iJyDyDm47gAHXHeAXxAYIgPnIHGi18FIqMTrYCTAdTDSBYEBhSuArkiQgHYdf3SBMqAfCKARXBfzXoBKRPtcxx/BwXX80QWZgXNQOAeFc3Adf3RBI8BRagMCA+dAOFEoBd6z2nXt9wWN4LqlF7+5bum9IDIkht5D8JLSrlt6LxAGZeg5wLsMAl1x73FFoOuExIB00EchKAOEQRkqQyO47gC/ADlAD7nuAL8gMWSGwiAMylAnnBIC1wqAgwoQBmWoDI3gutz7gl6EHhXWjuvK3gsSQ2YoDMKgDJWh56CHEzUEuk4IDJEhMWSGMhu4Hdft4BcoQyWAhvSX/IYQ2FGjuKV3QGEQBhQudshcibiLd0BkQBGQg+ty7wsKAyoxA7gZMzdj5mYsnIPCOSicg+sO8AsyA3ekwh2pcA4KJ3oduohueR26eEFmKAwo3AVdkfoWSTuuoxUvCAzoBxckhsyASkT74ADX4UAZKgPnoHIOKufgugP8gsSQGQoD56ByolAKRSVe135fkBh64SqGzHVL7wXCoAy9h1QMjOuW3g7huqX3gsDQc9Bj5hoCXXHvcUOg6wRlQDoZ0AggKAMCQ2RIDJkBOSgAYVCGytAIrjvALwgMkQGuFQAHveLDdbn3BYEhMiSGzNCL0KPCWriu7L1AGSpDI4CgDAgMkaHnoKEZISgDCoMwKENlaNTA1+3gFwSGyIAB2ABKNYp3mQGNAO8yA1A4dD7hSsQbywBhQBGQg+ty7wsaAeYhDb1KuRmVm1G5GZVzoJwD5Rxcd4BfUBm4I1XuSJVzUDnR63hotMJ1PPQFlaERXNd+oytfh0CjEq9DoC8oDOgHAlCGyoBK7O0Tr0OgIyAwRIbEkBkKgzAoQ2VoBIFzEDhRKEWP52vxuvb7AmV4uMaV1y1et/QCrlt6LwgMsUMAJIbMUBikA/KGq2Z6jFlDoOuEwIB0MiAxZIbCIAzKUBmQg95D4nUH+AWBITIkhsxQGITguvYb3eW63BsVf13ufUFhEAZlqAy9CAFNcl3Ze0FgiAyJITMUBmHoOcDIQqDrhEaA+2YGBIbIkKiBr9vBLygMwoAB2HUUIbCjRnH5zIDEkBlQOHS+ypWIeyQuwEUSA1AE5OC63PuCxIBKRK9q3IyNm7FxMzbOQaMcIOp1QmCIDIkhMxQGSjRdF0wkQGCIDIkBq8cK6Cu0KGmiqydaoqsnGgJdKybBCHSdEBmwSt0AmR0UBmHgHETOQeQcXFdPXBAYIkNi4BwkThT7wXg3QwjshMDQC4dXnisEdkBmKAx9CR4vNgiBnVAZGgE2dvD+g0DXiveFcQLrBYUB6QhAGSpDI8C28YDAEBmQA/QQbBsPKAzCoAyVoRFgY2cAXKO7YF8Gk/or0HVAI0Cg64DAEBl6ETDDvwJdBxQGYVCGytAIsG08ADlAM2LHZkBiyAyFQRiUGhg7NgPagitSdgBaLgDKqtErBHaAMlQGFK53vivQFZV4BboOyAwoAnKAaJMByoBKFAA14xXoOiAwcA4i5yByDrBtPEAYlKEycA4SJwqlwKzmOnp1gDAoA1z3rnwdsIqZ0HXA6oDEgCJUQGEQBhQB7YPI+eGgESByfgDnoHAOCueALslqmS7JapkuyWqZLslqVzzsBcKJQinwboYQ2AmFoReuXb9RhsrQCKAUeLFBCOyEyJAYkAN0ZQgK3hcQ6DqhEUBQ8CKQISgDIkNiyAyFQRiQA/QQCMqARgBBGRAYIkNiyAxw3bsLAl0bJvUIdJ2QGDJDYRAG7RABlaER9HnIhMAQGRJDZkAOEkAYlKEyNIJ4MITVwDjEdUJiyAxouQBoVKMIMBkQGCIDCpcBXIlJGSoDioAc5IMhMKASBcDNmLkZMzdj5hxkzkHmHORGUA4G7kiFO1LhHBROtMC1AuC6SxpCYCcEhsiQGDJDYejT8Kvl8C4zoDI0ArzLDAgMkSEx9HQSEsWt3QMqQyPArZoDAkNkSAyZoTBwDirnoHIOKuegcQ4a56BxDhrnoHEOGufgulUTnQ+vPAMqQ1uASNnWv3RqiIfFlaEN8bATCkPvsHg/xXGtEypD71V48UTY7HCAy70HRAbOQeAcBM4BbvUdoAyVoRFEzkHkRPsMpeH9FJGyE5QBhcuARtB1Z0Jg6EOmf8vTECk7ITMUBuQA7QPdCcgodGdAYEA6FZAYMkNhEAZlqAzIAXoIdGdAYIgMiSEzFAYhgO5EdBeoS0TFQ10GFAZhUIbK0IsQ0SR6MASGyJAYMkNhEAbkAM2olaER1IMhMESGRA1cM0NhEAa0XH+4IlJ21GiLDIkhM6Bw6HyNK7G1BTgBdgLSUUBkSAxIpwIKOxAGZagMnIPAOcBEZkBkSAyZgXMQONHr/u8MCAyRITHAdQN0RcJrn163fF/QCCAb/YOohnjYCZGhF6F/CNP0uuX7clAYhIFzkDgHiXOApdcBgSEyJAbOQeZEoRQJlQilGBAYUDjUG5RiQGYoDL2HJKTTX3kmVIZGAEHpAYENga4toSdCUAYUBqSDPgpBGVAZGgEEZUBgiAzIAXoIBGVAYRAGZagMjQCCMqC7zugufR7SMioe4jCgEfR5yITAEBl6ETKaBLIxoDAIgzJUhrYAsa0TkIMCiAyJITMUBmHQ1cCIbZ3QCCAoA9ByCVBWjSKcdYIyVAYUrnc+hLNelYhw1gmZAekgB5iHDFAGpFMB1IwIZ50QGDgHiXOQOAeYhwwQBmWoDJyDzIli6tG/WmoIZ209WLEhnHWCMlSGRgBBGRAYulZhZRvhrBMyQ2EQBmWoDI2gv/8EROkgnHVCZigMKCk6RZeNIOjkXTYmBIbeWAWVCNkYkBlQo0iny8Z0oAyVgXNQOQeVc1AjQ2LIDIWBc1A5UQhKuSAyJAYUDkMGgjJAGJQB3QUDA4ICQDjrhMCAHFQA0mkAYVCGnk4PCGyIbR0A2RgQGCJDYsgMPQc9brAh6nWCMlSGRoAFlQGBITLAdQLAQa94BK1OCAyRITFkBhRBAMKgDJWhEeDFZkBgiAzIAZoR6jKgMAiDMlSGRg18qcsFgSEyoI8WgFKNYh4yoBFgHjIAhUPnE65EzEMGCAPSQQ4wDxnQCDAPwYYYYluHA+VmVG5G5Rwo50A5B5iHDKgM3JEqd6TKOaicKN5YsBGCcNYJlaERYIaCnTuEs06IDInhUbjj6jtdUCYIgzJUhjYgHjjedUJg6JX42CF8QGEQBmVASTOgEUBQBgSGs6Shv5Y/IDFkhsIgDMpQGRoBZOMxqX9AYsgMhUEYlADqoqgqaMhjV/EB8IZEoSEDhAHeGqAy9Hp77AydAA0ZEBh6eR4RhQ9IDJmhMAiDMlQG5CB2gIYMCAyRITFkht5yxwWV6g2CcoFwjUJQKnoVVmgHJIbMUBhQUnQxSM2AytAIIDUVOYDUDIgMyAGaEVIzoDAgB2hTSM2AyoAcoFdBahoaGFLT0CRYQ2moROjOgMzQ02moA+jOgEYA3RmAdFAHmK5cXRnTlQHCoAxtQcBNFq0AEkNmKB0EIAzKUBkaAW60GBAYIkNi6EW4coB5yIDK0AgwD7kcYB4yIDIkBpQ0AAqDMChDZWgE6WAIDJGhpwN56iGwC1BStA+kZkAjgNQMQEkrIDIkhsxQGIShlxRju4fALmgE5WAIDJEhMWSGwiAMKGkfc4iHnRAYIkN6XHt5HIDMUBiEASVNgMrQCPRgCAyRITFkBu2Joulx5+eARoBbP6G9Add+DogMiSEzFIZeo4JeVZWhMjSCdjAEBqSD8jSUJwMqQ1sQcX+OKCAwRIbEkBkKgzAoQ2VoBIFzEDgHgXMQOAeBcxA4B4FzEDgHES1XAIEhMiQG1KgACoMwKENlaATpYAgMyAEymhJDZigMyEEFKENlaAT5oKbPgSEyJIbMUBiEQRmov/UzZU9ogMiQGHo64QD0dEIACIMyVIZe0tBHVsT9wgMCQ2ToOQjIKBQpoEmgSAOEQRkqQyPAvcQDAkNkSAycg8fkR1Edj6nPMHWZZ9qKsj806jIfCjXMM1VB7T7UaZhpmXmZZZmyTF1mXWab5kONhrlSayu1hnpEn4UOhetfem3FXpYeU7sgMESG7i1GQPcWE6ARhIMhMESGxNDrPhZAYRAGZagMjQBqMyAwIAcBkBgyQ2FADgSgDMhBBfQcJFQV1GZAYIgMiSEzFAZhUIbKwDl4qA1eWXoU7jDjMs+08XrR42+HWZZ5popXqB55O8y6zDbNx1xnmGGZcZlpmXmZZZkrtbJSu24qvwC1hdxBL1IGFAZhUAKoQkLjYewnBWSGwiAMylAZUPd9cCXMUwYEhsiQGDJDYRAG5AC9uVaGRtAOhp6DjH7RLx2e0HOQUaOYwQwoDMKgDJWhLcjQlAHIgQAiQ2LIDIVBGJShMjx6JMyHCg0zLDMuMy0zLxO+e6Nm6EiugMCA2VEGJIbMUBiEQRkqQyPA29IA1FUD9LoqB6AwCIMyVIZGgLnJgF7SEgCRITFkBuQgAoRBGSpDIygHQ2BADtCTMGspqBDMWgYUBmFQhsrQqE2FW1u4tTFrGZAYMkNhEAYlYBXKmJsMiAyJASUtAFKhzCqULxUCQIUKHECFBkQG1Oj1m8wOCoMwcA4q56ByDi4VuiAwRIbEwDlonCjkpfRKLJCXAYGhu5YDkBgyQ2Ho6UgAKENlaASY5kgEIJ0EyAyFAelkgDJUhkYAERoQGCIDclAAmaEwCIMyVIZGgMnMALhWAByg4qEuAxoB1GVAYIgMvQiYXxeoy4DCIAzKUBkaAdRlQM8BpukF6jIgMWSGwiAMSg0MdRnQCKAuAzAAG6BQjUI2BihDZUDh0PmUKxGyMSAzoAjIAaY1A5QBlYhepdyMlZuxcjNWzkHlHFTOAQRlgDBwR6rckSrnoHGiUAq8jpRWGIRBGVC43pXloHcTOSJDYkA/EEBhEAZUogIqO6C3I+G3I+G3I+G3I+G3I7neji4oDMKgDJyDyIlCKbBxI1CKAYWhu8b2jEApBlSGRgClwNxd8NozIDIkhp4DvJQIBAUvIAJBGdAIICjY6BAIyoDIkBgyQ2EQBuQAPQSCMqARQFAGBIbIkBgyA1yju2C2ga0WgTgMSAyZoTAIQy8C9l0EsjGgEWAeMiAwRIbEkBl6DrBgLxCUAcpQGRoBBGVAoAaGoAxIDJkBA7ABGtUoph4DAkNkQOHQ+RpXImRjQGVAEXoOFPOQAYEBlZgB1Ix6ZIbCIAzKUBkaAQRlQGCIDJyDwIlCKbBBpJh6YOdHIRsDAkNkKAzwpoBGAHHAHopCArA10YNfz2WjA9AI+kCfEDoEQGRIDJnS6QN9/oswKENl6G9geM9S7OIMCAyRgesA84Or2JgfDODaEXhDdxGUJwJQnutfMkNhEAZlqAyNQFGj6JYaGCIDcoBOocgBCqfIAYqgyAHqWvs7bb4cVIZGUHu9YQ24H/l6OkAl9rEdsArdj3xdIAzKUBkaQZeACb2kWKzuAbMLEgNygLw15AD11pADFKEhB6id1ks6/qwtqNjfGdBXCdDFKnZxBhQGpKMAZUBJG6ARhIOhlxRLtj1GdkFi6CXFtKhHzy4QBmWoDD0HWFetXSkmBIbIkBgyQ2EQBqTTO1/FHjFGSY+EPf8FtZOEQRmQ6wpoBFCXiHqDugyIDD3XWFftAbMLCoMwKENlaAR9GhGwvtkDZhdEhsSQGQqDUO0UpAOQgyEwRAakgw4L3RlQGIThMeoVktbPf13QCPoe8YTAEBkSQ2ZAjWZAZWgE9WBASdGRamRIDJnhMRoVy4E9YHaBMlSGRtD3iCcEhsiAGr1AGJQBJUUdtLagR88uQEkrIDKgpA2QGQpDzwHWhRt0Z0BlaATQnQGBITL0HOQAyAyFQRiUoTL0usarb4+eDYqX4n5mbFC8xvYzYxcUBmFQhsrQCPo6rGIJpIffLogMiaHnAC+rPfx2gTAoQ2VoBPlgCAyRoaeD1bwGRcqoKijSgMrQCKBIAwJDZECbonagSAMKgzD0kmKZrsfiLmgEcjAEhsiQGDJDYUBJM6ARYCY0ACVFy2EmNCAxoKQCKAwoKSoeWjWgMiAHyBu0akBgiAyJITMUBuQAwxlzpAGVoRFgjjQgMKBXobUb96rGvapxr2rcq9rqVeE4DobAEBlWrwrHkRkKgzCsXhV6yO6CRhAOhsAQGRJDZrh61f8+6Z/+y//3T3j2P7Y/MMy6pdOq02qwzt+lx+8wbyrHyfnBfeYT++RNpqXTqtNqw+ovUrDCtOK00rTytGYaaaaRZhppptFnR/Gx792nRrDCtOK00rTytMq0ZFo6rTqtmUaZaZSZRplplJlGmWmUmUaZaZSZRplplJmGzDRkpiEzDZlpCNI4u5SUacm0dFp1Wm1YekwrTCtOK01rpqEzDZ1p6ExDZxqKNM7BUY9phWnFaaVp5WnByylvDb84FazFaaVp5WmVacm0dFp1Wm1Y/VTYYYZlxmWmZeZllmXKMnWZdZkrtbBSCyu1gNQenwOEtMy8zLJMmWY8lomfPT45ifjZ49sPDEyYskxdZl1mmyZGJ8ywzLjMtMyVWlqppZVaWqmllVpaqeWVWl6p5ZVaXqnllVpeqeWVWl6p5ZVaXqmVlVpZqZWVWlmplZVaWamVlVpZqZWVWlmpyUpNVmqyUpOVmqzUZKUmKzVZqclKTVZqulLTlZqu1HSlpis1XanpSk1XarpS05VaXanVlVpdqdWVWl2p1ZVaXanVlVpdqdWVWluptZUa1ABfsKdl5mWWZcoydZl1mW2YEaIAMywzLjMtMy+zLFOWqcusy1yphZVa0DGk+6Gtw2zTXGMeQaiXiZw9Xi8w5mHKMnWZyMNj6oEx302MeZgo8WNWiTEPMy0zL7MsU5apy6zLbNPEmIeJ1B6T02vMP+ZoOS0zL7MsU5apy6zLbNO8xnw3wzJXamWlVlZqZaVWVmplpVZWamWlJis1WanJSk1WarJSk5WarNRkpSYrNVmp6UpNV2q6UtOVmq7UdKWmKzVdqelKra4kMKT7CzuGNEx0gj7Xk2XqMruz/i6NId1NDOk+b8aQhhmXmZaZl1mWKcvUZdZltmEiQjQ+XoIQH3qZcZlITR9mXiZSqw9TlqnLRGp9UtumiSENMywzLjMtMy+zLFOWqctcqYWVWlypxZVaXKnFlVpcqcWVWlypxZVaXKnFlVpaqaWVWlqppZVaWqmllVpaqaWVGqTiEcGFONDY3zDK4w0Db/EyZtew0rTytMq0ZFr9jeaxotHHK6w2LCwrditMK04rTStPq0xLpjXTkJmGzDR0pqEzDZ1p6EwDb9aPzz3x8vxYFMKb8yMYGq/N3SrTkmnptOq02rDwktytMK04rZlGm2m0mUababSZRptptJkGJsqhfxmM19v+US0W4vq3sliGg9l/1o+7xRIczJ65ftYNlt90TokvMy+zLBOpPSYEWHSDWZfZ5t9imR9mWOZKDQv8/WdY3tc5k75MWX+ry6zLbPNv07HMsMyVWlplS6tsaaWWVtnSKltaqaVVtrzKlldq2AjQOZO+zJVaXjWZV9nySi2vmsyrbGWlVlZNllW2slIrqybLKltZqZVVk2WVDcO0n0uLcQozLHOlJqsmMVb7Ua4YrDBlmT21fmQvxivMNk2MWJg9tX4cLsYszLTMvP62LFOWuVLDQhp+1qaJRTSYYf4tNADmSg0qALMsc6VWV2p1pVZXam2l1lZqbaXWVmptpdZWam2l1lZqbaXWZmqYSV/mTA0z6ctM6w/yMssyZf2tLhOpYU1zmtASmCu1sFKDlvT9C2gJzLJMpFbHXDz0z4KhJTB7aj1+BFoCs6fW40CgJT0gA1rSoymgJTDLMntqPcICWtJjGKAlMJGajBn6ZSI1HTP00EMFoCU9IAFaArMssz92eygCHrt9wxaP3b7lhsduNzFD7zvumKHDjMvsD/m+144ZOsyyTKRW5ryy775jXgmzTRNTTJhIrc8r4zLTMvMyoSVhTDwvU5dZl9mmiREAMywzLjMtE6Woc4oJsy6zDfOaYh5tTjFhxmWmZeJJO6eYlynL1GXWZbZpoq/DxENdz+mS9AVZLIf2SfawriXXYy65HnPJ9ZhLro8Jl/YlXiyyPpZ8K/FDXXVaSOWx5oRU+iI+rPN3jX4X59/k//14+n+5+vwo57XcHHo0vUxLp1Wn1YaFodOtXlOPuHEMnG711n5sDWDYdKtMC2mM5ebTemSkr59j0PcY/zitNK08rTItOIsPF+mrSjh/+Y9//+e//+e//vu//ff//I9/+ZeHk/Ef/uc//Zf/+v/90//4+3/8y7/95z/9l3/7X//4x9/+6f/5+z/+V/+j//k//v5v/f//8+//cf7r2eb/8m//5/n/p8P/61//8S8P63//bf36eP1TXLrTf/24fGM6OGdyXhfntH9kIOXey4aL9IeL+NpFn0IgE0eaDtJTHtJrB/WhUt1BTe2lg/zaQT9/ojs4d4q+ciAjB49NpJcerHosdbhI0kfdX9ejGq0ZHx0TFXm+uS0XSf5wUa3WHP0htbIcSHUXQ+IqRtKXxQiGjyJpdKnTXFUhTy6C0aX69TNokFLiSxdGr1SV2anyKkcRt4eaRzGqhNcejG4VezQoWvR8E5s+cvzTRTEyIWNw1aavMyFGJlRHXZ7P/NUc6dv20NftYfUKfcxx0Cv0aC9dNEvuHqG6l9zl8MpFPO62aQy32zTGu20aDcUMj5DtqVgiKxsP4XAXpQf8XEUp4WVRjO4Z62jUc6L1sn+bYtFkdouQXrap3hZvy0XqR0tewtmMp2CzxojEOUaoMuLzg9CqjToaRI6l32eX+6Bn1LZ6RqNWfe4ZyeihrV8HiCdqoZwkeSpLsnTnmANFI2mGu1XyMT3kc5LxslVSsSYnZSpXjfRMDH8+E5OhoOfKjs46zYGeR+ci1p9edEP/qHf7h1mWnI5jliWV9LIs2Zp49rXDSzlqo7L8OfJzuNs/rF7qV0G7RiRNAclCpflRI9ajXsrQsXPXiNom6J8+jL6KT0gvNRWu1fKnD6s0/cKpq7/X9NqH0VNrHL2s5vDag9VPw3zWRyMPlprGPBvl3LJbbVI/6B5eKSzhvhSWeLerm83ab01AUZrRKCVbVbqkMBrdq5S7DVvkdsOa46TH3GOcnK8Hr7Nhvinp6OTnHpfRR6189O1K+DhXwF76EENJc5v5KMfxulFsBatTfM6ZOs3xnxVMjE4qfe0SD5cUXz/jxHjm5zAfLjmE+p0PldFNc8362ofRMqeL0TKqieeEfz4pxahVzWm8bWiux2sf1ryyrAnMejqda8l/eqjWk7aNERcj949nH4aWljgqtKTjOw9tzjtCee3B6l1pZkJyeD3r0Gi9K8zxVkRe+zDHStG8pmHV6OdqSem5szE6x2nr8ULStdx9KJgjpc5HU240+/lREr0/UrTeHyna7o6UetwfKTXcHSmmB9dIMXuo5DWFk5Jf9/Oa774pWL2rhDnlKI+Uvxpt2s+ZQVn0MObW1VoYTWuFmdc149N7YK13R5uZixzGs+2cwhwvc2G9jcb+fcX13qTh5dtoC9YSbRujLSmtl4en0Wb5OF8Cx4QhPyayL32k+++z7XYvtWu0rlHPvfT5RcHy0cMxLx9Wq+jdTZBW7+6CtHZ3G8SuiTpHybkT8LIm+tftxnJJnbPRzMs2+uQkWvPzOHt5qvqdk3zMGsnYLnzlJN/v5/0D91/s6DKXrqP8USEfdHSZLRM1i9G89W5P75/h3+vqwVo33tDX+zdoKEgzlCNYe0Tx0LWEnnh5sTw5SdYcbBZG8VHYF06qxDC3NkownJQNfd3acPL1dVtCMk0bgjH6g/XITyGv7SIxnDRz/XiK2dk45CQ/bSQet5c6rc7a77W7OqvKd6O/zYZ5HDT7usOb+wu+0R/z7dFvbTvdH/04BPVau6H3np+VYT3041p/TonHnHzgpN/zdlVpPQwnVjctdVbJ+aQLr1/CgrX/tPY5uJOlVD7JSb/KduQkNiMn1uJtvwTnqpUjvM6LuWEcZqU8TQ6fBm+ynv+iaUqAKK3tP7WPOfbKsSJ1SjZyYq7tzynA40JHo2I3vPCHtOGNvx8Ice+VP+QN7/wh337pt1243vpNGTj/eD4j/gzEeo432TFXzbfnqnZ3r2tl/KCNgh/d3dqGOie8c0E6UwxPax/40BniIKqGD6uf9ps4rsLkQlEOT5VaLGXt8y5Ia6Q1nZ9OgjV255A554zh9bCzNqNKmXu3pbCTD2ZWsl669TBmVuZ2VGlr37U0mvc+dfhiTuITdbRo5MTQ1RznrlY+R+Fykp5zYj/G5/g9aMr6HN9kbkpNCciHEexVjM56LhjODi/H8XLLM1ibUuHoV2OPnVMawM+7nvbAyXOVKRUOwntWI2vjwN3nzbVMX5+3x57zuWnuS3mfm9bGlPO5ae1LuZ+b1taU87lpuvA9N+3+4WwXDRvaxdqecraLpg3tYm1OOdvFdOFrF/MFK8zJ6uNLl9dTAGt3Kpb5ghXNwW9uT7l7SNvQQ+pxu4fUsKGH1Hi7h5guNsx4c5hrCaUZL77VmqzmGaxUCtXHj2d3lfvP7qq3n93WHpX72V3b7z+7+7dwY33EmK9a20znZCfTFE8tNzsk3tqucg9ga7/KOYBb2TCAm9wewKaLDRIfZ5WmP+bNzxLfzDWauEJJW37ZLv1rybs9JB4bJgHxuD0J6B9u3u0h8bg9CbBd+HqI9fqtee53ayFhbc/ZUHMncHQyevl+CjSO1o5VWQt4Rbmf5vrkxFwFyHPB+KCAn2cndn2Etl5mQntZH+a3ODrjEAIvaeCbRHZiPb7nkkahUIafLtL9t7tofSHlfbuL1q6V7+3uTT6cAhJ0g4BYaytOAbGXvZ0CYu1ZOQXEdOESELuTOdfeorVn5V17i3FHT433e2rc0VPjjp4a7/fUuKOnpvs9NW3oqdZHfXODp9I894eiml9MOd92Y9rRP9KGdaqYbq9TxaQ7+ke93z/q/f5hPbZlZuNcrQive4i1z4R7pi85bJaTuKGb5bShm1nbVe5uZn6F4etm1tc17m5mze2c3cx0seGB6Xxvj9Zmlf+9Pe5YMo/WdpW7j5R0u49Y21XuPmJ+PuXrI6aLDW9lMr+wUY2v30KsrSr6aDJLTa9n/8X8ZDrQl5erNO3PGI9o7VU9IsL/at88tvzkxFpVTXWekZA5rik/58T6xKXV8WJ2mq+/NrSnEfOIg8fJ8q8FXvKGJZUdn1DFHd9QxfsfUcUdX1HF+59RxfvfUdlTgLDC/yN/HvfcQ6ytKncP0R1TAN0xBdD7UwDdMQXQ+1MAvT8FsMUsz6i3TIe1/BCzemx43TU/hvK97tohEZrmvgrtifyYiNR0/zljfVDlfs5Yu1Xu54y1W+V+ztQdK+Z1QxhgrLfDAGPbEAYY2+0wQNuFc/CaR7qtrUihHvKjm7UdawBtxxpAu78G0HasAbT7awDt/hqAPfx9ypyODUGA6bgdBPgmH75Olo4Nj/903H78908e73aydNx+/NsuNijIejM756L6UkGSeSzXkecG0cGbTPLBK2KL8zCIpq83iJJ9CN9o21r09YCxlkTKjIkuPNVNz9Wxo5uG+9007Oim4X43Dfe7qTmfcj7oUtwwi0lxw75/irf3/VPcsO+f4u19f9uFr3Gtof/QjJWN4/XQj7qjceuOxr09RU1pwxQ1pdtTVNvFhpHrfcBY21RbHjDrG758lNebw8napXI+YKxdKucDZscHVen+B1VpxwdV6f4HVen+B1V271jnl+SY2+vekTe8SaW84U0qZbnfuLqjcev9xr0f9W+eGjsPPCsiL08Cts5dS2V+85Mrf8L0fJqL9dA/5jf3j8uzyUn5wEmPfhs7dtFwYn745zowO1k7S74Ts00XvuOVk/UdlfN85WQNfd8By8namvKemu1vFTVaxeoeIa8NXeNchyRmcIrnk/tkfULl/OTedOE7qNmujjL3LpOY1WFtS+ncZTtN6utPHw3YTuo8Kv/00Qwn9f64tTaVnOPWcuEct3r/XPSktw9GT+YXVN5x624VY9ya3aPNuGVtNLP80T3MXSnfiffJ2lHytm3d0LbtdttW87NU93nPthv3Eel1xxnp9fYh6W90SKaY1falmNXQlojo60+gk/kZVcnrrBxa0nm+f8QW+DYnuufenzGnqhtktd6X1XpfVtsGWW33ZbXtkNW6QVbt7jGPHjj3g+V192hyv3tY21LO7tHuK7P59ZSve2Tr4ylf98hH2NA93K3ydfdYr8nHUb97IzuLOo8NPPLrPpbNE/98tyDl434/zcftfmq68PXTfGzop+F+Pw0b+qm/VdRolfKrCxg6P3zOZ6leLmBka0tK4jxWTnJ6/djP1qZUCzSbOl4+9d/Uh676qF/Wqe+GqWxfMXWsHfqQX/qwNqW8o9bck/KNWsuFc9SaO1LOUWue9ucbteYlU95R624VY9SavWOdbBt5FfYjH2WuGcaS0uveYYaRzuMxS5P2pY+5i2P62HAhW0637+kzXTh7erp/U19Ot6/qy9ZmlBx5dA7hHa0fPd38aMpzJ5uZjdLmMdBy8FmSP7LRdrxmZ2tHyvuane/fNWX3EN9ledn6aGpDy+hcASn88ffPlnE7aV86qfP0ltP82sm8ffZxgOmXTtoxt6RazF/21pBnRNzDTq97q93pvUtUb9zonJidtoSv3bR1Fkyl96HPhqDOPb+mdGXTzyHodtK+dTLLc5rlOyfn5gO10VENN3blrtD0EI6Qv22jSuf1VN5j/tDNPMTw4cbov/4n+uu3VjEDQ9fmirEiYb4NuC4FzeblON6XeNPJuizxnIFUw4nvjMqo2SjNhpUAub8SIPdXAmTDSoDeXwnQHSsBsmElwO4dsqYmNX/lI4VZmBSafuvjuO0jrQlOoqWAz3zMxj3dvfah9f77ke3D935kliXPeP+Upd738WUfS3FG3KRcX7et+Q0VTWzOpSdj8FsZ0Rl1c+57vpZC88Q/Z+PaPjY0roZVFmPgmjsix7xOIQSKhfqwUtcn/9XoZdYXVL7TC7N92F9b15YdxjTcykeea4mZL/j7UR3mM3vdH5l4P/TH7bP5/jpgK/ef2U1uP7Ob3H5mt/v7/7nd3v8vx7Hhme1uFUNPW76/Dmj68K0DFvuEPp+M2T3dtYZXjtu91HTh66XluN9Ly3G/l4Yt4SUl7Lh3Oty+eNquVd+6V7E+n3Kte9mV6l6eedc2zrfkN268r/5v3HgXi9648S4WvXPjXCyy+61zsegDJ+1bJ77FItOJf7HoXcfzrvL4xfrlVK/Yn1V5lmfMGVbOa5bGdzk/378eb98BWNLtOwDfFGVd/ZGNBR47H764ZjsjbZ1RG45oZCTfr9PbN6vZLjZUx/lUmyuAIVvVUX+zp5c83yXKOcN6nY1svtPMdys6bCseTw/h+/tXdi7mM4LfrH7mwuqjYU57c+Rj8v0u+kN36WA5vnPSynqKNw6f+cjJPEYlBA4l/KRS56QkN6tp66+6eDy51zOqhtdFqTtapu5omXq/ZeyRK/RqxPeOP49c8/sd5+Wfxb6iyjV2zXy0+YlYaH/sZeRPCjM39UPjl5sfTm5fUl3K7VuqbRe+J0yxz3P03Q1ZrO+qgujcez5t2gaXj5y4Lpgs5pl/zgsmi7WS6L1gspjfIzg/mS2y4YDqIrcPqC6y4YDqorcPqLZduD6ZtXuI807GYn1e5bxPsVhH/nkvDihqHk/pOwWpWJ9X+U5BsgvjPKC+WHtN3gPqi3lDlXfcmcfCeceddeyfc9zVuGHcWVtWznFnuvCNOy072kV2tIveb5e6o13a/XZpv6qH3gvqSttwlnppGw5SLW3DEVWl3T6iqrQNR1SVdvuIKtuFc+SaPcR3lrocW85Slx2n7cmx4Sx1OW6fpS7HhrPU5bh9lrrtYoOKOO9AE3uPxXccsxwbnv8SNjz/Jdx+/kvY8PyXcPv5b7twqoil7r47v8T6xMp755eYh/a57vwS83Iq59RdQrs/dRfzbinX1P1NPpwDJu6Q1HhfUuMOSY33JTXellS7kzlfqSRueKWSuKOnpvs9Ne7oqWlHT033e2ra0VPT/Z6aNvRUKxzadeeXWHtU3hcISTv6R97x6M/3H/15x6M/33/053S/f1iPbeedX2Ie/Oe880vyhovUJdcd3WzDRepSbl+kLmXDRepSbl+kbrvY8MD0vqda21QfvKeWDav/UnRHH6n3+8iG1X+R26v/tosNbyG+O7/EjFFx3vklYp6J6LqLRcxvZpx3sYi1T+W9i0WsfSrvXSz2NMJ355fIhmvURTccpy664Th10dvHqYtuOE5d9PZx6rYLn8CbUwDnnV+iuqOH7JgC6I4pQL0/Bag7pgD1/hSg3p8C2GLmu1lG6oY9Vam391TN54z3zi+xD5vzPWdq2/CcMS+n8j5nrI+r3M+ZumEnUszNKu/gtTarnIPX2qpyD15rs8o5eE0XzsFrFcV5FYq0DWsAemxYA9Dj9hqAHhvWAPS4vQZgu/A1rj38fcqs5gdWTmVW824plzK/yYe3k214/Gu4/fjXsOHxr+H24992sUFBnFeyqHUYoPNKFvsV0Xnnl5rvQ64rWdRaEvFdyaJhRzeN97tp3NFN4/1uGu93U3M+5XzQadwwi9EoOxpX7zdu3dG47X7jtvsaZD0rnXd+qblJ5W3ctGGKqun2FFXThimqpttTVNvFhpHrfcBY21RbHjDOO780h9sPGGuXyvmAyTu6ab7fTfOObprvd9Msv6pB3ju/NO94kyo73qTK/TepsuNNqtx/kyr3A6msL3ayHvPzQ038SdcHX0FlmR+WZs2vv4LSYu77e76CUmt3yvcVlO1iw3e2Z2PMA2eDWgfcmU5W46acv3SS5qLfuTf4+mIntZw4G8ban3I2jOliR8OUmQ+RYFWHWnu6bUaoPI5nevVl2TsniTaGS33pxNBUkXk1zLnA8Pp7brW2p3JcH+v/EWv7dFq9WttT59bHfAc5wsuz0NTcnXKdlqXmh1QlzzEjNFt+XtBVa2spHI1OlWj0Udfz4RS2m5DXxT3nYrm+dGN2We23cKONUza6rLlL5TssU/X+7T+qt2//MV34jjTSev/2H623b//RuuH2H3+rqNEqZu9wHZZp+nAelvnOx3Hbh++gS63eQ/xL/DIfrkM73+TDdSajvyyGD7MseX6Onc6nxUsfLf92PlwHf/p9fDlenAd/qnX4n/fgTzsjvoM/63Hc7mRvfGxoXN/Bn/UwTx/xHfz5JiOugz+r9QmUbypTzfuQnAd/mvnwHfz5dqIqNFHNLyaq1dqc8s52TSe+g3LsaarOm0BO83VntzaWnPOgan0A5ZsHmS5886BqbU0550HVCsb2zYNq0PvzIH+rWLpuvsTMZ3Zo7bWcxh1SaL3FOMNSTCe6TupXfiP7yImsO01Ea/rSyVoYlqrp65cyPv+zydcvZSuA6XxBK4Ybs17mMbOiOX5buWsxoh5iOIm3Ff7NHdPHkoH61dA51xDm2b3BeHqn2+//1dqjcj8004YqNZt2BoWcrRy/7PLhSHQeav56HSIUmhXp1yMnxIMmV8bIsY5lmvVClxDnp5Nh3hzrNLe7Hsc6vToLrVo7Vd6zoUwnznP7Nixp2qdLtfldZ2jx69OlfJFQ1dxpkrmJeOaYivOUD2tDNKa1r0K6+tnpUjqffOe61+udlZp/20no35+Mbla/dKLrVGRtr+ukFvMz1dm+Wb5z0eZBVzx//8hFOGhhVYrhxHqn6dckYdzlRpsrn9TputzsHDRGP7NE/txLWDekHcapXdaDQtbJX0KN254rxNoFyG26WLl4bEu6s6FrqfpcUtCX2bAuqEpp3jBP06rw9C5haXtZqly4p4dcn5xYYe7HrI506PHSiX1GzVp0T+mPbbPjKSflth5a7RLOLjYfVKfdXs4k7F6W5x6v5GT0VPMLhPnB7PnWKy9LYz4g4oxUEb5S8BMXrjo1D9vyPmNMJ97Hg/kt1Q4n7meM6cT7jFG5/YyxXDifMZYL9zPG2mTyPmPMOnU+Y+yPkL1CZH4J5Ro0bw6G8Yx+24Vr9L9x4StIvj/6bSfegbtFQmrdMPpNJ97R38Lt0d/C7dFvXpflHf3WXpV39Jt16h791rclQqdt00pEeCqL4SKn9elAootmnqdDb05Ccb4eWp9SOQeveYiJd/CaTpzjrh2/7cQ7eG0nzsHbrH0i3+A1XfgGr+nCO3ibdeqfc/Dadbpj8La5RNxKeTl4m/UtVQl53dfBJ+U/D177+AHf4G0h3R685mzXO3h3TJmbtWe1xYl78NonEDoHr/1JlWvwWi6cgze0DYPX+hrKO3jNOvUOXmstMy4nkavkx/C1vqk6tzHmszdQqPmP4WsfD+UcvlFvD1/zZCfv8DWdeEdeOn7ZiXv4mk68w9f+rso1fC0XzuFr7px5h6/1SZR3+Jp1umP4prUdmYK8PtqlWbPeXOdNV7nxjuSPp++O4WttNTmHb90xfOuO4ZvzLztxD1/TiXf4Zr09fC0XzuFruXAPX+vrKu/wzXnD8DVPM0vzc6KQaA3/6ZSZVuw7COfgpa0EEb+LMsc/RxR95kLH9s65W/Sdi36APdbuw3HfRfnSxawL+bYuZNaFfFsXOgui39YFu/iyLvgGxC/rQmdd6Ld1UWdB6rd1wS6+rIs6JaPqt7nQed5v/TIX7RhPg/ZtXbCLb3Mxr4JrhuSYJx96o/bs4xOdX0E1+4D92SwaYzWcmN+F6l+I8PP33HZhnKF2b5z44hhtJ844xjcHubk2UurtbdQ3LlwTSvOkMO+E0nTinQvW9MtO3BPKumEbtdXb26imC+eEsm7YRm31/jaqXafeCWXbsIHR2u1tVPsENueg0S17D1tGnuXEPWhMJ95BY31O5Rw0lgvnoDE/6nIOmnBYJ/15R00rO17DzPPPyjpYiiLun4+nOYtj3vc1r9lNgSPD5NmJ2Unowx2q2XOK9OTE0DSZR7FLSV+6mF+ICH2p8qGLY87wXubizZFycX6yd/zx+vCUDeuov1zaOnY8b3HSXjlxn7J3znmNXmZtUIW8LnPOqRrFydZ78vwuSwLNvn86sbpqiGWuXoR0tC1uQnxdueZKSlvV8vq8XvvUv7WG0cLLSfxZmnb3RcA+sc/77IwbVjCh5L/rxfv0fOPF+fgMR7wdAGD78D1AbR/+J2i8HwPwpmLdj1Dz+L5jSXXhO+aPp6wkK7R6vs9n+kzkaQyfLqyPq+YLcOZr2eVJB+xTBH2T6DMj+fYsOm149bSduMdw0t/24lcC04tbCewLq3xKYPnwKoHlw68EOW1QArNinUrwplLmBKXFryt2HtTStNxvHMOHPXbS/ObsHIrhSydxneCfDqtWN+xZ2U4e07Q51cr1y6yEMFvn3H4u33qhGVtqX+elrI81Cx3I96kXWR/V1/Z1idbwSdEskd7XpaL3danoDl2SX++2ad0tlop+WylOXTJ9OHXJ2TimD3MK6iyL6cNZFudU2NJY803Fq7H2O5NXY3VHZ9UtGqtbNFa3aKxu0VjdorG6RWN1g8bqBo3VLRpbf73bujVWN2isbtBYva2x9jK5qyi2C1dJvIv1lsCa2yhegbU3dLwC23b01LZFYNsWgW1bBLZtEdi2RWDbFoFtGwS2bRDYtkNgw/Hr3dYtsG2DwLYNAtvuC6y5ee8TWNOFT2CdIQRq3dG1YZXgTZiJU2BD2NBTTSdugX3jxSmwthevwNpevAL7xotTYN+UyCmwIdwXWNOHU2BNH36Bjb/ebb0Ca1eKT2BtHz6B9TaOpUt28Nv6qlLKy7tUbRfr0Fw+dOejkETfEXFvnPiOELQ/P/A9cPLtlvV+BGE27IYlkzcfyngfOClvGLkp73jg2F68D5yUdzxwTC/uB47txfvAsUvkfeDkcP+Bk8P9B07ecPDF49DT3+627geOWSnOB47pw/nAcTaOJW3m55k+gTVd+ATW+ZGoJbBlh8CWLQJbdvTUskVgyxaBLVsEtmwR2LJFYMsWgZUNAisbBFa2CKz8erd1C6xsEFjZILByX2DN4yt8Amu68Ams8xANS2DN4028AmsftOIVWN3RU3WLwOoWgdUtAqtbBFa3CKxuEdi6QWDrBoGtWwS2/nq3dQts3SCwdYPA1vsCe9yOq7Bd+AT2uB1VYR/+5hXYvGPTL7QdPbVtEdi2RWDbFoFtWwS2bRHYtkNg43FfYE0fToE1fbgFNh6/3m29AmtXik9gbR8+gfU2jlpHjt4uiu3CVRLvAayWwJpH43oF1j6k1ymwMWzoqaYTt8C+8eIUWNuLV2BtL16BfePFKbBvSuQV2LhBYOMGgY1bBDb+erd1C2zcILBxg8DGDbp03N70s114Nv3syymCzNtHY319w0WI6d4dSvYp+76Hjd6OMPGe9W+4sG9hcD5s3twH4X3YpA2fHJpO/A8b24v3YWN6cT9sTC/uh43txfuwsUvkfdjk+1/Kmj68D5u840vZmH+927ofNvn+txu2D+fDJt9eZXhzS43nYfPGhedh8+5uqXmNqNB1pu25Nop5QnVdByto1de3kZ5+rICo2uZpBi3wVYbxqURW1Pe6ybDxRYaPT5qfsnL7IoKiG84TCtHa+fCdBfbOx5wNlFLDdz5cB4q98+G7mGnD4Ui2E+8H2VH0t724P+u2vXg/6456/7Nu04f3saU7PuuOuuGzbrtivQc8mIt7biW4f62ZHDsuNjryjn6v7be9+EePth2jp8b7o6fG+6Onxh2jp5YNo0c3XKEpccsD3XqDc46edP9+s3T/frN0/36ztEMG0hYZaL/uxS8DLe+QgQ2fb8UNn2/FLZ9vpR2fb9kV65WBsuH66dDXe26OnrLh/mnbibffp0N+24t79NhevKOnr7DcHD2mD+foMX34R0+4f1XRm4r1jh7zqkHfbQlnccw5gee6BNuH776ENz5cFybYPnw3Jvh9lG99uO5MeOPDdWmC7cN3a4Lfx7f14bs34Y0P18UJtg/fzQl+H9/Wh+/uhDc+XJcn2D58tyf4fXydD9/9CeYttN77Eywn3vsTQrLON/NeoHB6sa7U8t2gYBbHe4OC7cR5g4LpxHmDgh5691XNduF6VXvjwnWMZdhxoG3YcaBtyuW3vfgnm3nDefCnl9sHwts+vJPNvONI+FTuHwn/pmKdk001Dwp2v6qV+4fAxrph9MS6o98X/W0v/tFTduwWJLm/W2D68I4e2bFbkGTDboFdse5XNWtpwHujQhLzdkvfjQrJ3lby3aiQxBg/vhsVbBeuGxXeuPDcqGBd9em9USGptSLgvFHhAyevb1Swe5nzRoWk1uPCeaNCsja2vDcqJPM4QPeNCp+4MW5UqM64KOtGBesDEueNCsn6qsd5o0LecY76nqljzb/txf8IrTv2ClK9v1dg+vA+QuuWvYIdJxTaFbvjRoV81HWpOknBjy3D1KxAXNeNCsna+XDeqJB3hBGldjt4QMuOe8nKjtCb1Npve/ErQdsRPJCP+8EDpg+nEpg+3EqQjw3BA3bFOpWgWGcpxDorJR2ZJn4hP5fHep7XOVkKlWKu81NcYksbxnEOt3f/iyUF7hC6tmPnMYf0217c49j24h7HQe6P4yD3x3GQHeM43L+b803FukPodjwFc7x9O6eEDU9B24m738fy2178oyfuWJDN8f6CrOnDO3rijgXZnDYsyNoVu+MpmNLcDjm3o8LLp6DpJB9r+/+QaDxKrR2vPV6klrw2iVaB5BMfbV67Ji3qlz7W4lYrr33E24flv/Hh+6bFO3CsDyjDjpMzwo6TM/KOUwpNJ+5v7d54cX5rZ3vxfmtne/F+a/fGi/Nbuzclcn5rl8v9D7tNH95nRtnxYXcuv95tvd/a2ZXi1KVy/8Nub+OYPoLcL0uQ+2VxTu2t7wbNNy/v98z2O6BXY3ccVGg68WusbNFY2aKxskVjZYvGyhaN1Q0aqxs0VrdorP56t3VrrG7QWN2gsbpBY83lR2dZTB/OsjiXQa1rn8qOa5/KlnnsjrMKTSd+ja1bNLZu0di6RWPrFo2tWzS2bdDYtkFj2xaNbb/ebd0a2zZobNugsfcPTnuz2esri+3DVxbvprOlsXnH/dB5x81PZcdxhaYTt8a+8eLUWNuLV2NtL16NfePFqbFvSuTU2BLua6zpw6mxpg+3xpbw693Wq7F2pfh0yfbh0yVv45jaZsakOjXW9OHUWGdsrHk/9Iazz94EUXs1dseJhaYTv8bGLRobt2hs3KKxcYvGxi0amzZobNqgsWmLxqZf77ZujU0bNDZt0Ni0QWPz/T0v24dTY/PtPS/74yqvxoYd9x2VHXteZcueV9my51W27HmVLXteZcueV9my51U27HmVDXteZcueVym/3m3dGrthz6ts2PMq9/e83nx86jlf8o0L1w2m9ifBzhtMbSe+G0zfHAvifOYc7f4zx3k8iXnHXtsQZ2GfY+N95siGw2FNJ/5njuw409j24n7myI4zjd948T5zZMeZxkXvn2ls+vA+c3THmcbmKbF7uq37maP3zzS2fTifOc7GMc9FbvfXp20fzvOZ2+31aft8O6/Gph2XlJinz7s7a92isXWLxtYtGlu3aGzdorF1i8a2DRrbNmhs26Kx7de7rVtj2waNbRs0tpX7unT/kpJ0+5KSNyfVOpW+3o/28J6Ya9XosUPpjx1KL2HDJ7SmE7fSv/HiVHrbi1fpbS9epX/jxan0b0rkVHoJ97/8Nn04ld704VZ689ajPd3Wq/R2pfh0yfbh0yVv45japvd3Im0fTo3V2zuR9pUL7luYdkTUmU8/d2dNWzQ2bdHYtEVj0xaNTVs0Nm3R2LRBY9MGjU1bNDb/erd1a2zaoLFpg8amDRpr30njmU6/8+G69K/cnk7bLnzX7ZXbk+k+xG8LvexYmpay4fRt04lf6G0vXqE3vbiF3vTiFnrbi1fo7RJ5hb7cPzTe9OEV+rLj0HiRX++2bqEv97fMbB9OoS+3t8yKfcZqa/OEgnAcy4184OT8YVtOqE7kuYHNbtLqQVn5zksObVyLk2PQl8VJO+ok7agTTTvqxLzyy1cnZgRpK+uAcT5oRI5PnKwO23jX+9mJefLDWQtlyslBT42P3PiOSrBduE5KeOPCc1BCtibA3pZ548TXMtk85tXdMqYbX8vYLlwt88aFq2Ws8+dLm8djnWaj2kifOInrwMt8vHRiHiUa8zzoJOawZuJPPoJY5xiG3NbUhk4J+unECtGaZ5rWtPJxzpo+8FHzkMQqwfJhHbF1tHmacDj49rRnJ8bidpUhq7WplRHztCKdc3qlU3zT922jL9vG7iRpPiXOTiLf+SjzvoRYUjL6iHWicFvvjU3at05o8L12Yp566+usqZpLWVnXK042Lm6w3Rw1zCOnj5q+dtOUZjakBB+60TRPAz5Uwtdu2noxqEc13Fhv5xrbnAbL62fXB07at07amtS3Yjixm5pel2p6HRz4RvLrXHAo9IL+PIjUOnOIbx16qZHmeevadB4w3lgkkzznwzxWmA5cz80oTLn//FLzIEPf88v04Xx+aaj3n19qnWPofH6ptcflfn7520attjHPSJ7n4YfWXj98NKbbz413OZlLL5GvUvqZE6NO0mzhfJitY50h77x6yM5JDvO4ZklWh81mhz1Wh63f1WsMYU5RQn09j1Vrsd9br+ZXVKXNriZHNnq9ueXmqldTX2uY5+HXQA38rK/2c8v5CvnGie8VMtmXNHtfIc+a1d/34zxQ0fbhO1DxjQ/XgYpmcJOuDZ36WmHb/bdINdfFvE9h66sW71PY8uF9CmfZ8BTOev8pnOuOp7C7bfS7PuJ7iTRdON8hzVOGvO+Qb5y45gLW9MjXU2Pa8QZpenG/sr3x4n1j2/HCtuN9bcfr2pYHll2v7vfyuGWtIW5Zaoi/XiL/QkPc0WvNbw+dvdbvo33pw9dr7Q9Uvb32TU9xrlTYswrnQoV1dqFroSIaD+FzLWVIfdJGd9KEH9mwbpeL8+mXEs+QPvGRZgRBSvX1dNH8jMu14WfWh8zXtXO1qhj1Ya1l1SPPpx/19vA8Bbcu62rzI9fWvvYxG/fs7fGlk9juNov1trcuzpVIgSFH83uYU1a+I+/Zg1WKUGYYUih8bP4HNRFyXLPEmF76OJvEihlocTbsaVPTPr/93u3mlofHzV0zF+fCAA385zux1NqS8g5804dz4LfbO/3JvJB1LiicZn3lod7u5/VuPzff/5393PTh7uf2dU2+fm7tzsd4zJeqSH00huj3UWalxlJe+zBHS87zXfW0qSw/Rks90u3RYvvwjZZq3sd1Xz/+qJHC64nxOfzCaBuJs30lcU/TL33ofR98ic+zD2vqMV94M10GG0NxeyhzqeuPMMxPPOhcLMvHaw/WmsxcEK1Fv/Mwb0msHDj5nQdJLz1YR+XlNIMMc6qvfZhLXOvC1SihvPQRqrVdFWKZWhrpxecvvLS7fcv24etdb3y4+te7GqkzaDnyzVA3vMi3XtIx3+PSUb/2IisMW9O3XspafSj563pJayUzH2WLl/atlzwvyH5cjPW1l3UfWRb53ssqkX7dd/OUx5Dr1y2d53Xd53Tt+HYsljq3NfK3Pmqcy7zpax/H9JFv+5Dj63zMjQCxR7Lho99DBR+p3c+HoZGl3FV7y4NP600PLqW3TnHz6rzfh3znw6nxtg+fwps+nPpuzmuargvca/3KR5K57Hiar3u5PV8uc0NU9PV8OZhfl7nWLs1s9LVAZKMeycqGtYRadDSMsoSF+uzEillJdb2V8W7mj5xYU84Vx5N4ue6nE+vtPRx5bYbwZ0dPBTJrts4lgFj/eGn+4KWqzsXH05SXPuzXzNVJTtt88RZ772CugwZyos+npBhjr19qi7HHQQDPGbF8lDQ/5SqsI88+NJrPlxkXr/w52Cc+ZHa0P2IiPvLR0pyANL5D9MmH2bzlmC/ej5Ur+dbL+lbotOuXXiIFAZyCb3Q163CEMh9ZwvPvpzU824dvJfGND9daoppn9lb6BqsdL6OAquWlhTmdacFYrzJ9xPkMbzHWb9arSqVJd5Mve9o5tZxrmsKBL3/RR+r9dUDTh3MdsB6/ug74Z42E7+u1LC8xfuklzE+GTjtbI9i6ZsjbOqYPb+v87i7PnzVS9OvWyeTltb5aNeLTNNODb3fELEkPGr5KwveS/+whLd7dK7J9nLKYZtuo0CTrMy86470e2+vhWy9L6ZXj6D7pa1VXL2np9Y6idZFU0IPKc9T2lZcYZ5RyTAe/AafvfIT4nY8yQ4NjkfCVjzP/cb4U/LHm9KePdj8MwHKRjzBfPfnci/B0DIHpI8xXz1Pb8ksfoVmbV055tn345LlZp6H75NmsjzgVIEeehv+sD2tz4JyZzUUB+tz+pxczTHpGrZ3zmpfvwG8ysg6qaPx282Fx1vvNEev3XmbU91G+r9o2g2kPOV53euu9Mc1Ai5wsH7efne32s9MqhzeywPThjSxoVmixN7IghGRtdM7QgspZCc+LvS3G+1pk+nBqkXmblkuL3lSI0NavWhVyOxAwmfI+JwAp8ZvADy2yLilzBuA1K97LGYBn+/A9eUMsG3yYq4Lr9TdmrtXnbpas2JO1Pkn7RfrkIm6ICrKdnAtfc5JYKp0qlkL7xE1Na02g5va9m6WMHLLww415FN+Rp5fjj4Dvp/FnRSaf6yQzpvj099qJXaD17fLjRO/4Zb2ce3nrheCgOeMPN/2r0d/288c3lEle143tJab5WhDppe0vvBR7aW2trMVvvaT1MWbmjzE/80KRXIUCXf7Cy4bD3e3KXftsMVWjcs2bn5wfc1l14lyANV24Zlx2SZxTrjfV4Z1zWftbbt22FrS8pxk0c3/L+R1lK0ZvdX5HafpwfkfZrM1Y73eUzdrccn5H2cRe0fJ9R+lvG2PomZ3EeZhBk2JuTrkOM7AC9WWdQCd/fByePnCiRxg9TflAhI+cuA8zMJ3UuS18rtRZTuyjCtfM67TpKSrHB25OxVrPv0x7bZ+6CXm5ycbH7nb1zu9uRXP8to2cd9JVc0nJdd5Etb/Mdh03YfpwnjbRzP0p32kTfWfemIn6Tpto9kdhvlo1W9d3beGb7nok+jSUp+ef9fpQ1uAJ+vUYDOvc39OlMXjMaU6ZMyUO1v5spjQj5jiS8WgfTYVnPkLSryfU+VgfNcSwY1pueXnz9nSsrbs/Hh0/ptQbPtBqGz7Qai39rg/nKtebd9t1xK3wubJ/Ua2392ZtH481h5UVq882e493bWnyWtdnXmqZfbaWr/PS5hZgPI7wpRf3IoadF4oc+1Oy//RyZjTdf1F/48X5ov7Gi/NF/fQiG17U7cqd3T/8sf72YbX4RPtdtfhE+4MmskQ7HPdXaq11eC1zhn1u5/N2XvlgMT+sb6hSzP/7y8V8l2bHI9z+1DBYLqrM+XnlKzl+1ojcXtExXfhWdMzj/rwrOvaZgb4VnVNHw45dNGvZoMy95yjpddNA0m+uC51OvMt+r9eFTifl7rqQ7cO3LnT60NvrQvEw98Bc60Knj3Z/XeiDtlGrbdLthaF4pB0nW9k5cZ1yGQ/rKmDf+/Hpo9xforK9eNeo3uTFuUj1xotzleqNlzIffyLHYXjJ9qHRdMxPi6/f19/6cS6avfHjXjV768e5bPauxX3rZu+8+BbO7NHkW+Oxh7Vz6eyNE9/a2dlC7b42lOP+2pmdE2+92i3sWzx712u9q2fv/HiXz9768a6fmZNK3/qZPS/1rJ+1DVEqhxkKlWacaiwcUKUfONH55Wpqf5y+9YGT8w07z+FT2ksn8ZD7oV3Hhp3o4/5O9HF/J/rYsRN9bNiJPttlw/lZ4c2H/CvKPOjrfhbMWKa1Qtsyv6nnD5zo/AY//HFPwJOTeFgf4/nC3U4fxpPLF+72xodTSKxHeRBdF4iJhtcNbJ6YMheFsqb2XdtkmV+LZM1m29QNbdM2tM0GkTdvXyjzcRXPOZ8hrXVDb60bemvd0Fvtz/rXKeePKderO/OC7JnZm7vHc636XHXjPv88z6rmidppfrOi2XjNNjcXvYsx7f4R0qYP72KM+bWXdzHG2rvyLsa0vGMxxt021mKM3UtmtPiZlfydkxRmec7dN/3ayXHfSZI12aPAw2cnp04415ZK/DYnK8Y6ta9z4joE/oPiWEtlZnHyfJYn3lb5mZPy6zmZF3uncyNtg5Nvx875ZqHTSVWjTsz4gHWQtUZLUcys6Nz2TSqvxT5Yt5u6e5vtZEcba1jFMVQpmHcYHUrrA+Xrmp0fXKRqdDfzzd65DhSCblgHMnPijKF6M1NaZ9qffebVK3UM0V7Woo82+G7uT7w4dyXNWFfnplWI9y+FOZ3cvhTG9uGcJ4V4/1KYaH6o5JwnhbjhUpgP2sZYvTE7iXPPKqT70hisG9PdwcyWE3cws5kTbzCz6cQbzCxb9mXevbx5o5DtenFGIdtOnFHI5X68bNHbWym2D+dOSrBudvI+Qe3PcLxP0Jzu12q7v5Hypru6o5BlyzbKOzfeXZQ3a4br60l5fQxKDObtMKLzTLOHl/KVF+fcIm344tc8j6WtJfsWjY8mrasAzjoYPU6lvv7O9qwR6yp3SeNJWoSDS//MiH0TAH12yadnxvaBE53Pr3OV63jpJJqjcI+X8/3tWF2tfutF12VTfJzRTy/WVpfOh6nyBtFHPugSzFK/9HHu6q14Cxp9f+HFijj0Bbi+qdi29iBatPqbMXpKnfGT5yrxenC0D3zIOiVKhFq4/aiSdneHOJghCWkef5mScqTf0wJ10HBfCawp9VmpK/ZYePH/x2PQOoqzzGNZzhcveZUT08Xamz3N/J0LV31YW25uZTSduDVN62978Suj6cWtjNb9WV5lNO/gcipjDTuU0TpAz62MZsU6lTGGtENNrM8lfaMnWrHUPhmwXbhk4I0LX0HafRmwnbgHcEu/7cUvA6YXtwxYn7t4ZcDy4ZUB87MbtwxY0V5uGTAr1i0D5jnUa2GL8lHCny6iGe2V5gtkTvx1SP7zvKiY8ob3nGgFODmHsXkLnXcY21fZOQdgPH7di3sY2168wzhan2c5h7HpwzmMTR/uYWw+Q73D2K7YHcO4zZXLVooxjK0NphLmzmoJWl4PY+vVzz+MrSAn5zC2ghTdw1h2TKej9Z3XHi/+YWx6cQ9jc7/LOYwtH95hbH7V5B7GZtSWdxjbH/M5h3G2espyErlWfg5k6xy7c519Po//OA/+eSBbi+X+gWx+7OUbyOYtgN6BbDpxD0FrUXiPF/9ANr24B7J13a13IFs+vAPZ8uEfyNbwcQ9ks2J3DOS0ds5S4ItMfgxka9sr13mAQm68efY8kHXLQM63NxCi7hjIumUg5/bbXvwDOe/YQIjl/gaC6cM7kMuODYRYNmwg2BXrHcjmLkRa11UkurWylefimCdz0vHwqzAiH/goUwo4EuZDH/POjELXGn7mQ+ZxA3+cUv+1j/Ktj1kf8nV9yKwP+bo+dJZFv64P9vFtffBVft/Wx7pTRb+ujzrLUr+uD/bxbX3UqSBVv86HDkGs9dt8tGM8I9rX9cE+vs7H/MitWRpkblJ7TymwnLgPBojWFoiG2TTK15H9hRfz6zL9C11OKX9QHO8X+LYT58ENphPvuQ3WLpdzM8Z04duMqbf3qGPbEK1iO3FPE2v9bS/+yWbdsScb2/09WdOHd7LZduzJxrZhT9auWO9ks23ZA2n392Tbjj2QtmP3Ih3Hb3txjx7bi3f0JOucO+foMX04R4/pwz160obDDN9UrHf0mCe5r9ETha8qb/k5K1aUVZhHCqSQebb15MTcXuIvU/j+Z312YqibzDM0hA/z+MjF/PZB+E7ez1wcc873MhdmZZR+Vhv06PjjveI5G9aKQJkfc2U+Q+OGk/bSid3L5qcgUemA1Z+9zD79Yh1ckVM1imPFFB7zsyMJfITGsxPza64Q503yIZxDY4ubEF+6sVdb2qoWGjdPqy3J2pSlRY4WXk/qk3mZl+vFIIUNq522E/fDL+pve/E/QuOOMIKU7ocRmD68j9C0I4wgpQ1hBHbFulc7rQXC41hSXfg8neO5PNY3s/MNP9OnE88rpsmKn0nzhThHXjV50oG448OJlNrdybTZSdxKkLZMg83bnbZ48StBjjuUwDrp36sElg+vEpg3DriVYMMVXm8q1qsEdqXMCQrfaPuhj3lCSdNyv3EMH/bYSfM7rMdc90snsc7QjHRYtbpjY8t0EvothtdUK9cvsxLCbJ1zs7p864VmbKl9nZeyPkEsdMzXp15kfS5O95Z/WqI1fFK0SrThg6604YOutOWDriS/3m3TfKENqei3leLUJdOHU5ecjWP6MKegzrKYPpxlcU6FLY0131S8Gmu/M3k1Vnd0Vt2isbpFY3WLxuoWjdUtGqtbNLZu0Ni6QWPrFo2tv95t3RpbN2hs3aCxdYPGmivlzrKYPpxlca7YWz7MDRWnxr7Z2vFqbNvRWdsWjW1bNLZt0di2RWPbFo1tOzQ2H/c11vTh1FjTh1tj8/Hr3darsXal+HTJ9uHTJW/jaPl2L99XFtuHryzemAJTY48dGrtjrSCHDZ3VdOLW2DdenBpre/FqrO3Fq7FvvDg19k2JvBobN2hs3KCxcYvGxl/vtm6NjRs0Nm7Q2HhfY+2QuPVxJt/A91FU3Toklg+h+ShQ0XmPjO3Eed2Q/bGC85lT7ret96MJy4duWDt583WN95mTNhxMYDrxP3NsL95nTmo7njmmF/czx/bifebYJfI+c/L98zRMH95nTt5xnkbOv95t3c8cs1KczxzTh/OZ42wcU9vMLzudGmv6cGqs8wtTsz52aGzeorFlR2ctWzS2bNHYskVjyxaNLVs0tmzRWNmgsbJBY2WLxsqvd1u3xsoGjZUNGisbNNY8BsOpsaYPp8Y6j+OwfJinpXg11j63xauxuqOz6haN1S0aq1s0VrdorG7RWN2isXWDxtYNGlu3aGz99W7r1ti6QWPrBo2tGzQ23I+zsH04NTbcjrOwD5bzamzasQeYdxxiaDrxa2zborFti8a2LRrbtmhs26Gx5bivsaYPp8aaPtwaW45f77ZejbUrxadLtg+fLnkbR80jTe+XxfbhK4v3kFfbxwaNtU8DdmpsCRs6q+nErbFvvDg11vbi1Vjbi1dj33hxauybEnk1Nm7Q2LhBY+MWjY2/3m3dGhs3aGzcoLFxgy6V23uAtgvXHqD9gbTMCzgj7QH+OJSumNfazO6+GjY/F6TejzmxfTifN/V2zIl99YPzefPmEgrv8yZv+BTRdOJ/3thevM8b04v7eWN6cT9vbC/e541dIu/zptz/gtb04X3elB1f0PZr73+327qfN+X+WoPtw/m8KbfXGt5cjeN53rxx4XnevLt+ad6bKXSB5/P1S0XMY6/rOnBBq76+fvP0Y4VI1TZPOWiBL+7784bVYDbNurev8bV9j0+dn7Jy+6qDYMWuOG9gMl34bmAqt8+IDrLhvCLbiffj6KLHb3txf2Jte/F+Yl30/nlFpg/vo0J3nFdUdMN5RXbFeu+ma1bYp/eAgqK3DygIVkC7e/S0HWejlxp/24t/9NQdBxSUev+AAtOHd/TUHQcUlLrhgAK7Yr0HFFh3g/sfou3+SZPx/v1l8f79ZfH+/WVxx/1lccfJ6mXL0YGmF78MtB0nFslx/33L9OGUAdOHWwbk2PG+1bacWBQ2PETluH+7QckbRo/pxNvv5Wi/7cU9emwv7tET7n8hY/rwjp6w4wsZ2fFhl12x3tFTzSUP3+0GEu7fbiDh/u0Gtg/f7QamD+ftBm4f5VsfvtsNbB++2w1MH87bDdw+vq0P5+0Gtg/f7QamD+ftBm4f39aH83YD24fvdgPTh/N2A7ePr/Phu93AjCT03m5gOXHfbiBpx+0Gku7fbmAWx3u7ge3EebuB6cR5u0E6bq932i5cr2pvXLiOlDx2HC577DhcVnL9bS/+yWbecbuBlPu3G5g+vJPNsuN2AykbbjewK9Y52TSPiPa/qpXbtxukmDaMnrjjinWR47e9+EeP7NgtELm/W2D68I4e2bFbILJht8CuWPermrU04L3dQGTD7QaiG243EL19u4HtwnW7wRsXntsNrHvrvbcbiG643eADJ6/P8bd7mfN2A9ENtxuIbrjdoDfhy5y4bzf4xI1xu0F1xiJZtxtYcXPO2w2k3r/dIO840zxvefhV/W0v/kdo3bJX0DbsFbQNewVty15B27BXYFfsjtsN8lHXvegkBT+2DKXdvt1A2v3bDfKOq8Kk3b/dIOsOJdgxhvWIv+3FrQS2F68S6HE/eMD04VQC04dbCfTYEDxgV6w39Ma64/2cA41KSUemiV94eo6qdTVWqHOyFCrFOeenWEDzIlPvOFbzziNfEJAVx+4OAjKduEfglluPTC/+cWx6cY9j61MW7zi2fHjHsflJjXscW8fZucexWbHeJ/qxY0lJN8TOHBuWlGwn7n4f62978Y+euGNBVtP9BVnTh3f0pB0Lspo2LMjaFbvjKZjS3A5JieL7n5+CppN8rO3/Q6LxKE31t71ILXltEq0CySc+2rwCTVrUL32sxa1WDB/3v2+zffi+I/EOHMvHseH7tjcK6/y+Ta0XDffgs5y4v29748X5fZvtxft9m+3F+33bGy/O79velMj5fZta217eZ0bJ958Zlg//M6P8erf1ft9mV4pTl8r988q8jWP6MKfUzrKYPpxlcU7trW/1zDcv7zfE9jugV2NlR2eVLRorWzRWtmisbNFY2aKxskVjdYPG6gaN1S0aq7/ebd0aqxs0VjdorG7Q2OP+PaK2D2dZnMug1h13ecPZa2/Wy70aW3d01rpFY+sWja1bNLZu0di6RWPrFo1tGzS2bdDYtkVj2693W7fGtg0a2zZobLuvsfZmr68stg9fWbybzqbG7rirOe+4f6kfCnG3s5pO3Br7xotTY20vXo21vXg19o0Xp8a+KZFTY2u4r7GmD6fGmj7cGlvDr3dbr8baleLTJduHT5e8jWNqm9y/R9T24dRYZ2yspbFxw3rsmyBqr8bGHZ01btHYuEVj4xaNjVs0Nm7R2LhFY9MGjU0bNDZt0dj0693WrbFpg8amDRqbNmhsub/nZftwamy5vedlf1zl1dhjx31DdceeV92y51W37HnVLXtedcueV92y51W37HnVDXtedcOeV92y51XLr3dbt8Zu2POqG/a86v09rzcfn3rOdHzjwnWGsP1JsPMeUduJ8x5R+1gQ5zMn3L9H1Hs8iXnmZ77/zHlzjo33mWN9V+UevJYT/zPH9uJ95phe3M8c04v7mWN78T5z7BJ5nzlm/LLzmaP1/jPH/OTM/cypv95t3c8cvX/3pu3D+cxxNo6pbceG9eljw/r0cXt9OsYdd4PEHXeD1Lajs7YtGtu2aGzborFti8a2LRrbtmhs26CxbYPGth0a245f77ZujW0bNLZt0Nh2X2Pj/btB4v27QeyTap2n39f70R7eE3OtiDrzQGNvRJ19tLJT6VvY8Amt6cSt9G+8OJXe9uJVetuLV+nfeHEq/ZsSOZW+xftffps+nEpv+vArffz1butVertSfLpk+/DpkrdxTG3T+zuRtg+nxurtnUj7ygWvxsqOiLqWdnTWtEVj0xaNTVs0Nm3R2LRFY9MWjc0bNDZv0Ni8RWPzr3dbt8bmDRqbN2hsvq2xb66kcd18VO6vkge5vzZt+3DecSe316bDjri+sCWur5UNx2+bTvxKb3vxKr3pxa30phe30ttevEpvl8ir9HL/1Pjm7Prl23z4lV5+vdu6lX6DLrUNutQ26JL1WYiUedC6rHNg4vGJi9ymi/zShRUD7suE6cGVB/MYtX7vD7T1j4Ebkt+HtHkKBl/V95GPujS+HeUrH+ezYZ5yecTXZQnN2udOx9ykTkdNX3rxnUnwxofrTIJ3PjxnEtgH7dHZkPn4rnX/8JG/9BGXj/S6XWKzVghTbKO/pxTyi/p44yPNh11KVV/70N/1kcMsS47hu7adZ0JG5eNePmqXeR5r1PalgnA+vvVR58z7NL/1MecOto/bql5vq3qo5jec/T7w62H9Wjve+JinG51me+3juP2gtX246kOttzKdtXGubdEk6ukISNvH7KOn+aWPuk4NrtQqn/moMx+Vb734yMd6S+VrFT7zMcfK6e7LfLQwethpflsfrSwfr9vF+roilzXJPt9k7vvQ/J0Pma/LWcrxpQ+dTwU1+pj10qFr2J69/vUBa+kw96/KnBeeBaO1EPkoJ66j3s6c3D7qTazj1ZwnvcmGI9rOsvy6F+9Bb2+8OA96O6fjtw96s334XthtH94X9tPL/YPe3lSs86A362QL/yA2P9VyDuI3OXEO4nj71OK64fjyeuwYfin+thf/IE5xxyBO5f4gTuX+IE5lxyBOdcMgThvOLLae5uU41j0T8fUsK/WTFF96ifMI9BLpFpFzuvTkxFpK0Lii92nt+8mJXZq5/FcObVZp8o7SlN8tTZhnwp/md7PGksIsS4rpOx9x5SOWHT70Sx/zOr4/2+UjHzrfCKJ+Xaey6jR+6SMuH/kwemq6HRf3xodrxdwtrIaPumEjr27Yx0tHaRuk2XLi3cd758W3j/fGi3Mf740X5z7eOy++fbx3JfLt46XDuoTLO6OwfHhnFJYP/4xCfr3bOvfx3lSKU5VMH05VcjaO/V1juF+WGO6Xxfn+afgwVwecCmuvUngVVnd0Vd2isLpFYXWLwuoWhdUtCqtbFLZuUNi6QWHrFoWtv95t3QpbNyhs3aCw9bbCmh/1pzY7Wv5jX7586aN95yPPnZOQU/jSx1ouySLf+lhl0eNLH3M57FTG9KWPeetjKIeRD2tVvNS5npa/87Be+Fr60sN8/W35pgc5vsyDzv3Fo37loX/iDw+p3c1Dft2a1mXNvtY0Pbha0/bgaU2fB6s1TQ+u1rQ8+FrTmQerNc135Txng7ymE8Oft4ydM0Xr0kJXtMsbH65IldNH/V0fvmgXOxh5Pg5j+kO7n+vUmumXuVou4Xi1bGhmI6+AGZ6n/EU20v1F0GDtVTkXQc3SlDg76rly+LI0to8ya6TI6xoJ1bwHsuRjeinHl16cgXt1Q+BevR+4Z15H5Aq9MT24Am/S7fCfdDv4xzzWrc3pVmu8+/i0g2n7WDPpxicXPfkIqmZE+DGvgD1tep/9zI+zj9o+fH30jQ/XhVfWJ0hHpVe/mowzoWwvM47o4SW99GJt13n7ie3D209kUz+RDf1ENvQTud1PDBHIaz5F737hdOV0UObGf1F6VpbmdbAiGM4K+crB/LSs8j3ypXgd1BmH0Q556SAF661x3UCdKEIt1fTswzrbYE2iRC0fvnzQ+++zD+tjvzSeK43Cyf+iMurdgriaVChmOehzJsTq2WEG/FFNPPuwMpFGJpSWAf4iE1YI5WqPcw61vKQfM1JryzSIyowjoZe3v/Binma3ZnGJVhSTto+8zLzExDr8oZe2luSpif/Ci1UvOsXnIZNWvdQt9VK31Ev99XppZfaXRqu+H/Y69qLxey/zgdvqtyMg9i0i1MtBK+o/vagVwXTOueZ2hWour2czb/zUY/nh5/9f+LEOU61t1XCgcS3xEy8rei9IKV96qTqaqdJj+KcPu5Vmj4lHtXqMdWbgJ61k+/G3Uk07Wsn04m4ly4u7laxnUp67bSXz8/lnK1kf9OT1aWJJ8Xsva2XBHNdvPrWcHxeV9nVeZN7eHIXmPh97WZMffpp86GV9PCrt6zbSsD7+yvV7LyuiVsLXXlaJtH2dlxrWZ2Q5fO9l9t1aytde6vxssrb0rZc256mPg0m+9zLr5Xxsf+1ljaP29ThKcb2DxPpt7Z6TslEvKcdvR2MqMwg0lXx8O0PMSxlykG/ndvmIy4t+O3P25yXfz4v14j9jAoS+CD9T9ToI4cgrBIWjE54Wyc1X9zSfh/yi6H/blRljoa9+n6J9gN+GYszWqBTV8DMb5qEJcyGIA5U/cjF3T86nz7cujvnOnL5oj1p1PLFOkzKR/as5NdJyTnjpIkXrXLlMW7YHRXic798feCnH3FkrIR2WF/OTljVYlaKu5ZOchLxywgt1H5VHdE7wRfX42suMWjm73NdeeAmWvxp+8mIesCV1dhV6N/2gt/3pQq3eZsVG1XmKQ6g0UcvxowqJq0JS+7pa61pR/mMMP3tJ8X7j2F58G9PvyjM/ezjLo98O5JjWnnCxhk+6HzRg+/Bt+MdUf9fHjrYp5yrBrFWxhCDvWS9448e9XhBz2uQn337Xf1PDuvptNWtYzPel0V2O8FqcLBe+DbM3PlwbZu983NwwCwdtiAorgduFLDE5p84kscdThEm0zkOsbe6ppvxNNs45x1wdiHzcxc9s2PsBtGK9xp7+cGKeHRSXMFIX++nEinUueT1FS/5jvaM9+zGPv6VvmSnaJaXnR7q1BxbSXB8Lmb/u/sxLntOLUEIxvJhbYc74bbta0jpJKNXX1WL1uCCrZs2Ob+4oHHFVypFo/ebUlU/c5LRCATJp0pMbSwxSSfPdLwktpv5Fkayum+Y7y+mSROX40czWYkc9ZmjjadMD9WfFWLdjtHXuyzlTp7WXDyomHyuKOv/x6ezhfis+Z44rNCCu9inPpbEvDypr8zQViud7Wql452bFKZw2vRH+dGN0unOTcO3P0xrzD6GzTo8Khb66KTkchtCZ21h1BgcGPmfop7jYufHLrm6RXd0iu7pFdusO2dUNsvu2+9YpducTO77uvtXsvnPO/0e0UPsoK+vjqNOmD7V+ZsU6FePQ+WJ32rRg9UPszA+1vGL3LjdrJVID71D/dOO6+yacWkUV7F5AkyZrjkyP2B+a2czwmxWTVehjx1Cf3xre3Pg0N4NJXPLzemIzTxye4UjnBpYldM3qtrM4vGL+44Ov2DZc43h62XA+9Zu8eM+4iU3N92bf6TTx/j1Ytg/3V4rp2CG3ZqU4T5Z5M4DKXMYW4bez5wHUv0x+vU46QwaU34pCCM9erIjA9aKYGn0jGGr8QlT0oBDJ8iMfYr6vzjjNJvFlPk4v5hal5rUWkV6vt5peUpkr6ud0+/jWi8wPwxKvy//0Esw9gjSjMTj+9bluQzA3S2WWh/tbeO5v1o25KutRqH+EdDwPQ2s/zC3Z5wrobclOYcNdYSlZX2m5Jdv24v2sPIX7Ymv68Itt3CC2dgOt7cI/jzf/mZW4o2pjul+1Th9qdhSr469l9VC+7fje+UGKO+YHKW7osnFLl007umzcMT+wNV/GQ6xwRn5ovnm/VpphfOdCFu9z1w9yUueS+h+nFf/MidXdiqyQN+sQymRtbPmfPkl3PH3MDTLn0ye1HYPQvNTKPQjz/TNcTR/+Qbjheq03lbJlELYVJ1KK0fWt7aQS1r1WgcNEPhuEdbbxEYKVFSu8LMz2iaFlo+fntmMUlmPHKLQ+DfWOwrLjONhU0o5RaG2VeUeheTqJexRaW2XuUWhWinsUmi9Rurb+VKwXOuv4tvNVbLbQabfXWx/J2ijbsfWhB303Jq9X4JL5Xad3BS5Jur0Cl6xIUf9Qtg6b9w5la5PM/zpnbZL53xbk9kXnb8rjlibdMkHQDRME3TJB0B0TBN0yQTAHoXsVT2XHKp65DXTM0xrin2En7SthooWMH8JkneJ27t0sOWC5fg4/T9W8UTTMqMncsuUlmKEnc2ssFzrCIsZPvNC+Y9ZmebFe/dd293GYWbEuOCjzqOhcqvHNg+1FjnWvQKrfe5mvl1K+zguVSKwvbd7kZV4cl/X4vl7mhmHWeGwokcbwrRdN6yoZ6nQfe1l5aWVHiZp866XS9/Y5f+9ltnSVsKFE1fou/E1e5tkYuYX2vZfZ0i3JhhK1pF96KUdaVx4Uo17yYT3nT32Z4Sdy8FXMz/Gt+TBvx5hz7fOJSjol8RMvJa1QDb5Z+iMvOneVlOKhf/h4U7t1rQVYKpWtbbKPale31K5uqV3dULt2uN56wvIRo89P2BzChreZbG2UOd9msrVN5n6bydZugXtzyvbifSfK4f55xaYP9ztEDhvumPEWR8u3jex9xcsxbHjFyzHebx6nD7NOYtzRxLFsaGKzYt2vieYLRJkvePGPA2I/ew0pB52nUA19sz4ka+tLmIOObGlPL6zZ2idzLwHntEVp0walTVuUNm1R2rRFEKytMr8gWFtlXkGwfPgHc9pwvrxdKd7BbA6gENeL/Lm88HoE2Z9zzmDQwG8OP5xYO2XrI1k+1i49f1eQsxm0uA6X4LuKP/UyP3KIMX/vJZCX+rWXsrzwp3Xf50W/r9115BcfFHwjL82sXWv9ad1pUOVLH3Ud4n9Q9PFPJ2VH+Fcu98O/ctkR/pXLjsCtXDZobdmitTsu+bIrxf0wLDvCv7LsCP/Kcj/8y+vDnB2X++Ffdr26JxmyI/wrS91QrzvCv7JuCP+yK2XPJKPOr7JDo1WVH/MDNYV2TPWVDlhIP+vEmtTGtagS/4jJ/iAj6+yKP9Z9f2bEfPTMMDR+Znzko8l696F9tr9wYt0vkcO8Ctn8li3bu2Teh6C1S+Z9CNq7W96HYI079N7Mi1uXrGVWvy7V+xcimz78umQdUebWJbNSNulSEJcuWU74ygm+x+OHE/PbsXX4chC6TzzVH16sVf2yPhHka3N+yJv58Viq67CU9vqQsGx9sYWb4OHkSOlLJ2F9bxK0fetknUETg5UT83jKdRyvmMWxHuttnd7ccv3OSTzmNnU84uucFOvLMdfFM+/ykVeslTQjH/F38xHW58Kh5i8rlc5puOFk9tYbTvjxFatRrWbI13pipBa+dJLDuloubnFSvnUS10V5OX/tZG7sne+LG4rzvRNdxan1vpNyfOukhOWEHjo/nFjbRr4x/CYfc/iFYoycEup9LTFVvkwtEUvT4nFf5U0nbpWPt9X1TT6cKm9dDbYjH06Vf+ckbHDiU3nbiVflzcmrV+VNJ16V9zsp3zpxqvwbJz6VdxfneydOlfc6MVXedOJV+VTvj+G2QeXz8bsqrzMoLKoYlZrjhsFnOvEOPr+T8q0T5+B748Q3+NzF+d6Jc/B5nZiDz3TiHXwl3B58dj6cg8/a6vIOPuttPK7jLGI1mtfeR/G9jRdzS8c7T7OcuOdp5b622vlwztPk+N18eOdpb5yEDU6c87Ti/QLLmqdZn4K5HxWmE++jwu+kfOvE+ah448T3qHAX53snzkeF14n5qDCdeB8Vev9dy86H81Gh91cFbJV3vo3rhjVX04lb5et9ddUda641/m4+vCqvG9Zc3zhxqrzuWHOtO9Zc644117pjzbXuWHOtO9Zc644117pjzbXuWHOtO9Zc2311rTvWXFv9XZV3vo3LcdwffLYT5+D7wEn51olv8L1z4hp8/uJ878Q3+NxOrMFnO3EOPjna3U7/Jh++wSfh9qqAHboged2XGF7HP0hIG0IXxPokyxu6INY5cN7QBbE2tLyhC7YTZ+jCGye+0AUJ7f5iiezY1JIdm1pyf1NLdmxqyf1NLdmxqSU7NrVkx6aW7NjUkh2bWrJjU0t2bGrJjk0t2bGpJTs2tWTHppbs2NSSHZtacn9TS3Zsasn9Ta03Ku9bLBFzk8Cr8pYTt8rn++pq58Op8ll+Nx9elX/jJGxw4lR504lX5UvYoPKmE6/K+52Ub504Vf6NE5/Ku4vzvROnynudmCpvOvGq/P1trTf5cKq8xN9Vee9iieQNg8904h18fiflWyfOwffGiW/wuYvzvRPn4PM6MQef6cQ7+PR2yMCbfDgHn3X1l3fwyf3QBdENHxLIjk0t2bGpJfc3tWTHppbc39SSHZtasmNTS3ZsasmOTS3ZsaklOza1ZMemluzY1JIdm1qyY1NLdmxqyY5NLdmxqSX3N7Vkx6aW3N/UeqPyvrdxPTasuZpOvCqv9z/TepMPn8rrkX83H06Vf+ckbHDiU3nbiVPl9diw5mo7car8B07Kt058Kv/OiUvl/cX53olP5d1OLJW3nThVXu9/pvUmHz6V13j8rso738Y1bviQwHbiHXx+J+VbJ87BFzd8SOAvzvdOnIPP68QcfHHDhwSabocMvMmHc/Cl+x8SRO9SWDWOnDOd1HWSZaUR/KGTebb/6eTbnLTZR9KRXh9k+eZIzTpzUij84cODOWXdqyQ5feulrbNPmnXLgGbzns/RyOdopntYn10YHbamefVpTTQDTuGHF6vHxtnIJeZVnBw/cjKPOCyJivPTiXWQyxx/TfOXNZKPWSNi1ojuqBHdUSPtZo2Yl3zUPOfitfCVJc/Xc6j5mVadV5aUygcb/qhXy4suJajHkb72Mg+lqccfZ7N/4qUebXp53E/1rZewTvaUw/JiHsEX6jy7KwSaKv3wYna4ebNGiTV/5yPNA8BKyvJdj1s3YtbSjGtl1NrayuVY96f8cduIfuClyJTqIn/ckvCJl7OvzCPNwh86+5GXkFePU/06L3OpvoZmlqjs6HHWrVfeHmf62NHj6px01cazrp89zvByPvTXLkji+z2e751T874qd9VaF3B5q9b04apa6/TwMK+v0D8K8qM+jJUtmZNZKdQ0p3D7fWDejpb544LPn17MCwnqvEYjHCsv8sOJdcdhXHcc8hVg+vymYe5ylTybJthnE6rV8fm+q0i1m9JzP6nmJwbzURgyP1A/89LP/byKROed/oUXYwLnPUHPrpa0VkJTfV0tzq7/OHjvZde3DhXMGtdtTCqvO1y19mbXnUOJ75Ntn2RkXQ2dK01of2akmgO5jraRU4/1tT6abnKT8Uw+bZog6Cd1e3axofklaH1dJPNowpTWecN0ArmmT5zkI6/FpWY4sS4TaPPe4HTQSP4hK9YJBOcjf8ikmpd39/uEXs+ZyrxZSvjOoo9y4rx3QtuOC8C13b8AvJ/R79qMsI5erea2l/foVTsv3qNXq31jl/Po1XrcP2rb9OE+erWL2N0Hh10p3qNX36jKujLCEATr6ROnuCkv7Dw/feqbva95MnXi5cynSZM3HySyP/IRzOoo826F8Pj486VWv3Gz1C08IqIMN9YRsDqPp058xvWz0Fbzkq2Smq75WzCkqVofdZ0iMGdelV9Pn+dMtheVNZSr6UU3zAJtL95ZYA0bLjZ400juSXaNzktlzUl2tTfDvNXr9sI3ln7mxd1IO67tsivXOVV/qw3r1S7xhOOHNsR6e6r9Jit9gXpkpb6ebFfz4q5D10ejh9L+3PMsuZo3d7W6JmKtxWy4MXOzbkHS8/khhhvXxTYh0KU0oaj3gXTuqa3ttUBfwT7utflvJ/79n//1P/77P/79n//+n//67//2Px+/jMfjpf3xHIvhYT06bYzTStPK0yrdOrUjyrS0W2ddxjqt1q1Tx9IxrZ7G48GbehqPN6aUppWnVabV03gsGaWexiMILNVp9TQek898YMXhtMK0YrfOvOQ0rdytsyfnMi3p1sPLI430GJG5TuuRRnp0o3JMq6fx0M8Sp5Wm1dN4fOVUyrR6Go8dkdLTeCwzlzqtnsajduWYVk/jse4jcVo9jcc4lDytnsZj1UBkWjqtOq02LD2mFaYVp5Wmlac109CZhs40dKahM40606gzjTrTqDONOtOoM40606gzjTrTqDON9kij32LRwrTitNK08rTKtGRaOq06rTascyVsmWGZcZlpmXmZZZmyTF1mXeZKLazUwkotrNTCSi2s1MJKLazUQk8tysOsy2zT7IM/P/YEQx/9lxmX2VN7KHboAnCZPbXHu03oEnCZusyeWu5JtGmmY5lIrT7MuMy0TKT2KEXXgnO/42HKMnWZPbXHVDF0PciPDYLQBSE/nhKhK8Jl9tQe1xKFrgn58elA6KJwmWWZskxdZl1mm2Y5lhmWGZe5UisrtbJSKyu1slIrK7WyUpOVmqzUZKUmKzVZqclKTVZqslKTlZqs1HSlpis1XanpSk1XarpS05WartR0paYrtbpSqyu1ulKrK7W6UqtITR+mLLOn9lhvC11ALrNNExICMywzLjMtMy+zLFOWuVJrK7U2U4vHscywzLjMtMy8zLJMWaYusy5zpRZWamGlFlZqYaUWVmphpRZWamGlFlZqYaUWV2pxpRZXanGlFldqcaUWV2pxpRZXanGlllZqaaWWVmpppZZWammlllZqaaWWVmpppZZXanmllldqeaWWV2p5pZZXanmllldqeaVWVmplpVZWamWlVlZqZaVWVmplpVZWamWlJis1WanJSk1WarJSk5WarNRkpSYrNVmp6UpNV2q6UtOVmq7UdKWmKzVdqelKTVdqdaVWV2p1pVZXanWlVldqdaW2tCQuLYlLS+LSkri0JC4tiUtL4tKSuLQkLi2JS0vi0pK4tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUnQkvZ444WWPBYcErQEZl1mmya05PHRVIKWwOypPXY/UteSfpF66lpymWWZ0s30MHWZtZvdWRtm7lpymaGb9WHGZfbUHiubuWvJZZZl9tRCfxHXZfbU+kt015IS0+P9/FhmT+2xjJa7llxmT+2xFJW7llxmWWZP7bEkk7uWXGZP7bFlmbuWwOxacpk9tdxXBuIye2qP6M3cteQye2qPJfXcteQydZk9tcebRO5aArNrSXm80ueuJeVxQW3uWnKZaZk9tcerfu5acpk9NenOdJl1mT21xyZx7lpymT017SsccZlpmT21x6w4dy25zJ7aI1ogdy3pe9i5a8ll9tQeu6+5a8ll9tQe+/K5a8llpmX21B4jIHctucye2mNvIHctucy6zJ7ao4PnriWX+UhN+opO15LLfKR2rng9zLzMskzp5qOxupZcZu3mI7WuJTC7llxmWGZP7RHtmjUts6fWe3XXEulduWvJZeoye2q9V3ctgdm1RHpX7lpymXGZPbXeq7uWXGZPrXflriWXqcvsqfVe3bUEZtcS6b26a4k83tFz15LL7Kk91qZy15LL7Kk93rBz15LL1GX21Ppg6FrSzdK1RKQvl4VlxmX21B57MqVryWX21B7rhqVryWX21B4rX6VryWW2aXYtkccGWulacpk9tUevLl1LpPY1u7zMssye2qNXl64ll9lTq91Zm2bXksvsqT16delacpk9tUdXLl1LLrMss6f26NWla8llPlLTR68uXUv0odWla8llhm4+qqRryWWmbj4S7lpymWWZj9T0MRhK15LL7Kk9BLp0LYHZteQye2qPDl66llxmT+3Rq0vXksvsqaVHy3ctuUxdZk8Ny6Jtml1L9HF8ZOlacu6fPsye2uPgrtK15DJ7ao8OXkpZpixTl9lTe6xdla4lMLuWXOZcjSxdS/SxHlW6llxmXmZZpixTl4eeWul+2zS7llxmWGZcJlJ7VKrmZZZlyjJ1mXWZbZr1WGZYZlzmSq2u1OpKra7U6kqtrtTqSq2t1NpKra3U2kqtrdTaSq2t1NpKra3U2kxNjmOZqMnHOvYRl5mWmZe5VsS7luhje0O6llwm2u2xoH60aYa5ZC0hLBOplYeZlpmXWZaJ1OrD1GXWZbZpxmOZYZlxmUitPcy8zLJMWaYus04TAvKYjAgEBGZcZlrmKlBaBYKAwFxbCmntKUBA+nYFBARmWGZcZk/tscklEBCYZZmyTF1mL9DjISEQkG5CQB4TIoGAwIzLTMtEao9iQkBgyjJ1mUjt0QAQkG5CQGCGZcZlpmUiCXmYskxdZl1mm5nUVSCoRi88VEO7mZaZl1mWKcvUZfbUHtFMAtXoJlQDZlgmkng0FqQCZlmmLHO1EKSidg89icfWnEAqHntzAqmA2Qv0eB8SSAXMnlrru1SP1OrjXUS6VNTHk0y6VNTY/7Yusw1Tu1TUx66Gdqm4zNjN9jAfqdXUt7/yMntq6bHx+//8/T/+9e//xz/+5X+e26KPndP/9W//PHZJT/zP//d/jH/5P/7jX//xj3/9v//7//iPf//nf/k//9d//MtjR7Vvph6P/3nIyH8N8rcYHjuu4frv//Vcjj03T87/lfTfzrcv/Jezuc//1fzf/oafnXBOMc//jY8/eqjQ4z9p/0/1ePiLD3+PX5/Zz3H87tz8KPL45zRzcD6zY/9PeeTgnFv+7Szrlfr5fvq3c1o+PJwrEH87lxNGqucb6vm37fH7Mn9/PvDPJYn5i5D/di7azF+czXAu0Tx+ISOPp3KXMPMY/1b08c+6aqn9LebHf6or22eN9GTb+k9nVrrfcNiFD2H+5pwM5O45zAo7e0Fq4zfnXCCX/u/J8vnYNf//AQ==", + "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" }, { "name": "refund_public", @@ -10976,21 +11357,14 @@ "error_kind": "string", "string": "Index out of bounds" }, - "17595253152434889169": { - "error_kind": "string", - "string": "offset too large" - }, "17843811134343075018": { "error_kind": "string", "string": "Stack too deep" } } }, - "bytecode": "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ABwKCxkAHAoKCwAcCgIKAC0IAQInAhoEDAAIARoBJwMCBAEAIgICGi0KGhstDgQbACIbAhstDggbACIbAhstDh4bACIbAhstDgkbACIbAhstDhQbACIbAhstDhUbACIbAhstDhYbACIbAhstDhgbACIbAhstDhkbACIbAhstDgsbACIbAhstDgobHAoXBAAcCg8IABwKEAkAHAoRCgAcChILABwKEw8AHAoNEAAcCgwNAC0IAQwnAhEEDAAIAREBJwMMBAEAIgwCES0KERItDgUSACISAhItDgQSACISAhItDg4SACISAhItDggSACISAhItDgkSACISAhItDgoSACISAhItDgsSACISAhItDg8SACISAhItDhASACISAhItDg0SACISAhItDgMSLgiARQAqIwAAC8MNIgAqgEwAAyQCAAMAAA75IwAAC9gtCwcDLQsDBAAiBAIELQ4EAy0IAQQnAgUEBAAIAQUBJwMEBAEAIgQCBS0KBQcuDIBGAAcAIgcCBy4MgEYABwAiBwIHLgyARgAHKwIABQAAAAAAAAAAFwAAAAAAAAAALQgBBycCCAQFAAgBCAEnAwcEAQAiBwIILQoICS4MgEYACQAiCQIJLgyARgAJACIJAgkuDIBGAAkAIgkCCS0OBQktCAEFAAABAgEtDgQFLQgBBAAAAQIBLQ4HBC0IAQcAAAECAS4MgEUABy0IAQgAAAECAS4MgEQACC0LAwkAIgkCCS0OCQMuCIBFAAIjAAAMxw0iAAKATQAJJAIACQAADq8jAAAM3CcCCgQLLQgACy0KBQwtCgQNLQoHDi0KCA8ACAAKACUAABcoLQIAAC0KDAktCAEEJwIFBBkACAEFAScDBAQBACIEAgUnAgcEGAAqBwUHLQoFCAwqCAcKFgoKCiQCAAoAAA1OLgyARgAIACIIAggjAAANLS0IAQUAAAECAS0OBAUuCIBFAAIjAAANZg0iAAKATQAEJAIABAAADmIjAAANey0LBQMnAgQEGC4CAAOAAygAgAQEABklAAAXnC4IgAUABwAqBwQILQ4JCC0OBwUuCIBFAAIjAAANtAwqAgQDJAIAAwAADjMjAAANxikCAAIALRfGuCcCBAQCJwIGBAMAKgQGBS0IAQMACAEFAScDAwQBACIDAgUtDgQFACIFAgUtDgQFJwIFBAMAKgMFBC0KBAUtDgIF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", - "debug_symbols": "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", - "brillig_names": [ - "refund_public" - ] + "bytecode": "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CgUfHAoFNQAcCh82AAQqNQY3BCo2BwYAKjcGBxwKBQYGHAofNwYEKgYhOAQqNywhACo4ISwEKjUiIQQqNi0iACohIi0EKgYkIQQqNy4iACohIiQEKgYlIQQqNxQiACohIhQEKgYmIQQqNxYiACohIhYEKgYnIQQqNxgiACohIhgEKgYoIQQqNxoiACohIhoEKgYpIQQqNxwGACohBhwcCgUGBRwKHyEFBCoGKiIEKiEeBgAqIgYeHAoFBgIcCh8FAgQqBisfBCoFIAYAKh8GBS0IAQYnAh8EGAAIAR8BJwMGBAEAIgYCHycCIAQXACogHyAtCh8hDCohICIWCiIiJAIAIgAAEqktDgMhACIhAiEjAAASii0IAR8AAAECAS0OBh8cCjQGAC0IASAAAAECAScCIQABLQ4hIC0IASInAiUEIQAIASUBJwMiBAEAIiICJS0KJSYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgImACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmJwIlBCEnAiYEIC0KDTIjAAAUFwwqMiUnJAIAJwAAI3MjAAAUKS0LICcEKjAnIAAqBiAnLQgBBgAAAQIBLQ4hBi0IASAnAigEIQAIASgBJwMgBAEAIiACKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNIiMAABWEDCoiJSgkAgAoAAAjAyMAABWWLQsGIgQqMSIGAConBiIcCjMGAC0IAScAAAECAS0OISctCAEoJwIpBCEACAEpAScDKAQBACIoAiktCikqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKi0KDSAjAAAW9gwqICUpJAIAKQAAIpMjAAAXCC0LJygEKgYoJwAqIicGLQgBIgAAAQIBLQ4hIi0IAScnAigEIQAIASgBJwMnBAEAIicCKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgIpACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNICMAABhjDCogJSgkAgAoAAAiIyMAABh1LQsiJwQqDiciACoGIg4cCi8GAC0IASIAAAECAS0OISItCAEnJwIo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", + "debug_symbols": "tZ3briS3kUX/pZ/1wDuD+hXDEGS5bTTQkIQeaYCBoH8fxg4ydnULxZOnqvRiL+2TFcFb8hIks//48O+P//r9vz98+vk/v/zPh+//8ceHf3359Pnzp//+8PmXn3787dMvP0/1jw9B/0fSh+/Ldx+kf/i+f/dhzP+K4bsPMcw/xqhQF8S8QSbMn8SkSldQRSbkvKDEDe3D96lOqHFDXdDChq30rXRXxgLJG2SBJtWgG6SgLtqElDa0BXn/KW+lbKVspYYNZcNY0PIGWdC3i94XiBosCnXBCBvKBjHIIW/oC2Lc0BakraS6YSzIZcNWmv5qFnhGGQLqAtmKbGVsBQkDiEFBwgB9QUwb1MWYkMKGskEWaGHm2UhKmz/PaUKPG+qGsUDr1EAWaJ3motAMqtapwVbiVuJW0lbSVrLaqQqyoNQFWssGbUGLG/SZpjAW9LyhLxD91WzzVcvQoGxQX7OgmpYhAEkFtAV5lXMrq+Qb3gvAqsHW0oZVBU3LUIu3oU4BYwHeiwkdBTVLvmvj18LsKA2FHDaUDavAe8kbuhVdr3HDKszettK20rfStyJb0X5EC7OPbCAhbFhVIDFuWFUg2qK0eEVblIEsQFUq6AtbgsK0U2ZORavSQBboewrQhJU8QTuHMhM2tHwM6oaxQHs2A1mgZViaQlugHYjBVspWylbqVupWtCpLUmgL9PU0KBvUqXa9WpUGM8115nTo62CwlNkt101xWqoFpJqAxiYtyEWuZdeya8W14lrNTrJJc2KkOVjkv+3+W3FN/Ldj24ta83UoaapawLAy/9oSqG8qyalt0tpeVJ3USlbSml8km7pr3TVxTVwbrmk5g1JITm1TLE77tyllJ9UqhsXk1Dch9U0J6cOoqWNIG6C2SV+kRTOXPYLGJu1rFm0th+LkWnQtuqYpXSSbNKVGJTj5b4v/trpW/bfN7Wmau9ZHRqq0NDCO9ADqm3QkWTTz27VcMJYsqpuya9m14lpxrbqG9BmNTUgfSLurRf5b8d8KNf/t2PYq0qz1VpGqDtK/Cmhs0o60D5Bs0vdIAmhqoiVUNVWL+iZtB4tmuYi+01XLdJFrI+7ntJxBGGsWbR8tuhb7+m3THm2Ra3n7bXmnpRXXyvaLIWqRa22npWnXZtRd03K257ScF7mmQ6c9N+qiHoJTWc91bc9G0bW4c961h1vkmvYl9pyOcEbFtbJLqNfs5FrbJdTbLqHeXeu7hLokJ9dQMzZfbYskRKddQhj5FmnOtV1h7FvkmrY1EVB1Gpv0DV00Uz+0hYnmaJFraGt4DjVj5PbEfWifbb/QN8BouDa23xGK0/aBsXORa2n7HdrTGGlbs79qWzMqrunsw56ryantv2pbW+Sa52jgnQFpjuyv2taMhmtj5TyFEJxWLieNTdG1OPZzqThpLqOStrVFrpW8nyuySXM0Eqhvaq5pWxu6NAja1hat9pKCRCfXhmtjazGsN3RS2xRdi64l15L/Nkcn14o/V/y31bXqWnOtudZd666Ja+LacG1sLXk+kucjeT6S5yN5PrDCM8rrfUtY4xkV14pr1TXkw5aJ0cm17lp3TfMx8FvNh9FwTd8UEMbkISDVBlagZZP2xYu6LrexLtXkb2yOhWqhWqnqXGjjcGyFKI46H9oIx11RIrE5DqrD1RIisRKHYyxEcUSgYKE7LjkR4UKLDgP9xkocjjUTxbElIo31SKSxTmNSNlbL2wBWxxiIVBPVdKMORwRCFopjScTuiNrUoMvEShyOLTuisqK+o01nqHPODGyOSO/CQhRH1MVCTUPUzDe0voXNsVAtVCvVSrVRbbCLcAmanKEEYnVEO1vYNnaLPnVgIYpjTI4JFgRYicMRdREHUBwtQ0DLELB5ZfVeHCUSm+NIRK9NDPtWWRIq0WtTotemZK9NqV6bUr02pQViIXptSs9Er02RSPQakkF1uDpCJFKNVKPX5khemyMHotfmKJHotTmq1+aohei1iWXyQryxKQLVbtLSwci+URx13QbMAUm3gBpatcYDZ5AtEitxOJZMFEfURerA5ogGvpBqp9qpClWhigaTMrBttEjrwkJEcgSBwUzUvGmUJ0cdRDZSRTYN0ZFqYGpiIQ7HSrVSbVQb1U5V19ILdTG9sTuOSnQLKRQi1ZiJbhdDedR4WU6W3oEoqD6r0Z2J3RFtZ2Fz1CDFxkpUYxp0mUvgTBTHQXW4imDtRqqRKqrFENWysDnqinEjLRRaQOsriOii9S3sjpYhbZ7Z0tsQ/cWzAmwbbZReqJnXeFG2UdoQI8NCqolqopqpZqpI+kJxRNIN0XMtpIVGC51qpwWhXWSoar1VS28CIvPaHqoVtWF3RNvRuNjE6oiXYSHVSrVSbVTbjTocLemG4ogX3XDQwnALLQRiIbpdrNFnrEDR0tuAeLYDhyNeBg2qTRRHzBQ0wDZR1abFZ4Pwwu6o69iNmnSNYmUbjxe6iuCyPYtF+cKYie4N8ef1M1SLYaaaPQ29JCK91Uik2pgGvOiGeC/sAbzohkIVcw17FtWysPgD6KOAEgrRsylofQvFH8BYuJBq9iKR7EUixTMvxYvEhvyFXiTSEhHZ1KaBBfxGquJFYuO8oWWzAuvGEQIRqjajgeniwkIcjpbNARTHTNWyiWetCoGVdiu9YZixn6FTWEi1Mw2daRB6E6ZhUB07DSWgr17Y1wOzQ0xEqtZS8ay1VCA6EHsAU2HDQtWzOXvXSKz+ADqQhVR78Gd7JQ5/QAqR6ij+7NhFUiKyqbHUYjMFw0g1epHYNu1CzaYGbUvEC7mQKlqqxjsnwi42/tDZLIQ6sB2Izd6ADcFA1LyJGktoXAuh6hZfwtpJMhCq7vclzCcXUkU3qIv1iVAbNhsTUZMumreEsXAhVE1vxipJBlBVjeyUjPawkCragwZyii3MNUJTECOfUStgd0RBabhmIi2gPZiKnsuwUcUrrTGCkvFKI5vYql0qeq6FVPFKjwaEir1WLfUZMlHEDmFIwOYoVLVFLcSmr655J46NNeyea6I4RqqRaqLqfV+xNe9CqoVqoVppodJuo9r4bKeFTlWoCtVBdbjaQiZSjVQj1USVeWvMW2PeGvPWmDcbmhdC1Tq2oXkh1U61U7W8VaA4DqrD1R4yUTeXdRVasD7e2B0T1UQ1U81UC1WckDDEbvXC6ojjEQtpodNCpyq0ILSLEwm6KJ6odqMdFBgbMTRvpKpVmPQsysTuiGwupJqpZqo4BrKwOuIoyMJCHI6NjnEkxLDTRacLoQvk2HDQxaDj4S5GKER3MZjjwRwP5hg71gtzJLqLUQKRLgodV7qodNzootFxp4tOx0IXQsdCF4OOx3ZRMXZv7I4xEZtjisTqmAOxEIdjoYtCx5UuKh03umh03Omi03GnC6FjoYtBx8NdxJCI7gKR+43uIiZ3HC0XFWdg8GwD4lk9iWIHqTT6Ve0oVQrA4YhELtREahSl2pGqhX0jtsI3Uo1UUS2GSOTCShyOqJaF7jghQwvpotJFpQvkeCFddDrudNHpWOiCOU7McWKOc4hEd5xjIFaiu8ipEN1FzplIFyUR6aLScaWLRseNLhodd7rodCx0IXQ86GK4Y5tKLKxEd4GQwUZ3gcD+RneBwP5GuiiRSBeVjitdVDpudNHouNNFp2OhC6HjQRfDHWOSkzTWVnFsLGnwsGKTPyUcD0OXqSf7KqIHSWN4tVrSB3A4WtIN1a5G4GpFl7mwO3aqnapQRdINkfSFlTg2IpCw0R1jZrPRXSC8sNFdIPK/0V0g/rCRLgodV7pgjhtz3JhjO762kI6FLoSOhS4GHQ93gfnORndh852F7gJbAxvdBY7DbSxEd4wTAxvpuNJFpeNGF42OO110Ou50IXQsdDHoeLgLCYnoLnCUYKO7wGGCjYXojhGg2OiOEaDYSMeVLiodN7podIx+R08SVmwuzE3M7/SMJJ4tQDyrbxaCDsmOTKJbWTgc0a1o0Hdid0S3spBqoVqoWtINq6Ml3bAQh2OnY8sQUOhC6GLQheVYj2OGEIiVOBxjIYqj57gFz/FctiQiXZRIpItKx5UuKh03umh03Omi07HQhdDxoItBx8NdxFCI7iLGTHQXMSWiu4g5Et1FLIFIF4WOK11UOm500ei400WnY6ELoWOhi0HHw12kkInuwuZGC91FSpHoLlJ2xzYL0iOuzSY5umnRbJKjuwTNJjl6rLVhVyPp1sBcpUJtwEIcjuhWdD+g2SQHiMjIRqqRaqRqR9ENqyOSvrAQh2PJRHGsdFHpotEFOlLDThedjjtdCB0LXTDHmTkuzHEJ7qLESHQXdsZ9YSG645Iz0R2XQheFjitdVDpudNHouNFFp+NOF0LHQheDjoe7wJmGje4CZxo2FqI7RnxnozvGofqN7rgWuih0XOmi0nGli0bHjS46HXe6EDoWuhh0PNwFNlkWot/RTaFmkxzdVmo2ydFtpWaTHN1WmliJuHKiL1mzqypA9CULuyPSu1Achc8ivbqP07CzstFV7KxspBqpRqp4C3X7p+Fsf6q4G2B5G8DqaHkzpFqp1ht1OGKQWCiOGCQWdkehY8smcNDFoIvhLiySs9BdWCRnobuwSM5CdyHMsTDHwhzjgORGOsYgoefGG85ILmxUG9VOtVMVquhsNMg3Z6xQC7BvHOhsFlKNVCNVVOzC6ojudWEhDseSieJY6aLSRaMLdK+GnS46HXe6EDoWumCOh+e4B89xx3GMhTE6oiPVUGUP6Cf1PHwPFl0URTTPhZWoydHtiW5zmIXi2Kl2qkIV/aQh3sKFbSPOYGysRDhOiqiLhYXIBwrVQrVSRZMzRF+ysDtiXrKwOQodY16yEC6CIupioWy0mM3C5oi6WFiJbiyhhhbSWKYxdPyGqCw97N/tVpyel+92L043kLrdjDO0pAPRPwDtEpxuK3ULnei2UrfQiaE5NmyOeNEXVqLmQjebZi+YieLYqDaqnWqnKlStqLuiFbVh34jTFhtxwU5rqGCMXYirXhUojhhjF1LNVDPVQrVQxYu+sDviRV84HDstdFoQqkILw+3apEF32rrNCXR7reO0RdLttW5zgoXiiGoxRCtZ2BwtkYZ8FinTjbQ5Iumzuv/WG9JgiEJdSDVRtQuJhsMxU81UUagLxRGFurA7NqqNKet03Jkcu5qnHV5D77lQHNGMFrraLZsVt+tgtwGhaql3y6bhjQpv+gbY6K+njnvXlyEHLcmuXdBGqvoybOy7Ynv3Ou52adSwOqL3XNg24sjjxkocjslfdNuQMcQwvrASkUh99XAqwt5uaYlIFfcQdVOz41TEQqGqSZ/djOLwXsMCFMBhXZCh9zsWlVg4HNlHDfZRg33UYB812EfZzoqhlXoBimOnimumekK7D8uFYSUOR1yw1OPTHXsoQMHIuxDXLBfCgihmPDAUS3HUZr9R06BbcYLhdqG29Y3VEYlc2BwH1YFno971xD3QhVRjJooj7rAubI6ZFgqezbhDqkWi+yKCC38bu6Ml0rA64v7uQi0H3UMRDKGGWNpvpBqpRqqJaqKK67a6ISM4yLCxO6LUF4qjlbph39WSrK0bVuJwxCVq3csXLO2tdLB/sTAGYiHCsTYNjLFWJLh3sJEq7k7rQWnB9sTCRrXhgnEAerXk7qWOPYmNXkMYWDfKxhIy0Z/Fcn1jJbq3kmhBZ5lZDxMLVuNZI/+CcXMjVdxyXlgd0ewXiqNdXM/A4Yg760C7tb6wO8ZEpIrb67r7IHZ/3TBTRY9oiDdWtycEuw8LK1U0I0M0I0O7g2+ImXnDpelEHI6IcwFtLb2wOkaqkc+iX9fFtjRLOlS0KN04Edwl2EjVkm44HBvVnogoM22pWGFvpIp+JyENqIusDdEuxmuQWrDCzhqkFqywswapZa2w8WyKxOpoES0g7strQFuwNZBxex3XCTdSxXV5Q1TAQqo6Pdiomcc1dxxN3Oiq4GXQ6Lhg1Zz1dLRg1Zw1eCg4mpiRSAy3GdfgxcI3QAtYGXZHC5QnoDb7AsQrjfvziPEv7FTxMhjiZVhI1T7ggBv49gmHAmyOkSreYz3bLAMfAtCopWAlnPU+vGAlnDWoIzjIkNHObIxFFQ6LgxsOR9s6NNRWgtocaFEaABIbbg2FKkaGhXXhCCEQxREVoHGjgWj+wkQ1wUVWtI9SFCDUqog+SuM7E6F2fKMA+5t4FrMgQ9v6BtrZA1jAGKCxoIGzB1mjHQNHCBcOV3HgYGN3jFRRAQs183pHf9jIu/BGVRd6XGtg+Zs1MjKw/M0aGRlY/mZd+w/cMMi69h+4YYAjCwNj90LMPQ3xSjcgPgiy0FWcMVyIQa3hyzVoRoaJqn1RwhAHpfEzO9UOxMnOhc3RjrIbdsdGtfHZHhxRAU2Aw3G4akPzQmRo4OMSiUgVI8NCHCPX8rWLggvF0Q7kGw7HWohUG59Fb9SBOuPfqOnVpf3A8nchKgCISHruBdgdI1V82UMjAnN/LhKpYm60cDiie10Iu9rOED6P9qkNuxFhX90oxOFotz2AOEq58Ebls3bbAx/ssFzYRzyQiw6EqhWA5W/WFcqwywYZKo4FGtp1G8PqiKQvbI6NauOzdt0GiAOAeNErTrga4mz+wkrU4tOztwOb/bjDNOwuwUKqGJo1rjFsaDYsVPGZHA1bjIYj3PYzuwUFRNtZKI44t71wOApV4bODKRtu1278LXQL3S6cJWB39Gtzo9vdM0OUgzZP7M/jVtzodrXMkCrGYz17O2w8NhSqWCgI0jCC/2zsm3kD4/FGcfQrlxOHY6Ka+GxORNotgUgLzctBmpeDXQpYWIleDghHm4Xht0UHwtELo+d4RC8HhKM3ejmsG3/4GdOLGPRGz9u65mfouRiNauOznSnrtCv0JtvCXELap5WasZDjjW7JX4xcdbA1/sU3OtZmm8v6yEdAMHpjd9T2tFEcdfDaSFX4rK6ODW0djA8WBFsIL443OuYSi9Hz6Al2ZSHnGx3zicX6NuMbLBO7I76QsnA4au+zUAexjTcqn8VQrCEu5eaMs/95ZONKRpVs1nRrnGsy8rP5Rsf0SANgyp1cbnQsQDfXGx5krHvwyYeA9TO+tTPnYdlR29bG6qi968a2EUcBN1bicLTsNGNkx3RUzxjGSB6qEwM1PnwUMFAv1B52oQ4OG7sjvhW0kKrwWeTEUEeEgoLHGnpjd9TXfmPVr2rhdwg+l2IojoWqtqeisbnJOkFyvtE1+SUk4+Y/1fRvHI46QizUbnZj3VhDIBaipw6j9Ub3hkv5C1H2SBquImzsjvjg2UIUBgrGPv2WDMVRqAoybU5GumHqDR8dC9W47Z82CwQYDkfMVA33F9sUq2OhWvhs8dS1SruV3hotdC8M3DHY6IVhS+iFLAzc9DMTuOm3MFFNzDTuEzjf6IWF0YsnrzPRFqA2bJ7B3gPRs4IA9UY+K0zdoN3h3uwjdOnPP7/7sD+F+cNvXz5+1C9h3nwb8x9/fPj1xy8ff/7tw/c///7583cf/vfHz7/jof/59cef8f+//fhl/nW+OB9//vf8/2nwP58+f1T68zv+Otz/6VxJaZrw8zhXM91NzGR+ZSQejITkNuZS8sZE/cpEOpiYUeW2bcyQQ3UjPX1lI9+3MXtBjS7DxuRU7tk4ZkV7S0tGjONuVuoLstL+7qxU8VqR+7Ui903MbZdtYrbvu4kYh4xkdMmWkRlpeTYjMyh/NyOnZp6S52TOZUK738xPjXTcvCy62LqbmXMr1bXlrtpx18gxOzkmZien+9l5RUONr2ip12snl7vZORiZ2427ofUaxU3U+HVeDo11Ljx3qc6F502hytf9aTrlpe4iTTcWZgjxawvxlBENHFpGZviANmZ39JWNQ0vNnpEZBHELKX1j4dBMU/TinIGscd9GuW+jpt2X1hwes6DzWKuQWB/LR5KdiNlS030b/VSnaQ+xcwnTH7TRfGCZOx2P2cAm2xqrk9y1kY+vSfLG1R6yMMruvmZc6CELX80X2v16zYd6LaXt9lnKYDrie4pTZ+erOOuD1Zq9hU6Uh2y8Iisxewud29KPvSk9etfVD+9rHn+vjdia56V1ecxG75kj2/23vqRn35SThWtvysnC1Tel1Keb17E4Bzueke4X53Fwrd378nY7xH8zuJbDfLT1vNMxW1ekjfj1IF9OTTQUHxDmspQ2+nhoqnEzC/xmqlEPg3zu0afFPee7qaiHxjH3hLyJTq753tSrHqejPXA6OlfTd40cc9OK50bul2k9NdM29hyw3CbjLzZOk1ENI+yEhB7kbmYOfWnSmPYu1snpQSOeHeXxmJEh2Y0MuW/kXCb9pkzuV3A7VvDYLU0/L8Q5aXuHDWm+UJCbRvI+G2OPLzPyG+7bKKeZbdnloV+RfchGjD7OTeTUYRbOO2xwMTnj5XdtHF+azom+hHL3pWny99qYAzVXkuGmfcSvy7QfetWEgyNrpn4zXuZv0nG24elI+Sbm8T4bw1+6fPPi5veUR8/Ry6Ol++VRXlAe5QXlUf7m8hi+LJ7bNvVueVy20dOjNqrb+Gptfd3GXNf78BBuZobf2pB4nJ8mXzf0Xm5KJOd3WJFAK3PUum/lMAOI7FP1S+p3+8OjjeYTs7mdVx+yIR4Wk3Ho2Y81cxN8kfstRPpLaqa/pGbGC2pmvKBmxrM1c54gelh9dkP3J4jj1MZG9HXh+Oq965cn7rX6+mHuot2buJ8sNK4KWx33LIz2gmn76C+Yth/zEr00WosPlIYknxZKjndLI4bwfNA1hvhs1DWG9HzYNYb8bNw1hvJ84BUfjH8u8no2cSn0es7KxdhrDPJ88PUNI9eir2cjF8OvMcZno0pHE9fCSkcTV+NKMZanA0tvlOm1GOwbRq4FYY9GXpKbi2HY81tzMYYaT9tQLzFyNRJ7NnIxFBtPsemLb83JxMW35mTi8luT2vPt7FimV+Oxx4H3YkA2pvF8RDae9oNeEJL9aiZyM2n/diaST/HU4jvZ+s++3E1GPO1LpZZ2h6b/XsnBSHk+FhpzfUEwNOb2gmjoW1auhUPfsHIxHvpWuVwLiMYSno+Ino1cDIm+YeRaTDSW/HxQ9GjkalT0DSPXwqLnF+hiTBO5/luNXI2MxuOe1cVQ4BtGrsUC3zByLRh4LpOL0dF42ri6XCZnIxfL5GzkFWVyMUJ63cghRPqWkUsx0qORq0HS2MIrYnFvmLkajIstPR+NOxu5GI47GrkWj3ujfq6FSmNrr6mf9pr6kVfUj7yifuTp+jlPI32OktpNn/KXsacf2ol+pHeHgVo6DGA9v2IaedpEyiHwHLDedrpv5TR1q7jxbFZqlvuniY/F0mr2YhmHKXo/vUCFL9Ccrt9/gc5GGOurOT1sxAfCeupqj0aqMCY9Hk1JC41rn/KwkepGbsf19xnxA8Xz9ekPGunR38Fe5GEjDMTcBNnfaYTZ6ePRlIifGU9S4sNGvMVKrY8aEV8jy8gPGhmRa8HyuBEvk1EffXcG353x6LuT8U3CtZ8jDxZsxlUpM1LSgy/g7GKD97HlMP87jl89s9nfvMV/6WNHf8FOWRzygq2yNzLEXlbi/bE0hWPcbnjDD/n2Pa7vSMkQjqSHlByNzO0YP7EXajpk57Rj38pOicxQ8d0d2XQKd1/d1j1nJ3oHOffr5JCdwzx07oEWD4jKycihzbKG9SL3TWQ2fWPjtBURPCw08f7c4mykekSnVCkPGuF2d5m7s/eNHLe8gnf3E2/iqvIOG9F7+x5v7zt9a+MUWUrca0otPZiO2j0dN/v/77PhsdB+Sse5YkJgxZTnm0g7DOZnIz0wVh3boYmMFzSR8XwTOd29utxExguayPi7m4gH7ucmQni+ifQUH20imU2kP9qfdY/9lz4OKUnyfDs72rjYzo43oC62s3M6rrWzs40XtLOe2URGfUE7G+1BI1K8nclhNp9Om0xXm8jRxtUmIs83kXM6rjWRs40XNBEuPYu0+HwTkcOuwRsp6TskNmMvj3ZFI3lXNPIhO6drWVfb2dHGxXZ2DPdfbGfndFxrZ2cbr2hnXVgx7fl2NnJ/1EiuPvsuD87PanAj9XaR9hcj9bS+asHDWJNbuRtdT/X8sQDfFZKbIPC3Ue2zkeoTgVhrfMxI7/7eSD+YOJZJ4iZzS7cLm2/L5Fw//v2EGTM5VPJxd+p6/bT4gvo5GrlaP+cMvaZwI8+wxvJgd1+TL05qOho59ZCBPeTt8aS/rOnbwcjlrzqcNpYuftahnTbwr37X4XRF6uKHHY4mrn3Z4ZiVlJmVkh40cvGgZOrlbzZy9bTl2cjF05apH9vqldOWRxPXTlseTVw9bZnk0Mwuf1vhGKG8dtryjeCi78W2nu4fLkxyvKwd/crG5HT3AFyS015sb75L0CXe78+ORoRbDXIKdJ6NxJtrQfKoEe6cSD+l5FiywTdxZsmGcr9kT1+7iplp0c+p3bNyOsla/OSM3H4v65uTrGkcxvFyM1BkuZuKN2z4Ds60cb+lna5s5Vx9VjLNpfZgqZab6P7tW/xOK941PmOleuBVeTyaFr+INq3EcL90j7OB0rhTV29OX7+rNxAfRbOUev/1OXb3foBnpEdHjLab7Oj16UGnPzqnyIFn+WJ8dGJy7d5TDi/4bMvJxtX7KG8YaTyQK/VBIxev6JyNXLwK9oaRa1fB3sjOxS9xxac/MHQ0cfFbXPEFnxjK8e9urBevgp0L5FJHdDZxqSO6Wi2njui8/PU94Bp7fnD5G/0UYZ2b648a8bqd9h41gn8mZC/E46NGCo20/GDcNTJ+FG8W4u+KVSY/zDixPxrvHLQhz9uID6Yj+fvfUw6PpoOx25uA+PvS4cHOuT56NC+5XIkhn/c7rrWPo42L7eONfZdL7eOyjfhgOi62j8t7SIf2cU7Htfbxho1L7eO8ZXqtfRxtXGwfb2zdXmofl23EB9NxsX1c3oY+tI9zOq61jzdsXGof56Mb19rH0cbF9vHGEZJL7eOyjfhgOi62j8vHYQ7t45yOa+3jDRvX2kd8QfuIL2gf8QXtI76gfcQXtI/4gvYRX9A+4tPt43ybsPASxe0uz/uuJOIfP9lG+n0jx7ueV1PyhpGLKTneCebSMN4eNP7mTnA+7TiJH+AeoR5MHOqXF4e+OnP5LhP8dOzNv0LwPhNCE/0xE7y312+vTvzlivXxu6LBdwEn58eu9M9fxvIKK9dul+Efz7sfT716u+z4nZFLEYiziUsRiKtfOzmZOH5m6FpGjiauZeTix44OJo6bsxe7sTdsXOrFjt8VvZqO8Hw6zt+dvdiZjuc70/F8Zzqe70zH853peLozPX3o+XJf+oaRa13pG0Yu9qTjFT1peTqUW56O5JanA7nHfy3jWkA6PB2PDg/l4p/zP3/86dOXH27+3bE//lRTXz79+K/PH9d//uf3n3+6+etv//fr/su/vnz6/PnTf3/49csvP3389+9fPqol/duHsP7nH0ln+CmV/E/9x88gxDCFWFWIEOZ2aEot/vNPTdL/Aw==" }, { "name": "sync_private_state", @@ -11006,18 +11380,15 @@ "error_kind": "string", "string": "0 has a square root; you cannot claim it is not square" }, - "2709101749560550278": { - "error_kind": "string", - "string": "Cannot serialize point at infinity as bytes." - }, - "2896122431943215824": { + "1004672304334401604": { "error_kind": "fmtstring", - "length": 144, + "length": 48, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } ] }, @@ -11025,22 +11396,16 @@ "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3095323350861740601": { + "3206131020419630384": { "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "length": 75, + "item_types": [] }, "3305101268118424981": { "error_kind": "string", "string": "Attempted to delete past the length of a CapsuleArray" }, - "3367683922240523006": { + "3738765135689704617": { "error_kind": "fmtstring", "length": 58, "item_types": [ @@ -11057,19 +11422,38 @@ "error_kind": "string", "string": "push out of bounds" }, - "5870202753060865374": { + "6485997221020871071": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "7233212735005103307": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "8270195893599566439": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "10676044680617262041": { "error_kind": "fmtstring", - "length": 61, + "length": 98, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 }, { "kind": "field" } ] }, - "6336853191198150230": { + "11732781666457836689": { "error_kind": "fmtstring", "length": 77, "item_types": [ @@ -11080,57 +11464,49 @@ } ] }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "11418088424205762236": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "12099279057757775880": { - "error_kind": "string", - "string": "DST_LEN too large for offset" - }, - "12822839658937144934": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, "13649294680379557736": { "error_kind": "string", "string": "extend_from_bounded_vec out of bounds" }, + "14101993474458164081": { + "error_kind": "fmtstring", + "length": 61, + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ] + }, "14225679739041873922": { "error_kind": "string", "string": "Index out of bounds" }, - "14514982005979867414": { - "error_kind": "string", - "string": "attempt to bit-shift with overflow" - }, "14657895983200220173": { "error_kind": "string", "string": "Attempted to read past the length of a CapsuleArray" }, - "15366650908120444287": { + "15200354114977654233": { "error_kind": "fmtstring", - "length": 48, + "length": 144, "item_types": [ { - "kind": "field" - }, + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ] + }, + "15760694058516861966": { + "error_kind": "fmtstring", + "length": 128, + "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } ] }, @@ -11146,13 +11522,9 @@ "error_kind": "string", "string": "Attempted to read past end of BoundedVec" }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "17879506016437779469": { + "17226037485472400844": { "error_kind": "fmtstring", - "length": 128, + "length": 132, "item_types": [ { "kind": "integer", @@ -11161,279 +11533,23 @@ } ] }, - "18194595712952743247": { + "17610130137239148460": { "error_kind": "fmtstring", "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] + "item_types": [] + }, + "17843811134343075018": { + "error_kind": "string", + "string": "Stack too deep" } } }, - "bytecode": "H4sIAAAAAAAA/+29CbRc13Ud+OpPwC/gA4WBxMBBmEiKIEHW+Ku+hxiyLEu2KFkWqcmSJdevgaQIEhQBkBRJkPUxERNBECABjhosO5I12IoHWZJlJ3ZWVtIZu93dSXevdKeT1Z1kJd1pZ6V7pVc6zmo8sk7Vrl3n3ffq17kfJfLftYD/6t179zn33HPPPXd8qaAbUu2/E8EQQUDW3PzW3+n27zGIH7/yb2/7d3a4kJsmupb4lexcY1opnyH/hek2ZsoPflbwPck/u6KN86VWFx/LInRXXvm3Cp6fDLr64av8Un8+y7/BUWbRnfe2gk7o0m0Wy4V6uTpbm6/U5wu1YrVSLlbL1dLcbC5Xr2brc3PZ+XwtWy03K6VKqdHMzTcaudpctZmtlKoFwf65VpfuRGCrN2F4nx/8Trv9eT/4ecF/f0uTfaExX84WStXZynyuWZ1tZueL5Uqh2iyX69X6XLFRLmXrudpsrpbPNSuVaqlUrZXmcrlmY67UrMwK9gdU7EalUpubLzezzWpzLl/N5rP5+Vq9WcrOXqHRbNRKzWahOJctFSr1aq1eruXmaoVKvllrzDWzc516/QUVu54vVZu1en2+mG3OFcrVcuWK7syV568AVHKF2Vy1NndFp5q5RrVWrs1XG9krtBq5ar2cq5cLJcH+RZC5XVvo4n/QC35XZ+7ygp/r6PyH/MhnXvA/3AqUuq3kqldsQL1ezFXqtXoh2yg0r7T+SrVYn81VQvUsVObrhVK5ccVo5CrVcr7UKM1Wq1f0tFrLdWTzSyp2I18uFgtzuXIxV56tF2Yb9Wyl1qzUC7lqLjefq9ebzSu2Z/6K4jdny3OzV3SzUWuUG5X52SsNoKOTH1GxhwuC/csKdq5SyOfLhblydq5Sz+aK9Vq+ks+Hyn9FMLV8Y66Ym2sW88VCrX7FiBYr1VzY6GpzzUov9keH5zsXxffdLR+60rVf9/jBLwr+x/zgd3Tm44CfCuxtwSf84Hf4/6Qf/E79fsqP/JuC/yte+C90+sBPe+G/0NHPz7TxAzvZdPqpX43GXrTpEezPKtj5aqGWvdLLV0tXzHejUrpil6+4d435SqM5m6/O14rZfD2XyzWKV/7LN+rFufkrpn9+tnHF1M9fIdexOZ/zIvNcTfB/zRh/tnrFEZ+dLQt+1Rh/fn62XL0iT8GfN8Yv1GYbzUK502ZrxvjVUrHZLBWqgl83xi/lso1SvtzRzYYx/tx8tjR7xesV/KYx/hUfvFCfq3b8p3ut5TPfyNbqubmZNs59bXyhEQahfb8x7XaYSxG9oI3P74R+mni19rVTRA/5QfnIWFdk9/lWP68ZJQ5tDMeNK++EjoZVNcSaN8SqGWLVDbEahlhNQyxp137bWrHTj37eC36hIvgPeMHPduYk9/nAz3XHNg8CfmDHfwf/IcBPecDf70f+HfyH/cinM7b5QhvfB/Yj9tgd/+iAH7l3/LuDfvA7Y5pDfvA7/u+jfvA7ducxP/hzgv+4H/yO//tFP/gd//EJP/gd//dJP/h1wX/KC36uI5/DgG9nl/Mdu/m0H/yOfJ7xgl/o8N/yg9+xzQte8Isd/CN+8Dv2+agf/I59PuYHv+NXHfeCX+qMv094wZ/t1O+zfvA7/ftJP/idOddTfvA7c4qn/eB39P+MH/yO/p/1g9/xT57zg9/xT875we/4J8/7we/0j+f94Hf8hxf84Hf6xwt+8Dv286If/I79fNELfrnTv7/kB79jPy/5we/Yz8t+8Dv282U/+B37+Yof/I79fNUPfse+veYHv2PfXveD37Fvb/jBr4f7v8K9X2u2vIW3OnxuY9/bOPiz+/bXHvjwoQfnG4/gjLdwEcBfeR4P+sPq9r826j33P9g4cLD64MOcdywCcyICc30X8737Hzr4SLV28D31+iONAweiuEoF7hCipruoH288cuD+/Q9F8TMg2nvvq97/0C/UGW0yIZrsm5uC9Ia+cHamjbeC+EPaK+G94Ti3rmkT1xnSTxOvxuP6XIroCT8sH1xrSQXdeXLMm1HiuA6nFTrTCp2MEse+8zBYLxlinTHEumiIZVnGFwyxzhliXTDEOmuIddgQy1L2lm3o0ohinTDEstQJS9lb6tcpQyzLtm2pEycNsSxt9CuGWKPaP8qYZDro9w98nDdZ5Qe/ILJIO2SB9MVXQt8qFfFXsDhOaKUJy7hsOVfZkH+u5zTwgzKIwkoPiDWtxPmo02lHuZl+VHrNX5b0qx34mH5t0K/Dq0kWM35kkXfV22qgKfRXQxnqjflD9961/96AwjjJQeR2PaWT/RJjQb+8V0VgBfT7eno3DngYQr7Xtp+bjYO1++6p3ntvo36F+wOUsi+rHKfi9zwswjSeVTi/WFPiyQznkpjJMIjKh9UhVbxvf7X+3urDBw7ta4yRKHEEzOJEOC42V1UKWApIBBjw5FwY5GSRNu/DOEJ3FcRpIhBMafVRWs/VtUKhK+/GlPRpwkor+YT3cUd+xMB8rEqu5pBEXaUcYdBmFYR2kpkcP80uV1hss/M9k+OqK5SrX28pl3e1gVWKfKQuVytxgiU9z2Sg90yroIzcU84AH5P07i/afzOEGQY5eebqyfGdyDec+fo3VDasG9ZTP/VQzCXVU6GfDrx2VzmXXmje4XTQX8+WO3KT1CvyK3U5o8QJlqwsoJ5i+tVQRkyPz5If3/2X9t9M0K/TrKczSnnwHerp/9t+no4oz9727+xQoVzmNi40kLYf7zZXS9oOhH468Kl33Xag1ZNmT0R2axReM0ocz7yvUeisUehklDieDRgG66Ih1klDrNOGWJdGFOucIdYFQ6yzhliHDbHOG2JZ6v0oysvVDw6KFQZLXb1siPWcIZalrlqW8YQh1qi27dcNsZ4xxJIdMOxnCn4YpoP+tmc9dkN6Ug58h/TTxKstP11fSZOr5tOKfNb6kU+Hn7UKP2sV+UhdZpQ4wVrX/o1jBky/FsqI6fFZ8uO7D7QrLEOYYeAxQ0YpD77DMcPPpnrLhnXDeuqzHpCe8I3vkH468Nlusk690Nr/dNBfz4byySapV+RX6nKdEidYshcN9RTTZ6CMmB6fJT+++zjpKeo06+k6pTz4DvX0I6SnWDesp17qIddMrKdCPx34bDddPdX0Yq0ix+mgv54N5ZNNUq/Ir9TleiVOsDa0f6OeYvp1UEZMj8+SH9/VSU9Rp/lU8XqlPPgO9fSzbdzpiPLsbf/ODhVKRa0u7fDLuRmlnNzOUNZ2el1I3M6Efjro1wsf7WwD8ROlByK7jQqvGSWOdWSjQmejQiejxPG4Zhis04ZYhw2xThpinTfEOmGIdc4Q6wVDLEudOGWIddwQ65IRlmafh+HrJSO+wnDZEMuybb9uiGVpCy3b4wVDLMt6fMMQy1InLGVv1bYD4zJa6sRFQ6xRtROWfL0TfKblPu3qyd6yPZ4xxLIs46sjypelP2FZRl4fwLFlqv13Ouhve4bj7EaK6Ek58B3STxOvtvx0x9maXDcochXZXaPwmlHieJx9jULnGoVORonjPmMYrNOGWIcNsSzLeM4Q64Ih1mVDLEvZv26ItVyPg2G9YYhlqROnDLEuGmJZ2q9LhliWsrfUVUvZj6r9stRVS/16wRDLsh4t9cuyDVnq10uGWCcMsSzLOKq+nGUZLf2JUa3HUfXlXjXEGlU/x9LHXPYn3h5tyNJOWPJlpV/hM8+rDsPXy0Z8hcFS9pY+gPS1vN9N8MPgdw4tn3iPLc+hedmDFTOHpu2tmw769dBQPrkk9Yz8Sl1eq8QJ1qb2b9wThumvgTJienyW/Pjuk22hZAgzDLwn7FqlPPhO5BvuCfto+8d0RHn2tn9nhwsVng8VGkgb5WSod4m+PoT004FPveu2A62eNPsistuk8JoJ+nWH9WGTQmeTQmcZa7SwPm6E5bJhEh+GaSWftb1FelIOfIf004FXu5BzyVWzlyKfzX7k09mjvFnhZ7MiH6nLLUqcYG1t/8b+CNNvhjJienyW/PjuKeqPtkBabgNblPLgO+yPHh3rLRvWDeupn3pIfuZD6KcDn+2mq6eaXmjtfzror2dD+WST1CvyK3W5VYkTrOvav1FPMf0WKCOmx2fJj+9Ok56iTrOeblXKg+9QT4+1f6wNottnkvaMuJrdZhliPm4PXuo718gmbQ9CPx34bJ/d9rAloVxFPlu9yKfeTKI/yK/U5XVKnGDJTWPYHjD9VigjpsdnyY/vXqP2gG2H28N1SnnwHbaHl8huY92wnnqph2y2mVRPhX468Gknu3qq6YXW/00H/fVsyE8jSb0iv1KX1ytxgnVD+zfqKaa/DsqI6fFZ8uO73yI9RZ3+SKuXh+uV8uA71NOv0XiXy7O3/Ts7VGjktLq0w692biK93gt+fm5aqS87/PmK4N/oB39W8N/lBb/Sqd9tXvBLHfls94NfF/wdfvSnw/9OL/iFguDv8oLf6PB/kxf8Ygf/Zi/48532e4sX/LmO/r/bj3w69XurF/xmSfB3+5FPh//b/PDfsf97AN9yLkLw7/SC370V+Y6gG8aVMgl98UVuh/SpiL+CxXFCK01Yvvw+rWzIP4/77gB+UAZRWHcMiDWtxPmo0z2OciP9GQevXI4w8B04i5VJGE4ZYh0zxHrJCEvzbYfhq2XI13VGfGn+7zBYNxhiTRlhhYG/aDsMXzca8RU+v2tEsbYZYm03xNphiLXTEGuXIdZNRlhh4C8NDsPXzYZ8vdiy4+sWI77C53cbYln1HeHzrYZYuw2xbjPCCgPPnY4Klqwh+53vKs75ne8qVP3OdxXrfue7SgW/813Fst/5rmLR73xUsSZjAekjhQbqLvZ5duOWYuKzpkI/Tbza8tMdP+4kflg+vD9ol8JrRoljG7BLobNLoZNR4niv8DBYrxhinTDEOm+Idc4Q65Qh1mFDrBcMsU4bYl0aUSxLXT1riGUle80vGBVdtWyPlw2xRrU9vmyIZdmGRlX2zxliWdoJy77W0kZbyt5SXqOqX5a+iWU9Wsr+nWAnXjfCCp95jDwMX0cM+brBiC9LrDAstOz4utGQLyvZh+G4IZalTmwL7LCmjLDCYKUTYThmhBU+8/zOqNSjJV9WujrKtjBjyJel/bKsR0u+RlFeYbDU1e2BDVYYLPuOY4ZYbxhiWfpfZwyxLOcULH1yy7GC5dyj+Pcyj70N4lLtv37XALKLXgPY5ocf5xrAtqBfrtp+WEN+6knqGfmVurxJiRMsWZPHswOYfheUEdPjs+THd3/UrrgMYYaBzw7cpJQH34l8Q9/yD8Z7y4Z1w3rqpx6Sf2NW6KcDr+0m59KLnYocNb2QvBkljn36pPWl1T3vrRsG66Ih1klDrNOGWJdGFOucIdYFQ6yzhliHDbFeNMSybEOW9fiKIdYJQ6zLhliWbdtSvyzbkKVdfSfI/gVDLEsbLbZQzsejP7Qy6KUz6NgB80s6v+fBSnm/58FKs37PgxWb4nfdAnJNkexwn6adj1hJfJ+G0E8Tr7b8dH3WW4kflg/7rLsVXjNKHO+v2q3Q2a3QyShxbFuHwXrFEOuEIdZ5Q6xzhlinDLEOG2K9aIj1kiGWpexHVVcvG2KdNsSy1C9Lm3PREOudIPsXDLEsy3hpRLEs2/ZZQywr2YfPvHdyVHR1VH0AS6zlfnu53/5x6TuW++3lfnu53357yn5UdfVlQyxLeVnaHEvZP2eIZdmGLPvtUbXRo+pPWJbR0ve1rEdL2b8T7MTrRljhM++hGAZrlyGW1Tx5+HyTEVYYeH/oMHxlDPk6YsRXGI4bYh0zwgqfef1rWfbuMvL+9mGwbjDEutEIKwyW8nq3EV+WuhqGYy07vkZV70e1jG93W2jJVxiW+44f/74jDEeNsMJnyz0PVvIKn7cb8RU+v8sQy6qvDYOVTljKKwyj2HeE4Q1DLMsx3xlDrHOGWJbzAJbzE5b7c/gMEu4NS7X/aneGh3T2tn9nhwr5xGc7hH6aeLXlp7tPTpPrrYpcRXa3KbxmlDi2p7cpdG5T6GSUONb3YbAuGWKdNMS6aIj1iiHWaUOsl0aUr1OGWIcNsV43xHrGEOsNQyxLeV0wxLJsj5cNsSz13tIWWtbjGUMsS5tjqRMvGGJZyv7EiPL1oiGWpU5Y+iaW/bZlPY6q/bLUL8v2OKo22hLLUr/OGmKJ7Plcj+CHQft+k+FYr5gielIOfIf008SrLT/dsZ4mV20MLbLbo/CaUeJ4DVr7RtAehU5GiWPbPAzWRUOsk4ZYpw2xLo0o1jlDrAuGWGcNsQ4bYr1oiHXCEMuyPV42xLLUL0t5nTfEstQvyzZkaVctdcLSro5q27Zsj5Zt6BVDLMv2+E7QrxcMsSx9AL4nAv1tvidiUJ8f80u6GSVfqv3X7zdV5xLfgyD004pMfPj8exLKVWSX5Hud4bPl9ye5bxoG6xVDrBOGWOcNsc4ZYll+K/WwIdaLhlhW310Ng6XsR1VXLxtinTbEstQvS5tz0RDrnSD7FwyxLMt4aUSxLNv2WUMsK9mHz1bfjQ6Dpa6Oqg9giTWq/bal7C19AEsbbelPjKquLvfbV69PW/bJB8Na9smvnn4t+4VXT79G0S8Mg6W8RlVXXzbEspSXpc2xlP1zhliWbciy7xhVGz2qfZplGS19X8t6tJT9O8FOvG6EFT7zHqdh+Fow5GuXEV+p9jsrLMv1IUt5bTfk63jLDuuYEVb4zGelR0EnwsBnRkdB9pZt27o9WrWh8PkmI6wwWLbHd4J+8T0uw2DdYIh1oxFWGCzl9W4jvixtYRiOtez4GlW9H9UyWumXdRlHUb/C8HaX1zuh7wjDUSOs8NnSJ7eSV/i83Yiv8PldhlhWfW0YrHTCUl5hGMW+IwxvGGJZzimcMcSyXLc6bYhlOf9lub+Q73HBva2p9t/poL+9hHT2tn9nhwuJ73ER+mni1ZifnEuu2j5tkc+dfviZTxE+8nOnIh+py6wSJ1i59u9JwML0d0IZMT0+S3589z+3B/4ZwgwDf0s6q5QH34l8Q8h/MtVbNqwb1lM/9ZCrJ9VToZ8OvLabnEsvtPav6YXkzShxPIeTtL60uue9CcNgXTTEOmmIddoQ69KIYp0zxLpgiHXWEOuwIdaLhliWbciyHl8xxDphiHXZEMuybVvqlyVflvVoyZelnbDUCct6fMEQy9Le83lD9K34vKHLP9XoYH5JN6PkE99qOuj3Uez8qUopRfSkHPgO6acVmfjw77IJ5Sqyyym8ZpQ4nrvKKXRyCp2MEsdtdBisVwyxThhinTfEOmeIdcoQ67Ah1ouGWC8ZYlnKflR19bIh1mlDLEv9suTLsh4t+bK0q5Y6YVmPLxhiWcr+0ohiWdqJs4ZYVrIPn/ns4qjo6qj6E5ZYyz7Asg/g064u+wDLPsCyD7DsA8RhWcprVHX1ZUMsS3mNqp14zhDLsg2Nat8xqr7vqOqXpR9tWY+Wsn8n2InXjbDCZ94HMQzWLkMsq/n78PkmI6ww8FmWYfjKGPJ1xIivMBw3xLLiy7oeLeV1zAjLWies6jF8vt6Ir/D5BkOsG42wwmApr3cb8RU+32yEFYZjLTu+RtV+jWoZLe2qZRlHUb/CsNwPLes9xx01wgqfLfeIWOrXdiO+wud3GWJZ9dthsNIJS3mFYRTbYxjeMMSyHIueMcSyXLeynJ+wnDex3M/E55umIC7V/iv7CtGeh3T2tn9nhwuJv10m9NPEqzE/nX2FmaBfrlOKXEV2WxVeMxQXBj7ns1Whs1Whs1RYWn2H//a2f2eHCqXSjEKbdQ33N9jVba6SVNeEfjror1sfunYd8RNVbyK76xVeM0oc1+H1Cp3rFToZJY7XWYfBet4Qy5Kvi0ZY4fOqwAbLuoyHDbFeMMS6ZIh11hDLUl6XDbFeM8R60RDrtCGWpezPGWKdMsSyLOPrhljPGGLJ2IN9izDsbf/NZpvFcqFers7W5iv1+UKtWK2Ui9VytTQ3m8vVq9n63Fx2Pl/LVsvNSqlSajRz841GrjZXbWYrpWrRr+9QKk8H/Tbe0DfJCf4NfvDzgn+jH/yC4G/3g9+p311+8EuCf5Mf/FnBv9kPftnv+a9cRfBzfvDnBD/vB78q+AU/+HXBL/rBbwh+yQ9+U/BnveDns4Jf9oPfsZ8VP/gd+znnB79jP3/CD37Hfv6kH/yO/fwpP/gd+/nTfvA79vOv+MHv2M+f8YPfsZ97/eB37Od7/ODPC/7P+sGvCf57/eB37P/P+cHv2P/3+cHv2P+f94Jf6Nj/9/vB79j/D/jB79j/X/CD37H/v+gHv2M/P+gHv2M/7/KD37FvH/KD37FvH/aD37E/v+QHv2N/PuIHv2N/ftkPfsf+fNQLfrFjH+72g9+xD/f4we/Yh4/5we/4hx/3g9/xDz/hB79j3z7pB79j3z7lB7/jH/6KH/yO/fy0H/yO/fyMH/yOf/irfvA79vmzfvA79vlzfvA79vnX/OB37HPVC36p4x/O+8Hv2P+aH/yO/a/7we/Y/4Yf/I79b/rB79j/e/3gd+z/fUE32GB35+bv98F7rtnR/c+rvBca8+VsoVSdrcznmtXZZna+WK4Uqs1yuV6tzxUb5VK2nqvN5mr5XLNSqZZK1VppLpdrNuZKzUqn33oAeE+ZyabS4X2fF/xsRy8f9CL7eseuPaTIPl+sz85Xs+VmuVqtNK90Qvn6lT+zVyTfLOWrc4Va9UpN1Ocb1SvLVXP5Wj1fLzQqV9pqozA322h0bf5+tV6H4TvbkfvD1tjZQqev/YKK3ahUanPz5Wa2WW3O5atX5nbz87V6s5SdvSKNZqNWajYLxbkrYqjUq7V6uZabqxUq+WatMdfMznXq8xEVu54vVZu1en2+mG3OFcrVcuWKfOfK81cAKrnCbK5am7uyRtjMNaq1cm2+2sheodXIVevlXL3cHeMe8KKL3TWQg+a6WHnz/3B/2ffbF/+tBf6F1jSVS9Zc5Z7qMOxv9aaReEz/h2vf+hvS+1Gb3gzlCeB5mvLb2u7cXIroBYG+L0vopxXZ+NiXNUb8sHx4X9aEwmuG4sLA6/QTCp0JhY6G9YYh1mFDrBcNsU4bYl0wxDpliHXOEMuyjGcNsUZVv04YYr1kiHXZEMtSvyzldd4Qy1K/LNvQRUMsS52wtKt8lgDj2I+YhPeG/XY+qR8h9NNBf7/tw4+YDJLJdXXQ3Te8b3+1/t7qwwcO7WuMkSjRDWNxIhwXG8WCceP0bpzSvb/V+/uDrf58gYKNLhMendBEIJji9mKZpiLyoSwC5d2Ykn6SsCaVfML7uCN/GDyrc2faYYUf/IKrbrBMQn8m6Jd5KuKvYHGc0EoHusz3GsnOVTbkn00aHitCGURhTQ2INa3E+ajTSUe5kf6Mg1etHBMkE63LSCkykfcrHHxh+rUKbckrMsQr8q27kSgZYlsU+qvhud6YP3TvXfvvDSiMkxxEbpspndjBscBtBxEroN+b6d044GFwDfmTtGfhMwwZBUumIpZdgk5Ydgne3i6BZmpZlaaD/rLubf/NDhXmC9MKT13sSq5arFbq9WKuUq/VC9lGoVnLVivVK9PcuUq4qFCozNcLpXKjXq7mKtVyvtQozVarV1YXqrVcPpT5rvYUpGaeWa/EVOJX9KYU2U5S+s/B7OS72/TCZiCnRuYP7Xvgo42Dj9zfeLRxxdIeCCjE6e6HW72/f6nVn08LLvdnVM2Yb/fKpftBMLAZYxXybcak6iVYmbExBTOJGWMzznRRDpzeZcZSxPu4I38YZpR3rOqePNjEqs4jCV+jMFc9o3yGVHUUJ8IFwej02JrzPqlgupx3l3oGyrs4R9jVC41H0Jty0OO1Msw7SWnf1+6dPDeJ7HrA5TIs90qdsNwrvb17pXElH6vSsHNUQdA/ptXKPx30y2Nv+28228iXi8XCXK5czJVn64XZRj1bqTUr9UKumsvN5+r1ZrNYLc8XG+XmbHlutlSoNGqNcqMyP5vPNYtas00FVs0kXw7r95MORz5qziZqm8EUxGP6z7ZphPGfAUdejiA/Wt13f716sPG+h75wqHGoUf/w/oONA+95qP6+RxsPHRzYrf9Aq/f3L7T682khNAAiBbwwhaWwjmhj+jBIi5L0YrSngi4PmEbyTlL6WltS4YzSxi1vPWuaKPzMUH6JD4No0gbifW/7d3a4kLgDEPpp4tVXB7CB+GH5DNgB8D06KE6E42JfzQ5gI8RpIuAOAMu0MSIfqzy/G1PSbyCsDUo+7gC0/IiB+ViVuPnh7MM6hTY3v4PQ/DZtiaa7LuiXAzfBlEJPmutGShsGaa7XUJn2tn9nhwqlctLmKvTTxKuv5noN8cPyGbC5oooh/McJTtJgWgwfB5YCEgH+5mq/V8nHgf2VayguDKIO11Keve3f2aFCLrH1FvrpwKd6dtXhWuKH5TNG8tnkRz4dfjYp/GxS5CN1uVmJE6y2RekxS5h+E5QR0+Oz5Md3p9tmK0OYYeBrAjcr5cF3It/Qczk23UtP2tZr4NudJV8S2x/qSpQ536DQzij5JZ1GJz0knbRCR7sW88FWb9wKRxyuT15DmNOQj9fJVkPcRyhuBjDThLnGgblWwQzLdeeqLl74bwek00wxuw3bgB/Mi78nKW0YvtDqjZO03wK9+grpFXZDXN8bY/h21bekE1mhnnCdYnvmOkU7wfLX2qPEbVHKpV2TyZjXKZih3G5e1ZtuG6TjvmUHvDd0NWaT9i1CPx3065OPvkXT723wjvuWnX7kU0oRPvKzU5GP1OUtSpxg3dr+jX0Lpt8JZcT0+Cz58d0PqG+5BdJy33KLUh58h33L7033lo3th/ZXcPkdt2+Uzbaglw76EtKmQn7+ZLq3LJIP5Yn9URPiMf1dsID5pw4bxvW3LegtI9swtr3XKGVMasfvJqxtDr52xmB9jLAw/07CuiUG6x7Cwvy3ENatMVgHCAvz30pYu2OwDhIW5t9NWLfFYB0iLMx/G2HdHoP1KGFh/tsJa08M1mOEhfn3ENYdMViPExbmv4Ow7ozB+iJhYf47Ceu+GKwnCAvz30dY98dgPUlYmP9+wnogBusBwsL8fHRzXwzWpwgL8/MxzQdjsO4iLMz/IGE95MAKn+XqzLVKfsk7o2CJnefjlKng6oyHhX6aeLXlp+uz7FfkivIZI9k9rPCaUeJ4bPawQudhhY6Gtc0Qa4ch1k5DrFsMsW41xNptiHWbIdbthlh7DLHuMMS60xDrPkOs+w2xHjDE2meIxf3PNgUL+x+5WtnlP0s+tEE838njRkyPGFH+OS5T7Ijh+UbiWaMpWDtjsLYT1mL99PB5F2Et1k8Pn28irMX66eHzzYS1WD89fM4S1mL99PA5R1iL9dPD5zxhDeOnP9XqxRrGT/8cYS3WTw+fC1TGxfrp4XORsBbrp4fPJcJarJ8ePs8S1mL99PC5TFguP31/DFaFsDD/fsJ6OAZrjrAw/8OE9UgM1k8QFuZ/hLAOxGD9JGFhfr4+5GAM1k8RFuY/SFiHYrB+mrAw/yHCejQG668QFuZ/lLAei8H6GcLC/I8R1uMxWHsJC/M/TlhfjMF6D2Fh/i8S1hMxWD9LWJj/CcJ6MgbrvYSF+Z8krKdisH6OsDD/U4R1OAbrfYSF+Q8T1tMxWD9PWJj/acJ6Jgbr/YSF+Z8hrFYM1gcIC/O3CGshBusXCAvzLxDWEQdWGD7d6sXC/EcI62gM1i8SFuY/SljHAncZf5HKiPmPEdbxGKwPEhbmP05YJxxYYfh8qxcL858grGdj+LqL+ML8zxLWyRisDxEW5j9JWKccWGH4UKsXC/OfIqzTMXx9mPjC/KcJ60wM1i8RFuY/Q1hnY7A+QliY/yxhPReD9cuEhfmfI6xzDqww3N/qxcL85wjr+Ri+Pkp8Yf7nCet8DNbdhIX5zxPWCzFY9xAW5n+BsC7EYH2MsDD/BcK6GIP1ccLC/BcJ68UYrE8QFuZ/kbBeisH6JGFh/pcI61IM1qcIC/NfIqzLMVi/QliY/zJhvRyD9WnCwvwvE9YrMVifISzM/wphvRqD9auEhflfJazXYrA+S1iY/zXCej0G63OEhflfJ6w3YrB+jbAw/xuE9aUYrCphYf4vEdaXY7DmCQvzf5mwvhKDVSMszP8VwvpqDFadsDC/5J1RsFLtv7Jm9Ovw3m6NpphLET0pB75D+mni1Zaf7prRrwf9ckX58JrR1xReM0oczzl+TaHzNYWOhrXTEOsWQ6xbDbF2G2LdZoh1uyHWHkOsOwyx7jTEus8Q635DrAcMsfYZYj1oiLXfEOthQ6xHDLEOGGIdNMQ6ZIj1qCHWY4ZYjxtifdEQ6wlDrCcNsZ4yxDpsiPW0IdYzhlgtQ6wFQ6wjhlhHDbGOGWIdN8Q6YYj1rCHWSUOsU4ZYpw2xzhhinTXEes4Q65wh1vOGWOcNsV4wxLpgiHXREOtFQ6yXDLEuGWJdNsR62RDrFUOsVw2xXjPEet0Q6w1DrC8ZYn3ZEOsrhLVTwcI5x0b72bVPTvJFnccahzQ74b22ry5qH9448By3H69JPGs0tfOND7d64/B8I+/JxzPPfPYRzzBvozg83/hVitsKcXzW7TqIk/Jo5xunHOXB+3r5XC+ez+Uz3NMQt4niVkPcZorD87lbKG4NxG2luLUQdx2UVc7nTlJZ8+33nm94Ua8ec52PTkX8DYL+efEwcLvlK9SQzgZDOoj1/lYvnY2GdBDrM61eOtcY0uE9ykhnk0JH9GYz5dvb/p0dLiQ+SyP000G/jTHkp7Muot19sEmRa8KrRvh6BxQnwnGxUSwYN07vximdxc1AeI2EJgI+Zopl2hKRD2URKO/GlPSbCSvq2ozxCHpaVWI+VqUUvY+6GehaiMf0H27rQ9htbN3STR9FC+UhMmU9ibocjHmQ9B8FHjZu0TEnIsq1KQKzsarLy8dW6ZiBgqmVawuVi3nYTDxI+k9BuW6gW5e2KPmDiHfYtjgv/9Z0Zh2l3xpTHq4nSf85Rz1dq/CAbZJlyjxwmi0RPNQUHtCs1fY//MW2WQso8E39bJZY5HwD0rUKTlQQ/LB4oorjhMsmiunI75TCU1hk8crqjX2Ng42IQo8pTGnExgI9sAst+cLg96qi5N2t0E8Hui7uteHHeXUSyoe3IWhXIWWUOFQMVkAXndVB130/cHD/I1G6kLQfZvpaP44BlTSgPMv6s3j9SeiusdqgOBGOix1VZXFqIiMLCYtx11xuDmKKu+ZysbC61it05d1YEO1Oaa4YX8LocscQA/Np3SJ3sVoXjBc9YvoF6P42bdHLKb8/D8+Z9vPVGz3lEu8qe5uOnjIEJ2kwLYYMsBSQCPA3q7xcbpGkOfq9EKqcF3V7ROFB4nCTCE9Y4aYPnrDCTRz4NRoO40rZpbxhM9q2pYvL6ZhXbNoHKA6bzUGKQw/9EMXhZOGjFIeThY9R3DaIe5zicPJVNm/wnbCv0mSbp15PnWwTWmuDfrniBGaUF6Rde5xR8q930JkZks6MQsezLHN+22v3Q3suDwXpc7uQeO2vYHEce1++r9F2ddlh4HrWZoNcWJsGxPLsBRfY5dDKrdlXjVetHDz7IYsTN7eHJOEQ+LuOxQ12P/x8GLSQ+PJGoZ8mXn3po/b9Ge0DnNoCj+Rl2xeGo61uOo4bV96NObAuGmK9bIh1wRDrlCHWYUMsyzJa1qNlGU8aYlmW8QVDrBcNsc4bYp02xLpsiHXOEMtSJyzbo2UbstQJS3mdNcS6ZIhlKfszhliWsn/JEMtSXpa28IQhlqW8RtUWWsrL0ua8E3wmS52w7LetZB8+rwpssMJgqfeWsn/OEMtS7y3LaGknLH0AS3m9boj1BmElHddL+tVKem1eSuYycTOn5JU5FJybtF5RjZITbiAV+qshbb0xf+jeu/bfG1AYJzmI3EqUTpYEx4J+mzMdgRXQ7xK9Gwc8DPgxySRLZjsJc2/7d3aoUEi8gi30l2rJbCfxw/LhOSvtgx0ZJe7d8IxxSEf78EZGieN+exisFwyxXjTEOm+IddoQ67Ih1jlDLEuduGCIddgQy1InLOV11hDLUl5nDLEs5fWyIZalrp4yxHon1ONLhliW8rLsh04YYlnKa1T7IUt5Wdp7S/2ytDmW7dFSJyx9JivZh888BzMqem8p++cMsSz13rKMlnZiVP2v1w2xZA5GOzDM26S1MexOBx3MvzMBljYelvTaBz9ccz3aBz9k7gEv0PMx16PVh/bRkMXM9YjccpSO53rQtt0agRXQ7xy9i5rr4X1Lr7QnskS+nvajqfsieb/iCoi7jsq3Asowrrxj/cX8Kxx0Vg5JZ6VCR/uwtJTbs5zrKaIn5cB3SD+tyMTHHNr6hHL1vD+wlgr67dW4QlP4lbp02VZpr3i8AdPzB+GxfaO9maR332m3zUzQb3f5o71J7Xs41/v11b1lW+x+VsTV+o0k7WGxdBBLPgCsHZ9hOzLoHlbMvykCS+o9DPJx0jB+G6WX+phQMMMgHyqfpPQ/bNdXaGuehf37YRrc54ofQv7RajevmBd55RPTd6ztYv71NqYmZ6l3TQ/4FOAKha6GybZ50LpbqfDgwtoGaaYpvdTFVER6Ppkt6f8rqLsb6BTxNsij6c+mCB5QfwQjDFH68w8WoT//aLWbV9af6aCXtqTPgP78OekPytilP9MUh/ojMtL6dj7zMGjfjvldPsRGikPer6G4jUq5UhSH/G108Det8CD95zaIs+s/Bz/jNENxeMZpDcXhGae1FIcXz3K/8hjEcb+NF8PyZT540Stf5oMXt05THF7EysdPMYzTb6yXsC2eHuAsFuoNn8XCdsgXB4us8EYJrc3zuOAv4DzDP5zppefya/GCJDu9my2kiF4Q6H6t0F8qv3YN8RNlU7RLoiRvhuLCsNDqpuO4ceXdmAPrsCHWi4ZYJwyxXjLEumyIdc4Qy1Je5w2xLPXrgiHWRUMsS504bYQVPk8GNlhhuGTEVxgsdeKkIZalTrxgiGVpVy3btpWuhmFU7aqlTljaL8s2ZKkTlvI6a4hlKa9ThliWumrJ13K/ffXkZemvWtpoSx/gZUMsS/s1qjphaSdGtR+yHMNYlvE1Q6xlu/r2sF+W9fisIZalvEbV5oyqX3jGEMuyPVr2tZb1OKr+6tOGWJZ8WdrV5wyxLO3EqNpoS74sZT+qdsLSJ38njGst++1XDLEs+bIc11rWo2V7tBzDWM77WmJZ6gS3IVn3xKvlZe9KGOQDQJOU/h+016GniUYqMF1rLrr2xQntrZ5op4heEOjr3LxfAfnhvZ0YNzEEr3ONcqmQb9Rz1VplvjHf2Uu5lXjld2NAP/y3TUnv2gu6E/Ibyjov+y7GW138bUFXrmGYgLitFDcJccJjuK9j3/Ze/rd54j+J/JF+RknP+0iT1uX6oFfXsD1qe0ZwnwS3JT/tuJB4z4jQTxOvtvx094xotnSNIuMZh4y1fXLvgme2X+PKu6i9u2Fgf38YrEuGWCcNsS4aYr1iiHXaEOulEeXrlCHWYUOs1w2xnjHEesMQy1JeFwyxLNvjZUMsS723tIWW9XjGEMuyHi3tl6W8XjTEOmGIZSkvyzZk6U9Yyuu8IdayXb16dtVK9uEz3ycwKnpvKfvnDLEs9d6yjJZ24qwh1qj6qy1DLPFXea4wfMbzJ37n07L5pfqGzDZFVlgmoW/xDZlt7eel+obMNqVsLj3YBvygDKKwtg2I5XderVunWx3lRvozDl61cqw1lMlmwko6tzRo3a4N+utT8npuY515Tu3TdduAptBfzN0cIrc8pbu71ZUDy3trBFZAv/P0bhzwMIiMcf7xGsLSbPI0vPtgqxcLdW09YV0Tg3U3Ya138LU5ButjhIX5WYe3xmDdQ1hanbj0G7EOEJam34K1MwbrIGFh/p2EdUsM1iHCwvy3ENatMViPEpZ2v4xg7Y7BeoywtLt6BOu2GKzHCUu7Z0ewbo/B+iJhYf7bCWtPDNYThIX591C+PRCHdwpoZ2XxfP3n1/TypN3PgGdXo75o//U1XcwH1/TyjfnlLu619Dt83kA8oyzERomNx3uvrW080gsC3fcR+mni1Zifju+j3VOO8pH+MeHnUvlKCxQnwnGxUSwYN07v+Gj2FOWT7mE8iA4iSqGLx9OTdDna1eicD2URKO/GlPSrCWu1kk94H3fkRwztWnUuP15tIe/XKbQnKf0z7eYYxm+lqz80WigPkSnriVw/wmmYB0l/FHjYuEXHnIgo13QE5itgck6s0TEDBVMr1wyVi3lYTTxI+tNQrhvoy9Cor9wGvtDq5W2NQiuIeIfYmJfjXHTj8obPGXjmOE1v11F6XIZPoq+S/qJDV1YqPGB5uV6ZB07T2UJB6S8rPKBpre1/+Itt0xpQwN1EminkquQqWKngRAURQ1i8V9boOPLbpX5owqYVGtMRPGLe8K+Is97Y1zjYiBAQ9y0rIoiNBXrgT3JKviDougeeuuPE7oHQTwe63u614SfHdlz4YfnwVo4ZhdeMEoeKMQid1ZD3wMH9j0TpQlK/QeuvOH9AeVPKuyDo/cyI+Aq+r2rT6EwPSWc6IR0f15dpdGaGpDOj0GEsbVgShvtb3XhM/z2w449t1zHHIjBlqkDS36mUR7sWS9Lfp6S/UymjyPIOiLsviKeNsuR+7/4BeX1ASX8/pLmTeEX+HhiQ17uXmNdNCq8zCm3uQ7BcV6MPEfpppYw++hCXXMMw4BATVZ3FiXBcbBQLxnFXsYbSfaDV+3sxQ8x9EKeJgIeYWKZ9Efm4SfC7MSX9A4T1gJJPeB935EcMzMeqpOULf39ByZOk6ewj/L3t39mhQq6UtOkI/aVqOnF6w+7XgwqvGSUOh4UYh3QeVOhoWFsMse4wxFpriLXeEOsaQ6zNhlhbDbG2GWLtNMS6xRDrVkOs3YZYtxli3W6ItccQ6z5DrE2GWKsNsXYQljbsiXKjFjNE5vmiByLob1TyB5Q3Re82RmAJTvgOfRkedki/MBW4hzyTlH683QngNOo4pWF+ZpR3Up5phfbVcOGF/lJ9ITRu6MV+yH0Krxkljvv7OxLSsdDxMIhvn1L44fwBYaWUdxin6ThOA4iO80oq5sWVVG3VXfwSbRV9BfGjrchj+msp/a3Ag5YevwqB6a9V2py2mr4ygh7yh+9c00e3RmBF3eZ+fQTv1wPvPK2j7RzQpiglvbY7APt54UeTDffhu5XyYH3Kiv4kpd+hlGdGeGp1aWxrv5OpvwmIM7Qn9ZCPJ4APlutkq7fcLhmGgWWu7aJAWYrMMpQe5a/tmN5Ncdi22D/dpvCAO0K53WtfqcAvFGjTTaPY7osJ2/11EfSQP1e7x/yDtPswyC4a5v0nBmz31yn8jVK735uw3YtOLbf74du91t8nbffY3/8o4sskgotYYTzPJwhfqDPbIM29EI/pP+JoA5oNcU2la20ax97b2s+a/bqV4rZBnIyJrl4fVprVdLnnK1et5LIIA8tOszdoI6S+M0G/bdlJcTiG5LmPbQod3DHL+op6JnlDff0TWvLkpVXEWF5aH3xpPeGyCHf7vKI97LIID4Xe3+r9vZhlEdeONcQU1XLtltM+VBgo78aU9NOENa3kE97HHfkRI+ojjFh+3Kkk76cU2pOU/mEw1Zu2RNPl3ZFaE/y8Qu/qbZTN5ZI21x/zjbLcXAU+Q3CSBtNiyABLAYkAf/Nm1Lta/fk4CI5UuZ9zWIN/c4vVFL8Jxd+ywm9u4XflOIwrZZfyhrLbNsC3rLC587essNkcpDjcqHKI4nDF7lGKw5WuxygON1s+TnG4aVK+Fcam5nQbXHTA0/em1O/ncj0vew9vG+/hw63e34vxHrSjYkm9h/UR+VAWgfJuFLwHLV/4e1LJk6TpeDpem/h6MqG/VE0nTm94MWODwmtGicOyYRzS2aDQ0bB4ITHOUx52YYR/T0fQH1PyB5SXbQIPcFcqZdEWRtgWTQXu9sHnU77uWPzT8odhuavpby+D7gHXNv1nlDjuc1YkpGOh42GQPiil8BMEwy3+aWXB0RjruJRzKhhsJPgHio5ngl4eMX+IuYsmbPAzsdzu8TOx45ReK8eTVA5Ow26mpP8RlGMjlQN5En5mKL/EB0G3nT5FvO9t/84OFxK3U6GfJl59tdOniB+Wz4AuIaoFixPhuNhRTSOuOb631ft7MS7hYYjTRMAuIZbpcEQ+Vnl+N6akf4qwnlLyCe/jjvyIgflYlbj54YTSEwptbn7/wDGhhHSfCPrlwE0wo9CT5nqY0oZBmuvTVKa97d/ZoUKpkrS5Cv008eqruT5N/LB8BmyuqGII/wmCkzSYFsMngKWARIC/udqvU/JxEJxJ4vlfttUv7DX+Sft5bdCv6uwxIA8ui6ct30k6jU56SDpphc5M0C/vB1u9cWNKWSUOj23up3yTEPcRijuklEviHnVgPubAfFyJC+vul9d1aUWZMVRxNseaCUzaXPgyF8z/NGE9E4PFl7lg/mcIqxWDxZe5YP4WYS3EYPFlLph/gbCOxGDxZS6Y/whhHY3B4stcMP9RwjoWg8WXuWD+Y4R1PAaLL3PB/McJ60QMFl/mgvlPENazMVh8mQvmf5awTsZg8WUumP8kYZ2KwXqSsDD/KcI6HYP1AGFh/tOEdSYG61OEhfnPENbZGKy7CAvznyWs5xxY4bNsI1yr5H+OsM7FYN1AWJhf8s4oWNKfiBv1PLw3XJdLPJsn9NPEqy0/XTfq+aBfrigfnp04r/CaUeKwL8I4pHNeoaNhPWWI9bQh1jOGWC1DrAVDrCOGWEcNsY4ZYh03xDphiPWsIdZJQ6xThlinDbHOGGKdNcTivszl14fPN7afXX695EN7xtMa2vSJNg6IGjfg1MjTMTxvJ54XO34In3cR1mLHD+HzTYS12PFD+HwzYWF+trlHYrCyhIX5Bxk/hM85wlrs+CF8zhPWMOOHp1q9WMOMHz5HWIsdP4TPhaAXa7Hjh/C5SFiLHT+EzyXCWuz4IXyeJazFjh/C5zJhLXb8ED5XCGuY8cMcYbnGD8/HYP0EYWH+5wnrfAzWTxIW5j9PWC/EYP0UYWH+FwjrQgzWTxMW5r9AWBdjsP4KYWH+i4T1YgzWzxAW5n+RsF6KwdpLWJj/JcK6FIP1HsLC/JcI63IM1s8SFua/TFgvx2C9l7Aw/8uE9UoM1s8RFuZ/hbBejcF6H2Fh/lcJ67UYrJ8nLMz/GmG9HoP1fsLC/K8T1hsxWB8gLMz/BmF9KQbrFwgL83+JsL7swArDp1u9WJj/y4T1lRisXyQszP8Vwvpq4C7jLwa9WJj/q4T16zFYHyQszP/rhPU1B1YYPt/qxcL8XyOs34jh6y7iC/P/BmH9ZgzWhwgL8/8mYf1VB1YYPtTqxcL8f5Wwvh7D14eJL8z/dcL6RgzWLxEW5v8GYf1WDNZHCAvz/xZhfTMG65cJC/N/k7C+5cAKg9x8t1bJ/y3C+nYMXx8lvjD/twnrOzFYdxMW5v8OYf12DNY9hIX5f5uwficG62OEhfl/h7C+G4P1ccLC/N8lrL8Wg/UJwsL8f42wfjcG65OEhfl/l7B+LwbrU4SF+X+PsH4/ButXCAvz/z5h/UEM1qcJC/P/AWF9LwbrM4SF+b9HWH8Yg/WrhIX5/5Cwvh+D9VnCwvzfJ6wfxGB9jrAw/w8I64cxWL9GWJj/h4T1RzFYVcLC/H9EWD+KwZonLMz/I8L64xisGmFh/j8mrD+JwaoTFub/E8L66zFYDcLC/JJ3RsFKtf/K+tPfgPd26z3FxOfChH6aeLXlp7v+9DeCfrmifHj96U8VXjNKHM85/qlC508VOhrWM4ZYLUOsBUOsI4ZYRw2xjhliHTfEOmGI9awh1klDrFOGWKcNsc4YYp01xHrOEOt5Q6zzhlgvGGJdMMS6aIj1oiHWS4ZYlwyxLhtivWyI9Yoh1quGWK8ZYr1uiPWGIdaXDLG+bIj1FUOsrxpi/boh1tcMsX7DEOs3DbH+qiHW1w2xvmGI9VuGWN80xPqWIda3DbG+Y4j124ZYv2OI9V1DrL9miPW7hli/Z4j1+4ZYf2CI9T1DrD80xPq+IdYPDLF+aIj1R4ZYPzLE+mNDLJ5zjNsn12w/u/bJSb4WxPFRwXHKg+kRI2of3jjw3Irh+V7ieZj9eNcRFuaXvNq5sYdbvXF4bozPCuClR3wWDW8MeYri8NwYz/8+CnFPU9xjEPcMxT0Oca32M54bm6Sy3tN+7/lEt3r5EMsD5Z+K+BsE/XPSYeA2k6JyIJ2nDOkg1mdavXQOG9Lho7JI52lDOoglx8W1dsi3p2h26BkHHcwv6TQ6Y0PSGVPoMJYc5Q6DnNHEdj1J6e9vt5nwKPf57b2YLYU/PBfM5zE12yZtcQHiLNdVBP+oH/yCyOKIIgssk9CfUWQ3iB4jrXTQb+d9rElpZWvBO9ZDXDtBGURhHRkQa1qJ81GnC45yI/0ZB69aOaLaJtJZrchE0h918IXpXfvfRYa4nmQow7xLhtgWhX5YXrmFpt6YP3TvXfvvDSiMkxxEbtdROrE7Y0G/Dh6JwAro93X0bhzwMCyVHdfozAxJZ0ahM6PkG8Q+aXQ0nrUbd6Q/Cn2403T2vx3VcxUJntPhT3BI+v+8uYv5XBtTO0cU1SZTQA/vTBAdY/6ibiqaiODvAvSv/BXxCaXM1zt4Fkz00ZFnuR+CebhMfvEC5PftFwuttcQvtsu19Dv8+xTFoS/PZ22182X4jvXVdW+E/I7yo9DPwvRfHtCPSnrNkOTVxnwsB40OvnPJwUVnzZB01ih0hvWTNDothWce84YB7dC3yQ4ttNNgm8S8ch/AJKX/N2CHfsdhh1pBLz38rdl0tkNCL8oOsX5K+t932CFt7HBXK5rnhfZvbMvIM9shSf8DskOe/DvVDgktrZ9dG+jyCIJk/exaRQ6++9m1RGfBkA5iSVvRfE22P4P6/piffe2o9vq31+k0tfaKujtJ6X8X2uvfpfbagvwu/2yB4hYUutxmgqB//BgEblu2EIGVtI+S9H/u6KM0/lrwzjXWj+JvItDb1EOtbpmjsALlnaTH/pHnv45Q2gVHWuYbdfu+9rPf+YVKUfQdzylLkLjjCs8Sh+eIf7nVTcdhnH5jmUJ9uLi9i8vpmB+U0/EITM0mfKHVm1bKPKbgHiVcbOcsL7lTjNv4v2/re9jG/+U6HY/1JAwy9+l3DF0pcf1i4Ppl+XDQ6lf4Duv3zwaoX6zDExSHdpnvo0N7Lhih7P8/6vdHrS0tpr0MIk+tvWjy5HUarX9EeU4Sxo3ru2n+kvRd0nCfEAZpP9JmRX4TSv4wsH/XaR9t+qF81uzQ6bvaWxDodgHlwPdIHg8ieAn6yyxpr2vzKfqIbcxOH4s5qcdniWekfdIT7RTRCwJ9rlnozyj8CN9pJW5iCF5LuXI5P1usl5rzs5VSqZEifOGV3/G8m3a/hHZjvsj6tBdZF+ra5+VOgVzDMAFxJyluEuKEx7AN7dvey/8pT/wnkT/SzyjpH2l10w1SlxmFDo8rhsFaWCTW+qC3DWh9Ifo23Bei/4J3nv4EfE5Cs4suWye2je0+lpPtYJlsHfZ/hjpU1PxRtnXPeqKd1NYJ/Zkgum7TStwwtq5eKuaKzbnSfL1ZaNTLzVTQ3yeMK+/Y1ml6u15J79lWZDVbx/ZsAuKepTi0dcKjZuv89IuFbBL5I/2Mkp5tXdK6zCh02NYNg7WwSCyxdegHsZ+Kto791KNKedDW8bjsp8kmefrSgToPyDYV+Q0DjqGPgpxYvoyD79Bvxjw8LyPp3wd++8+u1/mTMnxE4U/b14Xlev/66HRHlXThWq3ML97bOHj3fdVHGvW7G7VHGgfHA509LiIXn4dTAaULwwS9e5x+8/TNGOFIFzwRxAdUCcTSqg6xuev9IAx51rWHPNr2szDsbf/NDhm0oSN3tah2dk0qn3hYIfTTQb/K+djCskD8sHy4e/Sz9JDPhqNunt4Ow75Wv2yYD95CqH2sJon8sbzaVDvrjdDVTGDUcue9YLI+tb6bnm1Akm1j2E5cW2dSSvoHKG4BypJy4PM0yOegHd9A3+5EVwf1KAwTEGfZzrSvhqP9QzcqSv8xvcicl3hQJq7l8VCeUueuJXltyRO/G8p6rS2Hs+6uU+j4biPrqDyol7xlYNDlQk0f45a9DkS0sahlr1mIx/Rfg2WvR6k+NffhKraB/KBtQKsHlLVc65lR0v9KqzdOawOanFgXxhQetH5I04WxCDphuK+1eDqcX+KS+BF+XPPkn+0W+kvlRzyZUK4in2f8yCebxLZo9nBBiRMs8TXQZmj9gLYch8M/Hs5daNsR1/YBVz+F70S+oX06S8MW3/6Qqz0slg5iyadq5BiNjCleB1/q1fXR+eXzNFOQR9t6wOVBHcI+5cvUp+ByiaZrCxCP6T8PfcqvL9JHYDs6qI/g2h7o6hfCwJ/9SbJtdFWgb1OV77dLHctUyXegjr8VMRwPA9bPd6l+0BZq9cPfjo+aDvguTMsgj78PPP6uo+0hj9+LSBc+Hwz607EtCgLdf+E6xGkKLT3aNkz/w4R+veiDX58mp/r1WP/s08T1R6K7ri1VXM//NdTzn1F71eziYttklD8ZZcs9H9ubS+pzjMKHWDWfI6rthEH8Oy39UQVfq7dwzMN2OwNYQhc/IH2U3nGf4/JRwoC25L9dr2Ng+TQ/R67YR4wktnxQfdbKNArtJolea3RcPpCPY6VYb56P7RVF9seAT83n5e1qx6EM44Shped5RMbnK/gk/0Sgb5GV9sD92LXtfQ1vbmWjvtRVxjDc09LLKDxzmiPEsywLTUXwfA/xLOn/LfS9vOVcG4vgti3eZi/p/x1gPrZd5zMIktlRbXkMl8CEH23r87OUD5fhuM41bF4K13D4ykUu5xi826hga0vB4b+97d/ZIYPgyVIpbvc9pfAzSen/M+nxGZKpS2bhv9MKXbwqcSPRPU1039TLHb2Ywhv691jvXCfsdzKf+yhe0o9Be5Y9S9rWEewfV27QaeN44KSD12cVXrHNHG71xkv6qTbdN7/2vUPnFflBXq/e/KHua/fMY7R65aPZD0y/WPuhLdUfpTjNb08F/TYsSR+D9aClx3E+pt8I9SxjJdc8ZYgv/ZI2DxF1tC6un9LGr7gOsXWDjht1ZOuBVm95Jf2nYd7ihg067TBgG3zXgLTvjqC9AWjvIBlqcxmW/p9WV9cGveVaICx+xz4e5l8gnhcMeM44eNb6Z/b1tfmGIw46mP8IleeIUh7P/mzisavQTysy8TF21caW2tFbSa99ju8ZR3rtk3taveHYFW1rQHRx7Hqc3g1zLG1uQLuAc8GY/l9t6mL+FNkF5EvagWYzNgU6L0HgrqOMkp/3JPgaF26i8jzjKM+g662Yf6mOZ24iOlF680HSG6nXQY8f/x3Qmw879MZ1rN511DHJnLqrDp5MSKc1JJ1WQjpvZ536rJFOfQ90qurw897ucj5iSEeb6+F+i+WLcUKH37n8pKhtoshDWMcPb9BpJtUbSf8l0JsDCfRGq4MFijui0F2qvTlLZQ9dWAsKlqTXfFuXD5Z0PUA7Tim67fc4SfL9IUI/Tbza8tP1d7U5gmOK7FYH3bmPauNALl/5uUbtkS8+fJArQwAzQa+QjxOgpA/oN+cLmeI7dp5RaIQB7/hARcpQfnaoGT8JT3Fp4+K1RngsopxBkKwRYv5B71Pkc6eS/gxMoiS5YwGVJ8kdC66NOyxreZ+OyIeTxhiHZf6go8yS/oKjzEdiynw3lRn5O0L5cDC7EFFmeb8y0DdJCIYm481BL++D6hPmXypnZTPRiercvxQxeRy1gfRBiMf0Z6Bz/yp17i3Iv1TlbwW95Wop5XoQ0ixQeinXhIIZBj74Iem/2S6754kf9QxTlEOH5XvzbqsN8bJx1bmkPwx1/jsJ6tzVflrw7m3vyOQa2SQ6jvR/7B2Zf5bqFXJSR4bzuRwZTrtA6awcGY2nqLSDOjI4AmBHZtAdI5hf0vndTZXv26GMqzrYmHhE1oIyaB101E7QVAR+i9JL/okI2fEOC0n/N8GJ2brjrWetrrZE8BcEyeoK8y/V7p4tRMfXpfE8o7HUznqUDsppmDgn6c8H7DD5NJmk3wMd5n9PHWbSXWRJZmpZ54Mg2Qy/q70lbT8sowkFMwxRl9L+e3KgFiC/nZ0qZa/eql0pcefPDp22qyKtxA11CU+5mcvOzpYLzXy10ijNch8pvPK7JCt6O5T0fmeMiuolPMdArmGYgLijFDcJcbgyyBdT+HHMivUk8kf6GSX9F6AMg9SlhvXBRWLJZRLaYP1q2bKoSZwnIR7T/0fHhEZL4U+7sNd1mTMPhriMbBPDsLf9N06TmjFB6En9rFB4WSC5SNr/gjuEdvSWZUEpi9iocQeNQHmXCqJlxzTGlLwPBb28HUnAG+Z3DUQ5bYixVDtQNDrbhqSzTaHjc+ULacb5Y5mN3Txob6JWpJ5sdeMx/XXgj21oY2qneZFHrgPNF2IbKfll5x2nYXsj6Te3edJ2Sj9JZcZyuvQM/THkOWpC64Y2D1dzQovLPBF0d/eiffy5ll7muAuRJb3ms6AesQ3X+l/Gipo0j7r05z9d89bfUFd2kZ6LbKLK/75WL6akfy9g3jIg5s9HYP7sxi7mbmo7WIdbA51eGLR5E7YPnD8MoovYRi0nwwR/0g9+50NDE4ossExCf9iPxyGtdNBfRz4mErWyuepZu1TWhTUxINa0EuejTscc5Ub6Mw5etXIskEw0OlsVmUj6Qw6+ML20YdR9ySsyxA83Gsow76pv/JCk0F/Mx6OknJsoHX88CmU/GYEV0O9N9G4c8DCENvNYe5vyWqV8dxCuVnf4jvUG80s6jc7KIemsVOi4sO5QsLhvx/QrlfRSDvxA6NLMbXf181GFV22ObjH6KXK7ntKJ3zIW9LfBxyKwAvp9Pb2L0s9xhUaL8rnaZRjWKhhc5486aAaB+wSspOOLbe8jf9WPraqU+UO1QgNpP+mJdoroifzwHdLXbmEQvrXT7MPMH+arzWKtVsjm5nKlZrUw52rf2nqIpNfme+5U0ousW5DfUNZF160Q2vwh35A1CXHCozZ/6MdmVYpJ5I/0tVsKef5w0LUt19g4KZbMH6Ldl7a9VLbGhaXN9aWI56lAX9tkWybp98P4X07ejQfRcgiUd2NBv536aOutv1pfOhXovGu0BT8MGSW/pLt6tjJbGtRWphWZ+BgfPZlQrrw2i3m1tVb+aMeg8+ajjoW6zR+Sl3jtr9Dhd0wH2/oU0fG1Dp+knSyWDmKJD+l7vV/mEj33zTntJKkEnqvW9OYoxLGvhPN5XD/aPhb+0EH4/DA8cxin3+wfbNvRxeV0ErTNdtzvtYgmv3P1e5JOm3/C+fjXN+o0cT4e9Spqf8RtME/5ZcecYtTeoah9W1F7DX6DxgoLkN/33LbQmlbKZ9hGstoHVSVotyZxG8H2w20E2w+3EWw/fOM5Bq0dSLqwHXxqgHaQUsrh+kCutrlcyqH1BymKQxveojj0HxYoDm2l3L6WInph0Norr0G4yuzbH55Wyno1dZd9JlynRJ+cg6aDUqZQB19IoIPsizBvLMPFjBs4DdtRSf+3HOuGj0EewXwCMKPm5dC2ok/BtlXS/12yrZ7m5FTbmuTG/KWYK0R6QaCPO0bhVkFtvB3OXa5qP+/bX62/t/rwgUP7GmMkSmz6mqnn9Jg2UOLG6d0EpfuFVu9vaQ7chBkb3RBti6k2ReHalqRNoTym0JV3Y0r6pwjrKSWf8O6askEMbVpcMLR84e9HIvJEyQq7CZaV6wBrKwaLz3y5zvMsxGB9jLAwP5vlIzFY9xAW5j9CWEdjsA4QFubn7Q7HYrAOEpZrO8LxGKxDhIX5+SKpEzFYjxIW5o+6fCwKiy9hdl38djIG63HC0r7rJVinYrC+SFja9xAF63QM1hOEhflPR+TDrjoMSS7t9/Ody1whaVcn9Jfq0n5N7igfdhfPKLxmlDgeZp5R6JxR6GhYhwyxnjTEesYQq2WItWCIdcQQ66gh1jFDrOOGWCcMsZ41xDppiHXKEOtRQ6yUIdakIdbjhJVSsDSbu7r9LwwHDu5/pNEeXwQUXOOB8PdTEfTXK/kDypuid+sjsAQn/I0+Pg/XpWxTge6PCx5/KGNbe9pTW+YbU/KHwbUl0PP2xcRDW6G/VFsOJ4kflg/394cUXjNKHNfBWEI6FjoeBhnzphR+OH9AWCnlXRi0LWgLkIbLvBD08svvXNOFko6n37Og91HHabQlhDDwln5JXwBMvghcK4NmmyS9Ni5coDRh0MaYktfv0kIlr011StCm6Xl6Xzsiri1z8fQ++gI83YZ9ewueOWjTriKnpEtgrC+Cy/oitprtJubFpSxtG+xuoqnZG3zHbQLzSzqNzsoh6axU6LiwditYkl7b/uHalqltS/S8xaOzLVPbcqrNhy1mW6bIbSel422Z2nZIxgro9056Nx7o2zI1XRmL4FPoxukK5o/SFVwqkDm6MJ6XHyT9fW0bLPV+iMq2t/07O1SYK7i2f/hdmppLPOcRtbUD+da2HA21BbNSyOUq2VyjkS1mq/Wsqy1rW44kvbZF6TYlvd+llLmstgWTt1lOQNxjFDcJccKjtgXTj32aSyR/pK9t3eEtmINuy8O4uxeJJVsw0cbz8QLftomPJz6o+JBLzYv4UI84/Fmtb0Lfk9c+tOM32hEOLtegRzjGEtLZMySdPQqdGSVfKuKv0OF3TEfjOW770jPXdPOgfkeNPWTuf5LS/yvYvnSk/axt0+A537htAdxeJT9uC3D1y5L+WdBP3hZwiMqM5dT0TMo8oZQrDLwtQNKfJd/A0zZbdVsA98VL7zcknzvh4xmejtzlXH2Ath0o4bYAVnEUJ8JxsVEsGBc3RfL+Vu/vxWwL0Nwd11K31nVry3SHFLrybkxJ/xhhPabkE97HHfkRQxuWCIaWL/z9+Yg8UbLCumNZYX5epnoqBou7Rm0LhOR5JgaLtwW4bpxZiMHibQHatbyS50gMFm8LwPy8THUsBou3BWD+JNsCEGvYbQGINey2AMQadlsAYg27LQCxkmwL4HzYvYYhyVI+LlMZLuUnvl9d6C/VUr4md9dS/mmF14wSx1Me2paB0wodDeuoIVbLEOtRQ6wnDbGeMsR6xhBrwRDriCHWMUOs44ZYJwyxnjXEOmmIlTLEutpL5o9F0M8o+QPKm6J3mQgswQl/o/+bZMn8kEKPl8z/6fKSuUm/+nZdMpfxYErhh/MHhJVS3oUBl8wlnXaKBvNHTbXi1BJi8LK2pP+3jmVtbSzmWtZ2nQBAfrRxLt8+rI1ztel6PDEUhgmIM9TrmvZtX5TPZCu5LMKQZBsE+zFh0L63xSfLsL2wXxWnV67lbMmLU5vaeHcn0Rz0RDbmd91KvXJIOisVOi6snQqWpNfGqK7lbG2MKn0Ff6t9b/t3driQd+maNs5dzHK2yO06SsfL2ai/xyOwAvp9Hb2LW87GOj0UwafQjdMVzO/SySQ20UVnTKHDy0Hb232F5xteCtopeJG139u1K4mXwYW+trVI+E4rccMsgzcr+Wyt0GxkS4X5+Vq2c5O2NueF75LYjFuU9H7tQkVdBj8Bcg3DBMQdpzjs+4RHbRn8hCf+k8gf6WeU9LwMnrQuNawPLhJLlsHRNl4tWyPzCze3bY22DO6bF89bHIvaZ5okaPaExyzYfrHOOfCYAMs06ClwlDnPtcQt97JeCg9JT4FL+hLoBC/3ap8xdJ0CF0xc7kWeeblX0v8E9YFHqOx727+zQwZtuVdoLdX3YP2WcfB2wNss0K7zNmDss3iZnOfRMA7XIfhmW21uXDtq16K4sxDHW4ufgzge02PQ2rLUS9geTm/p4nK6gGii3rAfswBxIl9ty8et8JwK+v0lfsf6xvm1fMhPGDzf1pvze7tT90Zl19YETX8Wu50IaaUJy1p2rrK5tlFp20ddWEm2BCKW5+0vnTp91FFuzQZpvGrlSNGz1s5uVWQiaVsOvjC9NjcmeT33dc5biFtAU+gvZn5A5HYbpeNbshdzC/Ft9C5qfkDSa1sNn1J4SrLV7tEYLN5rErVvJqq9IRbvNdFk5dI7xOK9JpreCdaRGCzea4L5jxDWsRisYfeaINawe00Qa9i9Jog17F4TxBp2rwliDXsFBWINcgWFNp4MgzbfjttsW7R2InlxLQTnwRcgHtP/ybVdzKPwzMcZ0Q4cDnrj0O4/Tfzjmphg+D3Kknx9UOiniVdjfnIu26ttk0+4LZRvzkBxIhwXG8WCcbwMmKLfY5RvMdtCtS5jUsF0dRmcD2URKO/GlPSHCOuQkk94H3fkRwztIxdcfj4FFr57QqHNp8AuwfTDVpp+0GihPHgKRNvxjmmYB0n/qmMKRNJMRJRrMgLzu2By3rhWxwwUTK1cj1K5mIdDxIOk/yqUS7Y/BEG/vnIbkOlTHh4w79o7xMa8HOeiG5c3fP4iPHOcprdPUHrZXhMlU9YVSf9Nh65MKDxoW8OjeOA0j0bw8NsKD2haa/sf/mLEjgje5cOmkKuSq2BCwYkKIoaweNIcGEd+u9RP200SRLzjapC8+CH6emNf42DUlhHuW1IRxLjPkMAfbAqCfvdg1LYPefrYlXP7kPZhLu1yVN4+pG0lGZTOYrcPRfkNWn/F+QMHFuYJG8v3V/amc7nAYbi/1Y3H9H8KdoK3A0masQhMGZZKeu32H23qW9KfVdLjdC5PkeA08Nkgnja2P7arzw3I6zklPU4hnyFekb9zA/J69xLzOqbwOqPQZhuF5boaNkrop5Uy+rBRLrkGwcBDGL6UC8WJcFzsKLPApoj73w+0en8vZgjzPMRpIuAhDJbp+Yh83CT43ZiS/hxhnVPyCe/jjvyIgflYlbR84e8vKHmSNJ3nCX9v+3d2qJBL/I0aob9UTSdOb7h7P6/wmlHieBrgvELnvEJHwzpqiHXaECtliHXIEOtRQ6zHDLFahlhHDLGOGWIdN8Q6YYj1rCHWSUOsU4ZYTxlinTXEGjPEmjTE4lNKYwpWlBtlcUrpXAT9jUr+gPKm6N3GCCzBCd+hL8PDDukXpgL3kGeS0q/Z9NZf7ZTSaSV/GJKc/mVfaW/7d3a4kNiFF/pLdfo3bujFfshZhdeMEsf9fdILw61OKYlvn1L44fwBYaWUdxin6bj2kQtetcO82qrdUQXXNWSX/hOnOBDjgVY3HtO/C9oOT3FoK8muobW2Wox9sfCjrTzzri7MJ36GtjNb0nk+8dTQTjxheSdbvbLQVrsxPctOW9FGf4H7EOz/j1Ec+mW4c51tiNRHqH+Zjb3pFoCfVMRf4ZXfMa+IJd+n1C5UHZYOYj1IdFoQh6vlpU1dXJQJtqMW0J6FeEz/y5u6mJX2s2vnB1+o+5PQDv/Ojuj8IkvtBhP+3hrqAftlWjlRfmwvJP17gM+/Rzu1sV0KX57bZVNrl2j3uF1qNgrTc7t0tWOUWSbob7MtwmopWCjzuB3pXKeCx7vB71L8IeEP+5+jxPtTA/Ku9UeanWlBOf58w1vPST6mo/WBWl1llPxHI7DGFP6xXXO9jyu0tfSiE7jMrdnvSUr/KairjTt0zCCCh1YEz1MR6U8QD5L+VxV9cdkJ1P/jhCnpfw0w+ZLGOMwHIzBrDl9Fa6e4q27Q/pb9EZTjSYpD3hcAFzHHlLT7iT7GoZ4z3cDBL/e5cfxyfyRxT0B/9lD7eZrwjG15wVWXtyvlSVqXLUf5GUvyTQT9+upqQyivQ5t0zMkBMR9XfALN15Fvm04BHy4b2oJ3bLdbwBf6hyXyabAfivrOcEtpr5qvIFhefYVcI6v5Cm1Sb/EPdJPIjm2KtosX6zmqvwrDQ63eONdH+VoKncX0xd/e0It7xIEbPl9PfLh8yPD5fojH9M877Lgmwxa8Y5lrY1T0A4QfzY4fpzhNp0dNX1E+rK8uWYRh0PE666vWP2n6yn6cS6/C4NJXyRvq65ccvqPQ1+YWjhA/cToTJaepiPTsA0n633D4VVoftwDvFjs/MEgfh+0WZXJXq7c8kv6bCe251IvfsV8up7UPlCu3D5cMw8Ay104GoCxFZhlKj/LX2sezFIf6mWQMlLTtYP/9MNn6hYS43IZRZxaAFtt6Sf9Dh6237l+FH9cpGZftGDVdHhVbz3Mcmq3X9E/qI9S/zybwNVw3Qmm6ckThX5sX43lnbV7sqvXzEXXvmsNytYMgGNxH4rrXbo3R5oh4jmVBoYM25S4qR5xN4blWSf8/DGhTXHplaVOQd5dNkXTvZL1y2ZRB9crVB6IN+iD5j0iTb4bT9Mi19pV07OfSo3GFL7ST0wpuGPa2/2aHDK41memgv34N534S780T+mlFjob85Fz1ivIZI/kc98NPcV3Q31bCsK/VLxvmg9vTM8C7yPgewOF1fjzBimtn/zHB2pl2uprnA/4S5s7+E2FqNyclbfuSN8Sd26Dzirium2uOAZaWHsveUxeb3/qrjQE1+6nplqSP8+H4dqyk6+sLEXS0vQRavyzpV0JZXePDpVmzz+eu9po9z5G41uyxDnjPoaar2s0M3F4xr9ZeJd1YoLcttAnIo/ARhgcgDctH8++02wPYv9us6JFLFtfAu0H7ZW4zg47FtXpw2Qytbvr25DhsRtw+H5appN/hkKlmh1wytdjnk1SmfNxH6CSVqaS/NYEdTipTSX+7Q6aajFwyjdtnwDJFefO+4jiZ8tE0bX7TJVNJX3DIFG9QTCJTST97FWWKZX6W8qHNYJ+T7V06It9GB+axCEyX/8kYUXWp2TSuy72OutTKdSxhuY4blev4gOWS9D/vqVxPRZTrqQHLdSymXFG3Ht+llEvrw6LGtdqcy5u4rV56kv4jCX27d8qcmchMm9t4iuK0PVcufVnM+OZdNLeB+sk6ILxPBu55Ot5X9rmEOoA31oZhAuJ86wDqMuuANueM6Rc755xR0ss4WdOBBaJjpQNbN/Sm0+Zx+K/Q5HdctiNK2VhOOI7AOQoeRxwHulpb5PTS7iYC3d/k/SeS/hHQV9lbp537wDmNg5t12lFthec0JP2zm7uYj7WftSPlvD9hUNuNco6y3U8t2+4e2y0y02w3673Ldo8pdLQbprUbbiVvqB9fXh/P/1Elr6TXfD7NB2Of74zDN9LmgFBO5QjM86D35zb3ll/b7xSme3mzDe2LjrFD3O2Dg87t8N4hbb8Fl5vr6mWyC9r6CMsEfVVMz74qxg0yttD29rIMpyLSsw8u6b+s6FmSvQ8af0n7RfSr2aYvKLguXXD5DUhXW1di+475xLZcvTXCfF6zxVhetsUunygI7PZEanYabTG3D+1m+aS6InlDXTnQtsXa3NWTCcqm7cHQ+Oe2IuX5Q2grvG9em091+e2dPTgOu6iVwbVennTNV/NnjjvyaeucSGtv+2822xwqCD2xWysUXqL6yz9DO7ZD5zXVx+9wQes7UyQntMGGtiGbInpB0D9W4L5J62/2mvDTXZPV5gG1duf3S0G5Jq7Jov7immzULcaiL5r/i+ORv099l2YD0J6WIB7T/zn4Zf8oAjMIBredkjfE/dvrenGt96jxfC3aFtf6Ju8N1s7rsI8TdTaJ9zlK+v8JbIPrXOSSrH3mmld9byzvf8W9sdx3a/qHuhD1BakoPxTbCKb/3x1+qGt/7sKAvB9VeOd2zm3n7yfwUbU26bILyPf1EI/p/92Aa61LtZcO87Xaz8v7c5Ptz21BXNL9ud8m291S+NHutWB9Rf1DPm6A+B79brdDTf/i+qVB52tb7edB9whf9bNA2Vz+as+ZSd0n2SOs7YvS7j9ptZ9D/Tvd1j+fcixXsh2fVupQ9JXDBMRj+g1tfU1DOeTvxBB8NsvVXLNQbVZL1Xq9WKvyl9bCIHW2ygP9fKUyO5efzxbL9VqzXiwsNf3a/Ox8sTFfm80VZwvFbH3Jy1+vN3LFXHmu0igW63OlpaZfLFXLtWo5l5sr5hrFXCz90B6saeui2FRJO9d+H7arnfAFthThybOMk9AmGI7baimiFwT6OFLop4lXY34640ht/l6T9zTw4IGf+RThIz/jinykLlcpcYIl92Zhf7yK+JcyYnp8lvz4Lkd+8ypIK3f7pJS4ceUdroHcRno6Aen4Lp9JhabETTniVjjiVga9vGPcNOTbT/nSCmbIwzO0nqLVrebPa1/VGSfeVsVg8de1MP8qwlodg8Vf18L8qwlrJgbrHsLC/DOEtSYGi7+uhfnXENbaGKyDhIX51xJWJgaLv66F+TOEtS4Gi7+uhfnXEdb6GCz+uhbmX09YG2Kw+OtamH8DYW2MweKva2F+vk/ymhgs/roW5r+GsK6NwXqSsDD/tYS1KQbrAcLC/JJ3RsHi/nkzvL8a/bPQTxOvvvrnzUG/XFE+3B9uUXjNKHFst7YodLYodDSsGUOsNYZYaw2xMoZY6wyx1htibTDE2miIdY0hFtutuP76U623/rr6a8mHuovpxiGN1kcjRpQ/gL55nF9wF/Gs0dR8TLlDiX1MoYtxU8Qbxq2AuFUUhz4m2/1piFtNcTjWlPKgj8ljOywblxV51HhOUxyOKyYpDmW0kuKw/5iiOJSflNvHmHq+PlvLzhVy9Wq1nC3PVgYZU/MYC/NJf8x6vneRfPaGWi6l8Kn1x0I/Tbza8tPtj7WxgjaeE/nM+JFP1mW/ZhT5CD9rvPCTLYiuZBTawqv0ezgex/QzIENMj8+SH999mfRVG29kKC4MPFbXxkj4buwqYWnjLZSb1GloU14kWaC+piL+Ci6/Yx6xPtmurzKkg1gy16C1p/Df3vbv7FChkJdyrFHKIbRRr+zaTqmc1NYJ/XTgtS3nXDqM8uGxR0bhNRP06/BCq5suTr+RjoZ1eUSxThtivWCI9aIhlqW8zhliXTDEOmuIddgQy7KMFw2xLPk6aYhl2R4t6/GUIZZlG7pkiGVZj5a6+oohlqV+vWSI9ZohlqXej6rNsSzj64ZYzxhivWGIZSkvS9/EUr9G1S+01PtR9eVOGGKdN8R6J/hyo6r3lr7Jcp82GNao+nKjagstfTlLW2hZj5byGlX/q2WINar+1xlDLMu2bdmGLOVl2Q9ZtqFRlb2l/bKclxvVuSFL/bL0fUfVxxzFviN85jUri75jbQQ2PrvWhjU6KYVnbU0Z95pMB/3ltVxXFvz1nvCl3No+VCyT0Oc1ZonX/goWxwmtNGEZly3nKptrLRrX3VEGUVjrBsSaVuJ81GnGUW6kP+PgVSvHjKFMJg2xpghLa//a+q2k1/ZPa3ri2j8tdYt7CQ3rNu+qW20PdrhnQfZl1Rvzh+69a/+9AYVxkoPI7eOUTs4BjAX9bWNdBFZAvz9O78YBD8NS2fcZJZ+k87xnKJ/UXgr9tCITH/ZyTUK5avuN1pDMsf080uo+Y1rZz+Q6m6P1N3773tlC0voR+kvVn7nsehi4fpLY9TAcaXXTDWOLw/CqIdaLhlinDbFOGmJdNsSyLOMpQ6zDhliWOnHCEMtSJ543xHon6MQFQ6yLhlij2rYtZW8przOGWJZlPG+IZVmPlnp/1hDLUu+fM8Sy1InXDbEsdWLZ/3p72GjLvva4IdY7wRa+YYhlaXOeNcR62RDLsg1ZysuyTxtVv3BU+7RRHVtZyt6yDVnKy9JGL/cdb4++w3JsZWkLXzLEWp5TuHptyFL2lmV8zRBrVMdDlrI/Z4g1qvOFln7Osp24ev7Esp24erIfVTuRxP9aCe/47kVtb4NgrY/B4rsXMX+Se/YQ62OEpe3xkHwbI+jgfSPa3XphmAn6y5Zq/51W8K33KyE9KRO+Q/pppYw+1tm1ewtRPrzOfo3Ca0aJQ93COKSjfdNYw1pHPKCeL1H95Rdbf+v88OOsP81+DFp/UXdZSXwwwjKfugoynxpS5mH4Quutv9q9nrzvT+Nho8JDRskv6TQ664eksz4hnXVD0lmXkI4PufFvbW+X1KW0Eaznve2/2eFCUfTrWuIL6Xq6uzRx2xT6aeLVV9vU7qhF+XDb3KzwmlHiriG5eqjPwlW8Gzdxfb5d7saV+luryJXvD9V42KzwkFHyb3bQ2TQknU0KnWkl39723+xQoVBkGQttpLsV3l8N/RT66aC/zn3o51bih+XD+nmdwmtGifNfn9nmjFIGrs/r/MgvcX0K/XTgVb869Xkd8cPy4fq8XuE1o8Qtoj7ztWauUGqUS9nZarFUny3k6/lytl4sNXO5Si4/V6wUCs1asVKv5AvNfDlfm1HKwPV5vR/5FZPWp9BPB171q1Of1xM/LB+uzxsUXjMUFwbx71JK3LjybiwCi/uEYbDCIN8Q8dgPlFj3hXeki+W7GnZD6KcDr3qfc9UZyof17EaF14wSt5nyYX0ujcwL84uVuSdf1SlzzV8aROZhONrqpuO4ceXdmAPrhCHWOUOs84ZYpw2xThliHTbEumyIddEQy7KMJw2xLMv4giHWi4ZYLxtiWeqXZXu01C9LW2jJ1wVDLEu9fyfoxHOGWJb6dckQy7KMlrI/Y4hlqfcvGWIt24m3h52wLONrhliW/sSoyv51Q6zlNjQY1nFDrOU2dPVkbzl2txwj811jOIfE62CDzktifkmn0dk0JJ1NCemsH5LO+oR01g1JZ11COlND0plKSGdZbr10ksrt7dZ+3m7l2TIknS0J6Wwdks7WhHSuG5LOdQnpXD8knesVOtNKvr3tv7lCIZfN1su5Zr1ZKJXn8vO52cLsbLPYLM9WivVmqVitlxu5YrWQn2uUs81cpXFl1bRQK8825+q12ab2DXv55lzYlj91fW955BuiuKcYv9k5BvGY/p9c38X8TPuZv1kawPM04aUCy3WSfOLvXQv9NPFqy0933WaM+GH58LrNuMJrhuLCwOs24wqdcYWOhnXREOtlQ6wLhlinDLEOG2K9Yoh1whDrvCHWOUOsUa1HS121bI+WfJ00xDptiHXJEMtSJ84YYlnqxEuGWJbysrRflnxdNsSyrEdLvka177CsR0vZW7ZtyzK+boj1jCHWG4ZY74R+27Jt++hrZayM4zn5nvpayhc+r6K4CYhDDIxD/iYc/GH+iYh8XA4Zj/o6Pyf4K/3gd74JsEKRFZZJ6Mv4chLSpyL+ChbHCa00YVnLzlU25J/1YAXww/OeGtaKAbGmlTgfdTrlKDfSn3HwqpVjgmSitbOUIhN5v9LBF6Zfq9CWvCLDaYgzlGHeJUNsi0J/Md9TELndRunkzoGxoF8HV0RgBfT7Nno3DngY1hKGZke5PUfVbyYifxhmHHRmlHxSvlXA4zaIX0k0tgX9PG5z8Ij5JZ1GJzUknZRCh7G0OdMw3N/qxmP6/7U9TxqW4bHtvZjbFf60upL3O5T02yGN8KPJZkeCfGGYUWgJT9KOd8J7a1uI9IRffIf008Srrz5pJ/HD8uG2sUvhNaPEsV3YpdDZpdDRsKQ+1wb99cvfX9H0bruDzoxCx68u5IssSwwSd5NSRom7GeJQPziM028sU9hm/+GOLi6nY35Q5sLbqMlpO8XdDOnlnhqJuwXi5NzVYmT4LwaQIdaV8C02Vb4186/bGzzCvnb8ht40cmfB9A3dNJM39NLYrpRrJuhv6/z9ml1KXIj/v7X5kbaHusd9H8p7XHnn6vtujsCaAKxpwJI7jCYp/c1teYhu3gK4dro5Wxa5vRt44r7kVk+0k/YlQn9G4Uf4TitxE0Pw2qxVsoXs7Gy9MVucLxWbKcIXXvkd+wO7lfTaN4RE1rcFXmSd73xnsdXF3w1yDcMExN1KcZMQJzyGer9vey//uz3xn0T+SD+jxOEdOIPUZUaJu7tlg4X2wAJrxSKx1ge97QltjmYzeT/WoDYT89/soLNuSDrrFDp+bWq+otlUCZoN429+7o4oPwetT5cyhW3zzp1dXE7H/KDMhbe1Qb+ceP7mFuKH37n2rUk6qQ/UPcP6mGOZB0r5dytllDi0ySgnDlp9SJnC+njvAPWBMhfeRk1Ot1AczpHc0+qNux3iBvVTUYb7F6nTLEM/Pk2+ynIKFL5uU2TBcgqfBx0TSZlCOf1okbp2G8Whrglva4NoG7bYPmy9Ug6Nzroh6axT6Pj1XfLzWr1L0Oqd+4M9EeXnoOmElGnQ/gBlzvWu2cpU0K/348o7V3/AbdSPL9y9owZtEpd/j1JGibsD4lBOHLT6QN95kP4AZS68jZqcdlPcHZCe+4M7IW7Q/gBluH+ROo18I+8Tge7bfKL11t9JSv84zGE8SnMYOKcjtMN036d0uxW+/dZt8nlcoZ8OfNrI7jzubcRPlP3Q7KbkzShx/P3z2xU6tyt0NCxX/8TnEwbtn65V6IxaO7+W4tAeon5wiGvLg8zjam151OTE81ZoD3ke18oeDjKPq/UprLdJ7aGkf4XmLT3Zr+x6KhfS0sYxo25X/YxH3HZVs0OD2lUcHwxrV0UfNT+Tz2MN6mduUuiMmr3YRHFWfuY/HNIm/Dj5maNgV7W+KalPmNQf/WTrrb/sj/4x+KN/dEM0XzcB7b9c9kc5/Fj5o1KXa4N+HWN/9CaFzk0OOtcqdJb90X5+UOajajdvorgfJ39UeE9qDyX9/zJC/uhNSvn9rkUlt6tCPx3067MPu6qtG2l2SFuDkbwZJY79Uc1+36bQ0bDYH8U6Yn900HWwTUp5PK/vDLQ2gTxqfRvqB4e4NZxB7Kq2NjFqcuJ1MLTHbFf3QNww62D/YpF9U9QYOc4nvEWh4bceso2ktov3AHmypR3b9W7iJ6qth3vY5Z6jexsHP3Joft/9tQ82vnjgPQ/VP1J95OD91X3vqdcfaRw4gKVBCjNKaVlbOI08Z5T3iLE7phT8pT6s5d2EdVsMFn+pD/PfRli3x2Dxl/owP+bF35NBP5+yO3AsAQ63XI2ve4gvtJbszdwRg3WAsDD/HYR1ZwzWQcLC/JgXf08G/XyyvFw44b9cDF+HWr18ZSF/jrDyMViPEhbmzxNWIQbrMcLC/JgXf08G/XyyvFw44b9iDF+Pt3r5KkD+ImGVYrC+SFiYv0RYszFYTxAW5se8+Hsy6OeT5eXCCf+VY/h6stXL1yzkL0fki7JlaBu0tluGeE1Xse6xzDPKO+5dK/DesDerJ+1dhX466K8XH71rJeiXH8qHRwZzCq8ZJY5HBnMKnTmFjoa12xDrFkOs2w2x9hhi3WaIlTXEyhlilQ2xCoZYRUMssWOa78U32Q068sb8PNLDOrezOYXO6QfsSyRIXEUpo2Z70C5y0EZzUqZwNHdiVxeX0zE/KHPhTeSE+nw15cSjTNQv6Zcl7icgbtARsZQ3lOHvDSBD1KcKxd2m5PUr3+SzdEI/HfTrgo++WPPhtTYssssrvGaUOLbhLp8J6WhY4tdp4wi+9TKr0Mk66GxVePbc1vIsSwwSV1DKKHFo71E/OMS1p0Fm6VDmwtuoySlLcTje4lk69DeHsUmDzNJhXRUAn2WI6fCkuzZ+1vhKKThZSitxY0pevpUV4/j2V81+4Dtub9cp/M4o+dguoz24GnZZ6KcDr/1EzmUvNblq7SBPMtfaSIrikE5BoaNhsQ/g6lf9+HfJvwgq9JeqX9X6Ie2LoEuh31H1nHPwU/TDT+eUpzZ/pfkd4WmIqaBfh7S5Nua7BPjyLonPw/Pig85bIhbPiw86b4lYPC+uyYDnKX8LTum/cmNvGpnTfQPSvNZ+1voskUOY7uuUjueHwzAd9NfP1Wj7Qj9NvPpq+1o9onxQt1cEbh3DOo5ab7hDKSvr/J4YnljnNVqaTkg6TSe0Vckw3bcc6W5X0jGG6C+uf/EtFZL2t9sYb97gcJNOVzDC4HkXSWKd5V1wvndraHM5rt0aV3P3sAXWqO7I4B1cS7HTYBzaBadjXrV1lHAVXHaSXFkFv7L+/fHqvvvr1YP373/oo40vHGocODhBsDdFsCO/eYOqkEKcwMFuGMYo7haKx+UoLSTZGIEqdTWGJUJ/qTZGxC3ds5nYo/CaUeJwk0pUd7VHoaNhia5oh7f4oyKDHt66XuF51DaBXk9x6B6gfnCw3Cy7fHirm2axm2WxrtgF2w7pH271xu2EfDdTPrysTvDx8ixJhxeWbieMGyFuJ8W9C+J2Af5/2PbW81qFR76cS+LCMK684za5UuGHsaIu55J6nqT0k+2CTAf9crPT2e7lXC5X9GZPtJP2MaxDyI/wnVbifFzOlfRyIEmvbdp1Xc7lxw3UL+fCTaVhmIC4myluEuLQdePLuTxdIpdPIn+kn1Hi+HKuQS960i5JHBYL7YEF1opFYsnlXDjME5uj2Uy+jGVQm4n5dzrorBuSzjqFjl+bmi9pNlWCZsP4MpZbIsrPQevrpUyDXsai9dlrg3458WUsg15WO6XwKvXhZ4ohP8syD5TyaxeQSRzaZJQTB60+pEyDXsai+Ul+++N8WRtvBg5Z7KI4HLfwZSw4nh7Uf5XyDnoZC+rTuynuZiXvqB6U8lPf7oNSWh+h6QD3txiH8sc4pPNuhY6GtaH9rB1AZZs06AHUKYXnUbvAkW0STkUOemEgXuC42AOoPPcwKnLi6Uu0Ozym1i7JW4wMBxlTa5dgjtKliygLllP4vAOeOcRN8/5okbabL2PQpoC1I0Tsow5qf9Yr5dDorBuSzrqEdHYOSWengw7GsT0d1OeeUnjW6Owako72gYVRakuajzRqF5hifXA726Xk9XwgM7GPxAcy/Yzl3AcytXGO1idJXu0ybW7Tg64HIBb7SL7b9Ki1NdelyqgfHOLa0yA+ktaeRk1OPGeubfGxtkmD+EhYV7zkjvPp8g59e740TtI/255PD3Xk+Lt66W0HGrhm8Lcp3U6F71G1hzv98OO0h5r9GNQeTsLzsPaQ5y9Rr/jSokHnsa5V6IxaO+dLi9AeDjqPtVh7qLXlHycfbRTsodansN4mtYeS/hu0vujJfqmXFvFc3LKf6d/P5CPAw9hV15iOLy0a1M/cpNAZNXvBlxYt+5lvHz8zqU+Y1P7ypXGS/u+DP/p3I/xM5CNMt3qbzr+kDcOy3bS1m5b+qNSl9nFO9ke3K3S2O+hcq9D5cfJHl8puosxH1W5up7gfp/G58J7UHkr6/3OE/NHtSvn97lFIbld5v9t2P/zktLpz2SFtbVjyauu57I8OszbsGuezPzroOH+TQsfzfpWB92GwP6r1OUltAu5XWew4X3gbNTm59quwXR1mvwrK8F8ssm9im2ThE3qyXYkv0WTb5dsn1GyX1tYXf4km7jbg0rK2cBp5jrtE85aYUvDBSazlJFYWsfiwMObng3S3xmDxYWHMj3nx92TQzydf2ufC4Zar8cWXaKK1THLpKGLxJZqDXjqKWHyJ5lJdOnpHDF98ieYeyJ/kolDE4ks0tQs+BSsbg8WXaGJ+vmxEfvPB8zCwvFw44b9cDF98ieagh/cRiy/RHPTwPmLxJZpX89JR5Isv0dQuU+B8UbYMbYPWdvFyBk1Xse6xzDPKO+5dPV1amfgSTaGfDvrrxUfvql2goV2oJbKbVXjNKHG8a1S7HHZWoaNh3WKItcsQ61ZDrN2GWO82xNpjiHWHIVbRECtriJUzxBI7pvlefInmoCNvzM8jPaxzO5tTKIoNwb5EgsSVlDJqtgftIgdtNCdlCkdzg1yiiTIX3kROqM9XU048ykT94ks08WLOQUfEUt5BL9FEfSpR3LuVvH7lm3yWTuing35d8NEXaz681oZFdncqvGaUOLbhLp8J6WhY4tdp4wi+RHOPQmePg85WhWe/upBvsiwxSJx2UajEob1H/eAQ154GmaVDmfNlo6Mipz0Uh+MtnqVDf3MYmzTILB3WVRbwWYaYDi/R1MbPGl8pBWcPpZW4MSUvX6KJcXyJpmY/8B23t+sUfmeUfGyXPV18ltguC/104LWfyLnspSZXrR3cSTLX2kiK4pCO69JhxGIfwNWv+vHvkl9KJvSXql/V+iHXJZo+9Tuqnu9w8OPpktjObQza/JXmd+AlmqhD2lwb850HfHmXxOfhefFB5y0Ri+fFB523RCyeF9dkwPOU39/21t9Qht/Y1ptG5nS/DWm+2X7W+iyRQ5jue5SO54fDMKoX6Hq6+cx5ga52uR9eohmlY1jHUesN2kWnrPO7Y3hinddoaToh6TSd2A7p3g3pfuhId6uSjjG0SzS3U5yk/eM2Ruir8SWa24Ne/DB43kWSWGd5F9x2P/w4d8GhfBa7C47nZIfZBWe5E3lUd2Rsp7il2GkwyCWa2jrKIi7R3B7BjvzmiyuF1DCXaO6i+KSXaLo2RqBKXY1hidBfqo0RcUv3bCZ2K7xmlLid8BzVXWlfttewXAfU+RLNnQod1yGD6xWeR20TKF+iuXzI4O13yADtIF+iiZdc8gWIcZdcThL+yu1v/ZW62w75DZcf6qw3QgNp7/JEO6mt5U2A2iUSmh0e5jLJfGO+NlutNgu1ZrZWbTZSQb/NddlhSa9taNuspPd7UVihKnqPl0nyVrgJiNtFcZMQh5d78WWSfty5QjWJ/JF+Rkn/hVY33SB1mVHo8KWNSbHk0ka0020RqjaG26IfO5Dc7xH6aeLVl9+zPeiX64QiV9emW+0yHT4kNKg/glhi95f6kBDyYNifFzX/W4LE3aSUUeL4Ql955qD12VKmYQ4J8YVwoyInbufa5bTasHVQvwdlOIjfg3XFl7JtV/L6lW9ym8Q+gCcbmXPZCq0Nu/wVrU/ZAc/D9k9Sl2uD/rrlAzYTCp0JB51NCp1Ra2t8wAZtEuoHB0ubpLWnUZPTBMWNmk3S7DrzPqmk3UZxkvZ97UTh2Ov+9rPWRlYHvXHbIG4VPCNd3DIg6cNwf0vn8xfbD6FM/t4OHXMsAhPrJgzo12ObDMMExNnpWi0X8v3E9i4fbBsnW71l0uyZ5mNJetdhIJRRJujXa7almo3bDu9kGUaTJ843hWEC4nzLE3lkee6IKRPLU5M/yklkpPUnNxLWjQoWytglT+HxasgTeUwiT60fdPkBKE+RkTZmeBdhafLcBu8+SLxK/iklPeJNUvom2JwbtvTytxrysy6sUrDRhrraWVopxwzFYd4Q91PXd9+HYUWrF/fNv/BuEnDfLB+mp7hpiJto9dJJt39PAB3EEj4mKf2j0Je8WQbII/kzCv0pot/Dt/IOdZCxxpV3kj6U6f42j2FdpglH5L+3/Ts7YKiVZudrxVI128iFP/N8aB95CelrckIbEQaRNdbFlFK2SUr/NPTxLWj/b6ZV6IXpnnekS0X8fRNDeTfR6n2n1RHqrqQX2ulWP48Stwri0H6FYXX7N8oLsYSPSUp/lnQX9U3yZxT6K4l+D9/KO9bdVUr6VUr6Ny+AbPMoeotltx7jvUmT8PEd8/a8x3bVmC/OlefnaqVsPTuXmyvEtavQrq9p23XXfGJSXeaxH2LJfKqMafDCWcuta4K/gvgzws+JnCaDfjkJ7ZVeytZsJqkHpJ8mXn3oP9ITflg+vG4x7Uc+jXCrluge2o8pRTbMxwriMe2JR83HFZ60tRXhI0zzkZt6eRzzxKPfNtrsrCPi2H9/662/b26B3N6li3WDY2bUe+zbMf13oG//FvRbgiv5xU6tgvgVSrz8lvoaU9LyWs8KkqEmV0wvOjkVUdYpKquk/712+ULeNm7RMVF+yNdYBOb3APMxqhP0011tXtKvUtJjGxN+1gb9bXMV5UPep4PegO+0+klRWu6Dcd1vBaVdEUGH5aHxsFLB4X6SMZkm60MYeIw0rtDBNoV9/rRC37B/KGl9pQSJ44vrMQ7L/qutbjoO2hxiZ2/ElX8Xt3dxOR3zo7U1S99I3k/Ce6Y7TmmnKC2vRyKPkwY8ZhQ6U4S7wsF/inAmlHwzgd4etb9J+U0p/Gp9zbB0EOuzrV46WM/Yp/3T7V1ctuPjSt6nWt14TP/PoU/7Zwn7NLYlWIbPtbrv2GazH8ttkueZuO/iNNiPY/p/CbZpI41HphR64bt/TfLUfATN72MfYeWOLua/JXlqPsDaoF82rMPTRAv9Y+lfWAb/Aer1L7ZH0xK5zjjKGL77f7br6ZAHTMcYWt8pGFq7lnxrFb647bHtmHLQ0PozjcYkxQ1bP1q/jb6G5sNo8difIx1+N6akj/M/0hHYGu6UgqPZ+ZUUl1Li2IZhedGGsW+ijcnQNmrtLqruXL63xnsSv2rKwbsmP7RD1nM52Uo2l62VS81mrj5bnS/GzeVY08+X5irVuflsLt/M5wuV2aWmP1uczVUq1UptttacK9bml5p+bW62OVcozOcKc/XGXG7Jy98oFuabueaV+bxCM1uo5Jaa/pXZ+XyjmJufL+Ua1bm55iBziZp9xr4C2xC+x/Ynewa4v7653V/7nWvTLxJO0sdp5dPsy8ciyvce8Ed274in57KZWl84RnFoF7mOOvPnCcsg6XNtvnHeQJv3wjm3MEy0esu3t/0+O1woamu7OF6fbPWW2zVXEQb2k1cr6XENlH0aXDvlsdykgqX1S6xnU4Hu9woe69lPQR3x2i7qfJp4x7KzrzCu0HXNcYR8fpLas6d1gbI2pyBhJtD9G4zDdsJ79niuGONQDwbd3yqyCPn6VIJ9UJqdYFugzftpdgL3er3JX6ufr6vRbtHH5narzUliemk7maC/3lhfNd9RawPsc4476GnjJWwDUWtyaBNwTuEztA9Mm1PAvGyvJf0B6HM+R30O2ifWF83OMC9BoNuxJHNN2thV6kVb57Ocu0wRPSkHvkP66cCr/cqxvUe5utbaPPlHReFHG/Nq9Ryuza0J+utMG1/jPCtf56zNfWq2jf0jzbZpbZ3tgDZmdc1NuNo6ri8l8R21dsztHNM/Bu34nMN3jJrnCwJ3HbrqHOXLczHaeo1rnsZlz1c6+IpbY2K+tDWmQKEdVwaX3mn+9VXsU0tan4pl5z7V5duGgetgRkmv+bsZSo8yd809ae1yFcUlbZfoh56L6EuxHGhneX5Ia5/YR2O/niJekAbOn8mV3imiMaWkR7xJSn9J8fUZU2xNGJ5s9WMyz/ge5cLjdkn3KvBQu+mt5yRnGD3tXUl8nrizd1ORh4/+XRv/afuKPY+Xaq52oPl9PL7iusM2HLUPgdc5sW9Au8/z9t9o61aGMMMg94eklDhtTQv36v36jt6y+Vpb5XM1UftivkM2Ctu7tjdA7Ae3xd8FP+G75Cdour8qcNssbS8O60/Ufha2WZL+ew6bpY1zkK8nWzrmD5R5KZdeaPXHuozpXeuF2jqddpYI29Ob2K1+TM8+Ql3zEVA+7CO4ZBGGQf1H0Y8MpUc5au2I50BduhoG194ZPF8g7c58jj+XyzVni/OV2Vo+26zXlnqOv9gsV2eb5WwpXy828vXqIHP8LhmnFBmvdcg4qT/EWCkH1mQMFl/5GNUGOd8S+SeJr6Bj/8TPnlC3f4Ly4blRzVfIKHE8Bh50/kib87TA4r4ZsaPahjZmRxkFge7voGw/2nrrr9/9yNl5bQwYUJlXKzynlPTaHDbuX26C38/pmCbKbjXFoZ2foTjsR9ZQHPYjaylOm2NM0gbD4NKfyYhyWdDR+j6tvx6WjjZfx/K2oKPNBWrzKNy+XftuNDophY42FkXfWw5kMs0oH5Tn2iX9dTu7mOM7e9OIjCYhTab9PB30825oB+a09ZWAZIM2iOfocZ2LdR7tB+spzv+wbq0BHnBfNgfN7ki6EPNYArujydpTXzpSsk4qT5FFmO+PB7DjqK9SJhxPutoR0uV2dCO0kdupbWrzxprdkfdx88Y8ltPmjUe1n9bqnnVmDcSxzqyFOG6feLUzyoRDnF+QtH3eHmGDhQbbYB7fRc39im33Pb6ZjMFKMiZxYSUdKy2Pb/rCj9X4ZsIQK0XlQdnHjf3j9Jl10DXGxnxLpIOJ1/hZB1N++MklletiddBSb0Ydy+d5dq3dRM3Zf5L6LMkXNWfP4wZJ/6vg73y6/Zz03A+Xk2nynsK4ff3sP7n20iMtbQ+H60xH1J5hlB2WTfaK8L6IBvTvrv2oV3MNfinn10Vm2vy6a98m+4bjCibq/PKc2PKc2PKcmP43KZ1RnhN7bsA5MbbPkv4b0Ledj5gTuwBp3lieE3szLMWc2BvLc2Jvhh+HObFvQRv5wfKcWGQ//XaaE/tBhA0WGmyDk86JPaf4cJKOzxShHyf7rXj88uSuLvbfIBsveH8L9PfPdvbyieX+RKs3TtvbHL57vE1Ts13hv73t39mhQrnq8mP8nlMo1pL4FUh/qe4ES3pOQfNRec8u+lPHWt10HDeuvBtzYF00xLpsiHXaEOuwIdZzhlgnDLEuGWJZysuyjFZ8aXZwVHT1JUMsy7ZtqRMXDLGW7dey/fJZRkvZnzTEstT7lw2xLNv2qLZHSxs9qn2tZT2eMsR6J/RD74QyWvJlaVdHtd9+2hDLki9Leb1qiHXOEMvSNxnVPm25PV69Mo5qv/1OGKdZ6sSzhlijqvcvGmKN6lzHK4ZYPm20pMW1Dbl7IAzyvXVeozhEawKe5uXrrr0Afr+DUUx8twGv82t31aaVuGHOnM7nmoVGdn6+mJ+vl2ZnZ1OEL7zyO56zTPr9AZH1Kj+yntf2kaVBrmGYgLhpipuEOOExlD1/K93PGmpxPon8kX5GSc93LCStS/m++Uqg47of/qFWb9yUwgOu+7n2qWnrn3hXwdFdXV4xH+vZOOXF+BTQ197jc4reI12k98lWbz5ec2ReuLzjCp+aLMYUWWj7F8YJA9sp7kUN6/httn+8kdTOjur+cc93yNRZH5GfUbtD5nJbx7X9fVH7kAOFB6EdtHl5gdrO1d6P/vqu3jySL+kdMpL+q7Cf48vt5+X96L1l43toJP1vteUV6t4I7EdvhHy8nfejvw7yXt6P3l/G5f3oerks6CzvR4+2Adb70f+bXTrNpPeESfr/A/q2/25XbxqR0T+GNP+c5hSQd0M7sLwfPeiX9fJ+9G4akUWYbxT2o/9f0Eb+ktrm8n70t+d+9L+MsMFCg21w0v3oYtut78Ar52ulaqE0l601SuXqbHmQO/CWfchummUfUi+XBZ1lHzLallj7kNtv0mkOes/XT93Uxdx1U28akdHNkCbXfl72IbvpOFj5kCzrZR+ym2bUfMifgTbyIWqbyz7k29OH/FCEDRYabIOT+pDbod2/+a7VTWdYh3kpz2Sry7PIZqLV5XsK+A7DSoiTdMLrtB9es8Jruo0v7RNpYlnGKD0/T9K7eahLLKOUA98hvqRfBXGSfhzeCY+iv1MQt6o1GNZKwloxBJbwlVHSr1gkXxrWFGFNK1j4Dtem7mnXjY+7xavlxlxxtpCvFZpz1Uq2Msi4iteSe8oX9OqOcXtIfC+dvFuqe+nGiR+WjzxrNlDy8hpKGHjvhnbfofb9kaXC0tYzWRc8fZMl8f1wQj8deNXNnEuu44pctTE2f/sMx6lcf9o+Am2P1Y8LluQPgzYOlP2Dmk/LMuX2jnHa2vtSfiP5NI1vVhKve9u/s0OGq/WN5N+EMcG5m+LpjeI3kl9q8x23B2D5G8nJ7r5FmVt9I/krUEdX8xvJP6L27Gm/1o/9N5L/cYLx5fI3krtBm0Md1W8k/wjGKlo/qvk4wqPUhbZ/NAzcj0r6v0ntztO3htV+FO0+l8+Q9qy2LiJBW4fhNq/1m5o94DavzbslbfMii0HbvOYHur6P6/q+q9YGuH1gG+D+DfuBqG+UhkHOsaQIMwjcfZ+2FzNuvI1tAtdE/keajxN66PNg3qjvjP8F+G3/lPw2bQ11+Tvj3b/L3xnv50er5+XvjPv/zvj/De141c295dfsaIr4CwJ3HbrqHOUrvC5/Z1wfo15Fv3T5O+MQh2M5aS+u/gvtbNLvjEsf/f8DwyXgzqcaBgA=", - "debug_symbols": "vb3fju24kWf9LnXdF+K/CNKvMhg03D2egQHDbrjdH/Ch0e8+W0FFLGae3kzl3llz41quOieWtiT+JJEU9Z+//a8//ct//J9//vNf//ff/v23P/yP//ztX/7+57/85c//55//8rd//eM//vy3vz7+7X/+dpz/k3L97Q/lnx7/bL/9oZ3/lN/+oOc/9bc/jPOf/bc/pHTCeMD5J8vhkByyQ3GoDs1BHNShO3jl6pWrV65euXrl6pWrV65euXrl6pWrV25euXnl5pWbV25euXnl5pWbV25euXll8crilcUri1cWryxeWbyyeGXxyuKV1SurV1avrF5ZvbJ6ZfXK6pXVK6tX7l65e+XulbtX7l65e+XulbtX7l65e+XhlcdZ+TyPRnYoDtWhOYiDOnSHMSEfh0NyyA5n5X5CdWgO4qAO3eFROT9O7JwelXM7ITlkh+JQHZrDo3IeJ6hDdxgX5EflcpyQHLLDWbmcUB2aw6NyORVnE5zQHcYFZxuckByyQ3GoDs3BKxevXLxy8crVK1evXL1y9crVK1evXL1y9crVK1ev3Lxy88rNKzevfLbBch7Tsw1OEAd16A7jgrMNTkgO2aE4eGXxyuKVxSuLVxavrF5ZvbJ6ZfXK6pXVK6tXVq+sXlm9cvfK3St3r9y9cvfK3St3r9y9cvfK3SsPrzy88vDKwysPrzy88vDKwysPrzyuyuU4HJJDdigO1aE5iIM6dAevnLxy8srJKyevfLbBepzQHMRBHbrDuOBsgxOSQ3YoDl45e+XslbNXPttgbSeMC842OCE5ZIfiUB2agziog1cuXrl65eqVzzZY+wnFoTo0B3FQh+4wLjjb4ITk4JWbV25euXnlsw22fII6dIdxwdkGJySH7FAcqkNz8MrilcUri1dWr6xeWb2yemX1yuqV1SurV1avrF65e+XulbtX7l65e+XulbtX7l65e+XulYdXHl55eOXhlYdXHl55eOXhlYdXHlflehwOySE7FIfq0BzEQR26g1dOXjl55eSVk1dOXjl55eSVk1dOXjl55eyVs1fOXjl75eyVs1fOXjl75eyVs1cuXrl45eKVi1cuXrl45eKVi1cuXrl45eqVq1euXrl65eqVq1euXrl65eqVq1duXrl55eaVm1duXrl5ZW+D1dtg9TZYrQ3WB1gbNEgO2aE4VIfmIA7q0B28snpl9crqldUrq1dWr6xeWb2yemX1yt0rd6/cvXL3yt0rd6/cvXL3yt0rd688vPLwysMrD688vPLwysMrD688vPK4KrfjcEgO2aE4VIfmIA7q0B28cvLKySsnr5y8cvLKySsnr5y8cvLKyStnr5y9cvbK2Stnr5y9cvbK2Stnr5y9cvHKxSsXr1y8cvHKxSsXr1y8cvHKxStXr1y9cvXK1StXr1y9cvXK1StXr1y9cvPKzSs3r9y8cvPKzSs3r9y8cvPK3gabt8HmbbB5G2zeBpu3weZtsHkbbN4Gm7fB5m2weRts3gabt8HmbbB5G2zeBpu3weZtsHkbbN4Gm7fB5m2weRts3gabt8HmbbBZG+wnqEN3GBdYGzRIDtmhOFSH5uCVh1ceXnlcleVsg9JOSA7ZoThUh+YgDurQHcYFySsnr5y8cvLKySsnr5y8cvLKySsnr5y9cvbKZxsUPaE4VIfmIA7q0B3GBWcbnJAcvHLxysUrF698tkE5d+bZBid0h3HB2QYnJIfsUByqQ3PwytUrV69cvfLZBjWdkByyw6OylhOqQ3MQB3XoDuOCsw1OSA7ZwSuLVxavLF75bIMqJ3SHccHZBickh+xQHKpDcxAHr6xeWb1y98pnG9Tz6JxtcEJxqA7NQRzUoTuMC842OMErD688vPLwysMrD688vPLwyuOqrMfhkByyQ3GoDs1BHNShO3jl5JWTV05eOXnl5JWTV05eOXnl5JWTV85eOXvl7JWzV85eOXvl7JWzV85eOXvl4pWLVy5euXjl4pWLVy5euXjl4pWLV65euXrl6pWrV65euXrl6pWrV65euXrl5pWbV25euXnl5pWbV25euXnl5pWbVxavLF5ZvLJ4ZfHK4pXFK4tXFq8sXlm9snpl9crqldUrWxscJ4iDOnSHcYG1QYPkkB2KQ3Xwyt0rd6/cvXL3ysMrD688vPLwysMrD688vPLwysMrj6tyPw6H5JAdikN1aA7ioA7dwSsnr5y8cvLKySsnr5y8cvLKySsnr5y8cvbK2Stnr5y9cvbK2Stnr5y9cvbK2SsXr1y8cvHKxSsXr1y8cvHKxSsXr1y8cvXK1StXr1y9cvXK1StXr1y9cvXK1Ss3r9y8cvPKzSs3r9y8cvPKzSs3r9y8snhl8crilcUri1cWryxeWbyyeGXxyuqV1SurV1avrF7Z22D3Nti9DXZvg93bYPc22L0Ndm+D3dtg9zbYvQ12b4Pd22D3Nti9DXZvg93bYPc22L0Ndm+D3dtg9zbYvQ12b4Pd2+DwNji8DQ5vg8Pb4PA2OLwNDm+Dw9vg8DY4vA0Ob4PD2+DwNji8DQ5vg8Pb4PA2OLwNDm+Dw9vg8DY4vA0Ob4PD2+DwNji8DQ5vg8Pb4PA2OLwNDm+Dw9vg8DY4vA0Ob4PD2+DwNji8DQ5vg8Pb4PA2OM422PMJ2aE4VIfmIA7q0B3GBWcbnOCVm1duXrl55bMN9nKCOKhDdxgXnG1wQnLIDsWhOnhl8crilcUri1dWr6xeWb2yemX1yuqV1SurV1avrF65e+XulbtX7l65e+XulbtX7l65e+XulYdXHl55eOXhlYdXHl55eOXhlYdXHlfldBxHUArKQSWoBrUgCdKgHhSOFI4UjhSOFI6zSXY1akESdA6tH0Y9aDidDfOiFJSDSlANakESFI4cjhyOEo4SjhKOEo4SjhKOEo4SjhKOEo4ajhqOGo4ajhqOGo4ajhqOGo4ajhaOFo4WjhaOFo4WjhaOFo4WjhYOCYeEQ8Ih4ZBwSDgkHBIOCYeEQ8Oh4dBwaDg0HBoODYeGQ8Oh4ejh6OHo4ejh6OHo4ejh6OHo4ejhGOEY4RjhGOEY4RjhGOEY4RjhGO5IxxGUgnJQCapBLUiCNKgHhSOFI4UjhSOFI4UjhSOFI9p5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKdp2jnKdp5inaeop2naOcp2nmKdp6inado5ynaeYp2nqKd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5znaeY52nqOd52jnOdp5jnaeo53naOc52nmOdp6jnedo5zaDaGSjHFSCalALkiAN6kHDydr5pHCMcIxwjHCMcIxwjHCMcAx32KSii1JQDipBNagFSZAG9aBwpHCkcKRwpHCkcKRwpHCkcKRwpHDkcORw5HDkcORw5HDkcORw5HDkcJRwlHCUcJRwlHCUcJRwlHCUcJRw1HDUcNRw1HDUcNRw1HDUcNRw1HC0cLRwtHC0cLRwtHC0cLRwtHC0cEg4JBwSDgmHhEPCIeGQcEg4JBwaDg2HtfNiVIJqUAuSIA3qQcPJ2vmkFBSOHo4ejh6OHo4ejh6OHo4RjhGOEY4RjhGOEY4RjhGOEY7hDpu4dFEKykElqAa1IAnSoB4UjhSOFI4UjhSOFI4UjhSOFI4UjhSOHI4cjhyOHI4cjhyOHI4cjhyOHI4SjhKOEo4SjhKOEo4SjhKOEo4SjhqOGo4ajhqOGo4ajhoOa+dq1IOGk027Pw7DBGawgBVsoIAKdnAECjbBJtgEm2ATbIJNsAk2wabYFJtiU2yKTbEpNsWm2BRbx9axdWwdW8fWsXVsHVvH1rENbAPbwDawDWwD28A2sA1sI2w2ncoxgRksYAUbKKCCHcSWsCVsCVvClrAlbAlbwpawJWwZW8aWsWVsGVvGlrFlbBlbxlawFWwFW8FWsBVsBVvBVrAVbBVbxVaxVWwVW8VWsVVsFVvFRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0sqSRJY0saWRJI0saWdLIkkaWNLKkkSWNLGlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0skTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCzRmSXFsIINFFDBDo7AmSUTE5hBbA1bw9awzSyphh0cgTNLJiYwgwWsYAMFxCbYBJtiU2yKTbEpNsWm2BSbYlNsHVvH1rF1bB1bx9axdWwdW8c2sA1sA9vANrANbAPbwDawjbD14wATmMECVrCBAirYQWwJW8KWsCVsCVvClrAlbDNLuuEInFky8bSlwzCDBaxgAwVUsIMj0LLkQmwFW8FWsBVsBVvBVrAVbBVbxVaxVWwVW8VWsVVsFVvF1rA1bA1bw9awNWwNW8PWsDVsgk2wCTbBJtgEm2ATbIJNsCk2xabYFJtiU2yKTbEpNsXWsXVsHVvH1rF1bB1bx9axdWwD28A2sA1sA9vANrANbAPbCJtNN3RMYAYLWMEGCqhgB7ElbAlbwpawJWwJW8KWsCVsCVvGRpYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEtGZEk+IkvyEVmSj8iSfESW5COyJB+RJfmILMlHZEk+IkvycWBL2BK2hC1hS9gStoQtYUvYEraMLWPL2DK2jC1jy9gytowtYyvYCraCrWAr2Aq2gq1gK9gKtoqtYqvYKraKrWKr2Cq2iq1ia9gatoatYWvYGraGrWFr2Bo2wSbYBJtgE2yCTbAJNsEm2BSbYlNsik2xKTbFptgUm2Lr2Dq2jq1j69g6to6tY+vYOraZJcUwgRksYAUbKKCCHRyO6ThAe+oYhhksYAUbKKCCHRyB8xlnIraELWFL2BK2hC1hS9gStowtY8vYMraMLWPL2DK2jC1jK9gKtoKtYCvYCraCrWAr2Aq2iq1iq9gqtoqtYqvYKraKrWJr2Bq2FjabuDYXwpqJWQ3tPBRDBTs4Amc2TkxgBgtYwQZiq9gqtoqtYWvYGraGrWFr2Bq2hq1ha9gEm2ATbIJNsAk2wSbYBJtgU2yKTbEpNsWm2BSbYlNsiq1j69g6to6tY+vYOraOrWOb2Win2czGiQnMYAEreNrm6WnZeKGCHTxt+Tx/bZab42nLapjBAlawgQIq2MERaNl4IbaELWFL2CwbczcUUMEOjkDLxgtPmy1wZ3PfHAt42koxbKCACnZwBM7lJ2175wKUEzNYQLPZls2FKCdK4FxxMhlasWF4/rU6/+3516odNwuFCxXs4Ai0ULjwrFvNZqFwYQEraDbbBguFC0/budJPtolujiPQQuHCBGbwtDUxrGADBTSb7T4LhQvNZhtpoXBhAjN42sTEFgoXNlBABTt42sQ2x0LhwgRm0Gy2kRYKFzbQbHb2WShc2AOtzV9oxexXzEUp7SSwJn3923PL9NzIOleknJjADBbw3LJzeYdss9ocBVSwgyPQmnQ/DBOYwQKetp4MGyjgaeu2ZdakLxyB1qR7NTTbXAjSbGpYwAo2UEAFT9uYihFoTfrCBGawgBVsoIAKYivYKraKzdr8sF9sbf5CARXs4Ai0BjnmapgHaAo7hMKmC5subLo1kWE7yprIhQp2cARaE7kwgRksYAWxdWwdW8fWsQ1sA5tdIUc3tArD8FHh8UhuOBxtvpdjAjNYwAo2UEAFO4gtYUvYEraELWFL2BK2hC1hS9gytowtY8vYMraMLWPL2DK2jK1gK9gKtoKtYCvYCraCrWAr2Cq2iq1iq9gqtoqtYqvYKraKrWFr2Bq2hq1ha9gatoatYWvYBJtgE2yCTbAJNsEm2ASbYFNsik2xKTbFptgUm2JTbIqtY+vYOraOrWPr2Dq2jq1j69gGtoFtYBvYBraBbWAb2MiSRpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYIWSJkiZAlQpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpYoWaJkiZIlSpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0smSTpZ0sqSTJZ0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZEknSzpZ0meDLIYVbKBtTjNUsIMjcDbIiQnMYAEr2EBsim02yGE4AmeDnJjADBbwtNlgn02achRQwdNm4zg2aepCa5AXnrZkW2YN8sICmk0MGyiggmY7eyVselS2r73Y9CjHAlbwrJsPw7OufRvGpkflnA07OAKt6V142qzn36ZHORawgmZrhqaw7bX2Zj3pNicqW5+5zYnK1vltc6IcM1jACjZQwNNWqmEHzWZia28XJjCDBazgaau2H6y9XahgB09btc2x9nZhAk+bdZ/bnCjHCppNDM1m22DX7gs7OALt2n1hAs02DAtYwQYKqGAHR6Bduy9MIDbBJtgEm2CzqGh2TlpUXDgCLSrsIzo2J8oxgwWsYANPW7P9a1FxYQdHoEXFhQnMYAEr2EBsHVvH1rFZKDTbSAuFCyvYQAEV7OC4sNjsJ8cEZrCAFWyggAp2EFvClrAlbAlbwpawJWwJW8KWsGVsGVvGlrFlbBlbxpaxZWwZW8FWsBVsBVvBVrAVbAVbwVawVWwVW8VWsVVsFVvFVrFVbBVbw9awNWwNW8PWsDVsDVvD1rAJNsEm2ASbYBNsgk2wCTbBptgUm2JTbIpNsSk2xabYFFvH1rF1bB1bx9axdWwdW8fWsQ1sA9vANrANbAPbwDawDWxkSSJLElmSyJI0s0QMK9hAARXsgTNAsmECM1jACjZQQAU7OAIztowtY8vYMraMLWPL2DK2jK1gK9gKtoKtYCvYCraCrWAr2Cq2iq1iq9gqtoqtYqvYKraKrWFr2Bq2hq1ha9gatoatYWvYBJtgE2yCTbAJNsEm2ASbYFNsik2xKTbFptgUm2JTbIqtY+vYOraOrWPr2Dq2jq1j69gGtoFtYBvYBraBbWAb2Aa2EbZ8HGACM1jACjZQQAU7iI0syWRJJkuub18Owwo28LSd0ybK/AbmhR0cgZYlFybwtInZLEsurOBpk2QooIIdHIGWJRearRlmsIAVbKCACnZwBFqWXIitYqvYKjbLEqmGAirYwRFoWXKh2dQwgwU0WzdsoIAaaKkhdmAtH9SOkOXDhQ08K6gdIcuHCzt4bu/5LZViUwgdE5hBs9kPsny4sIECWl3bfdbmz6kxxaYFOlbQfrEprM1fqGAHR6C1+QsTmEGz2f61Nn9hAwVUsIPD0aYFOiYwgwWsYAMFVLCDZjuPsU0AdCxgBRsooIIdpK617gsTiC1jy9gytowtY8vYMraCrWAr2Aq2gq1gK9gKtoKtYKvYKraKrWKr2Cq2iq1iq9gqtoatYWvYGraGrWFr2Bq2hq1hE2yCTbAJNsEm2ASbYBNsgk2xKTbFptgUm2JTbIpNsSm2jq1j69g6to6tY+vYOraOrWMb2Aa2gW1gG9gGtoFtYBvYRtjqcYAJzGABK9hAARXsILaELWEjSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSSNLGlnSyJJGljSypJEljSxpZEkjSxpZ0siSRpY0smROxjxnMZc5GfPCBgqoYAdHoGXJhQnMILaMLWPL2DK2jC1jK9gKtoJtBsgwbKCACnZwBM4AmZjADBYQW8VWsVVsFVvF1rA1bA1bw9awNWwNW8PWsDVsgk2wCTbBJtgEm2ATbIJNsCk2xabYFJtiU2yKTbEpNsXWsXVsHVvH1rF1bB1bx9axdWwD28A2sA1sA9vANrANbAPbCNucgXlhAjNYwAo2UEAFO4gtYUvYEraELWFL2BK2hC1hS9gytowtY8vYMraMLWPL2DK2jK1gK9gKtoKNLBGyRMgSIUuELJkzMM93QMqcgXm+4lHmDMwLM1jACjZQQAU7OAIbtoatYWvYGraGzbLkfA+lzBmYF3ZwBFqWXJhAs2XD0zYmVrCBAirYwRFoWXJhAjOITbEpNsWm2BSbYuvYOraOrWPr2Dq2jq1js9Q4F3Uuc1ZlF8MKWgU1FFDBDg7HOavywsf2lnOWTLFZlY4FrGA7MRsKqGA/sRiOwDMfHM1WDTNYwAqarRlaXTEcgfkAE2h1u6HVHYZn3fMF/GLzJx/dLobnr0i2ZWcSlGTiMwkcR+CZBI6nLdmWnUngWMAKms12dTGFbc7Z/Eu2zTmbf8m2f8/mX7Jtztn8Hz0whhksYAUbKKCCZrNtqCPQ2rydXHOm5IUFrGADBVSwgyNQDhCbYBP7QbZLpIINPH9QsR11tnnHDo7As807JjCDBaxgA7EpNjWbba+OwH6ACcxgAc1me703UEAFzWbnbx+B4wBPW7UtG5Ewc6bkhRVsoIAKdjDybM6UvDCBGSxgBRsooIIdxJawJWwJW8KWsCVsCVvClrAlbBlbxpaxZWwZW8aWsWVsGVvGVrAVbAVbwVawFWwFmwXI+Q50sZmSjudZUu0PWIBcmMAMnudkbYYVbKCACnZwBLYDNJsYZtCuWWpod0HzzypodecfGIFygAnMYAEraL9iGAqo4Glrh+EItNS40GzdMIMFjKGMOZ3zQgEV7OAInE8dExOYwQLaEIlt+hwimWi/wo685cNEy4cLE5jBAlbw3GetGAqooNmq4XC01e4czZYNM1jAGK6a0zkvFFDBDo7A+XwxMYEZLKD9imaoYAdHoN0/2CwOm8PpmMEC1usF2jLXtbtQQAU7OALnC9UTE5jBs26ZeP4KG4+12ZqOHRyB1uYvTOD5K2xI0mZrOlawgWazXWJt/sIOms32g7X5CxNotm5oNvsV5/1DOd/WLzZb01FABTs4Ai0JbPjSZms6ZrCAFWyggAp2cAQqNsWm2BSbYrP7BxsLtdmajgqazfaO3T9MtPuHCxOYwQKeNntKstmajgIqeNrOT94Wm615oeXDhafNnr5sDucjRgwLWMEGCqhgB8eF1eZwOpptGGbwtJ1fSqs2h9OxgQKetvN2sdocTscRaM8XFyYwgwWsoNmqoYBma4YdHIGWGhcm8KGwZZGqTdws5+oC1SZuOgqoYAdNYXvHHjUuTGAGC1jBh60e9tvOAHFUsIPjRNveM0AcE5hPtN92BohjBc2mhmazw13NZptTOzgC2wEmMIN2STKSIA3qQcPJUsLobMH1fLSrNnPSMYMFrGADBVSwgyOwY+vYOraOrWPr2Dq2jq1j69gGtoFtYBvYBraBbWAb2Aa2ETabOemYwAwWsIINFFDBDmJL2BK2hC1hS9gStoQtYUvYEraMLWPL2DK2jC1jy9gytowtYyvYCraCrWAr2Aq2gq1gK9gKtoqtYqvYKraKrWKr2Cq2iq1ia9gatoatYWvYGraGrWFr2Bo2wSbYBJtgE2yCTbAJNsEm2MiSRJYksiSRJYksSWRJIksSWZLIkkSWJLIkkSWJLElkSSJLElmSyJJEliSyJJEliSxJZEkiSxJZksiSRJYksiSRJYksSWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJJksyWZLJkkyWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSFLCllSyJJClhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUsKWVLIkkKWFLKkkCWFLClkSSVLKllSyZJKllSypJIllSypZEklSypZUsmSSpZUsqSSJZUsqWRJJUsqWVLJkkqWVLKkkiWVLKlkSZ0NvRpWsIHWrWWkQT1oOFlX5KQUlINKUA1qQeGo4ajhqOFo4WjhaOFo4ZjNWgwbKKDtwm7YwXMXnqOx1WZPOiYwgwWsYAMFVLCD2BSbYlNs1qyzHTBr1hc2UEAFO2i2s/vHZk86JtB6YYxKUA1qQRKkTtZ0s50u1kjPdRSqzYWs2fa3NdILBVTQttSOgjVSQ5sL6ZjADFrHpVENMtcwFFDB03WuMVxtJuSF1kQvPF3n4G21mZCO5y87V2eoNhPSsYGnrRlpUA8aTtY8J6Ugqzjx/MtFDG1L1XAE2sX7wgTaltoPtDZ9YQUbKOBps/1m1+5Jw8mu3FbeLtyTclAJqkEt6JTY+WEzGx17oF2dLzz/frWdbw32wrOC7Qhrr5N60LmV1Q6NtdYLE3hu6Ny91lovNJVVsNZ6oW2sbbe11vnzrbVW20/WWs9BrWpTFR0TmMECVrCBAtqpYttrrbXZqWSttdn2WrtstpHWMJttpLXMCxsooIIdHIHWUJv9TGuoFzZQQAU7OBxt8mA930KsNnnQUcEOnn/tHKiqNnmwnu8FVps8aL/d5g5eVIJqUAuSIA3qQcPpbG4XhSOHI4cjhyOHI4cjhyOHI4ejhKOEo4SjhKOEw1rb+VJltTmAdjLYFMCLUlAOKkE1qAVJkAb1oHC0cLRwtHC0cLRwtHC0cLRwtHC0cEg4JBwSDmtrYnvB2tqFHbQzxE4Wa2vnQGS1qXxV7byxVqV23lhLOV9crDYRr6r9WbuuXZhByys7Ya39XNhAARXs4Ai0a96FZhPDDBbwtHX7bdaUum2ONaULLXHPP2vT8xwTmMHif82m5zk2UEAFOzgC7VJ34XmAulEJqkEtSII0yIqr4Qi0C92FBbTNs79mlzobFLR5d44j0C51FyYwgwU8d4aNGtq8O0cBT9tIhh0cgXa1s/FBm4LnmMECVrCBAirYwRHYsDVsDVvD1rA1bA2bXSBtENNm4zmOQLsY2nClTbarNu5o0+outJY27AhZSxt2hOyqdmEBrYLtdbuqXXieGDbCaJPimg0V2uS1dphiJDCDBTxPNxtWtMlrjgIq2MHhaNPUmo1G2jQ1xwpa3WEooIIdHIHpABOYwfPPnnNMq00yc0xgBgtYwXPLUjIUUMEOjkC79FxotmyYwQJW0GzF0OpWQ6t7HjebTuaYwAwWsIINtF8hhgp20Gx23OyqdGEC7Zphe2demCZWsIECKtjBETivT7bP5gXK9oNYBdsPomAHR6DaltnP1AJWsIECKtjBEdhty2zvWBu6MIMFrKApbJ91DbSmZw9KNter2eOPzepqxfaDNRx75rFZXY4P8bleQbVJXReVoBrUgiRIg3rQcLJWVLJhAjNYwAo2UEAFe6C1OHtgs2lbzR7NbNrWOUWp2qytizSoBw2ns1ldZBWbYQYLWMEGCmi7+TxQNjWr2QObTc1yPCvYH7XmM0mCNKgHDSdrOfYsZ5OyHDNYwAo20G5ozxPCJlo1e/iyiVY6qQTVoMdf1/lXJEiDetBwOq8vF5nEDpE1owsLKKDdYtsxtKZxYQLPU9R+xtkyLqpBLUiCNMh+uO3FPgKt1VyYwAwWsIINFFBBbMNtzWZLtfPBs9lsKccMmm0YVtDOk8PQTpRkaGdKMezgCLQG2ExsDfDC03Y+YjabLdWaic8GqPNvtSAJ0qAeNJzsYnfeGjabBtWabbRd1sS21C5rF3bw3NLzoajZNCjHBGawgFbXxNbUzqeIZlObmtgPtAvYhRksYAUbKKCCHTSb7Thrhhcm0Gy2O60ZXljBBprN9pldwC7s4Ll7rex5/booBZ3t1bbK2uukGtSCJEiDTGLHyK5xE/UAE1jBczPVTkK7ml14VlA7ntZkL0zguaVW4GyyF9WgFiRBGtSDhtPZYC9KQeEY4RjhGOEY4RjhGOEY7rApUReloBxUgmrQeWTPSaLNZkM5Kmi7rBqOQGuhF9ouE8MMnufRVNgl8sIGCqjgaTtfe242G+pCu1U9Xz9sNhuqddsya73nfNFms6EcK2gPg7aR1qYvVPBhu2oNp7NFX5SCclAJsorN0LbUfra15vMBstncJscMFtC21H62teYLBVSwg+em2u+zxjxst1hjHvPfZvCUDdvGs9le//Kc733Y77dPvR1W1T71dmEFz+06H6aazUtyVLCDI9Ca5IUJzGABK4hNsSk2xWbNd9hGWvO9MIEZLGAFJfaDfbzqwg7ajjKbfbzqwgSeF/XDztCz+TpWsIECKnje0h12Pp2NeKJNRpLzdcZmk5EcM2gzeQ/DCjZQQAU7OALj49otx8e1W46Pa7ecsCVsCVvClrAlbAlbxpaxZWwZW7Y9WQwbKKDtyWrYwRFot8cX2p5shrYnxdBsVmx+XHtiA82mhgp2cATWA0xgBgtYwQZiq9gqtvkBWTtL5gdkJyYwgwWsYAMFVLCD2ASb2G/rhhksYAUbKKCCHRyBeoBmG4YZLKCAZ4VkTeQMBZnbe4aCYwYLeG7vPNx2J36hgAp2cASOA0xgBguIbWAb2Aa2gW2EzSYYydkT0myCkaPZxLCAFTSbGgqoYAdHYDrABGbQbN2wgg0U8LSdvRvNJhg5jsAzHxwTeNrOrodmE4wcK9hAARU02zAcgZYPFybwtBUTn/ngWMHTdj7IN5tgJMUUlg8XdnAEWj5cmMAMFrCCDcRWsVVsFVvD1rA1bA1bw9awNWwNW8PWsAk2wSbYBJtgE2yCTbAJNsGm2BSbYlNsik2xKTbFptgUW8fWsXVsHVvH1rF1bB1bx9axDWwD28A2sA1sA9vANrANbCNsNsHIMYFmE8MCmk0NGyiggqft7K1pNsHoQsuSCxOYwQJWsIGn7ez6aTbByNEuHWfjtVlFjgk0RTEsoCnsF1uAXCigKezHW4BcOAItQKwHxBaCc8xgASvYQAEV7OAIrNjOqLD7eZupdFELOu/255/ToB5kFc88tqlKjgnMYAEraNtve9ZC4kIF7Tbajth83jC0m4gLE5jBAlawgQIqiE2wKTbFptgUm2JTbIpNsSk2xWYh0SYmMIPFn9bqfAqZaM888w8IqGD3Zzhb7O1CC4lznLrZYm+OZrMzwELiwgrab5sooIIdHI42wcnR6lbD88hb15xNWxLrmrNpS44j0Br+hba93TCDBaxgA0+bdaTZvCXHDo5Ay4ALE3jarMPLFnBzrGADzaaGCnbQbOe5bhOdxDpLbKKTYwYLWMEGCqhgB0dgxVaxVWwVW8VWsVVsFVvFVrE1bA1bw9awNWwNW8PWsDVsDZtgE2yCTbAJNsEm2ASbYBNsik2xKTbFptgUm2JTbIpNsXVsHVvH1rF1bB1bx9axdWwdm+WDdXLbWm6OZrPGa/lwYQUbaDY71+0m4sIODkdby80xgRksoNm6YQNNMQw7OAItQC48FdYxaJOwHAtYweYZZROxHBXs4Ai0ALkwgRksoFz9cTb56qIedPbW2Q+3jsVJKci2PxkWsIINFFDB01SNhtMZERfZrsqGGSzgefNge8puHiZJkAb1oOF0ZsNFKSgHlaBwtHC0cLRwtHC0cEg4JBwSDgmHhMPCYO57C4MLFbRhVDt0FgYTLQzmQbEwuDCDttPsZLUwuLCBAirYwRFoYXCh2ezEtjC4sIAVtHFCO+5zoHCigh0cgRYGw463hcGFGTz346Qa1IIkSIN60LjIpoRdlIJyUAmqQS1IgjSoB4UjhSOFw0LA7nttSpicE4WazQlzbKCACnZwBFoIXJjADGLL2DK2jM3uIuz22+aQOY5Au4u4MIEZPEdvrC/T5pA5NlBABTs4AusBJjCD2Cq2iq1iq9gqtoqtYWvYGraGrWFr2Bq2hs0GGK1Pd84WS0YtyP7SMFSwgyNwjvtPTKDNLrBTSwtYwQaeNuuKs4XZHDt42pJt7dn+HRNoNjtdbMjxwgo20Gx2YtgQo3Wv2Sw2xwRm8KxrfWo2i02z7SgbaMzWmGykMdv22lCj9Z7ZLDbNJrbBRkNbgs0xgaftnNnTbG6bYwUbaLZhaOPzydAG6M/NsQltes6TaTahTa17wia06fkaRbN11xwr2EABFeyg2Wwb8gGeCjuNbB6cYwVPRbWNPJu5o4IdHIFnM3dMYAYLWEFsBZs1c+upsNlxjiPQmvmFCcyg2ewXWzO/sIEC2kD8YdjBEWjN3J5EO82808w7zbzTzDvNvNPMO83cZsc5Rqh0OUBsgk2wCTbBJtgEm2ATbIpNsSk2xabYFJtiU2yKTbF1bB1bx9axdWwdW8fWsXVsHdvANrANbAPbwDawWWpYF4MtzOZoZ8n8A8PRpvA5JtDmhahhASvYQAEV7OAItACxHgSby+dol9VhaHUnCqhgB21qy3mu28JsjgnMYPFJAXOG34UNFFDBDsa0Apvm53juHZuHZDP6HBsooII90JLAukRsRp/alCSb0qc2Jcnm9DkqaBWa4Qi0Nm99JjavzzGDtr12LKzNX9hAARXs4AicM4rsEM4pRRMzWMAKNlB8BtCc9Df3g7XuC9k71rqtj8em/TlWsIECnr9iKqx1XzgCrXVfeNrskd2mCDoW8LTZE7nNEnQU0Gx2LKx1XzgCrXXblCabKKg2P8cmCqo9kdtEQbXHcJso6NhAq2u/zdrxiWJTAh0TeNY9n73FJv/ZySU2+c9RwR5ozfTCck2TE5vb59hAuSbPiU3vc+zgCLSZQxcmMIMFrOC5kecDtti8P8cRaJfxC88ffz5Ni837cyxgBX2WoczZgBcq2MERaLOKLkxgBgvos1Jlzga80H7FxBFojffCBNqvsP1gjffCCjZQQAVtDunEESgHmMAMFrCCDRRQA63xnk/xYhMAHTNYQPsVYthAARW0X2HHeM7vNZzzeycmMIMFrGAD7Vio4Qi0ZnphAu1XdMMCVrCBAirYweE4JwqenQoyZwpemMEC2mTBw7CBAipoU9zVcATOCfUTE5jBAlawgQJa3fNMtXmBevZxiM0LdMygzXjMhvYrmmEDBVSwgyPQ2vyFCTSbGFpd20hrx+ekfrF5gDpsr9uN94UFrKBVsL1uF+ELFezgCLR2fGECc2zDnFw/sYINFFBBfoW144nWji88p0MeduTPFtsP2+tni3UUUMGz0/Kww3JehC8827Hj2UN62DE+27FjASvYQAEVNJttr47AfoBms6PZM1jACjZQQAXNZudDH4HjAM1mZ8nIYAEr2EABFTSbnTtjONoEQsfTdk6nE5tA2M8ZT2ITCPvZbSE2gbCfHRRiEwgdBVTwtJ39D2ITCPvZ/yA2gbAns6UEZrCApy3b5pytu5/9D2ITCHu2LTuv6I4dHIHZftswTGAGC2jnutnsxvtCARXs4Ai0G+8LE5hB+xW2J4uACnbQfoXtSeuivzCBGSxgBRsooAY2q9sME5hBq2uHsFWwgQJqoFhdO9zW5rMdTWvzFzZQQAX79eKmzFXHJsbrnDJXHbswgwWsYAMFtP1rR95a94UJzOD5K+YhtBZb7ES0FjvRWuyFZ4ViZ5+12AsLaENAdoytbRbb1dY2i+0+a5u2H2zynmMCM1jAClpdNezgCLRWeGG6Xl2WuQ7YhQWsYAMFVLCDI9BW6Tln5Mhc8evCCp7nw9mVJmUOkE08f4XdBdmEPMcRaINkZ+eW2IQ8xwyee8fu+2xCnmMDBVTQbLZ35jiZ4Rwom5jADBawgg20urZL5joh9iusZVX7xdayLhTw3LJmO+q8xjqeW9asgrW3CxN4blmz/WCt8MIKNlBABTtotvOktel0jgnMYAEr2OIX2zW22a62VjjRWuGFCbS6zbCAFWzgeU5aG5orc13YwRFoSx1cmMAMFtD2zkQFOzgcbYpcP3uTxKbIOWawgGcLsKSda3BdKKCCHRyBttjIhSnQZqRnu12xGWPBunBfeMDnWR6cFs4Ll4Xrwou3Lt66eOvibfPf275ofeEBy7FwWjgvXBauC7eFZeHFK4tXFq8uXl28unh18eri1cWri1cXry5eXbx98fbF2xdvX7x98fbF2xdvX7x98fbFOxbvWLxj8Y7FOxbvWLxj8Y7FOxbvwDtnizmnhfPCZeG6cFtYFtaF+8KLNy3etHjT4k2LNy3etHjT4k2LNy1eu4jYU59NyHJMYAYLWMEGCqhgB7E1bA1bw9awNWwNW8PWsDVsdhmyh1ubkOWYwAwWsIINFFDBDmJTbIpNsSk2xabYFJtiU2yKrWPr2Dq2jq1j69g6to6tY+vYBraBbWAb2Aa2gW1gG9gGthE2m5DlmMAMFrCCDRRQwQ5iS9gStoQtYUvYEraELWFL2BK2jC1jy9gytowtY8vYMraMLWMr2Aq2gq1gK9gKtoKtYCvYCraKrWKr2Cq2iq1iq9gqtoqtYmvYGraGrWFr2Bq2hq1ha9jIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiFLhCwRskTIEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCxRskTJEiVLlCzRmSVqaLM0D8MOjsA5GXRiAjNYwAo2UEBsDVvDJtgEm2ATbIJNzJYMBVSwgyNQD9BsxTCDBTSb7TNtoIAKdnAE9gM02zA8bdaPa3PDHCvYQAEV7OAIPLPEMYHYBraBbWAb2Aa2gW2EzWaMOSYwgwWsYAMFVLCD2BK2hC1hS9gStoQtYUvYEraELWPL2DK2jC1jy9gytowtY8vYCraCrWAr2Aq2gq1gK9gKtoKtYqvYKraKrWKr2Cq2iq1iq9gatoatYWvYGraGrWFr2Bq2hk2wCTbBJtgEm2ATbIJNsAk2xabYFJtiU2yKTbEpNsWm2Dq2jo0s6WRJJ0s6WdLJkk6WdLKkkyWdLOlkSSdLOlnSyZJOlnSypJMlnSzpZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkkGWDLJkkCWDLBlkySBLBlkyyJJBlgyyZJAlgywZZMkgSwZZMsiSQZYMsmSQJYMsGWTJIEsGWTLIkjGzJBtWsIECKthBs533nmNmyUSzDcMMFrCCDRRQwQ6OC/WYWdINE5jBAlawgQLaGyzJsIMjcL7EMjGBGSygvSxTDRso4Gk7BzLVpsA5jkDLkmw/07LkwgyetnP0Um0KnGMD7e51/lmziWEHR6BlyYUJzGABK2g2U1iWXKhgB0egZcmFCczgaav2KyxLLmzgaau2DZYlF3bwtJ0jZmrT5RwTmMECVrCBAp62ZofQsuTCEWhZcmECM1jACprNNt2y5EIFOzgCLUsuTGAGC1hBbIrNsqRZY7AsuXAEWpZcmMAMFrCC9kQ1UUAFOzgCLUsuTGAGC1hBbAPbwDawjbDZ1DrHBGawgBVsoIAKdhBbwpawJWwJW8KWsCVsCVvClrBlbBlbxpaxZWwZW8aWsWVsGVvBVrAVbAVbwVawFWwFW8FWsFVsFVvFVrFVbBVbxVaxVWwVW8PWsDVsDVvD1rA1bA1bw9awCTbBJtgEm2ATbIJNsAk2wabYFJtiU2yKTbEpNsWm2BRbx9axdWwdW8dGliSyJJEliSxJZEkiSxJZksiSRJYksiSRJYksSWRJIksSWZLJkkyWZLIkkyWZLMlkiU3kG+d7H2oT+Rw7eNrOWe9qE/kcE3jaznc51CbyOVbwtJ1vg6hN5HNU0Gy2OZYlEy1LLjxt5wsRahP5HAtotmHYQAFP2/nGhNpEPscRyH1J5r4kc1+S532JFZv3JRMbaHcKxVDBDp42u2mw6X2OCbTfpoYFrOBpU7PNFXwmKnjauh03y5KJliUXnrZum2NZcmEB7ZQznKFge2eGwsQMFrCCDRRQwQ6OQMWm2BSbYlNsik2xKTbFptg6to6tY+vYOraOrWPr2Dq2jm1gG9gGtoFtYBvYBraBbWAbYSvHASYwgwWsYAMFVLCD2BK2hC1hS9gStoQtYUvYEraELWPL2DK2jC1jy9gytowtY8vYCraCrWAr2Aq2gq1gK9gKtoKtYqvYKraKrWKr2Cq2iq1iq9gatoatYWvYGraGzW4wzhd61OYrjvONFLX5io4j0LLkwgRmsIAVbKCA2ASbYFNsliXnnFS1+YqOBaxgAwU0WzPs4AjsPrqjZUbFxAYKqGAHz2LnCzJqkxQdE3hu+vnKitokRccKnrZhh8Wi4kIFOzgcbeqiYwIzWMAK+siV1kNABc1WDEegRcWFCcxgASvYQPttYqhgB0egRcWFCcxgAWugNelhv8Ka9IUN9D4xrdGXqTX6MrVGX6bW6MvUGn2ZWqMvU2v0ZWqNvkyt0ZeptWKr2Cq2iq1ha9gatoatYWvYGraGrWFr2ASbYJO4G7Q5mo4VjLtBm6DpqKAdzW44Aq1JX5jADBawgg0020QFO2i28z7KpmQ6JjCDBaxgAwVUWwTQWs5cPvziAc8FxC9OC+eFy8J14bawGNuOnMv2XdwXHsHXyn0Xp4XzwmXhurDdjR6GAipo+3YYjsD5FDFxGsU4L1wWrgu3hWVhXbgvHPf3tuSfYwKnVI3LwnXhtrAsrAv3hQdcbPday7C1/4LzwmXhunBbWBbWhfvC5k32u+qsU4zbwrKwLtwXHnA7Fk4L54Wjw9YmlDo2cEqrsS7cFx7wXAX04rRwXrgsPH+s7fC5FOjFsrAu3Bce8FwP9OK0cF54eu3snWuCXtwWloXNm+0AzXVBLx6wzf92TgvnhcvCdeG2cHSM23RTxw5O6XnD0GbgXJwWzguXhevCbWFZeP5YOygzcC4ewTID5+K0cF64LFwXbgvP+ucJJjMuzrfPVGZcXNwWloV14b7wgPOxcFr4vAbY87zNI3Ws4JR2Y1lYF+4LD3jGxcVp4byw/djzxTOVGRcXt4VlYV24LzxgewPEOS1sXhvksZmlwXXhtvD02gGa8XJxX3jAM14uTgvnhcvCdWEbo7Hj3wRUcEqb8YBnvFycFs4Ll4Xrwm3h+WPtoMx4ubgvPOAZLxenhfPCZeG6sNU/35xTmTFy8YBnjFycFs4LW/1qB3fGyMX2u8436FSu755Mnl47uNeXTyZPrx2ImSQXT6/tn5kkF0+vHZeZJBdPr7WsmSQXT6/99pkkF0/vmWY6k+Ri855vyanOJLnYvOfLcaozSS42rw202ezTYPOeb6+pzoS52Lw2gGYzUIOntxnnhadXjOvC06vGsvD02m+ZiSS2/TORrCNWZyKJbedMpIvzwmXhunBbWBbWhfvCAy6LtyzesnjL4i2LtyzesnjL4i2Ltyzeunjr4q2Lty7eunjr4q2Lty7eunjr4rWnKOtvnTNVL8zglNqJMRPp4rawLKwL94UHPEPp4vlj7YSZoXRxWbgu3BaWhXXhvvCAZyiJ/a4ZShfnhcvCdeG2sCysC/eF7W7cznF7vrowgVPajcvCdeG2sCysC/eFBzyTSq01zaS6OC9cFq4Lt4VlYV24L2zec4Ul7TOpLp5eMZ5eNbYeqWRYwQYKqGAHo8N/Tmy9MIEZxJawzXSyY9FnOl2sC/eFBzzT6eK0cF64LFwXNu+5KJT2mU4X68J94QHPdLp4/vlq3Bce8EyVi9PCeWHbTuvc6zNVJs9blG7Hbt6iXFwWtj9vvXZ9BsLFsrAu3Bce8AyEi9PCeeGy8OKdgWA9Zn0GwsW6cF94wDMQLk4L54XLwtNrv30GwrB9OAPhYl24LzzgefdycVo4L1wWttPWNsF6XS4UcEqtcc1AuHjAMxAuTgvnhcvCdeHzx9q3HdSmpQbrwn3hEWxTU4PTwnnhAs8uUjUsYAWjC49ppMo0UmUaqTKNVJlGqkwjVaaRKtNIlWmkyjRSZRqpMo1UmUaqTCNVppEq00iVaaTKNFJlGqkyjVSZRqpMI1WmkSrTSJVppHpNIx2GGSxgTNm7ppFOFHAe1GTcFx7w/N7axWnhvHBZuC5sU/cmCqjglGbjAc/Prl2cFs4Ll4Xrwm3heQY3Y124LzxgPRZOC+eFy8J14ekVY1lYF+4LD7gfC6eF88Jl4ZgeOSeaXijglFor6n3hAY9j4bRwXrgsXBe2HzvPwxkTF+vCfeHh3I8ZExenhfPCZeHonO3HfMK5WBbWhfvCA07HwmnhvLD1+pnWcujCBto+HoYKdnD+0nTy/OrjxWnh+UuLcVm4Ljz3cDWWhXXhuYfVeMDlWDgtnBcuC9eF28Ky8PR2477wgOuxcFo4L1wWrgu3ha3Lz3aDjQ5d2MEptR0+A+ritHBeuCxcF24Ly8L2Y8+Vt/pxfRhy8oCvT0NOTgvnhcvCdeG28OxXNdbojO6H5oXLwnXhtrAsrAv3hQfcfWpQn5NRL8xgdEb3Yz6rXNwWloV14b7wgMexcHRG92PkhcvCdeG2sCysC/eFoxO8p/msYgc3zWeVi/PCZeHojO7paAvLwrpwX3jA6Vg4LZwX9ilYfU5VvbCB0Rnd09XJO7kvPOB8LJwWzguXhaMzuqfcFpaFdeG+8IDLsXBaOC88658nWKrRGd1TTQvnhcvCdeG2sCysC/eFx9WV3ecc1AsTGJ3RPc0nn4vrwm1hWVgX7gsPWKIzuidJC+eFy8J14bawLKwL94Vn/6z9rqt/dnJaOC8cndE9aV24LSwL68J94QH3Y+G0cL66svucoXphBaMzul8fq75YF+4LD3gcC6eF88LRGd3TqAu3hWVhXbgvHJ3gPR/HwmnhmfnVuC0sC+vCfeEBz49Vn2ti9etr1RfPa40Yl4WnV43bwtNr2za/WX3x9A7jAc8bGLvzub5bfbF57WS7vlx9sXnP1QF7njcwF5vXTrY8b2AuNq+dGHnewEyeNzB2vPK8gbl4eu03Xt+wnjy99huvr1hPnl77jfMG5uLptd84b2AmzxuYar9x3sBcbN5qv3HewFxsXguQPG9gqm2/JVKqts3zIcvO7Twfsi4e8LyHuTgtnBcuC9eF28Ky8OJti7ctXlm8snhl8crilcUri1cWryxeWbyyeHXx6uLVxauLVxevLl5dvPPtGzvd5ts3E0fgfMiqdmLMh6yL88Jl4bpwW1gW1oXtxzY7YeZz1uT5nHVxWjgvXBauC7eFZWHzNjsJ53PWxSO4zOesi9PCeeGycF24LWxvOFVDBTs4pedOLjOpLk4L54XLwnXhtrAsPH9sM+4LD3gm1cVp4bxwWbgu3Bae3mGsC5v3HL7qZSaV2M4p/gJZn3NpL8xgASvYQAEV7OAIrNgqtplO5yhLLzOdLq4Lt4VlYV24LzzgmU4Xp4Wn186BmU4X14XbwrKwwjNVzsGMXmaqXCwL68J94QHPVBE7XjNVLrY/r3bsZq/L5BkIF9ufV9ueGQgXl4Xrwm1hWVgX7gsPeAbCxYt3BsI5cNLLDISL68JtYVlYF+4Lj+A6A+Fi854DDL3OQDg/etHrDISL68JtYVlYF+4LD3hmwsX+3mOfM2QvLKBJz5GbXmcgXCwL68J94QHPQLg4LWw/9hwR6XUGwsV14bawLKwL94UHPG9dLp51xFgW1oX7wgOetyIXp4XzwmXhuvDirYu3Lt66eOvibYu3Ld62eNvibYu3Ld7Z2LudbLOxX9wXHvC8Fbk4LZwXLgvXhW3yrR1eEVDBKbUTbCbG5JkYF6eF88Jl4bpwW9h+7DDX7O+9uC884Jk8F6eF88Jl4bqwec8Z632ujeqsC/eFBzyT5+K0cF64LGwTnO1ctqn4Fwo4pcW4LzyC52Rc57RwXrgsXBeeP1aMZWFduC884Bk7F6eF88Jl4elV41l/GPeFz/r5HL7qNvc2OC2cjZNxWbgu3BaWhXXhvvCAy7FwWnjxlsVbFm9ZvGXxlsVbFm9ZvHXx1sVbF29dvHXx1sV7LaicjXXhvvCA27FwWtheUDlPwzldM9tz2Jyu6dwXtpL2TDanazqnhfPCZeG6cFtYFtaF+8KLNy3etHjn2rv2HDOna2Z7pJhTNK9/P0+rc8JYl3lanZPEuszT6uK2sCysC/eFBzxPK3u8mLM0nfPC5rXHgjlLM9sd+pylmc9JZX3O0sz2ZDBnaV6/ZZ5WFy+/cZ4y1t8wZ2A6t4VlYV24LzzgecpcnBbOC5vX+jPmDMxsfRg2AzNYFtaFzWt9G3MS5sVzje+L08J54bJwXbgtPOvb/pxrdlu/yJxIma0vZE6kzNb/IXOd7otlYYXnetwXzzq2/+e62xfPOnaOzfW1rV9kTnTM1hcyJzo6t4Xn+Wb752qDk/vCI1ivNpiN08J5+TNl4bpwW1hi/8yJjs594QHPdbFtP8wJjfO3zwmNzg2e5/C5Jk+fk/pysr87z+HJMxovTgvnhc1lwxFz8l62wa45ec+5LzzgeT5fnBbOC8/6w7gu3BaWhXXhvvCA5/lswxRz/p5zXrgsXBduC8vCuvBss3Yc5zr1F6eF88Jl4bpwW1gW1oX7wou3L965Tr2Ny81pe85l4bpwW1gWXo5pX45pX47pWI7pbDvn53L6nGKXrd93TrFzTgvnhee2NeO6cFtYFtaF+8IDntepi9PCeeHFmxZvWrxp8abFO69x9nvnFLts/dZzKp1z5TfO69rFsrAuPH+LGg94Xtcunr+lG+eFy8KLtyzesnjL4p2ZcPFy7Opy7Opy7Opy7K5r3+TFWxfXdftj23bd/kzOC5eF523XMG4Ly8K68Dw/D+MBz7Z/cVo4L1wWrgu3hWVhXXjxyuLVxauLVxevLl5dvLO92ySLOfUu27j6nG6Xbdx7Trdzrgu3hWVhXbgvPLfZjtHVlienhfPChe2Z19CL28KysC7cFx7Bc8adc4JtDWnrT7FJdo7lxGFYwQYK+LB36+60SXaOI9DWkL4wgRksYAUbKCA2WyLantptDl0X+0G2RLT1OtocOscGCqhgB0egLRF9YQIziK1iq9gqtoqtYqvYGraGrWFr2Bo2W27eHrJt7pyjBtrC8hfan22GAirYwRFoi8VfmMAMFrCCphBDBTs4Am2F+AsTmMECVrCBpjjT2yasdevqtflqjhm0Ynb+2gLwFzZQQAU7OC4cNk3NMYEZrGC/GtmwGWcXzkXdD8ME5quRjSMa5LDZZtYChs02cxRQwQ6OwGiQ44gGOY5okOOIBjmOjC2z6ZlNtzXbL0xgBgtYwQYKqCC2gq1iq9gqtoqtYqvYrOl1w8aPt5bVbf+2Gru6NVBABTs4Aue3ySaiEPavsH+F/SscTeFoCkdTOJqz6SXDcmXfONRDYdh8L0cBFezgCOwHmMAMFhBbx9axdWwdW8c2sA1sA9vANrANbMMDbxxDwe6YZoOc6IE3bEKWYwdHYDrABGawgBVsoAfeSKmDIzAfYAIzWMAKNlDAfmXfSMUDb6SSwQJGGqXSQAEV7GAEXqoHmMAMFhDF/LLKedKm+TGUiR3kD8yPoUxMYAYLWMEGCohNsAk2xabYFJtiU2yKTbEpNsWm2Dq2jq1j69g6to6tY+vYOraObWAb2Aa2gW1gG9gGtoFtYBthm1/WvTCBGSxgBRsooIIdxJawJWwJW8KWsCVsCVvClrAlbBlbxpaxZWwZW8aWsWVsGVvGVrAVbAVbwVawFWwFW8FWsBVsFVvFVrFVbBVbxVaxVWwVG81/foX3QmwNW8PWsDVsDRtZksmSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlmSyJJMlmSzJZEkmSzJZksmSTJZksiSTJZksyWRJJksyWZLJkkyWZLIkkyWZLMlkSSZLMlmSyZJMlhSypJAlhSwpZEkhSwpZUsiSQpYUsqSQJYUsKWRJIUvKzJJiWMEGCqhgB0fgzJKJCcwgtowtY8vYMraMLWMr2Aq2gm0mwXmbZPN25r2yTdtxLGAFGyiggh2Mu/jr470TsQk2wSbYBJtgE2yCTbBZ0+sT4xbbVrWbd/zXt3knxl389W3eiQnMYAEriKILqGAH45msjANMYAatmJ2I8043G8Z99fwgr+H8IO+FCcxgASvYQAEV7CC2hC1hS9gStoQtYUvYEraELWHL3pkxak5gBltgibv4WhKYwQJWsIECKtjBeGaoNe7ia81gASvYQAEV7GA8M9R2gKZQQyvWDQVUMO7ibSLNhXKACcxgASvYQAEVRKFx0laNk7by6Fl59Kw8elYePSuPnpVHz8qjZ+XRs/LoWXn0rDx6Vh49K4+elUfPyqNn5dGz8uhZefSsA9vARoOsNMh2xEnbeCBtRwbjpG08ejYePRuPno1Hz8ajZ+PRsyUBFexgnLSNR8/Go2fj0bPx6Nl49Gw8erasYAfjpG3lAOOkbSVO2lYEVDBO2sajZ+PRs/Ho2Xj0bDx6zo8JX9hAARVEYReJc67nmJ/LvVDBDo5AO38vTGAGC1hBbHb+nqtnjPm53As7OALt/L0wgRksYAUbiG1gG2GbH7s9lwkc82O3WgwV7OAItPP3Qtuyamjb0AwbKKCCHRyBFvwXWl0xzGABK9hAARU0mxqOQDtpL0xgBgtYwQaaoht2cATaqXxhAjNYwAo2UEBsFZud1ecaI2N+y/bCBGawgBXkYDUOVuNgNQ6WRIDMT9Wec4bH/FTthQ0U0O7E7JSzG7gLR6A9UV2YwAwWsIINFBCbYlNsHVvH1rFZO+7WLqwdX2gV7LS3VtjttLdWeGEFGyjRyGYrnNjB4Tg/NHthAjNYwAo2UEAFO4gtYbOLj/22+XXZczWYMb8je6H6D5rfkb1wBFrjvdB2qhhmsIC2o9SwgQJiy9gytoLNGu+FGSxgBRsoILYyFf/1X//021/+9q9//Mef//bXf/7H3//0p9/+8J/xL/79tz/8j//87d/++Pc//fUfv/3hr//xl7/802//3x//8h/2h/793/74V/vnP/7498d/fZz+f/rr/3r881Hwf//5L3866b/+ib99PP+r53JK5frrjz7slKPEoxv7Q5H0vEg/57JYiV5GFND64e/n539fDv8Fj5hlA+S4vQHnTcjcgH4824C62YAzpOzvP1rEKxswku/ExwPqsw2Q53+/nSP29vcfNx4vbUDzX/A4g59tQN/swRKHsL22B85pzNdplNKzLUibU1HPd4vmQVB9ugm7c7nay6hzI+qjb+r5ubw5GYu9N25FHh1DQo3Hr7pdo6if0aUue+MxxvOxxuactNdXrMSjrzsqPDbpY4W2OaZH/W+a5S8VNqfl6L4/H+PUr1WQGqfFkZ+X2O3M1uOAPO7pnu/M8bxGtmnDc2+WsrSwoh9D6tgdVA+ZMpZTS4/7v0Q4tR73dU9/Sd7UaKK+Ge1xCxE15OMOPWe6PW8nw8MitZaflqi7U8tPjF45MR5jcPcrtIhslecVNqfWYwAnjuljUDZq1PyxhG42okdsr1e+zxuxyc3H2IeXeIx9LCe45NeOhz4/HruzQqsfkMdzZ31WomwC/DGCEr+kaXpaIr97TMtmV2R7jf46psuF6NMxLZsTK/cU8f20wBf7MrEv+9Md8X7q7Uo8MiYuIWM8v4SUvjuxNLbjcXSjxmNs9GONsbs363FvJkuFdvuXVPukgpV4dMs+z++adhfDuL95DHAv6Zs+Xtjr5rimx+h73KM8xrBpJSl/vLTX8v4+rfXdfbr9LdkW2Z2b8Rizbs9/yy5Bk5KgfSxb8rHF1k2EPsYpo8bjQYzW8o3fUkbctj1GgtPz37K7wkvcPj6GWdkfj0T5UKPtrvC2OMlsc48r41Lj43a0tL3185PsMRpWntfYbYe9pDVrrLexv9TYnKd1xHY8uo3H0xr7IyNHNLvH0ZWnR6a13V6NM+QxwripsTtTZaQ4y8rxvMbuTLVXQGaNXPprNWqtcbkfzxOk7RK1+u54dFlxbRgfz1M5drflnWet8bzE5jSV1MmgdjyvsTs9zk+U+oacH+R8XmVzoj56+/2wPHr7l9PjYwbJ9vE9xy7V2p+W2O2P3DT2R98cls1Jms7XFeMq9ejOfVple6pr3EU98Hlz2TbcUmKnpvIYoXtaRcbugtnpG0qPwYUn4a7H73p5eAwXx1bUNZY//xbNv+sl9zFiGWf7Y3Dy+WVKd3enhcf69TEyf+qh0PbuPt1uRU0RhbUeT7did0uWU41fkjQ9vSXTvnsgjqenoksfxeP25naNx+i8X/gfw+zH0xr9eP+mrqe3z7DtHo1Hl/Na9fwmd1cjF2psjkp/u+epv93z1N/uedrviR6t5NHv8nxP7B6gyogrbV0vLJ+uLH3sbghznOOl6/Ma2we5uCY8mtrzGmO3P0r0MefH4PXTGtt9KjVyQz78lm+coRL7NOuH7fhYY7x9ho63z9Dx+56hGheUPDbtfez6nw6lw6SsD8Yfk2tsztDzU0XR8976SzXOlSN8h8r6CPephq3T/m4M2wPF75jDthzxdVxUXjvL7bO5VzdU7k9r2FLubw4BHPL2GMChv+eJ/vizI54AS97sjLF9GI1n0fLhTNdvFBktLo9Hr8+LpN1pKiXGGx/c153yaUhiNxrQY4yoLxfq8ulmct9TedBTufSAy/3BlVpihzwucPJ8cGU30FSOaPwlfRjXkG8UyYf+9yfJ5yL69tCGrfr+3tjGvsStjvC0G226ObqRcnp3eCPtTrG74xv3j4pujsq2Fyl6XkreXWDy+yOi+f0h0fwDY6Lb3dEiDcv2ept3F36NE+T8ONjTUdF9kR6DmvqhwXwuUtL77XY7+nSv3b4/gJW2w083221pb7fb3aDL7XZ7+6hs2u3+9JA4x/p48RzrKUYIelk25JcidfeQ30q0O1ku2r+M4G/b3YiJBGXo5lK370q6d7bvxqFunu3bEvfO9treP9t3o1A3z/btINTds/32UXn1KjWiC+cx7CnPT492vH967Iahbp4e2xL3To/dINTd06PVt0+P3QjU7dPj9lF5+fSI9HicHv21G+V6pOjwPOruHNsk6s1pREl+4DyV989Tef88lR84T+X981R+4jyVHzhPt2fHDzxYavbHuao6nj9Y7kagJEdPjNSyue7vhqDGwWjpcqb/ctnf75DMDsn64k69NUcr6e5ErXRNPYain9eo7zdbbW83222Je81W9f1muxs+utlsdfxAs719VDbNdn92xPyVx9khr9Vo9JA1eX5h6GXXBcuE/iPVl2q0EXPytzX2v+XWlMbU5e0zfVvi3pne+/tn+m4g6uaZPo7dXI2YYN/yMm78y5m+HYi6M0FzvzfuzRK1Fd3f24rdzqj2MZp5hRtLS/l1Z9wu0l8r0o6Y/9KO7WHZFpE4tsc6Mel7RaJ7rD2GNl4skqLLoKXxvIitfv+8p/+IyY3pXHqMMqm/GiFPJwPn3YiU0gOim2eg/a3DnSnJ+ajvPzbsi5RI9sf9WN8U2c5wEmY46fNXGI73O/pthdr3on1f4t5bDOn9jv6c3u7oz+kHOvrvH5XNmwz7s4P90Z9f+Lc1Sj4YcHx+u/5VjePtGjXFVaYuI/zfqsEclEe55zXSePuGbFvj5g3ZF/tDJX7L6G/XaEd+cZ/Gw+lj/PP5sd29wPToQ44pllo3rW67IcptiI7nUbgbTrp7cHc1fuTgcpEqu4a76+h/DN4z43Sd5/2tncqI1GNw/vlZthv6qDEYXfPm2JbtJNwRswTq8fzWbr8dJa6366szv+yO7TU7hgprWUdgPl+zd0NSNzse8m5M6u41u+jb1+xtiXvX7N1LUXev2bvhqJvX7O0ko9svH8r71+z92XGr42Ff417HQ94NR92Nsf123Oo0yPX9s7T+wFl6+5c8z8HdqMetZ5d9/NR4manKMqnvl/hp+d2JG3k3FnVv4sYXPyUxWWr39LPdjnuzP/YbMkrnMTtvNkTf36f97X26LfEDu6Ox7kNLdbM7dsNI75/prcaFtrWxecKW/Xt7/JQo8ehf+FRiNwXl1vshef9SVvQ3LNPef92K3Wu/KZ5bal7vse+XOMdrlsVp2vFaEeZ8PljSi0W420/ryP53dmpM9259c2g1/a4l0qHclx49Pf0p+yI3j8y+yM0j80WRe0dm23Ilpga1sU4N+k7fmKT4NfLxPfdvFYn2/9imzc36bkAqOj6XCUr1G3kqNSaeSzte3R1FSxTR5zMU7TWdN69R/f3rfv+dL9nSYjtE0m537GKojRKd2m20pyd731z3ReLFvcfY/uZquRuCqZlboTyej8znvp+NH+M4R3n+6LEdQLn3oL4bkEr9YAGC/jjET4cKvjo4R+HgLLe632g1WuKeXR/dfc8Pzqjvd7DvXpC6+7A+3h473Ze49xg03h87zePtsdOyG5C6/bB++6hsHtb3Z8e9DvZdjbsd7F/UON6ucbODfVvjXgd72Q18LB0PbQx9qcbNfty727HtANnvU97WWldj+WUtqfT+/rhZ443fcm/A4W6N3YDD/hy7NeBQdkvp3R5w2G7IvQGHsnu76fbB7e+f7De34/UT5N6gRdm9I3V70GK7IfcGLUqu794Lld0bUncHLfbbcW/Q4qs73brc6T7rxSi7xfnu3i5vi9zsx9je57K0aVJ5fpL9wBtS5f03pMpPLPH3/htS5f03pMpPvCFVfuANqS+eguLpI68vBfxyZH9gcH77JHWz1e7Gxex19uvQ5vLS7sgpepZyWp7YP++O3ZtNN4Nwt0bf7SDcbse9XfpF/9ZydTmWOXXf6SR7/MVBkfw0CGt/v6dtW+RHeoVv7pFtkbt7pOUf2CO7Ivf2yBcTJlO8zJPyq/M/08GYUk7Pi2zf9uSC++hl1qfdQmW/yN6tuQal9fcvl7tZlzcvl9sS9y6Xu3Gpu5fL3Up9Ny+X21ek7l4ubx8V3RwVfXuuwb7GvbkGRX7gcV3ef1z/4rfcW7d594rUzTN9W+LemX7/lzy/EdrN174313ofYbEui65Pt79EmLb37/j1/elSRfX9A/v2RJSi70+XKv3t6VKl/8B0qftHZRNh27Pj5h3/bpG+u9Gx345b4y+ly9u32rsBqXt3yfutuFdiu6rmvWeXL2rce3YZb888LeMHZp7ut+PWLv1i2Y5YnK6nvvnqxnaNq1tv3m6/bHDzfnK8/75JGW+/b7IvcSuM6/H++yb1ePt9k3r8wPsm94/KJozT+7eT6e27yXq8P4l/W+PuJeEHegjfP73S29f6ul2j7/brf/e/ifL0Ql3Tu3ek2y+BaEw/edxlrcuEfv5+xnZ1PQY5y3pufKME7xF8WMj2cwl9t69juzNkxKBxP9pmZ2wf7O/MKqp5uwT/rUUxtyVufiSmv3tItp93iVX11lXkfvm8y66C8DmD/rzCdpgmuq/ONbqWGnK/Ro1xvEeN9rRG3X0OKo0cnxp78Hh6jr/dnbf/To1IrFjyGPRdEvCX79Qcb7f4bYl7Lb68vzt2FxRlhWNdM/hjhfruOb6tcOsc33426OY5vv/00M1zfNtQ7p7ju6GzHF3FHxaq/+W7QbsajaXEW9vU2H6fJsdDyoNl8+WgXZmbLWVb4l5L2Z1jPxAcn3bHeL47th9S4oZYyvoBo/JiDX2/xjLd5VsfdDok7hYO2XwEabvwm33HfO7V3sumyPYTufEkvMzq/F6JWDuuN32xRI2tWFaReLWElNd2aG58o2J9lv5mES4LktqLh3akeH4cm+Oye5+rSDytlHVZ0W99rKvEBeYR3uW1Gnzwq47+/Oje/njZpsbtD7Hp83Zb5d2Hpu1WKGvn92OTYrv1+LRFy9e2vjn9+TK3XWqgc2VYhxP0U43dwMhYFitaX/f7XKNvB7zju2MPXr6Q9/nX7PZqzyP26nrR/k6u93jueaA8r7G90rUaUwAeSbC50u0+CjXoIjjWjgb9eF+3HbNK7JHU+mY7dktHxnDASJuduiuxTIlYRxR+rbHrP7r3Jba6Gy26+Sm27W9JR3yoL63LWf36Y7azqniIGmMTAP14PwB6ej8Adq9B3Q2A3UtM9wNge2wKH2MrI792sn4sMp7f2m2/5shlJvfnd/77GvRVPh4CXqtRhMGF4/kXIWU7dh73VP21zzlWetMfD4n9pRqPvs6Y1p36848X1t3Qk0g8gjwwvVZES3TQaVmmZn2zSG9RZPQXi1Q+blBLebFIj/EBXW+av3VwakxXa+tLKt+qobFHWj/SizXiiar1vPnC5XZtvnLEC/sP3uyStv1cVGby/oMlbcrsbiZaYxZfk+N4eWt4JfqxNWNTZrsObG98c65rf3UX8y3jB7dXz5h13UF9rQaTDNpYPmb8ra/VHnHmSkqvbYekeHKVtGuF+e27m+1Hc6VFzD54ef/2W5/eFe5MHtxfrSL0BYoe+mIVzfyi9ZN+36wSQyoP3gT2vkqPcdQHp/Tqtix7t6fne7ft3k/6Rj7tRqvOfFrmHozxepmbMffFj7obc9t3ph733YmY2+3iL8rcTMsvjndbzj15+dyLZYkf3F5tTYOTRobUV6vwaW4ZOl6rojm+GXpye7UKn5HWxzPm8yq7CRI/8oFuZRSma0svVum8OtB7Ol6sMpZtGZtb5f3HwvlksG5GCrc1OhPf+nIN+F6NRseQPH8K2nfqDNpPWd/r+GVLyvbN0jvf/9yXuDVguC9xa8Twi6+vLy+XjOPZ6jhtt09HUrqWno5L7UvkWE1q5NxfGZcqjQ6dss6j+d437flwcCqanldpVd4d7NuXuDXY195/DeobuyO/vlNpc1pebLnnx9up0jY9Ke3tcdh9iXuHpv2+47Afd8duHPaLQ8NDsurxtMqui/telG0r3Jv7sL1JK2X5jPqmk6ztesnuTQTZlnikYeFD6lJfLKLL/cx6tn+vSAxQPbjLK+fZ+cXe2K+tPL/87z88I3Fn9eCRXqqSbYWlqyt1uYnIx3itxvJE8K0aLVYbfXQQp5dqFKaOlvWLUb/UeH9Zy12JeqQY0E1rZ0M+7tdI0dP+yLX6tEbbvVN1M5e3Je7l8u7dinu5vN0ZufBqxYeb5c87YzeFdcRz66PTVzZFdiuXsDTe8vjwqRfpi80QNmNZ4uubv4XFRj98pP6bRfhuTHt5r8YbK+2Q42mRvl+/ID5wUnY10ruXy22FW5fLvv1O7b2pgtsaN6cKtv4DUwW3C6e1eBzrLT9f/bmNt6ey7kvcC6Dx9lTW/c6QZQqXbnZGfXdn7JaNLzneIiplfccsjU+bsV3b784c+rZ7e+feHPp9iZufUj9+osb2YZ2Hsfzh40r6aRR4c1xGdCuNZf0F/fSpy/1bL/da7L6IZGVUIC9vnDyGZb9ThqUsH7xcXr5dJlOm5k2ZXS9GPIGsy0CVT3e4X20Jr1XKh/cqv/eDamW4pK6jAt8r05bd25Y3Iz+Xkd2rVj9UJh+8KHWsfZmfZ0Fsi7CM+6Pfub1YJEfG5qzPi2ybc+YzZ/kR+8+bc3p/rc4vatAUWypPr+P7IjdvKL7Yknt3FLIdg7qbT9uDUzlN2ujPD07ezqeICdntwxLX5XOR7cjGrVUeJJebZ8nzF4tlt97evbc29yVuvVgsu29I3XzzU3ZvYN1781N26/XdfbH4/lHZtN3t2XFvlQcp76+B+sV23FrlQcrbC6rJbtm/+6ts77fk1rIE2x1yc6WHL2rcWulBSn9/p+4C9eZKD/vtuLfSwxc3NcvsjbpMHv7lNuL9N7Hk/TexpNbftcTNRd2+2KVMT3/s3vZ0l+4e024+3OyeWh893DGRUtLzz9psn3yZfNVLri8++d47LrsXXG4el+3aFxILkvS1k+jzT0nH28My+xK3Opq2P+XujeG+yN0bw/YDb15v1/lv0TOb16nHnw+MtPeX6pXt2M7NW7rdbMWbt3TbEvdu6eT9xTxk9zWqm7d0u/ewbt/S3T4qm1u69v5SvSLvr1r+xXbcu6XTtz+cIvojH07Zb8m9W7r2/sLDX9S4d0u3HaS6uVPlB27ptttx75Zue33RmHLd24uXqJhFK/35VKz+/u3Lbj3pkmNJ2kfH9zoC0e/X0Lhel/Fh1Zn7NeoRNeqxTpH53FT6253/+82IG/Watpvx/iKIX9S42bW1/0zAza6t/ZbcvIMZxw/cwWxvpRqzU5I+PTa7GpkZLllEXqvRYoJLFq3Pz5FR3x0gkt3Xju4NEO1L3Hz+2e7RZY7tIZu98QOfopCxfak9jm05PgzcfdwS3b0ZdPfLbbq96b93A6K7q8O9a6Ue5UduQL44OLe+3Fa2nzvt8WS53j18XphMj+107lsfbtPj/ZUq9Xh7pcp9iVtPH5reX6lS09srVWr6gZUq7x8V3RyV7dlx68Nt2xo3P9z2VY3j7Rr3Pty2r3Hvw22a7n04Zfctq22Nm2t33t2ObY39Pr314TbdDXzc3R83a7zxW259uO12jc2H2744x259uE23n6G6+eG2/Ybc+3Cb7tbzu3twdzXunuw3t+P1E+Teh9t0OyR188Nt+w259+E2LW8voq5F3+822G/HvZ6Yr25073y4Tevx/t3ytsjNCcPb29x7vcFa3x/g1/r2AP++xL37sfr+AL/Wtwf4tf7AAP/9o7K7H0tv9wZrSz8QhfndVrv9KTf7T7+ocav/VNvb/afafqD/dL8dt3bpdh74re7TfYU7vaf7l2HimfSByzpL33mhRngpR0Z5rUaPBQzy2n36vZdyuBE78vPf0nS7Hui9N3u2RR7HMwZvuz59LXdbYkRzk5H1tRIMIa9fWpP7R0XjQp11XWbtO0f2Q436Yo1MjbI5wzS92zG+L3FreoG+/5rTtsTNu5bt/pT/9j3J7x2Tpc9zvJgc63a8WoPblnOJgRdr1HyrxtuDYfr2WNgXb+LHYMfI+cWX+WPp3Qc+fXN1u7LBrV3xRYlb+2K73gRLCH+4Jf7WmhWJJWI378/va8T9bF7X7vteDdpJH89f8/5iTZLKaiK9bZa3ul9ltzbVF1UqVfT5qjE6dr1I91Yj1d0Y1N31uvbrtGSW/x6b1Qi/2Cc8bzwO8strxqzbUl6uwhN6H/XFFYYeXYC8wJ5rebWKLGsDvbxOEa9+PjjnV6vUpUp7dbWjUtYq8mqVpc+w9Jf3iy5VxvFilbqsAlXzq0e6HmuVl886lo59POA/P0Z9+7peXd5Nq7sT5qsyLCfx2Jjnazj17Uzf24uYfbU18WDy4M0Sh9/5UW+UURanWJcK/nXftP8X+2bpFViXIHnjR71RpiaW3NitK9u3b1P91L7h+4gPru1HflR9NT6Pgzkw6yfVv7n83TiWKs9Pvi9W/401xB84XiwiienzWV8s0mJykbbx6s/R6DjV/vLazOvPeb0I33cQfXVtZo353o/n+vrqlsQSGI8i7dUtaXyuotUfODppEwnlR1YP/mLF6iR3zpT9wuiFxdXbZmGx7Yem4jMPeZ27+fkjUX37kbx7cybf/85er8fvWuLmymS7/VlYHano849u9d3Qya3Fa7ZbUelcWsf2f92K9vbjYd9tyN2PVWw/Y5b5QmhuT3/Lvsb6/djn+6PW7ZzNm99T2xW517W9L3Gra/uLEne6trff67vVR7WvcKeLavtdzFvbsK9wZxt28yx4cGsfntv6cbtEi76C1uqLJaKf7VEtvVLiMbTI8OR6cuf2jRIxypCWofxvlWAoLC9rBnynBP2vj2tbfqkEs4k+Dsh9o4TG5f0x4vLa7szxHYhHV/RrJUpMun3slfTaVjCwWI6XdmeLtevba3uiDT4r0F4pkI7MZ6jktRKJDz+uSwV+q4TwdaD+2laUZS3Z8dpWLCsFt6qvlRBmdvTx2g9hge914aJvlaAPvLTXfogInzLQ17ZCld6y8VL7SKxKlUZ+qYTG+Nv6cYhvFBhx1zraS/thxLSStQP/OwWicQxtb/6E1wo87ulimcW2fqnjOxfi3LgQHy+VqHFCtbp+deR+iQ8TOdab7na/ROJ1vLyu9PipRN8+48ZJyc6s5f4ltC/flxyv/IqkbVkBeH2p8NMcod37TVljdfas+dlky337jtAeH1au+0bK9Lh0rNOKf/0h21dO7rwu1nevR917XWxf4t7rYtubxM536ZYXGz7vjHHsP0jCURF9vtjkF0XK+lWT8rTIdgoZEwPb2ovzy8/ZdeIvn/z8uFs/LWSym2fd+TzdY8RAN0X2c0GWN+jK5ufspi+kwi3fMnc0HekbRSS6tkTWJeK/VaRHin142P6lSHp7nuEX2yHLQ3/fbMdu5hPfIamP3jgO8C9vru46QCUvq0UuKSDf2a18GPYxeLA5Nmn3XsBR+Pb4cpbUTy8EjrRbmzTF9OCRlg8y/1pkNyW/tOVbcGNZ4f3XXbvdlujqGrlttiUfP9CKt7s2xzSID9f/X7dk+9m/Hl/uTG2MtilTfiKW+vYOOUYh+pqyn0+4vEtZe5nS7yeWIu3Tu867Rfzawf3dsSmhP3Di796Zun3i5/EjJ/72B9093Ur6kdOt5B843fJ27WbeBSnPD3LZTy2Pnhc9NmuTlfZ7/xgmhBxLL9Kvv2b7Fe/KTVvqm1/Tf+LXtO31Kx63tW9+znas6YhnxUdPxq5I+oEjXH/idN3+nBQjoyUvnUK//pz6A4e4tt877AdfN16/7/dL2O/eo6q8hlmP5c7vlzDZvUmVamZSzPJW2Pj0gFB3S+Ok6I5+HKfl/rF/KtL2fQLxXsbaf/kYr/1UJP3EubZdLYjeibJcd379OeX33pKaeJt76Wr5dUt2o6RH4uMca9ORb5xqtJzHbYo8P9V2swF+5OntcW6w8MCxebbeLvN1N9fk+L1/Ti7k2roSy+efI/kHck1+4oTd3pV3YnqdVZzSp0a8W+rvO88qu23htcqa1m9a/rItP3HObm8eb++V/wc3snf3iv5IzOpu1C36tx6d0rLZkvL+5Wv7WuHdy9dutb3bly/9if6t7c+5e/nS/ntvyd3L1+4zRj9x+WoSSw+3D487n0+1/gP3sbvZWxpfQnoMooxXOtqrxJcPqtbnHe2jt3c72sd2VcZbHe3jBxZ2/KqDe/lU9vMPMY7deoi3e8m3iyre+zTUto98ZMZh2st95JGIPa0Tlr9XJGYu9Zw2W7J780pHPILqWF9H+6XILldbjsvV82HbfVcuHVrSlq8qfa8rlzdIy5D06t3EzWOzL3Lv2KRjtwTg3YPzqJJ+16Oj0peJ089HUh4bsn3rOo5OXT8a/rnE5nRtzIhqHz61+2k494tbvZunyf726uZpsi9y+zTpP3KajLdPk22ndFwsPnzvp33+QNtulKsyC7yW/HzAft/rSe9clppe7fW8eYT3Re4e4d3bVfeP8DYe3z/CvNc6lvcu/5sjvFtYPcU6Ei2tCz3/coR3d4uJcy1/6E4+vtMTfPcI9584wrtRrvtHeDfIdfMI7zpxM/PI8jqL69djnLfrA9Voxcf6PePPh2fbs323Fe97tm8e432R28d4/MQx3i3K9wPHuKSY6V0e99KbY7wb4qo97upr721zjOsPtOP6E0ldfySpdyvzfeMY69vHeNvpUgqTfJcBqvH5kzG7NxtqzMVfv2uUpH+jRoul+Zq8XCNej2/L0gPfrDHiZZWj/ECN/mINif0hL+8Pif0hL+8Pid+iL++Ptcar+4OlG/Xl/aGxP/Tl/aHxW/rL+2Ot8er+4NWuLq9uR4/3oddXS79ZI/rDx8v7Y63x6naMiOWxyaAv+n2F2YTr2iXl8+Nr275cGm8Plw9rdHyvSo1ztbSjv1qFFQOLrGvdfK+KRh/juUzvf73YH373QfgH+rLSIT/QmZUOeb83a9upzneJy/oZvW9279/dsT/ydCI/cueqx++7Y2vc1TxGK9LTHZuO3RpvJcWoVlk/YP3LlwG3N1hLp/aHK5d+LrJ7fXX5vmB5sURnWnB/tcTx390K6P0BoDqi16Z9+GjSL3t0931Tbq+qrLMaXy9Sng5F3R8Tk81Z1rfLBfFuQC39+c/ZDWjJUVl3eGz2Sd+dqolh3AevE1ffKfN8nG8/Gnz0O6PB27HCGjcWrdXnA+SP37Nbij0dvI25rinyy0W07064GA+q6yU0H59rbCdnkWp5V2O3HSnSdV0q7pcau08o3c/53Rtbd3sodge4aeSJrL3Avxzg7YdoG5/6Kc+fgPdDW/9dibPT5Btj0jev4/1HeqDGj4wUjPdHCvbvKMQk65GPzbTI/TsKN3fsvsjNHZt2Q1u3d2zaTjS72UG/fVtiGZ9+XArTZteWn9i15Ud2bf+RXfsDo1v9J87ZbZF7L+c8gu4Hprl8VeXeQf6qyt2j/CMjXOkHRrj273/cbkDlJ0K//MiuzT8xiyDl92cRbKex3+ySTrtQudklva1xs0t6X+Nel/S+xr0u6ds1+os1bnZJ72vc65Le17jXJX27xqv742aX9L7GvS7pfY17XdK3a7y6P252Se9r3OuS3te41yV9u8ar23GzS3r/Js3NLum0G5e+3SW9r3K3S3pf5W6X9L7K3S7p9hNzs9pPzM1K9UfuXuv7d6/bEne7pNtPPBa0H3ksaD/yxNXq77tj73ZJp93HJe52Safdy1t3u6TTblDoXpf0vsStLukvStzpkt5+Guxml3TavbV1t0v6G0Wed0nff8tw0yWdtm9t3eySTrvvUtztkk6iP9El/a0ym1dP+u/bJV2P6B14VMubB/vdhODbXdJpN751s0s6bT+Rda9Ler8d97qkk/5Ix4C+3zGwf72Wbx6mIrsDvB+4v9ElbYtqvNkl3X7iHYf2E+84pP4TE19Tf3/i6+0lp+rzJafOVTc3Dbgv3+xZXjH89O3V/ZvPd+e9yk90jsuPdI73n5g9kMb7swd2F+Lbk03lJ+6B5UfugX/i5a1Hlfa7tp3Cd53K+nmdX5drq7srKPOJD8mbBrgb4vqZKvcWWP+ixq0V1r+qcWeJ9f1y2vHRurQcmU959LiNKrtojHWVjqcldhtx74PUj43Yzc++9UXqR43dJ9UGH5Z98Low6qf383cvO8cnqdqH79u2Fwp8+Jzr7QISt6trR8t3CizPeOmlArHOrnz4EML9ArdW3d8WeHPR/XvvAu+WU62xSsOj82YZhPv04ZTtGtgpHthbqS+V0OVjePW1reiyfPNQXiox4o2SNNY1Ib9RQlhmV/S1HyKDZbSP137IsSxT1l/bihyv3ae8vnf/jRKFry3W5eMt39qKeAMrZXnth7DwfypJ3t0XL5dogx+yBG76zlYoRyS/X0JeKlFiCegH9tdKCCOoyxoZ3ymxRk59bV8UvpFa18/Ev1ritYO6riqzfK7kWyVYub+KvFiCH7J+X+M7JeIG/DGU8NpBrdHD+HiWOV48L/gcQ37poNb45uKHHsr7BTg1W36+Hx7JVre5V4mL5Ubx/v1d5WM8+tLP0Li7qi8di9aY/FhfKhALvbdRXisQsxtGfa/AOrXhWzuRTuaXslKi83FdX/q1Lfh8GP/n4//+8V///Pd//svf/vWP//jz3/7674+/919nqb//+Y//8pc/Xf/3f//HX/91+a//+P//zf/Lv/z9z3/5y5//zz//29//9q9/+l//8fc/nZXO//bbcf3P/+jnDJPeRvqf//Rbevz/x2BH/qfHM+Dx+P/F/vtjPKk3kfO/n39Bzq9IPf5nnP/i/Bv9/GTA43/G//yvc5P/Lw==", - "brillig_names": [ - "sync_private_state" - ] + "bytecode": "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", + "debug_symbols": "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" } ], "outputs": { "globals": { - "notes": [ - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "kind": "string", - "value": "UintNote" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "value", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000002" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - }, - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - }, - { - "kind": "string", - "value": "UintNote" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "value", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000002" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - }, - { - "fields": [ - { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - }, - { - "kind": "string", - "value": "HTLC_Private" - }, - { - "fields": [ - { - "name": "owner", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - }, - { - "name": "randomness", - "value": { - "fields": [ - { - "name": "index", - "value": { - "kind": "integer", - "sign": false, - "value": "0000000000000000000000000000000000000000000000000000000000000001" - } - }, - { - "name": "nullable", - "value": { - "kind": "boolean", - "value": false - } - } - ], - "kind": "struct" - } - } - ], - "kind": "struct" - } - ], - "kind": "tuple" - } - ], "storage": [ { "fields": [ @@ -12074,7 +12190,7 @@ "type": { "fields": [ { - "name": "Id", + "name": "id", "type": { "kind": "field" } @@ -12579,333 +12695,333 @@ } }, "file_map": { - "101": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", - "source": "use crate::{\n macros::{\n authwits::AUTHWIT_TYPES,\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::{generate_note_export, NOTES},\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n },\n messages::discovery::private_notes::MAX_NOTE_PACKED_LEN,\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n let contract_library_method_compute_note_hash_and_nullifier =\n generate_contract_library_method_compute_note_hash_and_nullifier();\n let note_exports = generate_note_exports();\n let public_dispatch = generate_public_dispatch(m);\n let sync_private_state = generate_sync_private_state();\n let process_message = generate_process_message();\n generate_authwit_exports();\n\n quote {\n $note_exports\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n let notes = NOTES.entries();\n\n if notes.len() > 0 {\n let max_note_packed_len = notes.fold(\n 0,\n |acc, (_, (_, len, _, _)): (Type, (TypeDefinition, u32, Field, [(Quoted, u32, bool)]))| {\n if len > acc {\n len\n } else {\n acc\n }\n },\n );\n\n if max_note_packed_len > MAX_NOTE_PACKED_LEN {\n panic(\n f\"One of the notes has packed len {max_note_packed_len} but the maximum is {MAX_NOTE_PACKED_LEN}\",\n );\n }\n\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..notes.len() {\n let (typ, (_, packed_note_length, _, _)) = notes[i];\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable<_> },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret it's raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = $packed_note_length;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_authwit_exports() {\n let authwits = AUTHWIT_TYPES.values();\n authwits.for_each(|(s): TypeDefinition| { s.add_attribute(\"abi(authwits)\"); });\n}\n\ncomptime fn generate_note_exports() -> Quoted {\n let notes = NOTES.values();\n // Second value in each tuple is `note_packed_len` and that is ignored here because it's only used when\n // generating partial note helper functions.\n notes\n .map(|(s, _, note_type_id, fields): (TypeDefinition, u32, Field, [(Quoted, u32, bool)])| {\n generate_note_export(s, note_type_id, fields)\n })\n .join(quote {})\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" - }, - "102": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", + "100": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", "source": "use super::utils::{compute_fn_selector, size_in_fields};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let mut parameters_size = 0;\n for param in parameters {\n parameters_size += size_in_fields(param.1);\n }\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $parameters_size] = dep::aztec::context::public_context::calldata_copy(1, $parameters_size);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[public]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" }, - "105": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", - "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n size_in_fields,\n};\nuse std::meta::{type_of, unquote};\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n let is_void = f.return_type() == type_of(());\n\n if is_fn_private(f) {\n if is_static_call {\n if is_void {\n create_private_static_void_stub(f)\n } else {\n create_private_static_stub(f)\n }\n } else {\n if is_void {\n create_private_void_stub(f)\n } else {\n create_private_stub(f)\n }\n }\n } else if is_fn_public(f) {\n if is_static_call {\n if is_void {\n create_public_static_void_stub(f)\n } else {\n create_public_static_stub(f)\n }\n } else {\n if is_void {\n create_public_void_stub(f)\n } else {\n create_public_stub(f)\n }\n }\n } else {\n if is_void {\n create_utility_void_stub(f)\n } else {\n create_utility_stub(f)\n }\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_private_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n serialized_args\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n let size = size_in_fields(fn_return_type);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type, $size> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_void_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n\n // This is here because utility function call interfaces can only be used within TXe tests.\n let modified_fn_name = f\"_experimental_{fn_name}\".quoted_contents();\n\n quote {\n pub fn $modified_fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityVoidCallInterface<$fn_name_len, (), 0> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityVoidCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" + "104": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", + "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n};\nuse std::meta::unquote;\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n\n if is_fn_private(f) {\n if is_static_call {\n create_private_static_stub(f)\n } else {\n create_private_stub(f)\n }\n } else if is_fn_public(f) {\n if is_static_call {\n create_public_static_stub(f)\n } else {\n create_public_stub(f)\n }\n } else {\n create_utility_stub(f)\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" }, - "106": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", + "105": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" }, - "109": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", - "source": "use crate::macros::{\n functions::{abi_export::create_fn_abi_export, call_interface_stubs::stub_fn, stub_registry},\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_noinitcheck, get_fn_visibility, is_fn_contract_library_method,\n is_fn_initializer, is_fn_internal, is_fn_private, is_fn_public, is_fn_test, is_fn_utility,\n is_fn_view, modify_fn_body, module_has_initializer, module_has_storage,\n },\n};\nuse protocol_types::meta::generate_serialize_to_fields;\nuse std::meta::type_of;\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[private] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n let to_prepend = quote {\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n\n fn_abi\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // If a function is further modified as unconstrained, we throw an error\n if f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[public] but marked as unconstrained, remove unconstrained keyword\",\n );\n }\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n let args_len = original_params\n .map(|(name, typ): (Quoted, Type)| {\n generate_serialize_to_fields(name, typ, false).0.len()\n })\n .fold(0, |acc: u32, val: u32| acc + val);\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len] = dep::aztec::context::public_context::calldata_copy(1, $args_len);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n\n fn_abi\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) -> Quoted {\n let fn_abi = create_fn_abi_export(f);\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Check if function is marked as unconstrained\n if !f.is_unconstrained() {\n let name = f.name();\n panic(\n f\"Function {name} is annotated with #[utility] but not marked as unconstrained, add unconstrained keyword\",\n );\n }\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // Inject context creation, storage initialization, and message discovery call at the beginning of the function\n // body.\n let to_prepend = quote {\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n\n fn_abi\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call == true, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + "108": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", + "source": "use crate::macros::{\n functions::{\n auth_registry::AUTHORIZE_ONCE_REGISTRY, call_interface_stubs::stub_fn, stub_registry,\n },\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_authorize_once, fn_has_noinitcheck, get_fn_visibility,\n is_fn_contract_library_method, is_fn_initializer, is_fn_internal, is_fn_private,\n is_fn_public, is_fn_test, is_fn_utility, is_fn_view, modify_fn_body, module_has_initializer,\n module_has_storage,\n },\n};\nuse std::meta::{ctstring::AsCtString, type_of};\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n $authorize_once_check\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n\n let args_len_quote = if original_params.len() == 0 {\n // If the function has no parameters, we set the args_len to 0.\n quote { 0 }\n } else {\n // The following will give us ::N + ::N + ...\n original_params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::protocol_types::traits::Serialize>::N\n }\n })\n .join(quote {+})\n };\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len_quote] = dep::aztec::context::public_context::calldata_copy(1, $args_len_quote);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $authorize_once_check\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Injects an authwit verification check of the form:\n/// ```\n/// if (!from.eq(context.msg_sender())) {\n/// assert_current_call_valid_authwit::(&mut context, from);\n/// } else {\n/// assert(authwit_nonce, \"Invalid authwit nonce. When 'from' and 'msg_sender' are the same, authwit_nonce must be zero\");\n/// }\n/// ```\n/// where `from` and `authwit_nonce` are the names of the parameters that are expected to be present in the function definition.\n/// This check is injected by the `#[authorize_once(\"from_arg_name\", \"nonce_arg_name\")]`, which allows the user to define\n/// which parameters to use.\npub(crate) comptime fn create_authorize_once_check(f: FunctionDefinition) -> Quoted {\n let maybe_authorize_once_args = AUTHORIZE_ONCE_REGISTRY.get(f);\n let authorize_once_args = if maybe_authorize_once_args.is_some() {\n maybe_authorize_once_args.unwrap()\n } else {\n // We need to for authorize_once to have already executed so that we can retrieve its params - this depends on\n // the order in which the attributes are applied.\n panic(\n f\"Functions marked with #[authorize_once] must have the #[private] or #[public] attribute placed last\",\n )\n };\n\n let (from_arg_name, nonce_arg_name) = authorize_once_args;\n let name: Quoted = f.name();\n\n let from_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{from_arg_name}\".quoted_contents());\n let (from_arg_name_quoted, from_arg_type) = if from_arg_candidates.len() == 1 {\n from_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {from_arg_name} parameter. Please specify which one to use in #[authorize_once(\\\"...\\\", \\\"authwit_nonce\\\")]\",\n )\n };\n if from_arg_type\n != quote { dep::protocol_types::address::aztec_address::AztecAddress }.as_type() {\n panic(\n f\"Argument {from_arg_name_quoted} in function {name} must be of type AztecAddress, but is of type {from_arg_type}\",\n )\n }\n\n let nonce_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{nonce_arg_name}\".quoted_contents());\n let (nonce_arg_name_quoted, nonce_arg_type) = if nonce_arg_candidates.len() == 1 {\n nonce_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {nonce_arg_name}. Please specify which one to use in #[authorize_once(\\\"from\\\", \\\"...\\\")]\",\n )\n };\n if nonce_arg_type != quote { Field }.as_type() {\n panic(\n f\"Argument {nonce_arg_name_quoted} in function {name} must be of type Field, but is of type {nonce_arg_type}\",\n );\n }\n\n let nonce_check_quote = f\"{nonce_arg_name_quoted} == 0\".quoted_contents();\n\n let fn_call = if is_fn_private(f) {\n // At this point, the original args of the fn have already been altered by the macro\n // to include PrivateContextInputs, so we need to adjust the args_len accordingly.\n let args_len = f.parameters().len() - 1;\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit::<$args_len> }\n } else {\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit_public }\n };\n let invalid_nonce_message = f\"Invalid authwit nonce. When '{from_arg_name}' and 'msg_sender' are the same, '{nonce_arg_name}' must be zero\"\n .as_ctstring()\n .as_quoted_str();\n quote { \n if (!$from_arg_name_quoted.eq(context.msg_sender())) {\n $fn_call(&mut context, $from_arg_name_quoted);\n } else {\n assert($nonce_check_quote, $invalid_nonce_message);\n }\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + }, + "110": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", + "source": "use crate::note::note_getter_options::PropertySelector;\nuse std::{collections::bounded_vec::BoundedVec, meta::{ctstring::AsCtString, type_of}};\n\n/// Maximum number of note types within 1 contract.\ncomptime global MAX_NOTE_TYPES: u32 = 128;\n\n/// A BoundedVec containing all the note types within this contract.\npub comptime mut global NOTES: BoundedVec = BoundedVec::new();\n\ncomptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < MAX_NOTE_TYPES,\n f\"A contract can contain at most {MAX_NOTE_TYPES} different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_type_impl(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n let typ = s.as_type();\n let note_type_name: str<_> = f\"{name}\".as_ctstring().as_quoted_str!();\n let max_note_packed_len = crate::messages::discovery::private_notes::MAX_NOTE_PACKED_LEN;\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n // This static assertion ensures the note's packed length doesn't exceed the maximum allowed size.\n // While this check would ideally live in the Packable trait implementation, we place it here since\n // this function is always generated by our macros and the Packable trait implementation is not.\n // Note: We set the note type name and max packed length as local variables because injecting them\n // directly into the error message doesn't work.\n let note_type_name = $note_type_name;\n let max_note_packed_len: u32 = $max_note_packed_len; // Casting to u32 to avoid the value to be printed in hex.\n let note_packed_len = <$typ as Packable>::N;\n std::static_assert(note_packed_len <= $max_note_packed_len, f\"{note_type_name} has a packed length of {note_packed_len} fields, which exceeds the maximum allowed length of {max_note_packed_len} fields\");\n\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::traits::Packable::pack(self).concat( [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::context::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates the core note functionality for a struct:\n///\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - NoteHash trait implementation: Handles note hash and nullifier computation\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Have an `owner` field\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Generated Code\n///\n/// For detailed documentation on the generated implementations, see:\n/// - `generate_note_properties()`\n/// - `generate_note_type_impl()`\n/// - `generate_note_hash_trait_impl()`\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n\n quote {\n $note_properties\n $note_type_impl\n $note_hash_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// Unlike the `#[note]` macro, there is no requirement for an `owner` field.\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_type_id = get_next_note_type_id();\n let note_properties = generate_note_properties(s);\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n\n quote {\n $note_properties\n $note_type_impl\n }\n}\n\n/// Asserts that the given note implements the `Packable` trait.\n///\n/// We require that notes have the `Packable` trait implemented because it is used when emitting a note in a log or as\n/// an offchain message.\ncomptime fn assert_has_packable(note: TypeDefinition) {\n let packable_constraint =\n quote { crate::protocol_types::traits::Packable }.as_trait_constraint();\n let note_name = note.name();\n\n assert(\n note.as_type().implements(packable_constraint),\n f\"{note_name} does not implement Packable trait. Either implement it manually or place #[derive(Packable)] on the note struct before #[note] macro invocation.\",\n );\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n let note_name = note.name();\n\n assert(\n has_owner,\n f\"{note_name} does not have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" }, "111": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", - "source": "use crate::{macros::utils::AsStrQuote, note::note_getter_options::PropertySelector};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse protocol_types::meta::{derive_packable_and_get_packed_len, generate_serialize_to_fields};\nuse std::{\n collections::umap::UHashMap,\n hash::{BuildHasherDefault, Hash, Hasher},\n meta::{type_of, unquote},\n};\n\n/// A map from note type to (note_struct_definition, note_packed_len, note_type_id, fields).\n/// `fields` is an array of tuples where each tuple contains the name of the field/struct member (e.g. `amount`\n/// in `TokenNote`), the index of where the packed member starts in the packed note and a flag indicating\n/// whether the field is nullable or not.\npub comptime mut global NOTES: UHashMap> =\n UHashMap::default();\n\npub comptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < 128 as u32,\n \"A contract can contain at most 128 different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates a quote that implements `Packable` for a given struct `s`.\n/// If the note struct already implements `Packable`, we return an empty quote.\ncomptime fn derive_packable_if_not_implemented_and_get_len(s: TypeDefinition) -> (Quoted, u32) {\n // We try to get the packed length of the note struct. If it does not implement `Packable`, we get Option::none()\n let packed_len_typ = std::meta::typ::fresh_type_variable();\n // We don't care about the result of the implements check. We just want the get the packed length.\n let _ = s.as_type().implements(\n quote { crate::protocol_types::traits::Packable<$packed_len_typ> }.as_trait_constraint(),\n );\n let maybe_packed_length = packed_len_typ.as_constant();\n\n if maybe_packed_length.is_some() {\n // We got some packed length meaning that the note struct implements `Packable`. For this reason we return\n // an empty quote for the implementation and the packed length.\n (quote {}, maybe_packed_length.unwrap())\n } else {\n // We didn't manage to get the packed length which means the note struct doesn't implement `Packable`\n // so we derive it and return it along with the packed length.\n derive_packable_and_get_packed_len(s)\n }\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_interface(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::utils::arrays::array_concat(aztec::protocol_types::traits::Packable::pack(self), [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::prelude::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates note export for a given note struct `s`. The export is a global variable that contains note type id,\n/// note name and information about note fields (field name, index and whether the field is nullable or not).\n///\n/// Example:\n/// ```\n/// struct TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField,\n/// owner: aztec::note::note_field::NoteField\n/// }\n///\n/// #[abi(notes)]\n/// global TokenNote_EXPORTS_5695262104: (Field, str<8>, TokenNoteFields_5695262104) = (\n/// 0,\n/// \"TokenNote\",\n/// TokenNoteFields_5695262104 {\n/// amount: aztec::note::note_field::NoteField { index: 0, nullable: false },\n/// owner: aztec::note::note_field::NoteField { index: 1, nullable: false }\n/// }\n/// );\n///\n/// Randomly looking value at the end of the export name is generated by hashing the note struct type and is included\n/// to prevent naming collisions in case there are multiple notes with the same name imported in a contract.\npub(crate) comptime fn generate_note_export(\n s: TypeDefinition,\n note_type_id: Field,\n fields: [(Quoted, u32, bool)],\n) -> Quoted {\n let name = s.name();\n let mut hasher = Poseidon2Hasher::default();\n s.as_type().hash(&mut hasher);\n let hash = hasher.finish() as u32;\n let global_export_name = f\"{name}_EXPORTS_{hash}\".quoted_contents();\n let note_fields_name = f\"{name}Fields_{hash}\".quoted_contents();\n let (note_name_as_str, _) = name.as_str_quote();\n let note_name_str_len = unquote!(quote { $note_name_as_str.as_bytes().len() });\n\n let mut note_fields = &[];\n let mut note_field_constructors = &[];\n for field in fields {\n let (name, index, nullable) = field;\n note_fields = note_fields.push_back(quote { $name: aztec::note::note_field::NoteField });\n note_field_constructors = note_field_constructors.push_back(\n quote { $name: aztec::note::note_field::NoteField { index: $index, nullable: $nullable }},\n );\n }\n\n let note_fields = note_fields.join(quote {,});\n let note_field_constructors = note_field_constructors.join(quote {,});\n\n quote {\n pub struct $note_fields_name {\n pub $note_fields\n }\n\n #[abi(notes)]\n global $global_export_name: (Field, str<$note_name_str_len>, $note_fields_name) = ($note_type_id, $note_name_as_str, $note_fields_name { $note_field_constructors });\n }\n}\n\n/// Registers a note struct `note` with the given `note_packed_len`, `note_type_id`, `fixed_fields` and\n/// `nullable_fields` in the global `NOTES` map.\ncomptime fn register_note(\n note: TypeDefinition,\n note_packed_len: u32,\n note_type_id: Field,\n fixed_fields: [(Quoted, Type, u32)],\n nullable_fields: [(Quoted, Type, u32)],\n) {\n let mut fields = &[];\n for field in fixed_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, false));\n }\n for field in nullable_fields {\n let (name, _, index) = field;\n fields = fields.push_back((name, index, true));\n }\n\n NOTES.insert(note.as_type(), (note, note_packed_len, note_type_id, fields));\n}\n\n/// Separates note struct members into fixed and nullable ones. It also stores the index of where each struct member\n/// starts in the serialized note. Note that each struct member can occupy multiple fields (as in Field type).\ncomptime fn index_note_fields(\n s: TypeDefinition,\n nullable_fields: [Quoted],\n) -> ([(Quoted, Type, u32)], [(Quoted, Type, u32)]) {\n let mut indexed_fixed_fields: [(Quoted, Type, u32)] = &[];\n let mut indexed_nullable_fields = &[];\n let mut counter: u32 = 0;\n for field in s.fields_as_written() {\n let (name, typ, _) = field;\n if nullable_fields.all(|field| field != name) {\n indexed_fixed_fields = indexed_fixed_fields.push_back((name, typ, counter));\n } else {\n indexed_nullable_fields = indexed_nullable_fields.push_back((name, typ, counter));\n }\n let (serialization_fields, _) = generate_serialize_to_fields(name, typ, true);\n // Each struct member can occupy multiple fields so we need to increment the counter accordingly\n counter += serialization_fields.len();\n }\n (indexed_fixed_fields, indexed_nullable_fields)\n}\n\n/// Generates the following:\n/// - NoteTypeProperties\n/// - NoteType trait implementation\n/// - NoteHash trait implementation\n/// - Packable implementation\n///\n/// Registers the note in the global `NOTES` map.\n///\n/// For more details on the generated code, see the individual functions.\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_interface_impl = generate_note_interface(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n quote {\n $note_properties\n $note_interface_impl\n $note_hash_impl\n $packable_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - Packable implementation: Enables serialization/deserialization of the note\n///\n/// # Registration\n/// Registers the note in the global `NOTES` map with:\n/// - Note type ID\n/// - Packed length\n/// - Field indices and nullability\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n let (packable_impl, note_packed_len) = derive_packable_if_not_implemented_and_get_len(s);\n let note_type_id = get_next_note_type_id();\n\n let (indexed_fixed_fields, indexed_nullable_fields) = index_note_fields(s, &[]);\n register_note(\n s,\n note_packed_len,\n note_type_id,\n indexed_fixed_fields,\n indexed_nullable_fields,\n );\n\n let note_properties = generate_note_properties(s);\n let note_interface_impl = generate_note_interface(s, note_type_id);\n\n quote {\n $note_properties\n $note_interface_impl\n $packable_impl\n }\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n assert(\n has_owner,\n \"Note must have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", + "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields = storage_layout_fields.push_back(\n quote { pub $name: dep::aztec::state_vars::storage::Storable },\n );\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::state_vars::storage::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" }, - "112": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", - "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields =\n storage_layout_fields.push_back(quote { pub $name: dep::aztec::prelude::Storable });\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::prelude::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" + "113": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", + "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" }, "114": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", - "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", + "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" }, "115": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", - "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", + "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" }, "116": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", - "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", + "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__EVENT_COMMITMENT,\n hash::poseidon2_hash_with_separator_bounded_vec, traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" }, "117": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", - "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n prelude::AztecAddress,\n utils::array,\n};\nuse protocol_types::{\n constants::GENERATOR_INDEX__EVENT_COMMITMENT, hash::poseidon2_hash_with_separator_bounded_vec,\n traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private_log` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", + "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" }, "118": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", - "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", + "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" }, "119": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", - "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", + "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" }, "12": { "path": "std/convert.nr", - "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n quote { Field },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n impls.join(quote {})\n}\n" + "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u16 {\n fn from(value: u8) -> u16 {\n value as u16\n }\n}\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u32 {\n fn from(value: u16) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u16) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u16) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u16) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i16 {\n fn from(value: i8) -> i16 {\n value as i16\n }\n}\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i32 {\n fn from(value: i16) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i16) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u16 {\n fn from(value: bool) -> u16 {\n value as u16\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for u128 {\n fn from(value: bool) -> u128 {\n value as u128\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i16 {\n fn from(value: bool) -> i16 {\n value as i16\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n\n let u_types =\n [quote { bool }, quote { u8 }, quote { u16 }, quote { u32 }, quote { u64 }, quote { u128 }];\n\n for type2 in u_types {\n let body = quote { self as Field };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive for $type2 {\n fn as_(self) -> Field {\n $body\n }\n }\n },\n );\n }\n\n for type1 in u_types {\n let body = if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for Field {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n\n impls.join(quote {})\n}\n" }, "120": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", - "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", + "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\n/**\n * Computes N close-to-uniformly-random 256 bits from a given ECDH shared_secret.\n *\n * NEVER re-use the same iv and sym_key.\n * DO NOT call this function more than once with the same shared_secret.\n *\n * This function is only known to be safe if shared_secret is computed by combining a \n * random ephemeral key with an address point. See big comment within the body of the function.\n * See big comment within the body of the function.\n */\nfn extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [[u8; 32]; N] {\n /*\n * Unsafe because of https://eprint.iacr.org/2010/264.pdf Page 13, Lemma 2 (and the * two paragraphs below it).\n *\n * If you call this function, you need to be careful and aware of how the arg\n * `shared_secret` has been derived.\n *\n * The paper says that the way you derive aes keys and IVs should be fine with poseidon2\n * (modelled as a RO), as long as you _don't_ use Poseidon2 as a PRG to generate the * two exponents x & y which multiply to the shared secret S:\n *\n * S = [x*y]*G.\n *\n * (Otherwise, you would have to \"key\" poseidon2, i.e. generate a uniformly string K\n * which can be public and compute Hash(x) as poseidon(K,x)).\n * In that lemma, k would be 2*254=508, and m would be the number of points on the * grumpkin curve (which is close to r according to the Hasse bound).\n *\n * Our shared secret S is [esk * address_sk] * G, and the question is: * Can we compute hash(S) using poseidon2 instead of sha256?\n *\n * Well, esk is random and not generated with poseidon2, so that's good.\n * What about address_sk?\n * Well, address_sk = poseidon2(stuff) + ivsk, so there was some\n * discussion about whether address_sk is independent of poseidon2.\n * Given that ivsk is random and independent of poseidon2, the address_sk is also\n * independent of poseidon2.\n *\n * Tl;dr: we believe it's safe to hash S = [esk * address_sk] * G using poseidon2,\n * in order to derive a symmetric key.\n *\n * If you're calling this function for a differently-derived `shared_secret`, be\n * careful.\n *\n */\n\n /* The output of this function needs to be 32 random bytes.\n * A single field won't give us 32 bytes of entropy.\n * So we compute two \"random\" fields, by poseidon-hashing with two different\n * generators.\n * We then extract the last 16 (big endian) bytes of each \"random\" field.\n * Note: we use to_be_bytes because it's slightly more efficient. But we have to\n * be careful not to take bytes from the \"big end\", because the \"big\" byte is\n * not uniformly random over the byte: it only has < 6 bits of randomness, because\n * it's the big end of a 254-bit field element.\n */\n\n let mut all_bytes: [[u8; 32]; N] = std::mem::zeroed();\n // We restrict N to be < 2^8, because of how we compute the domain separator\n // from k below (where k <= N must be 8 bits). In practice, it's extremely\n // unlikely that an app will want to compute >= 256 ciphertexts.\n std::static_assert(N < 256, \"N too large\");\n for k in 0..N {\n // We augment the domain separator with the loop index, so that we can\n // generate N lots of randomness.\n let k_shift = (k as u16 << 8);\n let separator_1 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY as u16;\n let separator_2 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY_2 as u16;\n\n let rand1: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_1);\n let rand2: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_2);\n\n let rand1_bytes: [u8; 32] = rand1.to_be_bytes();\n let rand2_bytes: [u8; 32] = rand2.to_be_bytes();\n\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n // We take bytes from the \"little end\" of the be-bytes arrays:\n let j = 32 - i - 1;\n bytes[i] = rand1_bytes[j];\n bytes[16 + i] = rand2_bytes[j];\n }\n\n all_bytes[k] = bytes;\n }\n\n all_bytes\n}\n\nfn derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(\n many_random_256_bits: [[u8; 32]; N],\n) -> [([u8; 16], [u8; 16]); N] {\n // Many (sym_key, iv) pairs:\n let mut many_pairs: [([u8; 16], [u8; 16]); N] = std::mem::zeroed();\n for k in 0..N {\n let random_256_bits = many_random_256_bits[k];\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n many_pairs[k] = (sym_key, iv);\n }\n\n many_pairs\n}\n\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [([u8; 16], [u8; 16]); N] {\n let many_random_256_bits: [[u8; 32]; N] = extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret,\n );\n\n derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(many_random_256_bits)\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PlaintextLen],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n // It is safe to call the `unsafe` function here, because we know the `shared_secret`\n // was derived using an AztecAddress (the recipient). See the block comment\n // at the start of this unsafe target function for more info.\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, body_iv, body_sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PlaintextLen * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, header_iv, header_sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n\n // Derive symmetric keys:\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext =\n aes128_decrypt_oracle(header_ciphertext_bvec, header_iv, header_sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, body_iv, body_sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let env = TestEnvironment::new();\n\n // Log decryption requires oracles that are only available during private execution\n env.private_context(|_| {\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"utilityGetSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(\n decrypted,\n plaintext_bvec,\n \"Decrypted bytes should match original plaintext\",\n );\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n });\n }\n}\n" }, - "121": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", - "source": "use dep::protocol_types::{\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n prelude::AztecAddress,\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign, point_to_bytes},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> [u8; 32] {\n let rand1: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY,\n );\n let rand2: Field = poseidon2_hash_with_separator(\n [shared_secret.x, shared_secret.y],\n GENERATOR_INDEX__SYMMETRIC_KEY_2,\n );\n let rand1_bytes: [u8; 16] = rand1.to_le_bytes();\n let rand2_bytes: [u8; 16] = rand2.to_le_bytes();\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n bytes[i] = rand1_bytes[i];\n bytes[i + 1] = rand2_bytes[i];\n }\n bytes\n}\n\n// TODO(#10537): Consider nuking this function.\nfn extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> [u8; 32] {\n let shared_secret_bytes: [u8; 32] = point_to_bytes(shared_secret);\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret_bytes.len() {\n shared_secret_bytes_with_separator[i] = shared_secret_bytes[i];\n }\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256::digest(shared_secret_bytes_with_separator)\n}\n\nfn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret: Point,\n randomness_extraction_fn: fn(Point) -> [u8; 32],\n) -> ([u8; 16], [u8; 16]) {\n let random_256_bits = randomness_extraction_fn(shared_secret);\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n (sym_key, iv)\n}\n\n// TODO(#10537): Consider nuking this function.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_sha256,\n )\n}\n\n// TODO(#10537): This function is currently unused. Consider using it instead of the sha256 one.\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2(\n shared_secret: Point,\n) -> ([u8; 16], [u8; 16]) {\n derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret(\n shared_secret,\n extract_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2,\n )\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PLAINTEXT_LEN],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, iv, sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PLAINTEXT_LEN * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n // TODO: consider nuking the header altogether and just have a fixed-size ciphertext by padding the plaintext.\n // This would be more costly constraint-wise but cheaper DA-wise.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // TODO: this is insecure and wasteful:\n // \"Insecure\", because the esk shouldn't be used twice (once for the header,\n // and again for the proper ciphertext) (at least, I never got the\n // \"go ahead\" that this would be safe, unfortunately).\n // \"Wasteful\", because the exact same computation is happening further down.\n // I'm leaving that 2nd computation where it is, because this 1st computation\n // will be imminently deleted, when the header logic is deleted.\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, iv, sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret and symmetric key\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n let (sym_key, iv) = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_sha256(\n ciphertext_shared_secret,\n );\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext = aes128_decrypt_oracle(header_ciphertext_bvec, iv, sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, iv, sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let mut env = TestEnvironment::new();\n // Advance 1 block so we can read historic state from private\n env.advance_block_by(1);\n\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"getSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(decrypted, plaintext_bvec, \"Decrypted bytes should match original plaintext\");\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n }\n}\n" + "127": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", + "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(note, storage_slot, recipient, PRIVATE_NOTE_MSG_TYPE_ID)\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content = [0; 1 + ::N];\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" }, "128": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", - "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PRIVATE_NOTE_MSG_TYPE_ID,\n )\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n sender,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n sender: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content: [Field; N + 1] = std::mem::zeroed();\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, sender, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient, sender);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log = unsafe {\n remove_constraints(|| compute_note_log(note, storage_slot, recipient, sender))\n };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" - }, - "129": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", - "source": "use crate::{\n oracle::notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n prelude::AztecAddress,\n};\n\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"getIndexedTaggingSecretAsSender\").returns(indexed_tagging_secret);\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, sender, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", + "source": "use crate::oracle::notes::{\n get_app_tag_as_sender, get_sender_for_tags, increment_app_tagging_secret_index_as_sender,\n};\nuse dep::protocol_types::address::AztecAddress;\n\n// TODO(#14565): Add constrained tagging\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe {\n let sender = get_sender_for_tags().expect(\n f\"Sender for tags is not set when emitting a private log. Set it by calling `set_sender_for_tags(...)`.\",\n );\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n get_app_tag_as_sender(sender, recipient)\n };\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test(should_fail)]\n unconstrained fn no_tag_sender() {\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles - note privateGetSenderForTags returns none\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::::none());\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let _ = prefix_with_tag(log_without_tag, recipient);\n }\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::some(sender));\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" }, - "137": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", + "136": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" }, - "142": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", - "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" + "141": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", + "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" }, - "144": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", - "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" + "143": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", + "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n pub emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" }, - "147": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", - "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" + "145": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PreprocessorArgs) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PreprocessorArgs,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; M];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" }, - "150": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", - "source": "use protocol_types::traits::Serialize;\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" + "148": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", + "source": "use protocol_types::traits::{Packable, Serialize};\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize, Packable)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" }, - "152": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/retrieved_note.nr", - "source": "use crate::{note::note_metadata::NoteMetadata, utils::array::subarray::subarray};\nuse protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n};\n\n// Number of fields a RetrievedNote adds to the packed or serialized representation of a note\n// +1 for the contract address\n// +2 for the note metadata\npub global RETRIEVED_NOTE_OVERHEAD: u32 = 1 + 2;\n\n/// A container of a note and the metadata required to prove its existence, regardless of whether the note is\n/// pending (created in the current transaction) or settled (created in a previous transaction).\n#[derive(Eq)]\npub struct RetrievedNote {\n pub note: NOTE,\n pub contract_address: AztecAddress,\n pub metadata: NoteMetadata,\n}\n\nimpl Serialize for RetrievedNote\nwhere\n NOTE: Serialize,\n{\n fn serialize(self) -> [Field; N + RETRIEVED_NOTE_OVERHEAD] {\n array_concat(\n array_concat(self.note.serialize(), [self.contract_address.to_field()]),\n self.metadata.serialize(),\n )\n }\n}\n\n// This function is not part of the Packable trait implementation because in the case of the retrieved note, the pack\n// functionality resides in TS (oracle.ts and txe_service.ts).\npub fn unpack_retrieved_note(\n packed_retrieved_note: [Field; N + RETRIEVED_NOTE_OVERHEAD],\n) -> RetrievedNote\nwhere\n NOTE: Packable,\n{\n let contract_address = AztecAddress::from_field(packed_retrieved_note[0]);\n let note_nonce = packed_retrieved_note[1];\n let nonzero_note_hash_counter = (packed_retrieved_note[2] as u1) != 0;\n\n let packed_note = subarray(packed_retrieved_note, RETRIEVED_NOTE_OVERHEAD);\n let note = NOTE::unpack(packed_note);\n\n RetrievedNote {\n note,\n contract_address,\n metadata: NoteMetadata::from_raw_data(nonzero_note_hash_counter, note_nonce),\n }\n}\n" - }, - "153": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", + "151": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullify(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullify_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullify`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullify_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify = compute_note_hash_for_nullify(retrieved_note, storage_slot);\n let inner_nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" }, + "155": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(privateCallPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + }, + "156": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", + "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle(contract_address, slot, ::N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(utilityStoreCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(utilityLoadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(utilityDeleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(utilityCopyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n });\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n });\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n });\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n copy(contract_address, SLOT, SLOT, 1);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n });\n }\n}\n" + }, "157": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(privateNotifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(privateNotifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(privateNotifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" }, "158": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", - "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle::(contract_address, slot, N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(storeCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(loadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(deleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(copyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n unconstrained fn setup() -> AztecAddress {\n let env = TestEnvironment::new();\n env.contract_address()\n }\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let contract_address = setup();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let contract_address = setup();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let contract_address = setup();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let contract_address = setup();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let contract_address = setup();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let contract_address = setup();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let contract_address = setup();\n\n copy(contract_address, SLOT, SLOT, 1);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let contract_address = setup();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(utilityGetContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(utilityGetBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(utilityGetTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(utilityGetChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(utilityGetVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" }, "159": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(notifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(notifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", + "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(privateStoreInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(privateLoadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" }, "16": { "path": "std/embedded_curve_ops.nr", - "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2)[0]\n}\n" + "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars, true)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n _predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2, true)[0]\n}\n" }, "160": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(getContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(getBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(getTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(getChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(getVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", + "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(utilityGetContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" }, - "161": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", - "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(storeInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(loadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" + "164": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", + "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(utilityGetPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" }, - "162": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", - "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" + "165": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", + "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(utilityGetKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" }, "166": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", - "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(getPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" - }, - "167": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", - "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(utilityGetPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" }, "168": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", - "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", + "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(utilityFetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(utilityValidateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(utilityBulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" }, "17": { "path": "std/field/bn254.nr", "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n" }, "170": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", - "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(fetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(validateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(bulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", + "source": "use crate::note::{note_interface::NoteType, retrieved_note::RetrievedNote};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(privateNotifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(privateNotifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(privateNotifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(utilityGetNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to as Packable>::N. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; as Packable>::N], MaxNotes>\nwhere\n // TODO(https://github.com/noir-lang/noir/issues/9399): `Note: Packable` should work here.\n RetrievedNote: Packable,\n{}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MaxNotes]\nwhere\n Note: NoteType + Packable,\n{\n let packed_retrieved_notes: BoundedVec<[Field; as Packable>::N], MaxNotes>\n = get_notes_oracle::(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MaxNotes,\n as Packable>::N,\n );\n\n let mut notes = BoundedVec::<_, MaxNotes>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = RetrievedNote::unpack(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MaxNotes];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(utilityCheckNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n// TODO: Oracles below are generic private log oracles and are not specific to notes. Move them somewhere else.\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(utilityGetIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(privateIncrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Gets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// The value persists through nested calls, meaning all calls down the stack will use the same\n/// 'senderForTags' value (unless it is replaced).\npub unconstrained fn get_sender_for_tags() -> Option {\n get_sender_for_tags_oracle()\n}\n\n#[oracle(privateGetSenderForTags)]\nunconstrained fn get_sender_for_tags_oracle() -> Option {}\n\n/// Sets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// Account contracts typically set this value before calling other contracts. The value persists\n/// through nested calls, meaning all calls down the stack will use the same 'senderForTags'\n/// value (unless it is replaced by another call to this setter).\npub unconstrained fn set_sender_for_tags(sender_for_tags: AztecAddress) {\n set_sender_for_tags_oracle(sender_for_tags);\n}\n\n#[oracle(privateSetSenderForTags)]\nunconstrained fn set_sender_for_tags_oracle(_sender_for_tags: AztecAddress) {}\n" }, "172": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", - "source": "use crate::note::{\n note_interface::NoteType,\n retrieved_note::{RETRIEVED_NOTE_OVERHEAD, RetrievedNote, unpack_retrieved_note},\n};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(notifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> {}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MAX_NOTES]\nwhere\n Note: NoteType + Packable,\n{\n // N + 3 because of the contract address, note nonce, and note_hash_counter that are stored out of the packed note.\n let packed_retrieved_notes: BoundedVec<[Field; NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD], MAX_NOTES> = get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MAX_NOTES,\n NOTE_PCKD_LEN + RETRIEVED_NOTE_OVERHEAD,\n );\n\n let mut notes = BoundedVec::<_, MAX_NOTES>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = unpack_retrieved_note(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MAX_NOTES];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", + "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(utilityGetRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" }, - "174": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", - "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" + "173": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", + "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(utilityGetSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" }, "175": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", - "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(getSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", + "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(utilityStorageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" }, - "177": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", - "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(storageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"storageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" + "176": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/version.nr", + "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called and\n/// if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 1;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(utilityAssertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. PXE is using version '1', but got a request for '318183437'.\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n" }, "179": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", - "source": "use crate::state_vars::storage::Storage;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because nothing is stored at said slot: it is only\n// used to derive the storage slots of nested state variables, which is expected to never result in collisions or slots\n// being close to one another due to these being hashes. This mirrors the strategy adopted by Solidity mappings.\nimpl Storage<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/delayed_public_mutable.nr", + "source": "use dep::protocol_types::{\n delayed_public_mutable::{\n delayed_public_mutable_values::{unpack_delay_change, unpack_value_change},\n DelayedPublicMutableValues,\n ScheduledDelayChange,\n ScheduledValueChange,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::HasStorageSlot,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct DelayedPublicMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl HasStorageSlot for DelayedPublicMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// DelayedPublicMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. DelayedPublicMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to InitialDelay, but can be changed by calling\n// `schedule_delay_change`.\nimpl DelayedPublicMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(self, new_value: T) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::::N>(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`DelayedPublicMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private delayed public mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(DelayedPublicMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let time_horizon =\n value_change.get_time_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the time horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(time_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: DelayedPublicMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let dpmv: DelayedPublicMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n dpmv.svc.get_current_at(current_timestamp)\n }\n}\n" }, "18": { "path": "std/field/mod.nr", - "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" + "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" }, - "181": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", - "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl Storage<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n // docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" + "180": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", + "source": "use crate::state_vars::storage::HasStorageSlot;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n/// Map\n///\n/// A key-value storage container that maps keys to state variables, similar\n/// to Solidity mappings.\n///\n/// `Map` enables you to associate keys (like addresses or other identifiers)\n/// with state variables in your Aztec smart contract. This is conceptually\n/// similar to Solidity's `mapping(K => V)` syntax, where you can store and\n/// retrieve values by their associated keys.\n///\n/// You can declare a state variable contained within a Map in your contract's\n/// #[storage] struct.\n///\n/// For example, you might use\n/// `Map, Context>` to track\n/// token balances for different users, similar to how you'd use\n/// `mapping(address => uint256)` in Solidity.\n///\n/// > Aside: the verbose `Context` in the declaration is a consequence of\n/// > leveraging Noir's regular syntax for generics to ensure that certain\n/// > state variable methods can only be called in some contexts (private,\n/// > public, utility).\n///\n/// The methods of Map are:\n/// - `at` (access state variable for a given key)\n/// (see the method's own doc comments for more info).\n///\n/// ## Generic Parameters\n/// - `K`: The key type (must implement `ToField` trait for hashing)\n/// - `V`: The value type:\n/// - any Aztec state variable:\n/// - `PublicMutable`\n/// - `PublicImmutable`\n/// - `PrivateMutable`\n/// - `PrivateImmutable`\n/// - `PrivateSet`\n/// - `DelayedPublicMutable`\n/// - `Map`\n/// - `Context`: The execution context (handles private/public function\n/// contexts)\n///\n/// ## Usage\n/// Maps are typically declared in your contract's #[storage] struct and\n/// accessed\n/// using the `at(key)` method to get the state variable for a specific key.\n/// The resulting state variable can then be read from or written to using its\n/// own methods.\n///\n/// ## Advanced\n/// Internally, `Map` uses a single base storage slot to represent the\n/// mapping\n/// itself, similar to Solidity's approach. Individual key-value pairs are\n/// stored at derived storage slots computed by hashing the base storage\n/// slot\n/// with the key using Poseidon2. This ensures:\n/// - No storage slot collisions between different keys\n/// - Uniform distribution of storage slots across the storage space\n/// - Compatibility with Aztec's storage tree structure\n/// - Gas-efficient storage access patterns similar to Solidity mappings\n///\n/// The storage slot derivation uses `derive_storage_slot_in_map(base_slot,\n/// key)` which computes `poseidon2_hash([base_slot, key.to_field()])`,\n/// ensuring cryptographically secure slot separation.\n///\n/// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because\n// nothing is stored at said slot: it is only used to derive the storage slots\n// of nested state variables, which is expected to never result in collisions\n// or slots being close to one another due to these being hashes. This mirrors\n// the strategy adopted by Solidity mappings.\nimpl HasStorageSlot<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n /// Initializes a new Map state variable.\n ///\n /// This function is usually automatically called within the #[storage]\n /// macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`.\n /// The Context determines which methods of this struct will\n /// be made available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this Map within the contract.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart\n /// contract dev shouldn't have to worry about this, as\n /// it's managed behind the scenes.\n /// * `state_var_constructor` - A function that creates the value type (V)\n /// given a context and storage slot. This is\n /// typically the constructor of the state\n /// variable type being stored in the Map.\n ///\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n /// Returns the state variable associated with the given key.\n ///\n /// This is equivalent to accessing `mapping[key]` in Solidity. It returns\n /// the state variable instance for the specified key, which can then be\n /// used to read or write the value at that key.\n ///\n /// Unlike Solidity mappings which return the value directly, this returns\n /// the state variable wrapper (like PrivateMutable, PublicMutable, etc.)\n /// that you then call methods on to interact with the actual value.\n ///\n /// # Arguments\n ///\n /// * `key` - The key to look up in the map. Must implement the ToField\n /// trait (which most basic Noir & Aztec types do).\n ///\n /// # Returns\n ///\n /// * `V` - The state variable instance for this key. You can then call\n /// methods like `.read()`, `.write()`, `.get_note()`, etc. on this\n /// depending on the specific state variable type.\n ///\n /// # Example\n ///\n /// ```noir\n /// // Get a user's balance (assuming PrivateMutable)\n /// let user_balance = storage.balances.at(user_address);\n /// let current_note = user_balance.get_note();\n ///\n /// // Update the balance\n /// user_balance.replace(new_note);\n /// ```\n ///\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" }, - "190": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable.nr", - "source": "use dep::protocol_types::{\n shared_mutable::{\n ScheduledDelayChange,\n ScheduledValueChange,\n shared_mutable_values::{unpack_delay_change, unpack_value_change},\n SharedMutableValues,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::Storage,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct SharedMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl Storage for SharedMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// SharedMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to INITIAL_DELAY, but can be changed by calling\n// `schedule_delay_change`.\nimpl SharedMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(\n self,\n new_value: T,\n ) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`SharedMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private shared mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(SharedMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let timestamp_horizon =\n value_change.get_timestamp_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the timestamp horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(timestamp_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: SharedMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl SharedMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let smv: SharedMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n smv.svc.get_current_at(current_timestamp)\n }\n}\n" + "182": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", + "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::HasStorageSlot;\n\n/// PrivateImmutable\n///\n/// PrivateImmutable is a private state variable type for values that are set once\n/// and remain permanently unchanged.\n///\n/// You can declare a state variable of type PrivateImmutable within your contract's\n/// #[storage] struct:\n///\n/// E.g.:\n/// `your_variable: PrivateImmutable`\n///\n/// The value is represented as a single note that persists for the lifetime of\n/// the state variable. Once initialized, this note is never nullified or replaced\n/// through the state variable interface - it can only be read.\n///\n/// The PrivateImmutable type facilitates: inserting the permanent note during\n/// initialization, and reading that note.\n///\n/// The methods of PrivateImmutable are:\n/// - `initialize`\n/// - `get_note`\n/// (see the methods' own doc comments for more info).\n///\n/// ## Example.\n///\n/// A contract's configuration parameters can be represented as a PrivateImmutable.\n/// Once set during contract deployment or initial setup, these parameters remain\n/// constant for the lifetime of the contract.\n///\n/// ## Privacy\n///\n/// PrivateImmutable has the same privacy properties as PrivateMutable (see\n/// PrivateMutable documentation), including the same privacy considerations\n/// regarding the initialization nullifier potentially leaking information about\n/// which storage slot was initialized.\n///\n/// # Generic Parameters:\n///\n/// * `Note` - A single note of this type will represent the PrivateImmutable's\n/// value at the given storage_slot.\n/// * `Context` - The execution context (PrivateContext or UtilityContext).\n///\n/// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl HasStorageSlot<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a new PrivateImmutable state variable.\n ///\n /// This function is usually automatically called within the #[storage] macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`. The\n /// Context determines which methods of this struct will be made\n /// available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this state variable within the\n /// contract. The permanent note for this PrivateImmutable\n /// state variable will have this `storage_slot`.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart contract\n /// dev shouldn't have to worry about this, as it's managed\n /// behind the scenes.\n ///\n /// docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n /// Computes the nullifier that will be created when this PrivateImmutable is\n /// initialized.\n ///\n /// This function is primarily used internally by the `initialize` method, but\n /// may also be useful for contracts that need to check if a PrivateImmutable\n /// has been initialized.\n ///\n /// **IMPORTANT PRIVACY CONSIDERATION:**\n /// This computation has the same privacy implications as PrivateMutable's\n /// initialization nullifier (see PrivateMutable documentation for detailed\n /// explanation). The initialization nullifier can leak information about which\n /// storage slot was initialized.\n ///\n /// See https://github.com/AztecProtocol/aztec-packages/issues/15568 for ideas to\n /// improve this privacy footgun in future.\n ///\n /// # Returns\n ///\n /// * `Field` - The nullifier that will be emitted when this PrivateImmutable is\n /// initialized.\n ///\n /// # Advanced\n ///\n /// The computation uses the Poseidon2 hash function with a specific generator\n /// index to hash the storage slot, creating a deterministic nullifier based on\n /// the storage location.\n ///\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a PrivateImmutable state variable instance with a permanent note.\n ///\n /// This function inserts the single, permanent note for this state variable. It can\n /// only be called once per PrivateImmutable. Subsequent calls will fail because\n /// the initialization nullifier will already exist.\n ///\n /// Unlike PrivateMutable, this note will never be nullified or replaced through\n /// the state variable interface - it persists for the lifetime of the state variable.\n ///\n /// # Arguments\n ///\n /// * `note` - The permanent note to store in this PrivateImmutable. This note\n /// contains the unchanging value of the state variable.\n ///\n /// # Returns\n ///\n /// * `NoteEmission` - A type-safe wrapper that requires you to decide\n /// whether to encrypt and send the note to someone.\n /// You can call `.emit()` on it to encrypt and log\n /// the note, or `.discard()` to skip emission.\n /// See NoteEmission for more details.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Creates and emits an initialization nullifier to mark this storage slot\n /// as initialized. This prevents double-initialization.\n /// - Inserts the provided note into the protocol's Note Hash Tree.\n /// - Returns a NoteEmission type that allows the caller to decide how to encrypt\n /// and deliver the note to its intended recipient.\n ///\n /// The initialization nullifier is deterministically computed from the storage\n /// slot and can leak privacy information (see `compute_initialization_nullifier`\n /// documentation).\n ///\n /// docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n /// Reads the permanent note of a PrivateImmutable state variable instance.\n ///\n /// If this PrivateImmutable state variable has not yet been initialized,\n /// no note will exist: the call will fail and the transaction will not\n /// be provable.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Retrieves the note from the PXE via an oracle call\n /// - Validates that the note exists and belongs to this contract address and\n /// storage slot by pushing a read request to the context\n /// - Returns the note content directly without nullification\n ///\n /// Since the note is immutable, there's no risk of reading stale data or\n /// race conditions - the note never changes after initialization.\n ///\n /// docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n /// Checks whether this PrivateImmutable has been initialized.\n ///\n /// # Returns\n ///\n /// * `bool` - `true` if the PrivateImmutable has been initialized (the initialization\n /// nullifier exists), `false` otherwise.\n ///\n /// docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n /// Returns the permanent note in this PrivateImmutable without consuming it.\n ///\n /// This function is only available in a UtilityContext (unconstrained environment)\n /// and is typically used for off-chain queries, view functions, or testing.\n ///\n /// Unlike the constrained `get_note()`, this function does not push read requests\n /// or perform validation. It simply reads the note from the PXE's database.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::::N>::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" }, - "202": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", - "source": "/// Appends two `BoundedVec`s together, returning one that contains all of the elements of the first one followed by all\n/// of the elements of the second one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" - }, - "205": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", - "source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(\n src: [T; SRC_LEN],\n offset: u32,\n) -> [T; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"DST_LEN too large for offset\");\n\n let mut dst: [T; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + "19": { + "path": "std/hash/mod.nr", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{\n if crate::runtime::is_unconstrained() {\n // Temporary measure while Barretenberg is main proving system.\n // Please open an issue if you're working on another proving system and running into problems due to this.\n crate::static_assert(\n N <= 1024,\n \"Barretenberg cannot prove blake3 hashes with inputs larger than 1024 bytes\",\n );\n }\n __blake3(input)\n}\n\n#[foreign(blake3)]\nfn __blake3(input: [u8; N]) -> [u8; 32] {}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars, true)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn poseidon2_permutation(input: [Field; N], state_len: u32) -> [Field; N] {\n assert_eq(input.len(), state_len);\n poseidon2_permutation_internal(input)\n}\n\n#[foreign(poseidon2_permutation)]\nfn poseidon2_permutation_internal(input: [Field; N]) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n type H = H;\n\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u8 as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u16 as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u32 as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u64 as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n" }, "206": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", - "source": "use crate::utils::array;\n\n/// Returns `DST_MAX_LEN` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DST_LEN` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DST_LEN` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DST_LEN too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", + "source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" + }, + "209": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", + "source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + }, + "210": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", + "source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" }, - "208": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", + "212": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" }, - "209": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", + "213": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" }, - "211": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", + "215": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", "source": "use std::option::Option;\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\npub unconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\n// Returns (false, 0) if there is no square root.\n// Returns (true, sqrt) if there is a square root.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nfn test_sqrt() {\n let x = 9;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_some());\n let sqrt = maybe_sqrt.unwrap_unchecked();\n assert((sqrt == 3) | (sqrt == -3));\n}\n\n#[test]\nfn test_non_square() {\n let x = 5;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_none());\n}\n\n#[test]\nunconstrained fn test_known_non_residue_is_actually_a_non_residue_in_the_field() {\n assert(!is_square(KNOWN_NON_RESIDUE));\n}\n\n#[test]\nfn test_sqrt_0() {\n let x = 0;\n let sqrt = sqrt(x).unwrap();\n assert(sqrt == 0);\n}\n\n#[test]\nfn test_sqrt_1() {\n let x = 1;\n let sqrt = sqrt(x).unwrap();\n assert((sqrt == 1) | (sqrt == -1));\n}\n\n#[test(should_fail_with = \"The claimed_sqrt 0x04 is not the sqrt of x 0x09\")]\nfn test_bad_sqrt_hint_fails() {\n validate_sqrt_hint(9, 4);\n}\n\n#[test(should_fail_with = \"The hint 0x04 does not demonstrate that 0x0a is not a square\")]\nfn test_bad_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(10, 4);\n}\n\n#[test(should_fail_with = \"0 has a square root; you cannot claim it is not square\")]\nfn test_0_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test]\nunconstrained fn test_is_square() {\n assert(is_square(25));\n}\n\n#[test]\nunconstrained fn test_is_not_square() {\n assert(!is_square(10));\n}\n" }, - "213": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", + "217": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", "source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\n/// Uses the x coordinate and sign flag (+/-) to reconstruct the point.\n/// The y coordinate can be derived from the x coordinate and the \"sign\" flag by solving the grumpkin curve\n/// equation for y.\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n\n // If y > MOD_DIV_2 and we want positive sign (or vice versa), negate y\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n\n Point { x, y: final_y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign);\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2);\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n}\n" }, - "214": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", + "218": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" }, - "218": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", - "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `N` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `N`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; N],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + N as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n for i in 0..N {\n result[i] = self.packed[i];\n }\n result[N] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; N + 1]) -> Self {\n let mut value_packed: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_packed[i] = packed[i];\n }\n let hash = packed[N];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n oracle::random::random,\n test::{\n helpers::{cheatcodes, test_environment::TestEnvironment},\n mocks::mock_struct::MockStruct,\n },\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::{mem, test::OracleMock};\n\n global storage_slot: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n let result = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n\n // We should get zeroed value\n let expected: MockStruct = mem::zeroed();\n assert_eq(result, expected);\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n // We write the value with hash to storage\n cheatcodes::direct_storage_write(\n env.contract_address(),\n storage_slot,\n value_with_hash.pack(),\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let result = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n\n assert_eq(result, value);\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn test_bad_hint_uninitialized_value() {\n let mut env = TestEnvironment::new();\n\n env.advance_block_to(6);\n\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n\n let block_header = env.private().historical_header;\n let address = env.contract_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let _ = OracleMock::mock(\"storageRead\")\n .with_params((\n address.to_field(), storage_slot, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should revert because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n storage_slot,\n );\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn test_bad_hint_initialized_value() {\n let mut env = TestEnvironment::new();\n\n let value_packed = MockStruct { a: 5, b: 3 }.pack();\n\n // We write the value to storage\n cheatcodes::direct_storage_write(env.contract_address(), storage_slot, value_packed);\n\n // Now we write incorrect hash to the hash storage slot\n let incorrect_hash = random();\n let hash_storage_slot = storage_slot + (value_packed.len() as Field);\n cheatcodes::direct_storage_write(\n env.contract_address(),\n hash_storage_slot,\n [incorrect_hash],\n );\n\n // We advance block by 1 because env.private() currently returns context at latest_block - 1\n env.advance_block_by(1);\n\n let _ = WithHash::::historical_public_storage_read(\n env.private().historical_header,\n env.contract_address(),\n storage_slot,\n );\n }\n}\n" + "222": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", + "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `M` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `M`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; M],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + M as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\n// Note: I don't derive Packable on `WithHash` because `derive_serialize` function does not support setting \"N = M\"\n// as I do here 3 lines below. This could be worked around by placing the \"where\" clause directly on the `WithHash`\n// struct, but Jake mentioned that the syntax is not expected to be supported at least until Noir 1.0.\n// Relevant discussion on Slack:\n// https://aztecprotocol.slack.com/archives/C04QF64EDNV/p1752593876160699?thread_ts=1752589887.955379&cid=C04QF64EDNV\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n let N: u32 = M + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n result[i] = self.packed[i];\n }\n result[M] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n let mut value_packed = [0; M];\n for i in 0..M {\n value_packed[i] = packed[i];\n }\n let hash = packed[M];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::test::OracleMock;\n\n global STORAGE_SLOT: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n\n assert_eq(result, std::mem::zeroed());\n });\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n env.public_context(|context| { context.storage_write(STORAGE_SLOT, value_with_hash); });\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n assert_eq(result, value);\n });\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn bad_hint_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let block_header = context.historical_header;\n let address = context.this_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n let _ = OracleMock::mock(\"utilityStorageRead\")\n .with_params((\n address.to_field(), STORAGE_SLOT, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should fail because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n STORAGE_SLOT,\n );\n });\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn bad_hint_initialized_value() {\n let env = TestEnvironment::new();\n\n env.public_context(|context| {\n // Write the value and hash separately so that the hash is wrong\n let value = MockStruct { a: 5, b: 3 };\n context.storage_write(STORAGE_SLOT, value);\n\n let incorrect_hash = 13;\n let hash_storage_slot = STORAGE_SLOT + (value.pack().len() as Field);\n context.storage_write(hash_storage_slot, [incorrect_hash]);\n });\n\n env.private_context(|context| {\n let _ = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n });\n }\n}\n" }, - "225": { + "229": { "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" }, - "243": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", - "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\n\npub struct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n pub inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" + "248": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", + "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\nuse std::meta::derive;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct FunctionSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n pub inner: u32,\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" }, - "286": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", - "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\n\n// Aztec address\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other: Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n" + "294": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", + "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n" }, "3": { "path": "std/array/mod.nr", "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" }, - "301": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", + "308": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Empty, Hash},\n};\n\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Eq for PublicDataTreeLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.slot == other.slot)\n & (self.value == other.value)\n & (self.next_slot == other.next_slot)\n & (self.next_index == other.next_index)\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: u32) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" }, - "303": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", - "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(debugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" + "310": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", + "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" }, - "304": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", - "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::{arrays::array_concat, field::{field_from_bytes, field_from_bytes_32_trunc}},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a u128.\n // 4 Field elements when converted to bytes will usually\n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field\n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" + "312": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr", + "source": "use crate::{\n delayed_public_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n hash::poseidon2_hash,\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// DelayedPublicMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct DelayedPublicMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl DelayedPublicMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n DelayedPublicMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * M + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, M + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n let N: u32 = 2 * ::N + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result = [0; Self::N];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..::N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + ::N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" }, - "305": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", - "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" + "315": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_delay_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_time_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading delayed mutable state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" }, - "314": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", - "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" + "317": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'time horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the time horizon (see `get_time_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the time horizon\n /// computed using the same historical timestamp.\n pub fn get_time_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The time horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the time horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the time horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our time horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp time horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the time horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp time horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical time horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" }, - "318": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", - "source": "use super::traits::{Deserialize, Packable, Serialize};\n\n/// Returns the typed expression of a trait method implementation.\n///\n/// This helper function is preferred over directly inlining with `$typ::target_method()` in a quote,\n/// as direct inlining would result in missing import warnings in the generated code (specifically,\n/// warnings that the trait implementation is not in scope).\n///\n/// # Note\n/// A copy of this function exists in `aztec-nr/aztec/src/macros/utils.nr`. We maintain separate copies\n/// because importing it there from here would cause the `target_trait` to be interpreted in the context\n/// of this crate, making it impossible to compile code for traits from that crate (e.g. NoteType).\ncomptime fn get_trait_impl_method(\n typ: Type,\n target_trait: Quoted,\n target_method: Quoted,\n) -> TypedExpr {\n let trait_constraint = target_trait.as_trait_constraint();\n typ\n .get_trait_impl(trait_constraint)\n .expect(f\"Could not find impl for {target_trait} for type {typ}\")\n .methods()\n .filter(|m| m.name() == target_method)[0]\n .as_typed_expr()\n}\n\n/// Generates code that deserializes a struct, primitive type, array or string from a field array.\n///\n/// # Parameters\n/// - `name`: The name of the current field being processed, used to identify fields for replacement.\n/// - `typ`: The type of the struct or field being deserialized (e.g., a custom struct, array, or primitive).\n/// - `field_array_name`: The name of the field array containing serialized field data (e.g., `\"values\"`).\n/// - `num_already_consumed`: The number of fields already processed in previous recursion calls.\n/// - `should_unpack`: A boolean indicating whether the type should be unpacked (see description of `Packable`\n/// and `Serialize` trait for more information about the difference between packing and serialization).\n///\n/// # Returns\n/// A tuple containing:\n/// - `Quoted`: A code that deserializes a given struct, primitive type, array, or string from the field array.\n/// - `u32`: The total number of fields consumed during deserialization (used for recursion).\n///\n/// # Nested Struct Example\n/// Given the following setup:\n/// ```\n/// struct UintNote {\n/// value: u128,\n/// owner: AztecAddress,\n/// randomness: Field,\n/// }\n///\n/// struct AztecAddress {\n/// inner: Field,\n/// }\n/// ```\n///\n/// If `UintNote` is the input type, the function will generate the following deserialization code:\n/// ```\n/// UintNote {\n/// value: fields[0] as u128,\n/// owner: AztecAddress {\n/// inner: fields[1],\n/// },\n/// randomness: fields[2],\n/// }\n/// ```\n/// # Nested Struct Example with Unpacking\n/// - given the same setup as above and given that u128, AztecAddress and Field implement the `Packable` trait\n/// the result we get is:\n/// ```\n/// UintNote {\n/// value: aztec::protocol_types::traits::Packable::unpack([fields[0]]),\n/// owner: aztec::protocol_types::traits::Packable::unpack([fields[1]]),\n/// randomness: aztec::protocol_types::traits::Packable::unpack([fields[2]]),\n/// }\n/// ```\n///\n/// # Panics\n/// - If the deserialization logic encounters a type it does not support.\n/// - If an incorrect number of fields are consumed when deserializing a string.\npub comptime fn generate_deserialize_from_fields(\n name: Quoted,\n typ: Type,\n field_array_name: Quoted,\n num_already_consumed: u32,\n should_unpack: bool,\n) -> (Quoted, u32) {\n let mut result = quote {};\n // Counter for the number of fields consumed\n let mut consumed_counter: u32 = 0;\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint = quote { Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_unpack & typ.implements(packable_constraint)) {\n // Unpacking is enabled and the given type implements the `Packable` trait so we call the `unpack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We copy the packed fields into a new array and pass that to the unpack function in a quote\n let mut packed_fields_quotes = &[];\n for i in 0..packed_len {\n let index_in_field_array = i + num_already_consumed;\n packed_fields_quotes =\n packed_fields_quotes.push_back(quote { $field_array_name[$index_in_field_array] });\n }\n let packed_fields = packed_fields_quotes.join(quote {,});\n\n // Now we call unpack on the type\n let unpack_method = get_trait_impl_method(typ, quote { Packable<_> }, quote { unpack });\n result = quote { $unpack_method([ $packed_fields ]) };\n\n consumed_counter = packed_len;\n } else if typ.is_bool() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] != 0 };\n consumed_counter = 1;\n } else if typ.is_field() | typ.as_integer().is_some() {\n // The field is a primitive so we just reference it in the field array\n result = quote { $field_array_name[$num_already_consumed] as $typ };\n consumed_counter = 1;\n } else if typ.as_data_type().is_some() {\n // The field is a struct so we iterate over each struct field and recursively call\n // `generate_deserialize_from_fields`\n let (nested_def, generics) = typ.as_data_type().unwrap();\n let nested_name = nested_def.name();\n let mut deserialized_fields_list = &[];\n\n // Iterate over each field in the struct\n for field in nested_def.fields(generics) {\n let (field_name, field_type, _) = field;\n // Recursively call `generate_deserialize_from_fields` for each field in the struct\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n field_name,\n field_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `value: u128 { lo: fields[0], hi: fields[1] }`\n deserialized_fields_list =\n deserialized_fields_list.push_back(quote { $field_name: $deserialized_field });\n }\n\n // We can construct the struct from the deserialized fields\n let deserialized_fields = deserialized_fields_list.join(quote {,});\n result = quote {\n $nested_name {\n $deserialized_fields\n }\n };\n } else if typ.as_array().is_some() {\n // The field is an array so we iterate over each element and recursively call\n // `generate_deserialize_from_fields`\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n let mut array_fields_list = &[];\n\n // Iterate over each element in the array\n for _ in 0..array_len {\n // Recursively call `generate_deserialize_from_fields` for each element in the array\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n element_type,\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n // We increment the consumed counter by the number of fields consumed in the recursion\n consumed_counter += num_consumed_in_recursion;\n // We add the deserialized field to the list of deserialized fields.\n array_fields_list = array_fields_list.push_back(deserialized_field);\n }\n\n // We can construct the array from the deserialized fields\n let array_fields = array_fields_list.join(quote {,});\n result = quote { [ $array_fields ] };\n } else if typ.as_str().is_some() {\n // The field is a string and we expect each byte of the string to be represented as 1 field in the field\n // array. So we iterate over the string length and deserialize each character as u8 in the recursive call\n // to `generate_deserialize_from_fields`.\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let mut byte_list = &[];\n\n // Iterate over each character in the string\n for _ in 0..str_len {\n // Recursively call `generate_deserialize_from_fields` for each character in the string\n let (deserialized_field, num_consumed_in_recursion) = generate_deserialize_from_fields(\n name,\n quote {u8}.as_type(),\n field_array_name,\n consumed_counter + num_already_consumed,\n should_unpack,\n );\n\n // We should consume just one field in the recursion so we sanity check that\n assert_eq(\n num_consumed_in_recursion,\n 1,\n \"Incorrect number of fields consumed in string deserialization\",\n );\n\n // We increment the consumed counter by 1 as we have consumed one field\n consumed_counter += 1;\n\n // We add the deserialized field to the list of deserialized fields.\n // E.g. `fields[6] as u8`\n byte_list = byte_list.push_back(deserialized_field);\n }\n\n // We construct the string from the deserialized fields\n let bytes = byte_list.join(quote {,});\n result = quote { [ $bytes ].as_str_unchecked() };\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (result, consumed_counter)\n}\n\n/// Generates code that serializes a type into an array of fields. Also generates auxiliary variables if necessary\n/// for serialization. If `should_pack` is true, we check if the type implements the `Packable` trait and pack it\n/// if it does.\n///\n/// # Parameters\n/// - `name`: The base identifier (e.g., `self`, `some_var`).\n/// - `typ`: The type being serialized (e.g., a custom struct, array, or primitive type).\n/// - `should_pack`: A boolean indicating whether the type should be packed.\n///\n/// # Returns\n/// A tuple containing:\n/// - A flattened array of `Quoted` field references representing the serialized fields.\n/// - An array of `Quoted` auxiliary variables needed for serialization, such as byte arrays for strings.\n///\n/// # Examples\n///\n/// ## Struct\n/// Given the following struct:\n/// ```rust\n/// struct MockStruct {\n/// a: Field,\n/// b: Field,\n/// }\n/// ```\n///\n/// Serializing the struct:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_mock_struct }, MockStruct, false)\n/// // Returns:\n/// // ([`my_mock_struct.a`, `my_mock_struct.b`], [])\n/// ```\n///\n/// ## Nested Struct\n/// For a more complex struct:\n/// ```rust\n/// struct NestedStruct {\n/// m1: MockStruct,\n/// m2: MockStruct,\n/// }\n/// ```\n///\n/// Serialization output:\n/// ```rust\n/// generate_serialize_to_fields(quote { self }, NestedStruct, false)\n/// // Returns:\n/// // ([`self.m1.a`, `self.m1.b`, `self.m2.a`, `self.m2.b`], [])\n/// ```\n///\n/// ## Array\n/// For an array type:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_array }, [Field; 3], false)\n/// // Returns:\n/// // ([`my_array[0]`, `my_array[1]`, `my_array[2]`], [])\n/// ```\n///\n/// ## String\n/// For a string field, where each character is serialized as a `Field`:\n/// ```rust\n/// generate_serialize_to_fields(quote { my_string }, StringType, false)\n/// // Returns:\n/// // ([`my_string_as_bytes[0] as Field`, `my_string_as_bytes[1] as Field`, ...],\n/// // [`let my_string_as_bytes = my_string.as_bytes()`])\n/// ```\n///\n/// ## Nested Struct with packing enabled\n/// - u128 has a `Packable` implementation hence it will be packed.\n///\n/// For a more complex struct:\n/// ```rust\n/// struct MyStruct {\n/// value: u128,\n/// value2: Field,\n/// }\n/// ```\n///\n/// # Panics\n/// - If the type is unsupported for serialization.\n/// - If the provided `typ` contains invalid constants or incompatible structures.\npub comptime fn generate_serialize_to_fields(\n name: Quoted,\n typ: Type,\n should_pack: bool,\n) -> ([Quoted], [Quoted]) {\n let mut fields = &[];\n let mut aux_vars = &[];\n\n // If the type implements `Packable`, its length will be assigned to the `maybe_packed_len_typ` variable.\n let maybe_packed_len_typ = std::meta::typ::fresh_type_variable();\n let packable_constraint =\n quote { crate::traits::Packable<$maybe_packed_len_typ> }.as_trait_constraint();\n\n if (should_pack & typ.implements(packable_constraint)) {\n // Packing is enabled and the given type implements the `Packable` trait so we call the `pack()`\n // method, add the resulting field array to `aux_vars` and each field to `fields`.\n let packed_len = maybe_packed_len_typ.as_constant().unwrap();\n\n // We collapse the name to a one that gets tokenized as a single token (e.g. \"self.value\" -> \"self_value\").\n let name_at_one_token = collapse_to_one_token(name);\n let packed_struct_name = f\"{name_at_one_token}_aux_var\".quoted_contents();\n\n // We add the individual fields to the fields array\n let pack_method = get_trait_impl_method(\n typ,\n quote { crate::traits::Packable<$packed_len> },\n quote { pack },\n );\n let packed_struct = quote { let $packed_struct_name = $pack_method($name) };\n for i in 0..packed_len {\n fields = fields.push_back(quote { $packed_struct_name[$i] });\n }\n\n // We add the new auxiliary variable to the aux_vars array\n aux_vars = aux_vars.push_back(packed_struct);\n } else if typ.is_field() {\n // For field we just add the value to fields\n fields = fields.push_back(name);\n } else if typ.as_integer().is_some() | typ.is_bool() {\n // For integer and bool we just cast to Field and add the value to fields\n fields = fields.push_back(quote { $name as Field });\n } else if typ.as_data_type().is_some() {\n // For struct we pref\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n let struct_flattened = params.map(|(param_name, param_type, _)| {\n let maybe_prefixed_name = if name == quote {} {\n // Triggered when the param name is of a value available in the current scope (e.g. a function\n // argument) --> then we don't prefix the name with anything.\n param_name\n } else {\n // Triggered when we want to prefix the param name with the `name` from function input. This\n // can typically be `self` when implementing a method on a struct.\n quote { $name.$param_name }\n };\n generate_serialize_to_fields(quote {$maybe_prefixed_name}, param_type, should_pack)\n });\n let struct_flattened_fields = struct_flattened.fold(\n &[],\n |acc: [Quoted], (fields, _): (_, [Quoted])| acc.append(fields),\n );\n let struct_flattened_aux_vars = struct_flattened.fold(\n &[],\n |acc: [Quoted], (_, aux_vars): ([Quoted], _)| acc.append(aux_vars),\n );\n fields = fields.append(struct_flattened_fields);\n aux_vars = aux_vars.append(struct_flattened_aux_vars);\n } else if typ.as_array().is_some() {\n // For array we recursively call `generate_serialize_to_fields(...)` for each element\n let (element_type, array_len) = typ.as_array().unwrap();\n let array_len = array_len.as_constant().unwrap();\n for i in 0..array_len {\n let (element_fields, element_aux_vars) =\n generate_serialize_to_fields(quote { $name[$i] }, element_type, should_pack);\n fields = fields.append(element_fields);\n aux_vars = aux_vars.append(element_aux_vars);\n }\n } else if typ.as_str().is_some() {\n // For string we convert the value to bytes, we store the `as_bytes` in an auxiliary variables and\n // then we add each byte to fields as a Field\n let length_type = typ.as_str().unwrap();\n let str_len = length_type.as_constant().unwrap();\n let as_member = name.as_expr().unwrap().as_member_access();\n let var_name = if as_member.is_some() {\n as_member.unwrap().1\n } else {\n name\n };\n let as_bytes_name = f\"{var_name}_as_bytes\".quoted_contents();\n let as_bytes = quote { let $as_bytes_name = $name.as_bytes() };\n for i in 0..str_len {\n fields = fields.push_back(quote { $as_bytes_name[$i] as Field });\n }\n aux_vars = aux_vars.push_back(as_bytes);\n } else {\n panic(\n f\"Unsupported type for serialization of argument {name} and type {typ}\",\n )\n }\n\n (fields, aux_vars)\n}\n\n/// From a quote that gets tokenized to a multiple tokens we collapse it to a single token by replacing all `.` with `_`.\n/// E.g. \"self.values[0]\" -> \"self_values_0_\"\ncomptime fn collapse_to_one_token(q: Quoted) -> Quoted {\n let tokens = q.tokens();\n\n let mut single_token = quote {};\n for token in tokens {\n let new_token = if ((token == quote {.}) | (token == quote {[}) | (token == quote {]})) {\n quote {_}\n } else {\n token\n };\n single_token = f\"{single_token}{new_token}\".quoted_contents();\n }\n single_token\n}\n\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, false);\n let aux_vars_for_serialization = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let field_serializations = fields.join(quote {,});\n let serialized_len = fields.len();\n let serialize_trait: TraitConstraint =\n quote { Serialize<$serialized_len> }.as_trait_constraint();\n quote {\n impl $serialize_trait for $typ {\n #[inline_always]\n fn serialize(self) -> [Field; $serialized_len] {\n $aux_vars_for_serialization\n [ $field_serializations ]\n }\n }\n }\n}\n\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let (fields, _) = generate_serialize_to_fields(quote { self }, typ, false);\n let serialized_len = fields.len();\n let (deserialized, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { serialized }, 0, false);\n quote {\n impl Deserialize<$serialized_len> for $typ {\n #[inline_always]\n fn deserialize(serialized: [Field; $serialized_len]) -> Self {\n $deserialized\n }\n }\n }\n}\n\n/// Generates `Packable` implementation for a given struct and returns the packed length.\n///\n/// Note: We are having this function separate from `derive_packable` because we use this in the note macros to get\n/// the packed length of a note as well as the `Packable` implementation. We need the length to be able to register\n/// the note in the global `NOTES` map. There the length is used to generate partial note helper functions.\npub comptime fn derive_packable_and_get_packed_len(s: TypeDefinition) -> (Quoted, u32) {\n let packing_enabled = true;\n\n let typ = s.as_type();\n let (fields, aux_vars) = generate_serialize_to_fields(quote { self }, typ, packing_enabled);\n let aux_vars_for_packing = if aux_vars.len() > 0 {\n let joint = aux_vars.join(quote {;});\n quote { $joint; }\n } else {\n quote {}\n };\n\n let (unpacked, _) =\n generate_deserialize_from_fields(quote { self }, typ, quote { packed }, 0, packing_enabled);\n\n let field_packings = fields.join(quote {,});\n let packed_len = fields.len();\n let packable_trait: TraitConstraint = quote { Packable<$packed_len> }.as_trait_constraint();\n (\n quote {\n impl $packable_trait for $typ {\n fn pack(self) -> [Field; $packed_len] {\n $aux_vars_for_packing\n [ $field_packings ]\n }\n\n fn unpack(packed: [Field; $packed_len]) -> Self {\n $unpacked\n }\n }\n },\n packed_len,\n )\n}\n\npub(crate) comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let (packable_impl, _) = derive_packable_and_get_packed_len(s);\n packable_impl\n}\n\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct Smol {\n a: Field,\n b: Field,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct HasArray {\n a: [Field; 2],\n b: bool,\n}\n\n#[derive(Serialize, Deserialize, Eq)]\npub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n}\n\nfn main() {\n assert(false);\n}\n\n#[test]\nfn smol_test() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n}\n\n#[test]\nfn has_array_test() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n}\n\n#[test]\nfn fancier_test() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n}\n" + "319": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", + "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n // Q: shouldn't we be checking whether the _whole_ nullifier is empty?\n // A: We don't have to. The init and inner circuits add contract address to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n // Q: I don't understand this comment. We could still compute a siloed nullifier from a zero contract address.\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert_eq(input[in_len - remainder + i], 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" }, "320": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", - "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n fn pack(self) -> [Field; POINT_LENGTH] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; POINT_LENGTH]) -> Self {\n Self::deserialize(packed)\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", + "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" }, - "321": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", - "source": "use crate::constants::TWO_POW_64;\n\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" + "329": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", + "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" }, - "331": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", - "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] != 0,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] != 0,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] != 0,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] != 0,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n" + "333": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", + "source": "/// Generates the generic parameter declarations for a struct's trait implementation.\n///\n/// This function takes a struct type definition and generates the generic parameter declarations\n/// that go after the `impl` keyword. For example, given a struct with generics `N: u32` and `T`,\n/// it generates ``.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate generic declarations for\n///\n/// # Returns\n/// A quoted code block containing the generic parameter declarations, or an empty quote if the struct\n/// has no generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// This function generates:\n/// ```\n/// \n/// ```\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\n/// Generates the `where` clause for a trait implementation that constrains non-numeric generic type parameters.\n///\n/// This function takes a struct type definition and a trait name, and generates a `where` clause that\n/// requires all non-numeric generic type parameters to implement the specified trait.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the where clause for\n/// - `trait_name`: The name of the trait that non-numeric generic parameters must implement\n///\n/// # Returns\n/// A quoted code block containing the where clause, or an empty quote if the struct has no non-numeric\n/// generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// And trait name \"Serialize\", this function generates:\n/// ```\n/// where T: Serialize\n/// ```\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl Serialize for Log {\n/// let N: u32 = <[Field; N] as Serialize>::N + ::N;\n///\n/// #[inline_always]\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut result = [0; _];\n/// let mut offset = 0;\n///\n/// let serialized_member = Serialize::serialize(self.fields);\n/// let serialized_member_len = <[Field; N] as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// let serialized_member = Serialize::serialize(self.length);\n/// let serialized_member_len = ::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// result\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Serialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the serialized member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // For multiple struct members, generate serialization code that:\n // 1. Serializes each member\n // 2. Copies the serialized fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let serialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let serialized_member = $crate::traits::Serialize::serialize(self.$param_name);\n let serialized_member_len = <$param_type as $crate::traits::Serialize>::N;\n for i in 0..serialized_member_len {\n result[i + offset] = serialized_member[i];\n }\n offset += serialized_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; _];\n let mut offset = 0;\n\n $serialization_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Serialize::serialize(self.$param_name)\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = ::N + ::N;\n///\n/// fn deserialize(serialized: [Field; Self::N]) -> Self {\n/// let mut offset = 0;\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let x = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let y = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Deserialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as Deserialize>::N];\n for i in 0..<$param_type as Deserialize>::N {\n member_fields[i] = serialized[i + offset];\n }\n let $param_name = <$param_type as Deserialize>::deserialize(member_fields);\n offset += <$param_type as Deserialize>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Deserialize::deserialize(serialized) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Packable` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Packable` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Packable for MyStruct {\n/// let N: u32 = 2;\n///\n/// fn pack(self) -> [Field; 2] {\n/// let mut result: [Field; 2] = [0_Field; 2];\n/// let mut offset: u32 = 0_u32;\n/// let packed_member: [Field; 1] = self.x.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// let packed_member: [Field; 1] = self.y.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// result\n/// }\n///\n/// fn unpack(packed: [Field; 2]) -> Self {\n/// let mut offset: u32 = 0_u32;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let x: AztecAddress = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let y: Field = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// Self { x: x, y: y }\n/// }\n/// }\n/// ```\npub comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Packable` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_packable_clause = get_where_trait_clause(s, quote {Packable});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Packable>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the packed member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let pack_function_body = if params.len() > 1 {\n // For multiple struct members, generate packing code that:\n // 1. Packs each member\n // 2. Copies the packed fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let packing_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let packed_member = $crate::traits::Packable::pack(self.$param_name);\n let packed_member_len = <$param_type as $crate::traits::Packable>::N;\n for i in 0..packed_member_len {\n result[i + offset] = packed_member[i];\n }\n offset += packed_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; Self::N];\n let mut offset = 0;\n\n $packing_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Packable::pack(self.$param_name)\n }\n };\n\n // For structs containing a single member, we can enhance performance by directly unpacking the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let unpack_function_body = if params.len() > 1 {\n // For multiple struct members, generate unpacking code that:\n // 1. Unpacks each member\n // 2. Copies packed fields into member array at correct offset\n // 3. Updates offset for next member\n let unpacking_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as $crate::traits::Packable>::N];\n for i in 0..<$param_type as $crate::traits::Packable>::N {\n member_fields[i] = packed[i + offset];\n }\n let $param_name = <$param_type as $crate::traits::Packable>::unpack(member_fields);\n offset += <$param_type as $crate::traits::Packable>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n $unpacking_of_struct_members\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Packable::unpack(packed) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Packable for $typ\n $where_packable_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n $pack_function_body\n }\n\n #[inline_always]\n fn unpack(packed: [Field; Self::N]) -> Self {\n $unpack_function_body\n }\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Packable, Serialize};\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Smol {\n a: Field,\n b: Field,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct HasArray {\n a: [Field; 2],\n b: bool,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n }\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct HasArrayWithGenerics {\n pub fields: [T; N],\n pub length: u32,\n }\n\n #[test]\n fn serde_on_smol() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n }\n\n #[test]\n fn serde_on_has_array() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n }\n\n #[test]\n fn serde_on_fancier() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n }\n\n #[test]\n fn serde_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let serialized = struct_with_array_of_generics.serialize();\n assert(serialized == [1, 2, 3, 3], serialized);\n let deserialized = HasArrayWithGenerics::deserialize(serialized);\n assert(deserialized == struct_with_array_of_generics);\n }\n\n #[test]\n fn packable_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let packed = struct_with_array_of_generics.pack();\n assert(packed == [1, 2, 3, 3], packed);\n\n let unpacked = HasArrayWithGenerics::unpack(packed);\n assert(unpacked == struct_with_array_of_generics);\n }\n\n}\n" }, - "335": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_delay_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_timestamp_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading mutable shared state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" + "334": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", + "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn serialize(self: Self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n let N: u32 = POINT_LENGTH;\n\n fn pack(self) -> [Field; Self::N] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n Self::deserialize(packed)\n }\n}\n" }, - "337": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/scheduled_value_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'timestamp horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the timestamp horizon (see `get_timestamp_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the timestamp horizon\n /// computed using the same historical timestamp.\n pub fn get_timestamp_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The timestamp horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the timestamp horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the timestamp horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our timestamp horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp timestamp horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the timestamp horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp timestamp horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical timestamp horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" + "335": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", + "source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" }, - "339": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/shared_mutable/shared_mutable_values.nr", - "source": "use crate::{\n hash::poseidon2_hash,\n shared_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// SharedMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct SharedMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl SharedMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n SharedMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * N + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, N + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable<2 * N + 1> for SharedMutableValues\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; 2 * N + 1] {\n let mut result = [0; 2 * N + 1];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; 2 * N + 1]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for SharedMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" + "345": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", + "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::{default::Default, meta::derive};\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nmod test {\n use crate::{\n point::POINT_LENGTH,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Serialize},\n };\n use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\n #[test]\n unconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n }\n\n #[test]\n unconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash =\n 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n }\n\n #[test]\n unconstrained fn serde() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n // We use the PUBLIC_KEYS_LENGTH constant to ensure that there is a match between the derived trait\n let serialized: [Field; POINT_LENGTH * 4] = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys, deserialized);\n }\n}\n" }, - "342": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", + "347": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" }, - "356": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", - "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n}\n\nimpl Empty for Option {\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\npub fn is_empty(item: T) -> bool\nwhere\n T: Empty + Eq,\n{\n item.eq(T::empty())\n}\n\npub fn is_empty_array(array: [T; N]) -> bool\nwhere\n T: Empty + Eq,\n{\n array.all(|elem| is_empty(elem))\n}\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Type Parameters\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// fn serialize(self) -> [Field; N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n #[inline_always]\n fn serialize(self) -> [Field; N] {\n let bytes = self.as_bytes();\n let mut fields = [0; N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n// T = type of item in BoundedVec\n// M = max length of BoundedVec\n// O = field length of T\n// O * M + 1 = total serialized length of BoundedVec (the +1 is for length of the BoundedVec)\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n #[inline_always]\n fn deserialize(fields: [Field; O * M + 1]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[O * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; O];\n for j in 0..O {\n nested_fields[j] = fields[i * O + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize<0> for () {\n fn deserialize(_fields: [Field; 0]) -> Self {\n ()\n }\n}\n\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n #[inline_always]\n fn serialize(self) -> [Field; O * M + 1] {\n let mut fields = [0; O * M + 1];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..O {\n fields[i * O + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[O * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Type Parameters\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// fn deserialize(fields: [Field; N]) -> Self {\n/// str::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n #[inline_always]\n fn deserialize(fields: [Field; N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Type Parameters\n/// * `N` - The length of the Field array, known at compile time.\n#[derive_via(derive_packable)]\npub trait Packable {\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" - }, - "361": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", - "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n fn pack(self) -> [Field; BOOL_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; BOOL_PACKED_LEN]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n fn pack(self) -> [Field; U8_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U8_PACKED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n fn pack(self) -> [Field; U16_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U16_PACKED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n fn pack(self) -> [Field; U32_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U32_PACKED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n fn pack(self) -> [Field; U64_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U64_PACKED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n fn pack(self) -> [Field; U128_PACKED_LEN] {\n [self as Field]\n }\n\n fn unpack(fields: [Field; U128_PACKED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n fn pack(self) -> [Field; FIELD_PACKED_LEN] {\n [self]\n }\n\n fn unpack(fields: [Field; FIELD_PACKED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n fn pack(self) -> [Field; I8_PACKED_LEN] {\n [self as u8 as Field]\n }\n\n fn unpack(fields: [Field; I8_PACKED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n fn pack(self) -> [Field; I16_PACKED_LEN] {\n [self as u16 as Field]\n }\n\n fn unpack(fields: [Field; I16_PACKED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n fn pack(self) -> [Field; I32_PACKED_LEN] {\n [self as u32 as Field]\n }\n\n fn unpack(fields: [Field; I32_PACKED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n fn pack(self) -> [Field; I64_PACKED_LEN] {\n [self as u64 as Field]\n }\n\n fn unpack(fields: [Field; I64_PACKED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; N]\nwhere\n T: Packable,\n{\n fn pack(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].pack();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n\n fn unpack(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" + "360": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", + "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty(self, msg: str) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty(self, msg: str) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl Empty for Option\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; Self::N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let bytes = self.as_bytes();\n let mut fields = [0; Self::N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n/// Implementation of Deserialize for BoundedVec.\n///\n/// This implementation deserializes a BoundedVec from an array of Fields. The array contains:\n/// 1. The serialized items, each taking up T::N Fields\n/// 2. The length of the BoundedVec as the last Field\n///\n/// # Type Parameters\n/// * `T` - The type of items stored in the BoundedVec, must implement Deserialize\n/// * `M` - The maximum length of the BoundedVec\n///\n/// # Fields Array Layout\n/// [item1_field1, item1_field2, ..., item2_field1, item2_field2, ..., length]\n/// Where:\n/// - itemN_fieldM: The M-th Field of the N-th item (T::N Fields per item)\n/// - length: The number of items in the BoundedVec (1 Field)\n///\n/// Total length N = T::N * M + 1, where:\n/// - T::N is the number of Fields needed to deserialize one item\n/// - M is the maximum length of the BoundedVec\n/// - +1 is for storing the length\n///\n/// # Note\n/// Not deriving this because it's not supported to call derive_deserialize on a \"remote\" struct (and it will never\n/// be supported).\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[::N * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; ::N];\n for j in 0..::N {\n nested_fields[j] = fields[i * ::N + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(_fields: [Field; Self::N]) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M + 1; // +1 for the length of the BoundedVec\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut fields = [0; Self::N];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..::N {\n fields[i * ::N + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[::N * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// let N: u32 = M;\n///\n/// #[inline_always]\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// str::::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" }, "362": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", - "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n fn serialize(self) -> [Field; U8_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n fn serialize(self) -> [Field; U16_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n fn deserialize(fields: [Field; U16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n fn serialize(self) -> [Field; U128_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n fn serialize(self) -> [Field; FIELD_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n fn serialize(self) -> [Field; I8_SERIALIZED_LEN] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n fn deserialize(fields: [Field; I8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n fn serialize(self) -> [Field; I16_SERIALIZED_LEN] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n fn deserialize(fields: [Field; I16_SERIALIZED_LEN]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n fn serialize(self) -> [Field; I32_SERIALIZED_LEN] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n fn deserialize(fields: [Field; I32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n fn serialize(self) -> [Field; I64_SERIALIZED_LEN] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n fn deserialize(fields: [Field; I64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; N]\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N * M] {\n let mut result: [Field; N * M] = std::mem::zeroed();\n let mut serialized: [Field; M] = std::mem::zeroed();\n for i in 0..N {\n serialized = self[i].serialize();\n for j in 0..M {\n result[i * M + j] = serialized[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; N]\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N * M]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; N] = std::mem::zeroed();\n reader.read_struct_array::(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n fn serialize(self) -> [Field; N + 1] {\n let mut result: [Field; N + 1] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n fn deserialize(fields: [Field; N + 1]) -> Self {\n if fields[0] == 1 {\n let mut value_serialized: [Field; N] = std::mem::zeroed();\n for i in 0..N {\n value_serialized[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_serialized))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", + "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * ::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..::N {\n result[i * ::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" }, - "380": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", - "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate. If the element\n// is not found, the function returns N as the index.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays where validate_array(array) returns true,\n// which ensures that:\n// 1. All elements before the first empty element are non-empty\n// 2. All elements after and including the first empty element are empty\n// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn array_concat(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n// Helper fn to create a subarray from a given array\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to find the index of the last element in an array, allowing empty elements.\n// e.g. useful for removing trailing 0s from [1, 0, 2, 0, 0, 0] -> [1, 0, 2]\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn find_last_value_index(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut index = N;\n for i in 0..N {\n let j = N - i - 1;\n // We check `index == N` to ensure that we only update the index if we haven't found a match yet.\n if (index == N) & !is_empty(array[j]) {\n index = j;\n }\n }\n index\n}\n\n// Routine which returns the length of an array right padded by empty elements\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\n// See smoke_validate_array_trailing for examples.\n// Nothing to do with validated arrays. Correctness constrained by padded_array_length.\npub unconstrained fn unsafe_padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let index = find_last_value_index(array);\n if index == N {\n 0\n } else {\n index + 1\n }\n}\n\n// Routine which validates that zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where * is any value (zeroes allowed).\npub fn padded_array_length(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n // Safety: this value is constrained in the below loop.\n let length = unsafe { unsafe_padded_array_length(array) };\n // Check the elt just before length is non-zero:\n if length != 0 {\n assert(!is_empty(array[length - 1]), \"invalid right padded array\");\n }\n // Check all beyond length are zero:\n let mut check_zero = false;\n for i in 0..N {\n check_zero |= i == length;\n if check_zero {\n assert(is_empty(array[i]), \"invalid right padded array\");\n }\n }\n length\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test]\nfn smoke_validate_array_trailing() {\n let valid_array: [Field; 0] = [];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [0];\n assert(padded_array_length(valid_array) == 0);\n\n let valid_array = [3];\n assert(padded_array_length(valid_array) == 1);\n\n let valid_array = [1, 0, 3];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 0, 3, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n\n let valid_array = [0, 0, 3, 0, 0];\n assert(padded_array_length(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concatenated = array_concat(array0, array1);\n assert_eq(concatenated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" + "363": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", + "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; _] = std::mem::zeroed();\n for i in 0..M {\n let serialized_t = self[i].serialize();\n for j in 0..::N {\n result[i * ::N + j] = serialized_t[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..::N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n if fields[0] == 1 {\n let mut value_fields = [0; ::N];\n for i in 0..::N {\n value_fields[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_fields))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" }, - "381": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", - "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimised to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" + "379": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", + "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod find_index;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped,\n assert_array_appended_reversed_to_empty_dest, assert_array_appended_reversed_up_to_some_length,\n assert_array_appended_scoped, assert_array_appended_to_empty_dest,\n assert_array_appended_to_empty_dest_and_scoped, assert_array_appended_to_empty_dest_scoped,\n};\npub use assert_array_prepended::{assert_array_prepended, assert_array_prepended_up_to_some_length};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use find_index::{find_first_index, find_last_index};\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use get_sorted_tuple::{get_sorted_tuple, SortedTuple};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Deserialize, Empty, Serialize};\nuse super::for_loop::{for_i_in_0_, for_i_only_in_0_};\n\n//**********************************************************************************\n// ARRAY\n//**********************************************************************************\n\n// TODO: Consider making this a part of the noir stdlib.\npub fn subarray(\n src: [Field; SrcLen],\n offset: u32,\n) -> [Field; DstLen] {\n let mut dst: [Field; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper fn to create a subarray from a given array\n// TODO: rename to `slice`. This is not a splice.\n// TODO: looks very similar to `subarray` above.\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n if find(array[i]) {\n index = Option::some(i);\n break;\n }\n }\n index\n}\n\n// Helper function to find the index of the first element (starting from the back) of an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint_in_reverse(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n let j = N - i - 1;\n if find(array[j]) {\n index = Option::some(j);\n break;\n }\n }\n index\n}\n\n//**********************************************************************************\n// FREE ARRAY FUNCTIONS (to deprecate or make into methods of array wrappers)\n//**********************************************************************************\n\n/// Deprecated.\n///\n/// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n/// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n/// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if array[i].is_empty() {\n seen_empty = true;\n } else {\n assert_eq(seen_empty, false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n/// Deprecated.\n///\n/// Helper function to count the number of non-empty elements in a validated array.\n/// Important: Only use it for validated arrays where validate_array(array) returns true,\n/// which ensures that:\n/// 1. All elements before the first empty element are non-empty\n/// 2. All elements after and including the first empty element are empty\n/// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let maybe_length = unsafe { find_index_hint(array, |elem: T| elem.is_empty()) };\n\n let mut length = N;\n if maybe_length.is_some() {\n length = maybe_length.unwrap_unchecked();\n\n array[length].assert_empty(\"Expected array empty\");\n\n if length != 0 {\n assert(!array[length - 1].is_empty());\n }\n }\n\n length\n}\n\n// Returns an array length defined by fully trimming _all_ \"empty\" items\n// from the RHS.\npub unconstrained fn trimmed_array_length_hint(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let maybe_index_of_last_nonempty =\n find_index_hint_in_reverse(array, |elem: T| !elem.is_empty());\n let length: u32 = if maybe_index_of_last_nonempty.is_some() {\n 1 + maybe_index_of_last_nonempty.unwrap_unchecked()\n } else {\n 0\n };\n length\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n/// Helper function to convert a validated array to BoundedVec.\n/// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n//**********************************************************************************\n// ARRAY WRAPPERS\n//**********************************************************************************\n\n/*\n *\n *\n * \n * |-----------------------------------------|------------------------------| \n * | LHS | RHS |\n * |-----------------------------------------|------------------------------|\n * ClaimedLengthArray | Interspersed 0s possible. | Unvalidated. |\n * | Possibly not fully trimmed. | Nonempty elements possible. |\n * |-----------------------------------------|------------------------------|\n * EmptyRHSArray | Interspersed 0s possible. | All 0s (validated). |\n * | Possibly not fully trimmed. | |\n * |-----------------------------------------|------------------------------|\n * TrimmedArray | Interspersed 0s possible. | All 0s (validated) |\n * | Last lhs element validated as nonempty. | |\n * | (I.e. fully trimmed) | |\n * |-----------------------------------------|------------------------------|\n * DenseTrimmedArray | Dense (validated). | All 0s (validated) |\n * |-----------------------------------------|------------------------------|\n *\n *\n * | What guarantees do we have? |\n * |--------|--------|--------------------------------| \n * | Dense? | RHS | Length vs Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n * ClaimedLengthArray | ? | ? | ? |\n * | | | |\n * |--------|--------|--------------------------------|\n * EmptyRHSArray | ? | All 0s | Length >= Fully Trimmed Length |\n * | | | |\n * |--------|--------|--------------------------------|\n * TrimmedArray | ? | All 0s | Length == Fully Trimmed Length |\n * | | | |\n * | | | |\n * |--------|--------|--------------------------------|\n * DenseTrimmedArray | Yes | All 0s | Length == Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n *\n *\n * An ClaimedLengthArray is distinct from a regular array [T; N], because it carries a length.\n * \n */\n\n/// ClaimedLengthArray - An array interpreted by Kernel circuits.\n/// Its `length` is merely a claim that must eventually be validated.\n/// Validation must include:\n/// - Asserting all items to the LHS of the length are nonempty (dense).\n/// - Asserting all items to the RHS of the length are empty.\n#[derive(Deserialize, Serialize)]\npub struct ClaimedLengthArray {\n pub array: [T; N],\n pub length: u32,\n}\n\nimpl ClaimedLengthArray\nwhere\n T: Empty,\n{\n // No constructor. Append to an empty one.\n\n // For constrained append functions, see the dedicated file: assert_array_appended.nr\n\n pub fn push(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub fn assert_dense_trimmed(self) {\n for_i_in_0_(\n self.length,\n self.array.len(),\n |i| {\n assert(!self.array[i].is_empty(), \"LHS of input array is not dense\")\n // Requires Noir #9002:\n // self.array[i].assert_not_empty(\"LHS of input array is not dense\"); // LHS of input array is not dense.\n },\n |i| self.array[i].assert_empty(\"RHS of input array is not empty\"),\n false,\n );\n }\n\n pub fn assert_empty(self, msg: str) {\n for i in 0..N {\n self.array[i].assert_empty(msg);\n }\n assert_eq(self.length, 0);\n }\n\n pub unconstrained fn push_hint(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let mut next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub unconstrained fn pop_hint(&mut self) -> T {\n assert(self.length != 0, \"Array empty\");\n\n let mut top_index = self.length - 1;\n let popped_item = self.array[top_index];\n self.array[top_index] = T::empty();\n self.length -= 1;\n popped_item\n }\n\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(self.length, self.array.len(), |i| f(self.array[i]), false);\n }\n\n // E.g.\n // dest.for_each_i(|source_item, i| { assert_eq(dest.array[i], source_item, \"bad copy\"); })\n pub fn for_each_i(self, f: fn[Env](T, u32) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(\n self.length,\n self.array.len(),\n |i| f(self.array[i], i),\n false,\n );\n }\n\n pub fn from_bounded_vec(vec: BoundedVec) -> Self {\n Self { array: vec.storage(), length: vec.len() }\n }\n}\n\n// TODO: compiler bug. No idea why this is needed, if we have #[derive(Eq)] above the struct definition.\nimpl Eq for ClaimedLengthArray\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.array == other.array) & (self.length == other.length)\n }\n}\n\nimpl Empty for ClaimedLengthArray\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { array: [T::empty(); N], length: 0 }\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.unwrap_unchecked(), 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.is_none(), true);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" }, - "383": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", - "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n" + "380": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", + "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimized to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" }, - "393": { - "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.1.2/src/sha256.nr", - "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\nmod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n let num_blocks = N / BLOCK_SIZE;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n }\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = INITIAL_STATE;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let (msg_block, _) = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let (new_msg_block, new_msg_byte_ptr) = build_msg_block(msg, message_size, msg_start);\n\n (new_msg_block, new_msg_byte_ptr)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" + "383": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", + "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n" }, - "414": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", - "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n utils::arrays::array_concat,\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[custom_note]\n#[derive(Eq, Serialize)]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` from `sender` so that they can\n /// discover the note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n sender: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient, sender);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n array_concat(self.pack(), [storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n array_concat(note_completion_log, padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{\n address::AztecAddress,\n traits::{FromField, Packable},\n utils::arrays::array_concat,\n },\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n let partial_note = PartialUintNote { commitment };\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(\n array_concat(private_log_without_public_tag, public_log_without_tag),\n note.pack(),\n );\n }\n}\n" + "399": { + "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.2.1/src/sha256.nr", + "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks::(message_size, h, msg_block)\n }\n}\n\npub(crate) unconstrained fn __sha_var(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, message_size, msg)\n}\n\n// Helper function to finalize the message block with padding and length\npub(crate) unconstrained fn finalize_last_sha256_block(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n (new_msg_block, modulo)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n __sha_var(msg, message_size, INITIAL_STATE)\n}\n\npub(crate) fn process_full_blocks(\n msg: [u8; N],\n message_size: u32,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [h; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n // verify the 0 padding is correct for the last block\n let final_block = blocks[first_partially_filled_block_index];\n verify_msg_block_zeros(final_block, message_size % BLOCK_SIZE, INT_BLOCK_SIZE);\n (states[first_partially_filled_block_index], final_block)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) {\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = msg_item << 8;\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n }\n }\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, 0);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], 0);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = msg_item << 8;\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u32) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = (item << 8) + b1 as u32;\n item = (item << 8) + b2 as u32;\n item = (item << 8) + b3 as u32;\n item\n}\n\nglobal BIT_SHIFT_TABLE: [u32; 4] = [1, TWO_POW_8, TWO_POW_16, TWO_POW_24];\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item * BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\n#[inline_always]\nfn rshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n if shifts >= 4 {\n 0\n } else {\n item >> (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item / BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n msg_block[INT_SIZE_PTR] = (len_bytes[0] as u32) << 24\n | (len_bytes[1] as u32) << 16\n | (len_bytes[2] as u32) << 8\n | (len_bytes[3] as u32);\n\n msg_block[INT_SIZE_PTR + 1] = (len_bytes[4] as u32) << 24\n | (len_bytes[5] as u32) << 16\n | (len_bytes[6] as u32) << 8\n | (len_bytes[7] as u32);\n\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n std::static_assert(\n INT_SIZE_PTR + 2 == INT_BLOCK_SIZE,\n \"INT_SIZE_PTR + 2 must equal INT_BLOCK_SIZE\",\n );\n let reconstructed_len_hi = msg_block[INT_SIZE_PTR] as Field;\n let reconstructed_len_lo = msg_block[INT_SIZE_PTR + 1] as Field;\n\n let reconstructed_len: Field =\n reconstructed_len_hi * TWO_POW_32 as Field + reconstructed_len_lo;\n let len = 8 * (message_size as Field);\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let mut msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n // Safety: separate verification function\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (mut h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks::(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" }, "42": { "path": "std/option.nr", "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" }, + "420": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", + "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[derive(Eq, Serialize, Packable)]\n#[custom_note]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n pub fn get_owner(self) -> AztecAddress {\n self.owner\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` so that they can discover the\n /// note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n self.pack().concat([storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n note_completion_log.concat(padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{address::AztecAddress, traits::{Deserialize, FromField, Packable}},\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n // The following is a misuse of the `deserialize` function, but this is just a test and it's better than\n // letting devs manually construct it when they shouldn't be able to.\n let partial_note = PartialUintNote::deserialize([commitment]);\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(private_log_without_public_tag.concat(public_log_without_tag), note.pack());\n }\n}\n" + }, "43": { "path": "std/panic.nr", "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" }, "5": { "path": "std/cmp.nr", - "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n}\n" + "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n if result {\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let self_len = self.len();\n let other_len = other.len();\n let min_len = if self_len < other_len {\n self_len\n } else {\n other_len\n };\n\n let mut result = Ordering::equal();\n for i in 0..min_len {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n\n if result != Ordering::equal() {\n result\n } else {\n self_len.cmp(other_len)\n }\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use super::{Eq, max, min, Ord};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n\n #[test]\n fn correctly_handles_unequal_length_slices() {\n let slice_1 = &[0, 1, 2, 3];\n let slice_2 = &[0, 1, 2];\n assert(!slice_1.eq(slice_2));\n }\n\n #[test]\n fn lexicographic_ordering_for_slices() {\n assert(&[2_u32].cmp(&[1_u32, 1_u32, 1_u32]) == super::Ordering::greater());\n assert(&[1_u32, 2_u32].cmp(&[1_u32, 2_u32, 3_u32]) == super::Ordering::less());\n }\n}\n" }, "50": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", @@ -12913,63 +13029,67 @@ }, "51": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", - "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n use dep::aztec::messages::logs::note::encode_and_encrypt_note;\n use dep::aztec::protocol_types::traits::{Deserialize, Packable, Serialize};\n use dep::aztec::state_vars::{private_immutable::PrivateImmutable, SharedMutable};\n use dep::sha256;\n use dep::token::Token;\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n use aztec::prelude::{AztecAddress, Map};\n use std::meta::derive;\n\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner, htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(\n htlc_public.src_receiver,\n htlc_public.src_receiver,\n )\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender(), context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(Id: Field) -> bool {\n storage.contracts_private.at(Id).is_initialized()\n }\n\n #[view]\n #[utility]\n unconstrained fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" + "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use std::meta::derive;\n\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n\n use dep::aztec::{\n messages::logs::note::encode_and_encrypt_note,\n protocol_types::{address::AztecAddress, traits::{Deserialize, Packable, Serialize}},\n state_vars::{DelayedPublicMutable, map::Map, private_immutable::PrivateImmutable},\n };\n use dep::sha256;\n use dep::token::Token;\n\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n #[derive(Packable)]\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_public.src_receiver)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(id: Field) -> bool {\n storage.contracts_private.at(id).is_initialized()\n }\n\n #[view]\n #[public]\n fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" }, "52": { "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", - "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::prelude::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenCommitted {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable<5> for TokenLockAdded {\n fn pack(self) -> [Field; 5] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; 5]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable<2> for TokenRefunded {\n fn pack(self) -> [Field; 2] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; 2]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable<6> for TokenRedeemed {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable<12> for TokenLockedFirst {\n fn pack(self) -> [Field; 12] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; 12]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable<6> for TokenLockedSecond {\n fn pack(self) -> [Field; 6] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; 6]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" + "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::protocol_types::address::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenCommitted {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable for TokenLockAdded {\n let N: u32 = 5;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable for TokenRefunded {\n let N: u32 = 2;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable for TokenRedeemed {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenLockedFirst {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable for TokenLockedSecond {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" }, "6": { "path": "std/collections/bounded_vec.nr", - "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n crate::println(vec.get(0));\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n}\n" + "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_slice() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec = BoundedVec::new();\n let mut vec2: BoundedVec = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_slice out of bounds\")]\n fn extend_slice_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n let other: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_slice(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n" }, "63": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", - "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n use protocol_types::address::AztecAddress;\n\n global SLOT: Field = 1230;\n\n unconstrained fn setup() -> AztecAddress {\n TestEnvironment::new().utility().this_address()\n }\n\n #[test]\n unconstrained fn empty_array() {\n let contract_address = setup();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n }\n\n #[test]\n unconstrained fn array_push() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let contract_address = setup();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let contract_address = setup();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n }\n\n // TODO: uncomment this test once OracleMock::count is implemented in the stdlib.\n // #[test]\n // unconstrained fn for_each_remove_all_no_copy() {\n // let contract_address = setup();\n // let array = CapsuleArray::at(contract_address, SLOT);\n\n // array.push(4);\n // array.push(5);\n // array.push(6);\n\n // // We test that the copyCapsule was never called, which is the expensive operation we want to avoid.\n // let mock = OracleMock::mock(\"copyCapsule\");\n\n // array.for_each(|index, _| {\n // array.remove(index);\n // });\n\n // assert_eq(mock.count(), 0);\n // }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", + "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n\n global SLOT: Field = 1230;\n\n #[test]\n unconstrained fn empty_array() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n });\n }\n\n #[test]\n unconstrained fn array_push() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n });\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n });\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all_no_copy() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We test that the utilityCopyCapsule was never called, which is the expensive operation we want to avoid.\n let mock = std::test::OracleMock::mock(\"utilityCopyCapsule\");\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(mock.times_called(), 0);\n });\n }\n}\n" }, "64": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{\n gas::GasOpts, private_context::PrivateContext, public_context::PublicContext,\n returns_hash::ReturnsHash,\n};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\nuse crate::test::helpers::cheatcodes;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateVoidCallInterface\n\npub struct PrivateVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticVoidCallInterface\n\npub struct PrivateStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl PrivateStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args, self.args_hash);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl CallInterface for PrivateStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicVoidCallInterface\n\npub struct PublicVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticVoidCallInterface\n\npub struct PublicStaticVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\n// UtilityVoidCallInterface\n\npub struct UtilityVoidCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityVoidCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityVoidCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n\npub trait TXEPublicCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPublicCallInterface for PublicCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPublicCallInterface for PublicStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let (returns_hash, tx_hash) = cheatcodes::public_call_new_flow(\n from,\n self.target_contract,\n self.selector,\n self.args,\n self.is_static,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEPrivateCallInterface {\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field);\n}\n\nimpl TXEPrivateCallInterface for PrivateCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_end_side_effect_counter, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage();\n\n (returns, tx_hash)\n }\n}\n\nimpl TXEPrivateCallInterface for PrivateStaticVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self, from: AztecAddress) -> (T, Field) {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let (_, returns_hash, tx_hash) = cheatcodes::private_call_new_flow(\n from,\n self.get_contract_address(),\n self.get_selector(),\n args,\n args_hash,\n self.get_is_static(),\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n\n (returns, tx_hash)\n }\n}\n\npub trait TXEUtilityCallInterface {\n unconstrained fn call_with_txe(self) -> T;\n}\n\nimpl TXEUtilityCallInterface for UtilityCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns: T = ReturnsHash::new(returns_hash).get_preimage();\n returns\n }\n}\n\nimpl TXEUtilityCallInterface for UtilityVoidCallInterface\nwhere\n T: Deserialize,\n{\n unconstrained fn call_with_txe(self) -> T {\n let args = self.get_args();\n let args_hash = hash_args(args);\n execution_cache::store(args, args_hash);\n\n let returns_hash = crate::oracle::simulate_utility_function::simulate_utility_function(\n self.get_contract_address(),\n self.get_selector(),\n args_hash,\n );\n\n let returns = ReturnsHash::new(returns_hash).get_preimage_and_assert_empty();\n returns\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n /// Makes the call to this private function.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (see https://github.com/AztecProtocol/aztec-packages/pull/16433)\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n\n /// Makes a _read-only_ call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// See `call` for more general info on private function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n /// Makes a read-only call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the call to this public function.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Makes a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a call to this public function, to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n /// Enqueues a call to this public function, and designates it to be the\n /// teardown function for this tx. Only one teardown function call can be\n /// made by a tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a hefty function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n /// See `enqueue` for more information about enqueuing public function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n" }, "71": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", - "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n include_by_timestamp::IncludeByTimestamp,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::array_concat,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: IncludeByTimestamp,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp =\n IncludeByTimestamp::min_with_u64(self.include_by_timestamp, include_by_timestamp);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n ReturnsHash::new(returns_hash)\n }\n\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let calldata = array_concat([function_selector.to_field()], args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: IncludeByTimestamp::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", + "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n logs::notify_created_contract_class_log,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, MAX_CONTRACT_CLASS_LOGS_PER_CALL,\n MAX_ENQUEUED_CALLS_PER_CALL, MAX_INCLUDE_BY_TIMESTAMP_DURATION,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::poseidon2_hash,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::{ClaimedLengthArray, trimmed_array_length_hint},\n};\n\n/// # PrivateContext\n///\n/// The **main interface** between a #[private] function and the Aztec blockchain.\n///\n/// An instance of the PrivateContext is initialized automatically at the outset\n/// of every private function, within the #[private] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it is always be available within\n/// the body of every #[private] function in your smart contract.\n///\n/// > For those used to \"vanilla\" Noir, it might be jarring to have access to\n/// > `context` without seeing a declaration `let context = PrivateContext::new(...)`\n/// > within the body of your function. This is just a consequence of using\n/// > macros to tidy-up verbose boilerplate. You can use `nargo expand` to\n/// > expand all macros, if you dare.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PrivateContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// > Advanced users might occasionally wish to push data to the context\n/// > directly for lower-level control. If you find yourself doing this, please\n/// > open an issue on GitHub to describe your use case: it might be that\n/// > new functionality should be added to aztec-nr.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a private function:\n/// - Data relating to how this private function was called.\n/// - msg_sender\n/// - this_address - (the contract address of the private function being\n/// executed)\n/// - See `CallContext` for more data.\n/// - Data relating to the transaction in which this private function is\n/// being executed.\n/// - chain_id\n/// - version\n/// - gas_settings\n/// - Provides state access:\n/// - Access to the \"Anchor block\" header.\n/// Recall, a private function cannot read from the \"current\" block header,\n/// but must read from some historical block header, because as soon as\n/// private function execution begins (asynchronously, on a user's device),\n/// the public state of the chain (the \"current state\") will have progressed\n/// forward. We call this reference the \"Anchor block\".\n/// See `BlockHeader`.\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to functions of other smart contracts:\n/// - Private function calls\n/// - Enqueueing of public function call requests\n/// (Since public functions are executed at a later time, by a block\n/// proposer, we say they are \"enqueued\").\n/// - Writes data to the blockchain:\n/// - New notes\n/// - New nullifiers\n/// - Private logs (for sending encrypted note contents or encrypted events)\n/// - New L2->L1 messages.\n/// - Provides args to the private function (handled by the #[private] macro).\n/// - Returns the return values of this private function (handled by the\n/// #[private] macro).\n/// - Makes Key Validation Requests.\n/// - Private functions are not allowed to see master secret keys, because we\n/// do not trust them. They are instead given \"app-siloed\" secret keys with\n/// a claim that they relate to a master public key. They can then request\n/// validation of this claim, by making a \"key validation request\" to the\n/// protocol's kernel circuits (which _are_ allowed to see certain master\n/// secret keys).\n///\n/// ## Advanced Responsibilities\n///\n/// - Ultimately, the PrivateContext is responsible for constructing the\n/// PrivateCircuitPublicInputs of the private function being executed.\n/// All private functions on Aztec must have public inputs which adhere\n/// to the rigid layout of the PrivateCircuitPublicInputs, in order to be\n/// compatible with the protocol's kernel circuits.\n/// A well-known misnomer:\n/// - \"public inputs\" contain both inputs and outputs of this function.\n/// - By \"outputs\" we mean a lot more side-effects than just the\n/// \"return values\" of the function.\n/// - Most of the so-called \"public inputs\" are kept _private_, and never leak\n/// to the outside world, because they are 'swallowed' by the protocol's\n/// kernel circuits before the tx is sent to the network. Only the\n/// following are exposed to the outside world:\n/// - New note_hashes\n/// - New nullifiers\n/// - New private logs\n/// - New L2->L1 messages\n/// - New enqueued public function call requests\n/// All the above-listed arrays of side-effects can be padded by the\n/// user's wallet (through instructions to the kernel circuits, via the\n/// PXE) to obscure their true lengths.\n///\n/// ## Syntax Justification\n///\n/// Both user-defined functions _and_ most functions in aztec-nr need access to\n/// the PrivateContext instance to read/write data. This is why you'll see the\n/// arguably-ugly pervasiveness of the \"context\" throughout your smart contract\n/// and the aztec-nr library.\n/// For example, `&mut context` is prevalent. In some languages, you can access\n/// and mutate a global variable (such as a PrivateContext instance) from a\n/// function without polluting the function's parameters. With Noir, a function\n/// must explicitly pass control of a mutable variable to another function, by\n/// reference. Since many functions in aztec-nr need to be able to push new data\n/// to the PrivateContext, they need to be handed a mutable reference _to_ the\n/// context as a parameter.\n/// For example, `Context` is prevalent as a generic parameter, to give better\n/// type safety at compile time. Many `aztec-nr` functions don't make sense if\n/// they're called in a particular runtime (private, public or utility), and so\n/// are intentionally only implemented over certain\n/// [Private|Public|Utility]Context structs. This gives smart contract\n/// developers a much faster feedback loop if they're making a mistake, as an\n/// error will be thrown by the LSP or when they compile their contract.\n///\n#[derive(Eq)]\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: u64,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let max_allowed_include_by_timestamp =\n inputs.historical_header.global_variables.timestamp + MAX_INCLUDE_BY_TIMESTAMP_DURATION;\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: max_allowed_include_by_timestamp,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// TODO(https://github.com/AztecProtocol/aztec-packages/issues/14025) - we\n /// are considering making msg_sender: Option, since\n /// a returned value of `Option:none` will be clearer to developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the smart contract that called\n /// this function (be it an app contract or a user's account contract).\n /// Returns `-1` for the first function call of the tx.\n ///\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n /// Returns the contract address of the current function being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n /// Returns the gas settings for the current transaction.\n ///\n /// This provides information about gas limits and pricing for the\n /// transaction, similar to `tx.gasprice` and gas limits in Ethereum.\n /// However, Aztec has a more sophisticated gas model with separate\n /// accounting for L2 computation and data availability (DA) costs.\n ///\n /// # Returns\n /// * `GasSettings` - Struct containing gas limits and fee information\n ///\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n /// Returns the function selector of the currently executing function.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to access this.\n ///\n /// This is similar to `msg.sig` in Solidity, which returns the first 4\n /// bytes of the function signature. In Aztec, the selector uniquely\n /// identifies which function within the contract is being called.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// Only #[private] functions have a function selector as a protocol-\n /// enshrined concept. The function selectors of private functions are\n /// baked into the preimage of the contract address, and are used by the\n /// protocol's kernel circuits to identify each private function and ensure\n /// the correct one is being executed.\n ///\n /// Used internally for function dispatch and call verification.\n ///\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: You shouldn't need to call this. The #[private]\n /// macro calls this, and it makes the arguments neatly available to the\n /// body of your private function.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n /// # Advanced\n /// * Arguments are hashed to reduce proof size and verification time\n /// * Enables efficient argument passing in recursive function calls\n /// * The hash can be used to retrieve the original arguments from the PXE.\n ///\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n /// Pushes a new note_hash to the Aztec blockchain's global Note Hash Tree\n /// (a state tree).\n ///\n /// A note_hash is a commitment to a piece of private state.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note hashes.\n ///\n /// # Arguments\n /// * `note_hash` - The new note_hash.\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// note_hash into the protocol's \"note hash tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `note_hash` with the contract address of this function,\n /// to yield a `siloed_note_hash`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure uniqueness of the `siloed_note_hash`, to prevent Faerie-Gold\n /// attacks, by hashing the `siloed_note_hash` with a unique value, to\n /// yield a `unique_siloed_note_hash` (see the protocol spec for more).\n ///\n /// In addition to calling this function, aztec-nr provides the contents\n /// of the newly-created note to the PXE, via the `notify_created_note`\n /// oracle.\n ///\n /// > Advanced users might occasionally wish to push data to the context\n /// > directly for lower-level control. If you find yourself doing this,\n /// > please open an issue on GitHub to describe your use case: it might be\n /// > that new functionality should be added to aztec-nr.\n ///\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n /// Pushes a new nullifier to the Aztec blockchain's global Nullifier Tree\n /// (a state tree).\n ///\n /// See also: `push_nullifier_for_note_hash`.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// A nullifier can only be emitted once. Duplicate nullifier insertions are\n /// rejected by the protocol.\n ///\n /// Generally, a nullifier is emitted to prevent an action from happening\n /// more than once, in such a way that the action cannot be linked (by an\n /// observer of the blockchain) to any earlier transactions.\n ///\n /// I.e. a nullifier is a random-looking, but deterministic record of a\n /// private, one-time action, which does not leak what action has been\n /// taken, and which preserves the property of \"tx unlinkability\".\n ///\n /// Usually, a nullifier will be emitted to \"spend\" a note (a piece of\n /// private state), without revealing which specific note is being spent.\n ///\n /// (Important: in such cases, use the below `push_nullifier_for_note_hash`).\n ///\n /// Sometimes, a nullifier might be emitted completely unrelated to any\n /// notes. Examples include initialization of a new contract; initialization\n /// of a PrivateMutable, or signalling in Semaphore-like applications.\n /// This `push_nullifier` function serves such use cases.\n ///\n /// # Arguments\n /// * `nullifier`\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// nullifier into the protocol's \"nullifier tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `nullifier` with the contract address of this function,\n /// to yield a `siloed_nullifier`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure the `siloed_nullifier` is unique (the nullifier tree is an\n /// indexed merkle tree which supports efficient non-membership proofs).\n ///\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n /// Pushes a nullifier that corresponds to a specific note hash.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// This is a specialized version of `push_nullifier` that links a nullifier\n /// to the specific note hash it's nullifying. This is the most common\n /// usage pattern for nullifiers.\n /// See `push_nullifier` for more explanation on nullifiers.\n ///\n /// # Arguments\n /// * `nullifier`\n /// * `nullified_note_hash` - The note hash of the note being nullified\n ///\n /// # Advanced\n /// Important: usage of this function doesn't mean that the world will _see_\n /// that this nullifier relates to the given nullified_note_hash (as that\n /// would violate \"tx unlinkability\"); it simply informs the user's PXE\n /// about the relationship (via `notify_nullified_note`). The PXE can then\n /// use this information to feed hints to the kernel circuits for\n /// \"squashing\" purposes: If a note is nullified during the same tx which\n /// created it, we can \"squash\" (delete) the note and nullifier (and any\n /// private logs associated with the note), to save on data emission costs.\n ///\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n /// Returns the anchor block header - the historical block header that this\n /// private function is reading from.\n ///\n /// A private function CANNOT read from the \"current\" block header,\n /// but must read from some historical block header, because as soon as\n /// private function execution begins (asynchronously, on a user's device),\n /// the public state of the chain (the \"current state\") will have progressed\n /// forward.\n ///\n /// # Returns\n /// * `BlockHeader` - The anchor block header.\n ///\n /// # Advanced\n /// * All private functions of a tx read from the same anchor block header.\n /// * The protocol asserts that the `include_by_timestamp` of every tx\n /// is at most 24 hours beyond the timestamp of the tx's chosen anchor\n /// block header. This enables the network's nodes to safely prune old txs\n /// from the mempool. Therefore, the chosen block header _must_ be one\n /// from within the last 24 hours.\n ///\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n /// Returns the header of any historical block at or before the anchor\n /// block.\n ///\n /// This enables private contracts to access information from even older\n /// blocks than the anchor block header.\n ///\n /// Useful for time-based contract logic that needs to compare against\n /// multiple historical points.\n ///\n /// # Arguments\n /// * `block_number` - The block number to retrieve (must be <= anchor\n /// block number)\n ///\n /// # Returns\n /// * `BlockHeader` - The header of the requested historical block\n ///\n /// # Advanced\n /// This function uses an oracle to fetch block header data from the user's\n /// PXE. Depending on how much blockchain data the user's PXE has been set\n /// up to store, this might require a query from the PXE to another Aztec\n /// node to get the data.\n /// > This is generally true of all oracle getters (see `../oracle`).\n ///\n /// Each block header gets hashed and stored as a leaf in the protocol's\n /// Archive Tree. In fact, the i-th block header gets stored at the i-th\n /// leaf index of the Archive Tree. Behind the scenes, this\n /// `get_block_header_at` function will add Archive Tree merkle-membership\n /// constraints (~3k) to your smart contract function's circuit, to prove\n /// existence of the block header in the Archive Tree.\n ///\n /// Note: we don't do any caching, so avoid making duplicate calls for the\n /// same block header, because each call will add duplicate constraints.\n ///\n /// Calling this function is more expensive (constraint-wise) than getting\n /// the anchor block header (via `get_block_header`). This is because the\n /// anchor block's merkle membership proof is handled by Aztec's protocol\n /// circuits, and is only performed once for the entire tx because all\n /// private functions of a tx share a common anchor block header. Therefore,\n /// the cost (constraint-wise) of calling `get_block_header` is effectively\n /// free.\n ///\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n /// Sets the hash of the return values for this private function.\n ///\n /// Very low-level function: this is called by the #[private] macro.\n ///\n /// # Arguments\n /// * `returns_hasher` - A hasher containing the return values to hash\n ///\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n /// Builds the PrivateCircuitPublicInputs for this private function, to\n /// ensure compatibility with the protocol's kernel circuits.\n ///\n /// Very low-level function: This function is automatically called by the\n /// #[private] macro.\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.note_hash_read_requests,\n ),\n nullifier_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.nullifier_read_requests,\n ),\n key_validation_requests_and_generators: ClaimedLengthArray::from_bounded_vec(\n self.key_validation_requests_and_generators,\n ),\n note_hashes: ClaimedLengthArray::from_bounded_vec(self.note_hashes),\n nullifiers: ClaimedLengthArray::from_bounded_vec(self.nullifiers),\n private_call_requests: ClaimedLengthArray::from_bounded_vec(self.private_call_requests),\n public_call_requests: ClaimedLengthArray::from_bounded_vec(self.public_call_requests),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: ClaimedLengthArray::from_bounded_vec(self.l2_to_l1_msgs),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: ClaimedLengthArray::from_bounded_vec(self.private_logs),\n contract_class_logs_hashes: ClaimedLengthArray::from_bounded_vec(\n self.contract_class_logs_hashes,\n ),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n /// Designates this contract as the fee payer for the transaction.\n ///\n /// Unlike Ethereum, where the transaction sender always pays fees, Aztec\n /// allows any contract to voluntarily pay transaction fees. This enables\n /// patterns like sponsored transactions or fee abstraction where users\n /// don't need to hold fee-juice themselves. (Fee juice is a fee-paying\n /// asset for Aztec).\n ///\n /// Only one contract per transaction can declare itself as the fee payer,\n /// and it must have sufficient fee-juice balance (>= the gas limits\n /// specified in the TxContext) by the time we reach the public setup phase\n /// of the tx.\n ///\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n /// Declares the end of the \"setup phase\" of this tx.\n ///\n /// Only one function per tx can declare the end of the setup phase.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase enables such a payment to\n /// be made, because the setup phase _cannot revert_: a reverting function\n /// within the setup phase would result in an invalid block which cannot\n /// be proven. Any side-effects generated during that phase are guaranteed\n /// to be inserted into Aztec's state trees (except for squashed notes &\n /// nullifiers, of course).\n ///\n /// Even though the end of the setup phase is declared within a private\n /// function, you might have noticed that _public_ functions can also\n /// execute within the setup phase. This is because any public function\n /// calls which were enqueued _within the setup phase_ by a private\n /// function are considered part of the setup phase.\n ///\n /// # Advanced\n /// * Sets the minimum revertible side effect counter of this tx to be the\n /// PrivateContext's _current_ side effect counter.\n ///\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n /// Sets a deadline (an \"include-by timestamp\") for when this transaction\n /// must be included in a block.\n ///\n /// Other functions in this tx might call this setter with differing\n /// values for the include-by timestamp. To ensure that all functions'\n /// deadlines are met, the _minimum_ of all these include-by timestamps will\n /// be exposed when this tx is submitted to the network.\n ///\n /// If the transaction is not included in a block by its include-by\n /// timestamp, it becomes invalid and it will never be included.\n ///\n /// This expiry timestamp is publicly visible. See the \"Advanced\" section\n /// for privacy concerns.\n ///\n /// # Arguments\n /// * `include_by_timestamp` - Unix timestamp (seconds) deadline for inclusion.\n /// The include-by timestamp of this tx will be\n /// _at most_ the timestamp specified.\n ///\n /// # Advanced\n /// * If multiple functions set differing `include_by_timestamp`s, the\n /// kernel circuits will set it to be the _minimum_ of the two. This\n /// ensures the tx expiry requirements of all functions in the tx are met.\n /// * Rollup circuits will reject expired txs.\n /// * The protocol enforces that all transactions must be included within\n /// 24 hours of their chosen anchor block's timestamp, to enable safe\n /// mempool pruning.\n /// * The DelayedPublicMutable design makes heavy use of this functionality,\n /// to enable private functions to read public state.\n /// * A sophisticated Wallet should cleverly set an include-by timestamp\n /// to improve the privacy of the user and the network as a whole.\n /// For example, if a contract interaction sets include-by to some\n /// publicly-known value (e.g. the time when a contract upgrades), then\n /// the wallet might wish to set an even lower one to avoid revealing that\n /// this tx is interacting with said contract.\n /// Ideally, all wallets should standardise on an approach in order to\n /// provide users with a large anonymity set -- although the exact apprach\n /// will need to be discussed. Wallets that deviate from a standard might\n /// accidentally reveal which wallet each transaction originates from.\n ///\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp = std::cmp::min(self.include_by_timestamp, include_by_timestamp);\n }\n\n /// Makes a request to the protocol's kernel circuit to ensure a note_hash\n /// actually exists.\n ///\n /// \"Read requests\" are used to prove that a note hash exists without\n /// revealing which specific note was read.\n ///\n /// This can be used to prove existence of both settled notes (created in\n /// prior transactions) and transient notes (created in the current\n /// transaction).\n /// If you need to prove existence of a settled note _at a specific block\n /// number_, use `note_inclusion::prove_note_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note_hash read\n /// requests.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to read and verify\n ///\n /// # Advanced\n /// In \"traditional\" circuits for non-Aztec privacy applications, the merkle\n /// membership proofs to check existence of a note are performed _within_\n /// the application circuit.\n ///\n /// All Aztec private functions have access to the following constraint\n /// optimisation:\n /// In cases where the note being read was created earlier in the same tx,\n /// the note wouldn't yet exist in the Note Hash Tree, so a hard-coded\n /// merkle membership check which then gets ignored would be a waste of\n /// constraints.\n /// Instead, we can send read requests for all notes to the protocol's\n /// kernel circuits, where we can conditionally assess which notes actually\n /// need merkle membership proofs, and select an appropriately-sized\n /// kernel circuit.\n ///\n /// For \"settled notes\" (which already existed in the Note Hash Tree of the\n /// anchor block (i.e. before the tx began)), the kernel does a merkle\n /// membership check.\n ///\n /// For \"pending notes\" (which were created earlier in _this_ tx), the\n /// kernel will check that the note existed _before_ this read request was\n /// made, by checking the side-effect counters of the note_hash and this\n /// read request.\n ///\n /// This approach improves latency between writes and reads:\n /// a function can read a note which was created earlier in the tx (rather\n /// than performing the read in a later tx, after waiting for the earlier tx\n /// to be included, to ensure the note is included in the tree).\n ///\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n /// Requests to read a specific nullifier from the nullifier tree.\n ///\n /// Nullifier read requests are used to prove that a nullifier exists without\n /// revealing which specific nullifier preimage was read.\n ///\n /// This can be used to prove existence of both settled nullifiers (created in\n /// prior transactions) and transient nullifiers (created in the current\n /// transaction).\n /// If you need to prove existence of a settled nullifier _at a specific block\n /// number_, use `nullifier_inclusion::prove_nullifier_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifier read\n /// requests.\n ///\n /// # Arguments\n /// * `nullifier` - The nullifier to read and verify\n ///\n /// # Advanced\n /// This approach improves latency between writes and reads:\n /// a function can read a nullifier which was created earlier in the tx\n /// (rather than performing the read in a later tx, after waiting for the\n /// earlier tx to be included, to ensure the note is included in the tree).\n ///\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// Advanced function: Only needed if you're designing your own notes and/or\n /// nullifiers.\n ///\n /// Contracts are not allowed to compute nullifiers for other contracts, as\n /// that would let them read parts of their private state. Because of this,\n /// a contract is only given an \"app-siloed secret key\", which is\n /// constructed by hashing the user's master nullifier secret key with the\n /// contract's address.\n /// However, because contracts cannot be trusted with a user's master\n /// nullifier secret key (because we don't know which contracts are honest\n /// or malicious), the PXE refuses to provide any master secret keys to\n /// any app smart contract function. This means app functions are unable to\n /// prove that the derivation of an app-siloed nullifier secret key has been\n /// computed correctly. Instead, an app function can request to the kernel\n /// (via `request_nsk_app`) that it validates the siloed derivation, since\n /// the kernel has been vetted to not leak any master secret keys.\n ///\n /// A common nullification scheme is to inject a nullifier secret key into\n /// the preimage of a nullifier, to make the nullifier deterministic but\n /// random-looking. This function enables that flow.\n ///\n /// # Arguments\n /// * `npk_m_hash` - A hash of the master nullifier public key of the user\n /// whose PXE is executing this function.\n ///\n /// # Returns\n /// * The app-siloed nullifier secret key that corresponds to the given\n /// `npk_m_hash`.\n ///\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// See `request_nsk_app` and `request_sk_app` for more info.\n ///\n /// The intention of the \"outgoing\" keypair is to provide a second secret\n /// key for all of a user's outgoing activity (i.e. for notes that a user\n /// creates, as opposed to notes that a user receives from others). The\n /// separation of incoming and outgoing data was a distinction made by\n /// zcash, with the intention of enabling a user to optionally share with a\n /// 3rd party a controlled view of only incoming or outgoing notes.\n /// Similar functionality of sharing select data can be achieved with\n /// offchain zero-knowledge proofs. It is up to an app developer whether\n /// they choose to make use of a user's outgoing keypair within their\n /// application logic, or instead simply use the same keypair (the address\n /// keypair (which is effectively the same as the \"incooming\" keypair)) for\n /// all incoming & outgoing messages to a user.\n ///\n /// Currently, all of the exposed encryption functions in aztec-nr ignore\n /// the outgoing viewing keys, and instead encrypt all note logs and event\n /// logs to a user's address public key.\n ///\n /// # Arguments\n /// * `ovpk_m_hash` - Hash of the outgoing viewing public key master\n ///\n /// # Returns\n /// * The application-specific outgoing viewing secret key\n ///\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n /// Pushes a Key Validation Request to the kernel.\n ///\n /// Private functions are not allowed to see a user's master secret keys,\n /// because we do not trust them. They are instead given \"app-siloed\" secret\n /// keys with a claim that they relate to a master public key.\n /// They can then request validation of this claim, by making a \"key\n /// validation request\" to the protocol's kernel circuits (which _are_\n /// allowed to see certain master secret keys).\n ///\n /// When a Key Validation Request tuple of (sk_app, Pk_m, app_address) is\n /// submitted to the kernel, it will perform the following derivations\n /// to validate the relationship between the claimed sk_app and the user's\n /// Pk_m:\n ///\n /// (sk_m) ----> * G ----> Pk_m\n /// | |\n /// v We use the kernel to prove this\n /// h(sk_m, app_address) | sk_app-Pk_m relationship, because app\n /// | circuits must not be trusted to see sk_m.\n /// v |\n /// sk_app - - - - - - - - -\n ///\n /// The function is named \"request_\" instead of \"get_\" to remind the user\n /// that a Key Validation Request will be emitted to the kernel.\n ///\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element).\n /// This content has a very specific layout.\n /// docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2).\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree;\n /// messages never technically get deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target L2 contract. The message will need to be manually\n /// consumed by the target contract through a separate Aztec transaction.\n /// The message will not be available for consumption immediately. Messages\n /// get copied over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// Validates message existence in the L1-to-L2 message tree and nullifies\n /// the message to prevent double-consumption.\n ///\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n /// Emits a private log (an array of Fields) that will be published to an\n /// Ethereum blob.\n ///\n /// Private logs are intended for the broadcasting of ciphertexts: that is,\n /// encrypted events or encrypted note contents.\n /// Since the data in the logs is meant to be _encrypted_, private_logs are\n /// broadcast to publicly-visible Ethereum blobs.\n /// The intended recipients of such encrypted messages can then discover and\n /// decrypt these encrypted logs using their viewing secret key.\n /// (See `../messages/discovery` for more details).\n ///\n /// Important note: This function DOES NOT _do_ any encryption of the input\n /// `log` fields. This function blindly publishes whatever input `log` data\n /// is fed into it, so the caller of this function should have already\n /// performed the encryption, and the `log` should be the result of that\n /// encryption.\n ///\n /// The protocol does not dictate what encryption scheme should be used:\n /// a smart contract developer can choose whatever encryption scheme they\n /// like.\n /// Aztec-nr includes some off-the-shelf encryption libraries that\n /// developers might wish to use, for convenience. These libraries not only\n /// encrypt a plaintext (to produce a ciphertext); they also prepend the\n /// ciphertext with a `tag` and `ephemeral public key` for easier message\n /// discovery. This is a very dense topic, and we will be writing more\n /// libraries and docs soon.\n ///\n /// > Currently, AES128 CBC encryption is the main scheme included in\n /// > aztec.nr.\n /// > We are currently making significant changes to the interfaces of the\n /// > encryption library.\n ///\n /// In some niche use cases, an app might be tempted to publish\n /// _un-encrypted_ data via a private log, because _public logs_ are not\n /// available to private functions. Be warned that emitting public data via\n /// private logs is strongly discouraged, and is considered a \"privacy\n /// anti-pattern\", because it reveals identifiable information about _which_\n /// function has been executed. A tx which leaks such information does not\n /// contribute to the privacy set of the network.\n ///\n /// * Unlike `emit_raw_note_log`, this log is not tied to any specific note\n ///\n /// # Arguments\n /// * `log` - The log data that will be publicly broadcast (so make sure\n /// it's already been encrypted before you call this function).\n /// Private logs are bounded in size (PRIVATE_LOG_SIZE_IN_FIELDS), to\n /// encourage all logs from all smart contracts look identical.\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields). Although the input log has a max size of\n /// PRIVATE_LOG_SIZE_IN_FIELDS, the latter values of the array might all\n /// be 0's for small logs. This `length` should reflect the trimmed length\n /// of the array. The protocol's kernel circuits can then append random\n /// fields as \"padding\" after the `length`, so that the logs of this\n /// smart contract look indistinguishable from (the same length as) the\n /// logs of all other applications. It's up to wallets how much padding\n /// to apply, so ideally all wallets should agree on standards for this.\n ///\n /// # Advanced\n ///\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n // TODO: rename.\n /// Emits a private log that is explicitly tied to a newly-emitted note_hash,\n /// to convey to the kernel: \"this log relates to this note\".\n ///\n /// This linkage is important in case the note gets squashed (due to being\n /// read later in this same tx), since we can then squash the log as well.\n ///\n /// See `emit_private_log` for more info about private log emission.\n ///\n /// # Arguments\n /// * `log` - The log data as an array of Field elements\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields).\n /// * `note_hash_counter` - The side-effect counter that was assigned to the\n /// new note_hash when it was pushed to this\n // `PrivateContext`.\n ///\n /// Important: If your application logic requires the log to always be\n /// emitted regardless of note squashing, consider using `emit_private_log`\n /// instead, or emitting additional events.\n ///\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_contract_class_log(&mut self, log: [Field; N]) {\n let contract_address = self.this_address();\n let counter = self.next_counter();\n\n let log_to_emit: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS] =\n log.concat([0; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - N]);\n // Note: the length is not always N, it is the number of fields we want to broadcast, omitting trailing zeros to save blob space.\n // Safety: The below length is constrained in the base rollup, which will make sure that all the fields beyond length are zero.\n let length = unsafe { trimmed_array_length_hint(log_to_emit) };\n // We hash the entire padded log to ensure a user cannot pass a shorter length and so emit incorrect shorter bytecode.\n let log_hash = poseidon2_hash(log_to_emit);\n // Safety: the below only exists to broadcast the raw log, so we can provide it to the base rollup later to be constrained.\n unsafe {\n notify_created_contract_class_log(contract_address, log_to_emit, length, counter);\n }\n\n self.contract_class_logs_hashes.push(LogHash { value: log_hash, length: length }.count(\n counter,\n ));\n }\n\n /// Calls a private function on another contract (or the same contract).\n ///\n /// Very low-level function.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (feature not built yet - see github).\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n /// Makes a read-only call to a private function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See `call_private_function` for more general info on private function\n /// calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n /// Calls a private function that takes no arguments.\n ///\n /// This is a convenience function for calling private functions that don't\n /// require any input parameters. It's equivalent to `call_private_function`\n /// but slightly more efficient to use when no arguments are needed.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n /// Makes a read-only call to a private function which takes no arguments.\n ///\n /// This combines the optimisation of `call_private_function_no_args` with\n /// the safety of `static_call_private_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n /// Low-level private function call.\n ///\n /// This is the underlying implementation used by all other private function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args_hash` - Pre-computed hash of the function arguments\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values\n ///\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1; // TODO: call `next_counter` instead, for consistency\n ReturnsHash::new(returns_hash)\n }\n\n /// Enqueues a call to a public function to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See also `call_public_function` for more important information about\n /// making private -> public function calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Enqueues a call to a public function that takes no arguments.\n ///\n /// This is an optimisation for calling public functions that don't\n /// take any input parameters. It's otherwise equivalent to\n /// `call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function with no arguments.\n ///\n /// This combines the optimisation of `call_public_function_no_args` with\n /// the safety of `static_call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Low-level public function call.\n ///\n /// This is the underlying implementation used by all other public function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// Advanced function: Most developers should use `call_public_function`\n /// or `static_call_public_function` instead. This function is exposed for\n /// performance optimization and advanced use cases.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n /// Enqueues a public function call, and designates it to be the teardown\n /// function for this tx. Only one teardown function call can be made by a\n /// tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a heft function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Low-level function to set the public teardown function.\n ///\n /// This is the underlying implementation for setting the teardown function\n /// call that will execute at the end of the transaction. Instead of taking\n /// raw arguments, it accepts a hash of the arguments.\n ///\n /// Advanced function: Most developers should use\n /// `set_public_teardown_function` instead.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the teardown\n /// function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n /// Increments the side-effect counter.\n ///\n /// Very low-level function.\n ///\n /// # Advanced\n ///\n /// Every side-effect of a private function is given a \"side-effect counter\",\n /// based on when it is created. This PrivateContext is in charge of\n /// assigning the counters.\n ///\n /// The reason we have side-effect counters is complicated. Consider this\n /// illustrative pseudocode of inter-contract function calls:\n /// ```\n /// contract A {\n /// let x = 5; // pseudocode for storage var x.\n /// fn a1 {\n /// read x; // value: 5, counter: 1.\n /// x = x + 1;\n /// write x; // value: 6, counter: 2.\n ///\n /// B.b(); // start_counter: 2, end_counter: 4\n ///\n /// read x; // value: 36, counter: 5.\n /// x = x + 1;\n /// write x; // value: 37, counter: 6.\n /// }\n ///\n /// fn a2 {\n /// read x; // value: 6, counter: 3.\n /// x = x * x;\n /// write x; // value: 36, counter: 4.\n /// }\n /// }\n ///\n /// contract B {\n /// fn b() {\n /// A.a2();\n /// }\n /// }\n /// ```\n ///\n /// Suppose a1 is the first function called. The comments show the execution\n /// counter of each side-effect, and what the new value of `x` is.\n ///\n /// These (private) functions are processed by Aztec's kernel circuits in an\n /// order that is different from execution order:\n /// All of A.a1 is proven before B.b is proven, before A.a2 is proven.\n /// So when we're in the 2nd execution frame of A.a1 (after the call to\n /// B.b), the circuit needs to justify why x went from being `6` to `36`.\n /// But the circuit doesn't know why, and given the order of proving, the\n /// kernel hasn't _seen_ a value of 36 get written yet.\n /// The kernel needs to track big arrays of all side-effects of all\n /// private functions in a tx. Then, as it recurses and processes B.b(), it\n /// will eventually see a value of 36 get written.\n ///\n /// Suppose side-effect counters weren't exposed:\n /// The kernel would only see this ordering (in order of proof verification):\n /// [ A.a1.read, A.a1.write, A.a1.read, A.a1.write, A.a2.read, A.a2.write ]\n /// [ 5, 6, 36, 37, 6, 36 ]\n /// The kernel wouldn't know _when_ B.b() was called within A.a1(), because\n /// it can't see what's going on within an app circuit. So the kernel\n /// wouldn't know that the ordering of reads and writes should actually be:\n /// [ A.a1.read, A.a1.write, A.a2.read, A.a2.write, A.a1.read, A.a1.write ]\n /// [ 5, 6, 6, 36, 36, 37 ]\n ///\n /// And so, we introduced side-effect counters: every private function must\n /// assign side-effect counters alongside every side-effect that it emits,\n /// and also expose to the kernel the counters that it started and ended\n /// with.\n /// This gives the kernel enough information to arrange all side-effects in\n /// the correct order.\n /// It can then catch (for example) if a function tries to read state\n /// before it has been written (e.g. if A.a2() maliciously tried to read\n /// a value of x=37) (e.g. if A.a1() maliciously tried to read x=6).\n ///\n /// If a malicious app contract _lies_ and does not count correctly:\n /// - It cannot lie about its start and end counters because the kernel\n /// will catch this.\n /// - It _could_ lie about its intermediate counters:\n /// - 1. It could not increment its side-effects correctly\n /// - 2. It could label its side-effects with counters outside of its\n /// start and end counters' range.\n /// The kernel will catch 2.\n /// The kernel will not catch 1., but this would only cause corruption\n /// to the private state of the malicious contract, and not any other\n /// contracts (because a contract can only modify its own state). If\n /// a \"good\" contract is given _read access_ to a maliciously-counting\n /// contract (via an external getter function, or by reading historic\n /// state from the archive tree directly), and they then make state\n /// changes to their _own_ state accordingly, that could be dangerous.\n /// Developers should be mindful not to trust the claimed innards of\n /// external contracts unless they have audited/vetted the contracts\n /// including vetting the side-effect counter incrementation.\n /// This is a similar paradigm to Ethereum smart contract development:\n /// you must vet external contracts that your contract relies upon, and\n /// you must not make any presumptions about their claimed behaviour.\n /// (Hopefully if a contract imports a version of aztec-nr, we will get\n /// contract verification tooling that can validate the authenticity\n /// of the imported aztec-nr package, and hence infer that the side-\n /// effect counting will be correct, without having to re-audit such logic\n /// for every contract).\n ///\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: 0,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" }, "72": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", - "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl PublicContext {\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index) } == 1\n }\n\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n pub fn fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_l2_gas()\n }\n }\n pub fn fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n fee_per_da_gas()\n }\n }\n\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn fee_per_l2_gas() -> u128 {\n fee_per_l2_gas_opcode()\n}\nunconstrained fn fee_per_da_gas() -> u128 {\n fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> Field {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: Field) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: Field) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeFeePerL2Gas)]\nunconstrained fn fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeFeePerDaGas)]\nunconstrained fn fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> Field {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: Field) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", + "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\n/// # PublicContext\n///\n/// The **main interface** between a #[public] function and the Aztec blockchain.\n///\n/// An instance of the PublicContext is initialized automatically at the outset\n/// of every public function, within the #[public] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it will always be available\n/// within the body of every #[public] function in your smart contract.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PublicContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a public function:\n/// - Data relating to how this public function was called:\n/// - msg_sender, this_address\n/// - Data relating to the current blockchain state:\n/// - timestamp, block_number, chain_id, version\n/// - Gas and fee information\n/// - Provides state access:\n/// - Read/write public storage (key-value mapping)\n/// - Check existence of notes and nullifiers\n/// (Some patterns use notes & nullifiers to store public (not private)\n/// information)\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to other public smart contract functions:\n/// - Writes data to the blockchain:\n/// - Updates to public state variables\n/// - New public logs (for events)\n/// - New L2->L1 messages\n/// - New notes & nullifiers\n/// (E.g. pushing public info to notes/nullifiers, or for completing\n/// \"partial notes\")\n///\n/// ## Key Differences from Private Execution\n///\n/// Unlike private functions -- which are executed on the user's device and which\n/// can only reference historic state -- public functions are executed by a block\n/// proposer and are executed \"live\" on the _current_ tip of the chain.\n/// This means public functions can:\n/// - Read and write _current_ public state\n/// - Immediately see the effects of earlier transactions in the same block\n///\n/// Also, public functions are executed within a zkVM (the \"AVM\"), so that they\n/// can _revert_ whilst still ensuring payment to the proposer and prover.\n/// (Private functions cannot revert: they either succeed, or they cannot be\n/// included).\n///\n/// ## Optimising Public Functions\n///\n/// Using the AVM to execute public functions means they compile down to \"AVM\n/// bytecode\" instead of the ACIR that private functions (standalone circuits)\n/// compile to. Therefore the approach to optimising a public function is\n/// fundamentally different from optimising a public function.\n///\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl Eq for PublicContext {\n fn eq(self, other: Self) -> bool {\n (self.args_hash == other.args_hash)\n // Can't compare the function compute_args_hash\n }\n}\n\nimpl PublicContext {\n /// Creates a new PublicContext instance.\n ///\n /// Low-level function: This is called automatically by the #[public]\n /// macro, so you shouldn't need to be called directly by smart contract\n /// developers.\n ///\n /// # Arguments\n /// * `compute_args_hash` - Function to compute the args_hash\n ///\n /// # Returns\n /// * A new PublicContext instance\n ///\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n /// Emits a _public_ log that will be visible onchain to everyone.\n ///\n /// # Arguments\n /// * `log` - The data to log, must implement Serialize trait\n ///\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n /// Checks if a given note hash exists in the note hash tree at a particular\n /// leaf_index.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to check for existence\n /// * `leaf_index` - The index where the note hash should be located\n ///\n /// # Returns\n /// * `bool` - True if the note hash exists at the specified index\n ///\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message\n /// tree at a particular leaf index.\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// This function should be called before attempting to consume an L1-to-L2\n /// message.\n ///\n /// # Arguments\n /// * `msg_hash` - Hash of the L1-to-L2 message to check\n /// * `msg_leaf_index` - The index where the message should be located\n ///\n /// # Returns\n /// * `bool` - True if the message exists at the specified index\n ///\n /// # Advanced\n /// * Uses the AVM l1_to_l2_msg_exists opcode for tree lookup\n /// * Messages are copied from L1 Inbox to L2 by block proposers\n ///\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n // TODO(alvaro): Make l1l2msg leaf index a u64 upstream\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1\n }\n\n /// Checks if a specific nullifier has been emitted by a given contract.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. An example is to check\n /// whether a contract has been published: we emit a nullifier that is\n /// deterministic, but whose preimage is _not_ private. This is more\n /// efficient than using mutable storage, and can be done directly\n /// from a private function.\n ///\n /// Nullifiers can be tested for non-existence in public, which is not the\n /// case in private. Because private functions do not have access to\n /// the tip of the blockchain (but only the anchor block they are built\n /// at) they can only prove nullifier non-existence in the past. But between\n /// an anchor block and the block in which a tx is included, the nullifier\n /// might have been inserted into the nullifier tree by some other\n /// transaction.\n /// Public functions _do_ have access to the tip of the state, and so\n /// this pattern is safe.\n ///\n /// # Arguments\n /// * `unsiloed_nullifier` - The raw nullifier value (before siloing with\n /// the contract address that emitted it).\n /// * `address` - The claimed contract address that emitted the nullifier\n ///\n /// # Returns\n /// * `bool` - True if the nullifier has been emitted by the specified contract\n ///\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2) -- effectively\n /// marking it as \"read\".\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree,\n /// using the `l1_to_l2_msg_exists` method. Messages never technically get\n /// deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1. It will not be available for consumption immediately. Messages\n /// get copied-over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// * Validates message existence in the L1-to-L2 message tree\n /// * Prevents double-consumption by emitting a nullifier\n /// * Message hash is computed from all parameters + chain context\n /// * Will revert if message doesn't exist or was already consumed\n ///\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element)\n ///\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n /// Calls a public function on another contract.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Arguments to pass to the function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Makes a read-only call to a public function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Useful for querying data from other contracts safely.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Array of arguments to pass to the called function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Adds a new note hash to the Aztec blockchain's global Note Hash Tree.\n ///\n /// Notes are ordinarily constructed and emitted by _private_ functions, to\n /// ensure that both the content of the note, and the contract that emitted\n /// the note, stay private.\n ///\n /// There are however some useful patterns whereby a note needs to contain\n /// _public_ data. The ability to push a new note_hash from a _public_\n /// function means that notes can be injected with public data immediately\n /// -- as soon as the public value is known. The slower alternative would\n /// be to submit a follow-up transaction so that a private function can\n /// inject the data. Both are possible on Aztec.\n ///\n /// Search \"Partial Note\" for a very common pattern which enables a note\n /// to be \"partially\" populated with some data in a _private_ function, and\n /// then later \"completed\" with some data in a public function.\n ///\n /// # Arguments\n /// * `note_hash` - The hash of the note to add to the tree\n ///\n /// # Advanced\n /// * The note hash will be siloed with the contract address by the protocol\n ///\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n\n /// Adds a new nullifier to the Aztec blockchain's global Nullifier Tree.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. Hence why you're seeing this\n /// function within the PublicContext.\n /// An example is to check whether a contract has been published: we emit\n /// a nullifier that is deterministic, but whose preimage is _not_ private.\n ///\n /// # Arguments\n /// * `nullifier` - A unique field element that represents the consumed\n /// state\n ///\n /// # Advanced\n /// * Nullifier is immediately added to the global nullifier tree\n /// * Emitted nullifiers are immediately visible to all\n /// subsequent transactions in the same block\n /// * Automatically siloed with the contract address by the protocol\n /// * Used for preventing double-spending and ensuring one-time actions\n ///\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n /// Returns the address of the current contract being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases, and is enforced by the protocol's kernel circuits.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the account or contract that called\n /// this function\n ///\n /// # Examples\n /// ```rust\n /// #[aztec(public)]\n /// fn transfer(context: &mut PublicContext, to: AztecAddress, amount: u64) {\n /// let sender = context.msg_sender();\n /// // Only the sender can transfer their own tokens\n /// assert(sender == get_token_owner(), \"Unauthorized\");\n /// }\n /// ```\n ///\n /// # Advanced\n /// * Value is provided by the AVM sender opcode\n /// * In nested calls, this is the immediate caller, not the original\n /// transaction sender\n /// * Globally visible unlike private execution where it's contract-local\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n\n /// Returns the function selector of the currently-executing function.\n ///\n /// This is similar to `msg.sig` in Solidity, returning the first 4\n /// bytes of the function signature.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// * Extracted from the first element of calldata\n /// * Used internally for function dispatch in the AVM\n ///\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: The #[public] macro uses this internally.\n /// Smart contract developers typically won't need to access this\n /// directly as arguments are automatically made available.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n\n /// Returns the \"transaction fee\" for the current transaction.\n /// This is the final tx fee that will be deducted from the fee_payer's\n /// \"fee-juice\" balance (in the protocol's Base Rollup circuit).\n ///\n /// # Returns\n /// * `Field` - The actual, final cost of the transaction, taking into account:\n /// the actual gas used during the setup and app-logic phases,\n /// and the fixed amount of gas that's been allocated by the user\n /// for the teardown phase.\n /// I.e. effectiveL2FeePerGas * l2GasUsed + effectiveDAFeePerGas * daGasUsed\n ///\n /// This will return `0` during the \"setup\" and \"app-logic\" phases of\n /// tx execution (because the final tx fee is not known at that time).\n /// This will only return a nonzero value during the \"teardown\" phase of\n /// execution, where the final tx fee can actually be computed.\n ///\n /// Regardless of _when_ this function is called during the teardown phase,\n /// it will always return the same final tx fee value. The teardown phase\n /// does not consume a variable amount of gas: it always consumes a\n /// pre-allocated amount of gas, as specified by the user when they generate\n /// their tx.\n ///\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n /// Returns the current block number.\n ///\n /// This is similar to `block.number` in Solidity.\n ///\n /// Note: the current block number is only available within a public function\n /// (as opposed to a private function).\n ///\n /// Note: the time intervals between blocks should not be relied upon as\n /// being consistent:\n /// - Timestamps of blocks fall within a range, rather than at exact regular\n /// intervals.\n /// - Slots can be missed.\n /// - Protocol upgrades can completely change the intervals between blocks\n /// (and indeed the current roadmap plans to reduce the time between\n /// blocks, eventually).\n /// Use `context.timestamp()` for more-reliable time-based logic.\n ///\n /// # Returns\n /// * `u32` - The current block number\n ///\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n\n /// Returns the timestamp of the current block.\n ///\n /// This is similar to `block.timestamp` in Solidity.\n ///\n /// All functions of all transactions in a block share the exact same\n /// timestamp (even though technically each transaction is executed\n /// one-after-the-other).\n ///\n /// Important note: Timestamps of Aztec blocks are not at reliably-fixed\n /// intervals. The proposer of the block has some flexibility to choose a\n /// timestamp which is in a valid _range_: Obviously the timestamp of this\n /// block must be strictly greater than that of the previous block, and must\n /// must be less than the timestamp of whichever ethereum block the aztec\n /// block is proposed to. Furthermore, if the timestamp is not deemed close\n /// enough to the actual current time, the committee of validators will not\n /// attest to the block.\n ///\n /// # Returns\n /// * `u64` - Unix timestamp in seconds\n ///\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n\n /// Returns the fee per unit of L2 gas for this transaction (aka the \"L2 gas\n /// price\"), as chosen by the user.\n ///\n /// L2 gas covers the cost of executing public functions and handling\n /// side-effects within the AVM.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of L2 gas\n ///\n /// Wallet developers should be mindful that the choice of gas price (which\n /// is publicly visible) can leak information about the user, e.g.:\n /// - which wallet software the user is using;\n /// - the amount of time which has elapsed from the time the user's wallet\n /// chose a gas price (at the going rate), to the time of tx submission.\n /// This can give clues about the proving time, and hence the nature of\n /// the tx.\n /// - the urgency of the transaction (which is kind of unavoidable, if the\n /// tx is indeed urgent).\n /// - the wealth of the user.\n /// - the exact user (if the gas price is explicitly chosen by the user to\n /// be some unique number like 0.123456789, or their favourite number).\n /// Wallet devs might wish to consider fuzzing the choice of gas price.\n ///\n pub fn base_fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_l2_gas()\n }\n }\n\n /// Returns the fee per unit of DA (Data Availability) gas (aka the \"DA gas\n /// price\").\n ///\n /// DA gas covers the cost of making transaction data available on L1.\n ///\n /// See the warning in `fee_pre_l2_gas` for how gas prices can be leaky.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of DA gas\n ///\n pub fn base_fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_da_gas()\n }\n }\n\n /// Returns the remaining L2 gas available for this transaction.\n ///\n /// Different AVM opcodes consume different amounts of gas.\n ///\n /// # Returns\n /// * `u32` - Remaining L2 gas units\n ///\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n\n /// Returns the remaining DA (Data Availability) gas available for this\n /// transaction.\n ///\n /// DA gas is consumed when emitting data that needs to be made available\n /// on L1, such as public logs or state updates.\n /// All of the side-effects from the private part of the tx also consume\n /// DA gas before execution of any public functions even begins.\n ///\n /// # Returns\n /// * `u32` - Remaining DA gas units\n ///\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n\n /// Checks if the current execution is within a staticcall context, where\n /// no state changes or logs are allowed to be emitted (by this function\n /// or any nested function calls).\n ///\n /// # Returns\n /// * `bool` - True if in staticcall context, false otherwise\n ///\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n /// Reads raw field values from public storage.\n /// Reads N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to read from\n ///\n /// # Returns\n /// * `[Field; N]` - Array of N field values from consecutive storage slots\n ///\n /// # Generic Parameters\n /// * `N` - the number of consecutive slots to return, starting from the\n /// `storage_slot`.\n ///\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n /// Reads a typed value from public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to read from\n ///\n /// # Returns\n /// * `T` - The deserialized value from storage\n ///\n /// # Generic Parameters\n /// * `T` - The type that the caller expects to read from the `storage_slot`.\n ///\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n /// Writes raw field values to public storage.\n /// Writes to N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// Public storage writes take effect immediately.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to write to\n /// * `values` - Array of N Fields to write to storage\n ///\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n /// Writes a typed value to public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to write to\n /// * `value` - The typed value to write to storage\n ///\n /// # Generic Parameters\n /// * `T` - The type to write to storage.\n ///\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn base_fee_per_l2_gas() -> u128 {\n base_fee_per_l2_gas_opcode()\n}\nunconstrained fn base_fee_per_da_gas() -> u128 {\n base_fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> u1 {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\n\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeBaseFeePerL2Gas)]\nunconstrained fn base_fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeBaseFeePerDaGas)]\nunconstrained fn base_fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> u1 {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" }, "73": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", - "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.hash, 0);\n }\n\n pub fn raw(self) -> Field {\n self.hash\n }\n\n /// This is only used during private execution, since in public it is the VM itself that keeps track of return\n /// values.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n\n Deserialize::deserialize(preimage)\n }\n\n pub fn get_preimage_and_assert_empty(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it.\n let preimage: [Field; N] = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage));\n assert_eq(self.hash, 0);\n\n Deserialize::deserialize(preimage)\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", + "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\n/// A hash that represents a private contract function call's return value. Call `get_preimage` to get the underlying\n/// value.\n///\n/// The kernels don't process the actual return values but instead their hashes, so it is up to contracts to populate\n/// oracles with the preimages of these hashes on return to make them available to their callers.\n///\n/// Public calls don't utilize this mechanism since the AVM does process the full return values.\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n /// Fetches the underlying return value from an oracle, constraining that it corresponds to the return data hash.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it. If `T`\n // is `()`, then `preimage` must be an array of length 0 (since that is `()`'s deserialization length).\n // `hash_args_array` handles empty arrays following the protocol rules (i.e. an empty args array is signaled\n // with a zero hash), correctly constraining `self.hash`.\n let preimage = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage), \"Preimage mismatch\");\n\n Deserialize::deserialize(preimage)\n }\n}\n\nmod test {\n use crate::{\n hash::hash_args_array,\n oracle::execution_cache,\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use super::ReturnsHash;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn retrieves_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test]\n unconstrained fn retrieves_empty_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = ();\n let serialized = [];\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test(should_fail_with = \"Preimage mismatch\")]\n unconstrained fn rejects_bad_preimage() {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let mut bad_serialized = serialized;\n bad_serialized[0] += 1;\n\n let hash = hash_args_array(serialized);\n\n let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns(bad_serialized);\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n }\n\n // This test passes due to a Noir bug.\n // #[test(should_fail_with=\"Preimage mismatch\")]\n // unconstrained fn rejects_bad_empty_preimage() {\n // let value = ();\n // let serialized = [];\n\n // let hash = hash_args_array(serialized);\n\n // let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns([1]);\n // assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n // }\n}\n" }, "74": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", - "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", + "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" }, - "77": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", - "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n // TODO(#2707): Consider making this a u64 as we already cast this to that when encoding the message. This would decrease\n // the likelihood of collisions without any extra cost.\n inner: u32,\n}\n\nimpl Eq for EventSelector {\n fn eq(self, other: EventSelector) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl Serialize<1> for EventSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for EventSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] as u32 }\n }\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" + "76": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", + "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n inner: u32,\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" }, - "79": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/hash.nr", + "78": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/hash.nr", "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n" }, - "91": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", - "source": "use dep::protocol_types::{\n address::AztecAddress, block_header::BlockHeader, constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n hash::poseidon2_hash_with_separator, utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" + "90": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", + "source": "use dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress,\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" }, - "94": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", + "93": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ecdh shared secret using the address public key of the given address:\n/// [ephemeral_secret] * recipient_address_public_key = shared_secret.\n/// The intention is that the _creator_ of a shared secret would call this function,\n/// given the address of their intended recipient.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Point {\n derive_ecdh_shared_secret(ephemeral_secret, recipient_address.to_address_point().inner)\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n" }, - "95": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", + "94": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" }, - "96": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v1.1.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", - "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n" + "95": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", + "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n\nmod test {\n use super::get_public_keys;\n\n use crate::test::helpers::test_environment::TestEnvironment;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n global KEY_ORACLE_RESPONSE_LENGTH: u32 = 13; // 12 fields for the keys, one field for the partial address\n\n #[test(should_fail_with = \"Invalid public keys hint for address\")]\n unconstrained fn get_public_keys_fails_with_bad_hint() {\n let mut env = TestEnvironment::new();\n let account = env.create_light_account();\n\n // Instead of querying for some unknown account, which would result in the oracle erroring out, we mock a bad oracle\n // response to check that the circuit properly checks the address derivation.\n let mut random_keys_and_partial_address = [0; KEY_ORACLE_RESPONSE_LENGTH];\n // We use randomly generated points on the curve, and a random partial address to ensure that\n // this combination does not derive the address and we should see the assertion fail.\n // npk_m\n random_keys_and_partial_address[0] =\n 0x292364b852c6c6f01472951e76a39cbcf074591fd0e063a81965e7b51ad868a5;\n random_keys_and_partial_address[1] =\n 0x0a687b46cdc9238f1c311f126aaaa4acbd7a737bff2efd7aeabdb8d805843a27;\n random_keys_and_partial_address[2] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ivpk_m\n random_keys_and_partial_address[3] =\n 0x173c5229a00c5425255680dd6edc27e278c48883991f348fe6985de43b4ec25f;\n random_keys_and_partial_address[4] =\n 0x1698608e23b5f6c2f43c49a559108bb64e2247b8fc2da842296a416817f40b7f;\n random_keys_and_partial_address[5] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ovpk_m\n random_keys_and_partial_address[6] =\n 0x1bad2f7d1ad960a1bd0fe4d2c8d17f5ab4a86ef8b103e0a9e7f67ec0d3b4795e;\n random_keys_and_partial_address[7] =\n 0x206db87110abbecc9fbaef2c865189d94ef2c106202f734ee4eba9257fd28bf1;\n random_keys_and_partial_address[8] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // tpk_m\n random_keys_and_partial_address[9] =\n 0x05e3bd9cfe6b47daa139613619cf7d7fd8bb0112b6f2908caa6d9b536ed948ed;\n random_keys_and_partial_address[10] =\n 0x051066f877c9df47552d02e7dc32127ff4edefc8498e813bca1cbd3f5d1be429;\n random_keys_and_partial_address[11] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // partial address\n random_keys_and_partial_address[12] =\n 0x236703e2cb00a182e024e98e9f759231b556d25ff19f98896cebb69e9e678cc9;\n\n let _ = OracleMock::mock(\"utilityGetPublicKeysAndPartialAddress\").returns(\n random_keys_and_partial_address.serialize(),\n );\n let _ = get_public_keys(account);\n }\n}\n" + }, + "99": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", + "source": "use crate::macros::{\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::NOTES,\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n // We generate `_compute_note_hash_and_nullifier`, `sync_private_state` and `process_message`\n // functions only if they are not already implemented. If they are implemented we just insert empty\n // quotes.\n let contract_library_method_compute_note_hash_and_nullifier = if !m.functions().any(|f| {\n f.name() == quote { _compute_note_hash_and_nullifier }\n }) {\n generate_contract_library_method_compute_note_hash_and_nullifier()\n } else {\n quote {}\n };\n let sync_private_state = if !m.functions().any(|f| f.name() == quote { sync_private_state }) {\n generate_sync_private_state()\n } else {\n quote {}\n };\n let process_message = if !m.functions().any(|f| f.name() == quote { process_message }) {\n generate_process_message()\n } else {\n quote {}\n };\n let public_dispatch = generate_public_dispatch(m);\n\n quote {\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n if NOTES.len() > 0 {\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..NOTES.len() {\n let typ = NOTES.get(i);\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret its raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = <$typ as $crate::protocol_types::traits::Packable>::N;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" } } } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/FPC.ts b/treasury/src/treasury/aztec/FPC.ts index ff873643..4de0187b 100644 --- a/treasury/src/treasury/aztec/FPC.ts +++ b/treasury/src/treasury/aztec/FPC.ts @@ -2,13 +2,13 @@ import { type ContractInstanceWithAddress, Fr, type PXE, - getContractInstanceFromDeployParams, + getContractInstanceFromInstantiationParams, } from '@aztec/aztec.js'; import { SPONSORED_FPC_SALT } from '@aztec/constants'; import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; export async function getSponsoredFPCInstance(): Promise { - return await getContractInstanceFromDeployParams( + return await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(SPONSORED_FPC_SALT), diff --git a/treasury/src/treasury/aztec/Train.ts b/treasury/src/treasury/aztec/Train.ts index 9bbd6ed3..86221ce3 100644 --- a/treasury/src/treasury/aztec/Train.ts +++ b/treasury/src/treasury/aztec/Train.ts @@ -11,14 +11,12 @@ import { type ContractInstanceWithAddress, type ContractMethod, type ContractStorageLayout, - type ContractNotes, DeployMethod, type FieldLike, Fr, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, - NoteSelector, PublicKeys, type Wallet, } from '@aztec/aztec.js'; @@ -121,26 +119,16 @@ export class TrainContract extends ContractBase { } as ContractStorageLayout<'contracts_private' | 'contracts_public'>; } - public static get notes(): ContractNotes<'UintNote' | 'HTLC_Private'> { - return { - UintNote: { - id: new NoteSelector(0), - }, - HTLC_Private: { - id: new NoteSelector(1), - }, - } as ContractNotes<'UintNote' | 'HTLC_Private'>; - } - /** Type-safe wrappers for the public methods exposed by the contract. */ declare public methods: { - /** add_lock_private_user(Id: field, hashlock: array, timelock: integer) */ + /** add_lock_private_user(Id: field, hashlock_high: integer, hashlock_low: integer, timelock: integer) */ add_lock_private_user: (( Id: FieldLike, - hashlock: (bigint | number)[], + hashlock_high: bigint | number, + hashlock_low: bigint | number, timelock: bigint | number, ) => ContractFunctionInteraction) & - Pick; + Pick; /** commit_private_user(Id: field, src_receiver: struct, timelock: integer, token: struct, amount: integer, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: field) */ commit_private_user: (( @@ -155,26 +143,28 @@ export class TrainContract extends ContractBase { dst_address: string, randomness: FieldLike, ) => ContractFunctionInteraction) & - Pick; + Pick; /** constructor() */ constructor: (() => ContractFunctionInteraction) & - Pick; + Pick; /** get_htlc_public(key: field) */ get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & - Pick; + Pick; - /** is_contract_initialized(Id: field) */ - is_contract_initialized: ((Id: FieldLike) => ContractFunctionInteraction) & - Pick; + /** is_contract_initialized(id: field) */ + is_contract_initialized: ((id: FieldLike) => ContractFunctionInteraction) & + Pick; - /** lock_private_solver(Id: field, hashlock: array, amount: integer, ownership_hash: array, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ + /** lock_private_solver(Id: field, hashlock_high: integer, hashlock_low: integer, amount: integer, ownership_hash_high: integer, ownership_hash_low: integer, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ lock_private_solver: (( Id: FieldLike, - hashlock: (bigint | number)[], + hashlock_high: bigint | number, + hashlock_low: bigint | number, amount: bigint | number, - ownership_hash: (bigint | number)[], + ownership_hash_high: bigint | number, + ownership_hash_low: bigint | number, timelock: bigint | number, token: AztecAddressLike, randomness: FieldLike, @@ -183,7 +173,7 @@ export class TrainContract extends ContractBase { dst_asset: string, dst_address: string, ) => ContractFunctionInteraction) & - Pick; + Pick; /** process_message(message_ciphertext: struct, message_context: struct) */ process_message: (( @@ -195,26 +185,28 @@ export class TrainContract extends ContractBase { recipient: AztecAddressLike; }, ) => ContractFunctionInteraction) & - Pick; + Pick; /** public_dispatch(selector: field) */ public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & - Pick; + Pick; - /** redeem_private(Id: field, secret: array, ownership_key: array) */ + /** redeem_private(Id: field, secret_high: integer, secret_low: integer, ownership_key_high: integer, ownership_key_low: integer) */ redeem_private: (( Id: FieldLike, - secret: (bigint | number)[], - ownership_key: (bigint | number)[], + secret_high: bigint | number, + secret_low: bigint | number, + ownership_key_high: bigint | number, + ownership_key_low: bigint | number, ) => ContractFunctionInteraction) & - Pick; + Pick; /** refund_private(Id: field) */ refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & - Pick; + Pick; /** sync_private_state() */ sync_private_state: (() => ContractFunctionInteraction) & - Pick; + Pick; }; } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.dto.ts b/treasury/src/treasury/aztec/aztec.dto.ts index 8358b79d..2801d2c5 100644 --- a/treasury/src/treasury/aztec/aztec.dto.ts +++ b/treasury/src/treasury/aztec/aztec.dto.ts @@ -1,7 +1,10 @@ -import { BaseSignRequest } from "../../app/dto/base.dto"; +import { BaseSignRequest, BaseSignResponse } from "../../app/dto/base.dto"; export class AztecSignRequest extends BaseSignRequest { nodeUrl: string; tokenContract: string; contractAddress: string +} + +export class AztecSignResponse extends BaseSignResponse{ } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 60f654ad..abce7b01 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -1,19 +1,19 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { Network } from "../shared/networks.types"; -import { AztecSignRequest } from "./aztec.dto"; +import { AztecSignRequest, AztecSignResponse } from "./aztec.dto"; import { AuthWitness, AztecAddress, ContractArtifact, ContractFunctionInteraction, createAztecNodeClient, Fr, FunctionAbi, getAllFunctionAbis, Logger, SponsoredFeePaymentMethod, Tx, waitForPXE } from "@aztec/aztec.js"; import { createPXEService } from "@aztec/pxe/server"; import { createStore } from "@aztec/kv-store/lmdb"; import { deriveSigningKey } from '@aztec/stdlib/keys'; import { TokenContract } from '@aztec/noir-contracts.js/Token'; import { getSponsoredFPCInstance } from "./FPC"; -import { getSchnorrAccount, getSchnorrAccountContractAddress } from "@aztec/accounts/schnorr"; +import { getSchnorrAccount } from "@aztec/accounts/schnorr"; import { getPXEServiceConfig } from "@aztec/pxe/config"; import { TrainContract } from "./Train"; import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { PrivateKeyService } from '../../kv/vault.service'; -import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; +import { GenerateResponse } from '../../app/dto/base.dto'; import { PrivateKernelProver } from '@aztec/stdlib/interfaces/client'; import { AztecAsyncKVStore } from '@aztec/kv-store'; import { AztecConfigService } from './aztec.config'; @@ -29,12 +29,9 @@ export class AztecTreasuryService extends TreasuryService { this.configService = configService; } - async sign(request: AztecSignRequest): Promise { - + async sign(request: AztecSignRequest): Promise { try { - let signedTxn: string; - const privateKey = await this.privateKeyService.getAsync(request.address); const privateSalt = await this.privateKeyService.getAsync(request.address, "private_salt"); const TrainContractArtifact = TrainContract.artifact; @@ -86,12 +83,14 @@ export class AztecTreasuryService extends TreasuryService { const schnorrWallet = await schnorrAccount.getWallet(); const tokenContractInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); + await pxe.registerContract({ instance: tokenContractInstance, artifact: TokenContractArtifact, }); const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)) + await pxe.registerContract({ instance: contractInstanceWithAddress, artifact: TrainContractArtifact, @@ -102,8 +101,7 @@ export class AztecTreasuryService extends TreasuryService { if (contractFunctionInteraction.authwiths) { - for (let i = 0; i < contractFunctionInteraction.authwiths.length; i++) { - const authWith = contractFunctionInteraction.authwiths[i]; + contractFunctionInteraction.authwiths.forEach(async (authWith) => { const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true) @@ -115,13 +113,12 @@ export class AztecTreasuryService extends TreasuryService { const functionAbi = getFunctionAbi(contractClassMetadata.artifact, authWith.functionName); if (!functionAbi) { - + throw new BadRequestException("Unable to get function ABI"); } - let functionInteraction: ContractFunctionInteraction; authWith.args.unshift(schnorrWallet.getAddress()); - functionInteraction = new ContractFunctionInteraction( + const functionInteraction = new ContractFunctionInteraction( schnorrWallet, AztecAddress.fromString(authWith.interactionAddress), functionAbi, @@ -136,7 +133,7 @@ export class AztecTreasuryService extends TreasuryService { }); authWitnesses.push(witness); - } + }); } const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) @@ -147,9 +144,8 @@ export class AztecTreasuryService extends TreasuryService { } const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); - let functionInteraction: ContractFunctionInteraction; - functionInteraction = new ContractFunctionInteraction( + const functionInteraction = new ContractFunctionInteraction( schnorrWallet, AztecAddress.fromString(contractFunctionInteraction.interactionAddress), functionAbi, @@ -159,12 +155,10 @@ export class AztecTreasuryService extends TreasuryService { [...authWitnesses] ); - const provenTx = await functionInteraction.prove({ - fee: - { paymentMethod }, - }); + const provenTx = await functionInteraction.prove({ from: AztecAddress.fromString(request.address), fee: { paymentMethod } }); const tx = new Tx( + provenTx.getTxHash(), provenTx.data, provenTx.clientIvcProof, provenTx.contractClassLogFields, @@ -172,8 +166,8 @@ export class AztecTreasuryService extends TreasuryService { ); const signedTxHex = tx.toBuffer().toString("hex"); + const signedTxn = JSON.stringify({ signedTx: signedTxHex }); - signedTxn = JSON.stringify({ signedTx: signedTxHex }); return { signedTxn }; } @@ -182,23 +176,8 @@ export class AztecTreasuryService extends TreasuryService { } } - async generate(): Promise { - - const prKey = Fr.random(); - const salt = Fr.random(); - const addressResponse = await getSchnorrAccountContractAddress(prKey, salt); - - await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); - await this.privateKeyService.setAsync(addressResponse.toString(), salt.toString(), "private_salt"); - - const address = addressResponse.toString() - - await createStore(address, { - dataDirectory: this.configService.storePath, - dataStoreMapSizeKB: 1e6, - }); - - return { address }; + generate(): Promise { + throw new Error('Method not implemented.'); } } From d61a5f5fbd43f2f7c5b53772a456c33dfab902e5 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Fri, 3 Oct 2025 19:01:21 +0400 Subject: [PATCH 08/69] added treasury generate for testing. --- treasury/src/treasury/aztec/aztec.service.ts | 21 +++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index abce7b01..666964e0 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -7,7 +7,7 @@ import { createStore } from "@aztec/kv-store/lmdb"; import { deriveSigningKey } from '@aztec/stdlib/keys'; import { TokenContract } from '@aztec/noir-contracts.js/Token'; import { getSponsoredFPCInstance } from "./FPC"; -import { getSchnorrAccount } from "@aztec/accounts/schnorr"; +import { getSchnorrAccount, getSchnorrAccountContractAddress } from "@aztec/accounts/schnorr"; import { getPXEServiceConfig } from "@aztec/pxe/config"; import { TrainContract } from "./Train"; import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; @@ -176,8 +176,23 @@ export class AztecTreasuryService extends TreasuryService { } } - generate(): Promise { - throw new Error('Method not implemented.'); + async generate(): Promise { + + const prKey = Fr.random(); + const salt = Fr.random(); + const addressResponse = await getSchnorrAccountContractAddress(prKey, salt); + + await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); + await this.privateKeyService.setAsync(addressResponse.toString(), salt.toString(), "private_salt"); + + const address = addressResponse.toString() + + await createStore(address, { + dataDirectory: this.configService.storePath, + dataStoreMapSizeKB: 1e6, + }); + + return { address }; } } From df7140ce215a8e39473fff30d184d3cbf1e2b06d Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 6 Oct 2025 13:05:44 +0400 Subject: [PATCH 09/69] . --- treasury/src/treasury/aztec/aztec.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 666964e0..086d2f6c 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -212,4 +212,4 @@ function getFunctionAbi( const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName); if (!fn) { } return fn; -} \ No newline at end of file +} From 40336a4d0603d46ae7cd7b2a0478e17a2d3affcc Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 6 Oct 2025 18:53:18 +0400 Subject: [PATCH 10/69] fixed treasury dockerfile build error --- treasury/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/treasury/Dockerfile b/treasury/Dockerfile index 973e89bc..d31c7485 100644 --- a/treasury/Dockerfile +++ b/treasury/Dockerfile @@ -3,6 +3,9 @@ FROM node:${NODE_VERSION}-alpine AS builder WORKDIR /usr/src/app +# Install build dependencies for native modules +RUN apk add --no-cache python3 make g++ + COPY ./treasury/package*.json ./ RUN npm ci @@ -15,6 +18,9 @@ RUN npm run build FROM node:${NODE_VERSION}-alpine AS production WORKDIR /usr/src/app +# Install build dependencies for production dependencies +RUN apk add --no-cache python3 make g++ + COPY ./treasury/package*.json ./ RUN npm ci --production && npm cache clean --force From f6fdc3b3e8bdf1d9cae31943a971f0aacef877c2 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Tue, 7 Oct 2025 13:54:48 +0400 Subject: [PATCH 11/69] changed dockerIgnore and dockerFile files --- .dockerignore | 14 ++++++++++++++ treasury/Dockerfile | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..41c4ed8d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +# Exclude host node_modules and build artifacts from the docker build context +**/node_modules +**/dist + +# Logs, env files +npm-debug.log* +.env +.env.* + +# OS files +.DS_Store + +# Optional: ignore local Dockerfiles if you build from subfolders +#Dockerfile diff --git a/treasury/Dockerfile b/treasury/Dockerfile index d31c7485..bf815279 100644 --- a/treasury/Dockerfile +++ b/treasury/Dockerfile @@ -18,7 +18,7 @@ RUN npm run build FROM node:${NODE_VERSION}-alpine AS production WORKDIR /usr/src/app -# Install build dependencies for production dependencies +# Install build dependencies temporarily for production dependencies RUN apk add --no-cache python3 make g++ COPY ./treasury/package*.json ./ @@ -29,4 +29,4 @@ COPY --from=builder /usr/src/app/dist ./dist EXPOSE 8080 -CMD ["node", "dist/main"] \ No newline at end of file +CMD ["node", "dist/src/main"] \ No newline at end of file From 27a066a2f110fe41381b398e81ba5e802f7b7ae4 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 00:27:30 +0400 Subject: [PATCH 12/69] Changed vault set async function for private salt variable. --- treasury/src/kv/vault.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index 7685ae81..35323dfa 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -33,7 +33,7 @@ export class PrivateKeyService { try { await this.getTokenAsync(); await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { - data: { [this.pkKey]: privateKey } + data: { [pkKey]: privateKey } }); } catch (error) { From db9f889057e4a7184aa4a74d738e08c48a4f0010 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 15:32:12 +0400 Subject: [PATCH 13/69] --- treasury/src/treasury/aztec/aztec.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 086d2f6c..79aab944 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -178,7 +178,7 @@ export class AztecTreasuryService extends TreasuryService { async generate(): Promise { - const prKey = Fr.random(); + const prKey = Fr.random(); const salt = Fr.random(); const addressResponse = await getSchnorrAccountContractAddress(prKey, salt); From c49850079ffcbcc2ec9058e523a370b5f66b57b7 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 16:12:18 +0400 Subject: [PATCH 14/69] Changed valut getAsync function. --- treasury/src/kv/vault.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index 35323dfa..ac60c813 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -22,7 +22,7 @@ export class PrivateKeyService { try { await this.getTokenAsync(); const { data } = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); - return data.data[this.pkKey]; + return data.data[pkKey]; } catch (error) { this.handleVaultError(error); From 6c852f8d135d8c2059fb95f003f488301c93208e Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 18:30:54 +0400 Subject: [PATCH 15/69] Fix vault set changes to accept private_salt values --- treasury/src/kv/vault.service.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index ac60c813..71510ab7 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -31,10 +31,22 @@ export class PrivateKeyService { public async setAsync(address: string, privateKey: string, pkKey: string = 'private_key'): Promise { try { + await this.getTokenAsync(); + let existingData: Record = {}; + try { + const existing = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); + if (existing?.data?.data) { + existingData = existing.data.data; + } + } catch (readError: any) { + if (readError?.response?.statusCode !== 404) { + throw readError; + } + } + await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { - data: { [pkKey]: privateKey } - }); + data: { ...existingData, [pkKey]: privateKey }}) } catch (error) { this.handleVaultError(error); From ad2d633f527ad6a50d4c3f2f1f7d1b31de7e16b8 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 20:03:11 +0400 Subject: [PATCH 16/69] added new method in vault service. --- treasury/src/kv/vault.service.ts | 32 +++++++++++--------- treasury/src/treasury/aztec/aztec.service.ts | 15 ++++++--- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index 71510ab7..814486ae 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -18,7 +18,7 @@ export class PrivateKeyService { this.initLogin(); } - public async getAsync(address: string, pkKey: string = 'private_key'): Promise { + public async getAsync(address: string, pkKey: string = this.pkKey): Promise { try { await this.getTokenAsync(); const { data } = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); @@ -29,24 +29,28 @@ export class PrivateKeyService { } } - public async setAsync(address: string, privateKey: string, pkKey: string = 'private_key'): Promise { + public async setAsync(address: string, privateKey: string, pkKey: string = this.pkKey): Promise { try { await this.getTokenAsync(); - let existingData: Record = {}; - try { - const existing = await this.vault.read(`${this.privateKeyConfig.mountPath}/data/${address}`); - if (existing?.data?.data) { - existingData = existing.data.data; - } - } catch (readError: any) { - if (readError?.response?.statusCode !== 404) { - throw readError; - } - } await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { - data: { ...existingData, [pkKey]: privateKey }}) + data: { [pkKey]: privateKey } + }); + } + catch (error) { + this.handleVaultError(error); + } + } + + public async setDictAsync(address: string, keyVaulePair: Record): Promise { + try { + + await this.getTokenAsync(); + + await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { + data: { keyVaulePair } + }); } catch (error) { this.handleVaultError(error); diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 79aab944..6e5abf6e 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -177,15 +177,20 @@ export class AztecTreasuryService extends TreasuryService { } async generate(): Promise { - + const prKey = Fr.random(); const salt = Fr.random(); - const addressResponse = await getSchnorrAccountContractAddress(prKey, salt); + const address = (await getSchnorrAccountContractAddress(prKey, salt)).toString(); + + // await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); + //salt.toString(), "private_salt" - await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); - await this.privateKeyService.setAsync(addressResponse.toString(), salt.toString(), "private_salt"); + const dict: Record = { + "private_salt": salt.toString(), + "private_key": prKey.toString(), + }; - const address = addressResponse.toString() + await this.privateKeyService.setDictAsync(address.toString(), dict); await createStore(address, { dataDirectory: this.configService.storePath, From 3fbfb9ed6ca6ff8440b2ec894ec4886285a6e922 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Thu, 9 Oct 2025 20:03:59 +0400 Subject: [PATCH 17/69] remove comment. --- treasury/src/treasury/aztec/aztec.service.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 6e5abf6e..aedf22d1 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -182,12 +182,9 @@ export class AztecTreasuryService extends TreasuryService { const salt = Fr.random(); const address = (await getSchnorrAccountContractAddress(prKey, salt)).toString(); - // await this.privateKeyService.setAsync(addressResponse.toString(), prKey.toString()); - //salt.toString(), "private_salt" - const dict: Record = { - "private_salt": salt.toString(), "private_key": prKey.toString(), + "private_salt": salt.toString(), }; await this.privateKeyService.setDictAsync(address.toString(), dict); From ac722b4a064af99ec29835072496d3625abe3d21 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Fri, 10 Oct 2025 18:04:27 +0400 Subject: [PATCH 18/69] changed gnerate method for testing. --- treasury/src/treasury/aztec/aztec.service.ts | 97 +++++++++++++++++--- 1 file changed, 84 insertions(+), 13 deletions(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index aedf22d1..50fa7391 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -177,24 +177,95 @@ export class AztecTreasuryService extends TreasuryService { } async generate(): Promise { + try { + const pkKey = Fr.random(); + const salt = Fr.random(); + const address = (await getSchnorrAccountContractAddress(pkKey, salt)).toString(); + const TrainContractArtifact = TrainContract.artifact; + const TokenContractArtifact = TokenContract.artifact; - const prKey = Fr.random(); - const salt = Fr.random(); - const address = (await getSchnorrAccountContractAddress(prKey, salt)).toString(); + const dict: Record = { + "private_key": pkKey.toString(), + "private_salt": salt.toString(), + }; - const dict: Record = { - "private_key": prKey.toString(), - "private_salt": salt.toString(), - }; + await this.privateKeyService.setDictAsync(address.toString(), dict); - await this.privateKeyService.setDictAsync(address.toString(), dict); + // Define the type locally + type PXECreationOptions = { + loggers?: { store?: Logger; pxe?: Logger; prover?: Logger }; + useLogSuffix?: boolean | string; + prover?: PrivateKernelProver; + store?: AztecAsyncKVStore; + }; - await createStore(address, { - dataDirectory: this.configService.storePath, - dataStoreMapSizeKB: 1e6, - }); + const provider = createAztecNodeClient("https://aztec-alpha-testnet-fullnode.zkv.xyz"); - return { address }; + const fullConfig = { + ...getPXEServiceConfig(), + l1Contracts: await provider.getL1ContractAddresses(), + }; + + const store = await createStore(address, { + dataDirectory: this.configService.storePath, + dataStoreMapSizeKB: 1e6, + }); + + const options: PXECreationOptions = { + loggers: {}, + store, + }; + + const pxe = await createPXEService(provider, fullConfig, options); + await waitForPXE(pxe); + + const sponsoredFPC = await getSponsoredFPCInstance(); + const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); + await pxe.registerContract({ + instance: sponsoredFPC, + artifact: SponsoredFPCContract.artifact, + }); + + const schnorrAccount = await getSchnorrAccount( + pxe, + pkKey, + deriveSigningKey(pkKey), + salt, + ); + + await schnorrAccount + .deploy({ fee: { paymentMethod } }) + .wait({ timeout: 1200000 }); + + //register token contract + const tokenContractInstanceWithAddress = await provider.getContract( + AztecAddress.fromString("0x19370dc2a7507ab1d30651601940e1821f8081e6ba8171d2017985e307b30863") + ); + + await pxe.registerContract({ + instance: tokenContractInstanceWithAddress, + artifact: TokenContractArtifact, + }); + + //register train contract + const contractInstanceWithAddress = await provider.getContract( + AztecAddress.fromString("0x1f8e6f173782bd7e91e3d15c355afb0a38a25211386c7bf346c60f5383659573") + ); + + await pxe.registerContract({ + instance: contractInstanceWithAddress, + artifact: TrainContractArtifact, + }); + + //sender rebalance addresses + await pxe.registerSender(AztecAddress.fromString("0x147c28c50d4ebb6b858208b6cdc7b28ccbc9800157215ccde66f2bc800c27c42")); + await pxe.registerSender(AztecAddress.fromString("0x1f8e6f173782bd7e91e3d15c355afb0a38a25211386c7bf346c60f5383659573")); + + return { address }; + } + catch (error) { + throw new BadRequestException(`Error while trying to generate account: ${error.message}`); + } } } From bd7a29791825f586e54ac3ecd1128bd5d0a0665d Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Fri, 10 Oct 2025 18:17:02 +0400 Subject: [PATCH 19/69] changed treasury client timeout for aztec. --- .../Client/TreasuryClientFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs b/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs index 662809fa..7c639ff3 100644 --- a/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs +++ b/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs @@ -30,7 +30,7 @@ public static ITreasuryClient Create(string baseUrl) var httpClient = new HttpClient { BaseAddress = new Uri(baseUrl), - Timeout = TimeSpan.FromSeconds(30) + Timeout = TimeSpan.FromSeconds(480) }; return RestService.For(httpClient, refitSettings); From 2f6732e23e0711b762a00a1f9ea119500c775272 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Fri, 10 Oct 2025 18:38:38 +0400 Subject: [PATCH 20/69] Changed treasury client factory to 10min. --- .../Client/TreasuryClientFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs b/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs index 7c639ff3..81bc2e5e 100644 --- a/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs +++ b/csharp/src/Infrastrucutre.Secret.Treasury/Client/TreasuryClientFactory.cs @@ -30,7 +30,7 @@ public static ITreasuryClient Create(string baseUrl) var httpClient = new HttpClient { BaseAddress = new Uri(baseUrl), - Timeout = TimeSpan.FromSeconds(480) + Timeout = TimeSpan.FromMinutes(10) }; return RestService.For(httpClient, refitSettings); From aabf73e5d06fb058ed1c7b9f01dacde3f407885b Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 12 Oct 2025 09:59:54 +0400 Subject: [PATCH 21/69] minor changes for aztec test. --- treasury/src/treasury/aztec/aztec.service.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 50fa7391..bd5f6fa2 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -189,8 +189,6 @@ export class AztecTreasuryService extends TreasuryService { "private_salt": salt.toString(), }; - await this.privateKeyService.setDictAsync(address.toString(), dict); - // Define the type locally type PXECreationOptions = { loggers?: { store?: Logger; pxe?: Logger; prover?: Logger }; @@ -235,7 +233,7 @@ export class AztecTreasuryService extends TreasuryService { await schnorrAccount .deploy({ fee: { paymentMethod } }) - .wait({ timeout: 1200000 }); + .wait({ timeout: 1200 }); //register token contract const tokenContractInstanceWithAddress = await provider.getContract( @@ -261,6 +259,8 @@ export class AztecTreasuryService extends TreasuryService { await pxe.registerSender(AztecAddress.fromString("0x147c28c50d4ebb6b858208b6cdc7b28ccbc9800157215ccde66f2bc800c27c42")); await pxe.registerSender(AztecAddress.fromString("0x1f8e6f173782bd7e91e3d15c355afb0a38a25211386c7bf346c60f5383659573")); + await this.privateKeyService.setDictAsync(address.toString(), dict); + return { address }; } catch (error) { From 2b08f226c8f2d03f046b8d672b324c3a2ce99c71 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 13 Oct 2025 14:05:39 +0400 Subject: [PATCH 22/69] added missing aztec worker in js. --- js/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/src/index.ts b/js/src/index.ts index 2e817460..75cd6dc2 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -1,5 +1,6 @@ import starknetWorker from './Blockchain/Blockchain.Starknet/Worker/StarknetWorker'; import fuelWorker from './Blockchain/Blockchain.Fuel/Worker/FuelWorker'; +import aztecWorker from './Blockchain/Blockchain.Aztec/Worker/AztecWorker'; import * as dotenv from 'dotenv'; dotenv.config(); @@ -13,6 +14,9 @@ switch (network) { case 'Fuel': fuelWorker(network); break; + case 'Aztec': + aztecWorker(network); + break; default: console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel.`); process.exit(1); From fdefd01364bf653da38d0803948b112ff9154967 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 13 Oct 2025 16:17:05 +0400 Subject: [PATCH 23/69] added aztec github action. --- .github/workflows/aztec.yml | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/aztec.yml diff --git a/.github/workflows/aztec.yml b/.github/workflows/aztec.yml new file mode 100644 index 00000000..b63f18fe --- /dev/null +++ b/.github/workflows/aztec.yml @@ -0,0 +1,40 @@ +name: Aztec Workflow runner + +on: + workflow_dispatch: + push: + branches: [ main, dev ] + paths: + - 'js/**' + - '.github/workflows/aztec.yml' + pull_request: + branches: [ main, dev ] + paths: + - 'js/**' + - '.github/workflows/aztec.yml' + release: + types: [published, created] + +env: + DOCKER_IMAGE: trainprotocol/solver-aztec + NODE_VERSION: 20 + +jobs: + build-and-push: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Docker build and push + id: docker + uses: ./.github/actions/docker + with: + file: js/Dockerfile + docker-image: ${{ env.DOCKER_IMAGE }} + dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }} + dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }} + build-args: | + NODE_VERSION=${{ env.NODE_VERSION }} \ No newline at end of file From 3509140377679d3aa8a07b033402d9590bc3ed6c Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 17:34:14 +0400 Subject: [PATCH 24/69] Try to update docker. --- js/Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/Dockerfile b/js/Dockerfile index 2844a1c2..8bd71488 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -3,6 +3,8 @@ ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder +RUN apk add --no-cache python3 make g++ + WORKDIR /app COPY js/ . RUN npm ci @@ -10,6 +12,7 @@ RUN npm run build # Final production image FROM node:${NODE_VERSION} AS final +RUN apk add --no-cache python3 make g++ WORKDIR /app COPY --from=builder /app . From 2f89b31b54bf966ffa6d864a7fc4ca5d800d4609 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 17:46:54 +0400 Subject: [PATCH 25/69] Fix docker. --- js/Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index 8bd71488..ce3b2c75 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,20 +1,19 @@ -# Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apk add --no-cache python3 make g++ +RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY js/ . RUN npm ci RUN npm run build -# Final production image FROM node:${NODE_VERSION} AS final -RUN apk add --no-cache python3 make g++ + +RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app . -CMD ["sh", "-c", "npm run start"] \ No newline at end of file +CMD ["sh", "-c", "npm run start"] From ea67f3273f8c87621ed0426571fd1a2f6d06773f Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 17:55:37 +0400 Subject: [PATCH 26/69] Revert "Fix docker." This reverts commit 2f89b31b54bf966ffa6d864a7fc4ca5d800d4609. --- js/Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index ce3b2c75..8bd71488 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,19 +1,20 @@ +# Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache python3 make g++ WORKDIR /app COPY js/ . RUN npm ci RUN npm run build +# Final production image FROM node:${NODE_VERSION} AS final - -RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache python3 make g++ WORKDIR /app COPY --from=builder /app . -CMD ["sh", "-c", "npm run start"] +CMD ["sh", "-c", "npm run start"] \ No newline at end of file From c7fa55ed1a026c582e5cda2dda8088dd59714505 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 17:55:44 +0400 Subject: [PATCH 27/69] Reapply "Fix docker." This reverts commit ea67f3273f8c87621ed0426571fd1a2f6d06773f. --- js/Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index 8bd71488..ce3b2c75 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,20 +1,19 @@ -# Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apk add --no-cache python3 make g++ +RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY js/ . RUN npm ci RUN npm run build -# Final production image FROM node:${NODE_VERSION} AS final -RUN apk add --no-cache python3 make g++ + +RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app . -CMD ["sh", "-c", "npm run start"] \ No newline at end of file +CMD ["sh", "-c", "npm run start"] From e67dd7103fffa034ab3e283eb6c72a10bfa2f335 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 17:55:48 +0400 Subject: [PATCH 28/69] Revert "Reapply "Fix docker."" This reverts commit c7fa55ed1a026c582e5cda2dda8088dd59714505. --- js/Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index ce3b2c75..8bd71488 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,19 +1,20 @@ +# Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache python3 make g++ WORKDIR /app COPY js/ . RUN npm ci RUN npm run build +# Final production image FROM node:${NODE_VERSION} AS final - -RUN apt-get update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache python3 make g++ WORKDIR /app COPY --from=builder /app . -CMD ["sh", "-c", "npm run start"] +CMD ["sh", "-c", "npm run start"] \ No newline at end of file From 9bd34c1dfd630dd4b5d8c8dc731d8a5a3541ed93 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Wed, 15 Oct 2025 18:05:22 +0400 Subject: [PATCH 29/69] Fix. --- js/Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index 8bd71488..b52fc623 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,10 +1,9 @@ + # Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apk add --no-cache python3 make g++ - WORKDIR /app COPY js/ . RUN npm ci @@ -12,7 +11,6 @@ RUN npm run build # Final production image FROM node:${NODE_VERSION} AS final -RUN apk add --no-cache python3 make g++ WORKDIR /app COPY --from=builder /app . From 9f281ffde7087fe7d64c74eae17bdbdcb9487f31 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Wed, 15 Oct 2025 18:47:50 +0400 Subject: [PATCH 30/69] Make block range shorter. --- .../src/Workflow.Swap/Workflows/EventListenerUpdaterWorkflow.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Workflow.Swap/Workflows/EventListenerUpdaterWorkflow.cs b/csharp/src/Workflow.Swap/Workflows/EventListenerUpdaterWorkflow.cs index c9eb3cfa..76e69750 100644 --- a/csharp/src/Workflow.Swap/Workflows/EventListenerUpdaterWorkflow.cs +++ b/csharp/src/Workflow.Swap/Workflows/EventListenerUpdaterWorkflow.cs @@ -13,7 +13,7 @@ namespace Train.Solver.Workflow.Swap.Workflows; public class EventListenerUpdaterWorkflow : IScheduledWorkflow { private const int _waitIntervalInSeconds = 5; - private const uint _blockBachSize = 20; + private const uint _blockBachSize = 5; [WorkflowRun] public async Task RunAsync() From cb1f19637b8bd8a9b7c861a2ac275969223b4826 Mon Sep 17 00:00:00 2001 From: Mandzikyan <87118120+Mandzikyan@users.noreply.github.com> Date: Wed, 12 Nov 2025 17:03:14 +0400 Subject: [PATCH 31/69] Back starknet solver. (#134) * Fix new starknet solver. * Minor fixes. * Starknet signing part. * Commit. * Fix build erros. * Remove aztec. * Rename back treasury client. --------- Co-authored-by: Davit Mandzikyan Co-authored-by: maxim055 --- js/package-lock.json | 73 +--- js/package.json | 2 +- ....ts => FuelSignTransactionRequestModel.ts} | 2 +- .../StarknetSignTransactionRequestModel.ts | 5 + .../TreasuryClient/Models/index.ts | 8 +- .../TreasuryClient/treasuryClient.ts | 9 +- .../Models/AllowanceRequest.ts | 1 - .../Models/FeesModels/EstimateFeeRequest.ts | 1 + .../HookedWalletEthTxSubprovider.ts | 50 --- .../WalletsModels/PrivateKeyProvider.ts | 44 --- .../WalletsModels/PrivateKeyRepository.ts | 52 --- .../Models/AztecSignTransactionModel.ts | 2 +- .../Activities/FuelBlockchainActivities.ts | 4 +- .../Activities/Helper/FuelEventTracker.ts | 4 +- .../Activities/IFuelBlockchainActivities.ts | 4 +- .../Activities/Models/EventModels.ts | 22 ++ .../Models/FuelSignTransactionModel.ts | 6 +- .../Models/FuelTokenCommitedEvents.ts | 16 - .../Activities/Models/FuelTokenLockedEvent.ts | 6 - .../Workflows/FuelTransactionProcessor.ts | 35 +- .../Activities/Helper/Client.ts | 25 ++ .../Activities/Helper/ErrorParser.ts | 4 +- .../Activities/Helper/StarknetEventTracker.ts | 8 +- .../Helper/StarknetTransactionBuilder.ts | 14 +- .../IStarknetBlockchainActivities.ts | 19 +- .../StarknetBlockchainActivities.ts | 364 +++++++++--------- .../Models/ComposeRawTxModels.ts | 12 + .../Models/EnsureSufficientBalanceModels.ts | 8 + ...tTokenCommittedEvent.ts => EventModels.ts} | 9 +- .../Models/SignTransactionRequest.ts | 7 + .../StarknetPublishTransactionRequest .ts | 9 - .../Models/StarknetTokenLockedEvent.ts | 6 - .../StarknetTransactioCalculationType.ts | 12 - .../Models/TransactionCalculationType.ts | 11 + .../Models/TransactionModels.ts | 9 + .../Worker/StarknetWorker.ts | 2 - .../Workflows/StarknetTransactionProcessor.ts | 63 ++- js/src/index.ts | 6 +- treasury/src/app/treasury.types.ts | 5 +- .../src/treasury/starknet/starknet.dto.ts | 5 +- .../src/treasury/starknet/starknet.service.ts | 88 ++++- treasury/src/treasury/treasury.module.ts | 4 +- 42 files changed, 495 insertions(+), 541 deletions(-) rename js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/{FuelSignTransactionRequest.ts => FuelSignTransactionRequestModel.ts} (54%) create mode 100644 js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/StarknetSignTransactionRequestModel.ts delete mode 100644 js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/HookedWalletEthTxSubprovider.ts delete mode 100644 js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyProvider.ts delete mode 100644 js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyRepository.ts create mode 100644 js/src/Blockchain/Blockchain.Fuel/Activities/Models/EventModels.ts delete mode 100644 js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenCommitedEvents.ts delete mode 100644 js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenLockedEvent.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/EnsureSufficientBalanceModels.ts rename js/src/Blockchain/Blockchain.Starknet/Models/{StarknetTokenCommittedEvent.ts => EventModels.ts} (71%) create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/SignTransactionRequest.ts delete mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/StarknetPublishTransactionRequest .ts delete mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenLockedEvent.ts delete mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/StarknetTransactioCalculationType.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts diff --git a/js/package-lock.json b/js/package-lock.json index 90992221..29f4d969 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -24,7 +24,7 @@ "pg": "^8.14.1", "redlock": "^5.0.0-beta.2", "reflect-metadata": "^0.2.2", - "starknet": "^6.23.1", + "starknet": "^7.1.0", "tsyringe": "^4.9.1", "web3-provider-engine": "^17.0.1" }, @@ -9221,16 +9221,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", - "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", - "license": "Unlicense", - "dependencies": { - "set-cookie-parser": "^2.4.8", - "tough-cookie": "^4.0.0" - } - }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", @@ -10474,16 +10464,6 @@ "node": ">=16" } }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/isows": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", @@ -14949,12 +14929,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -15318,22 +15292,23 @@ "license": "MIT" }, "node_modules/starknet": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/starknet/-/starknet-6.24.1.tgz", - "integrity": "sha512-g7tiCt73berhcNi41otlN3T3kxZnIvZhMi8WdC21Y6GC6zoQgbI2z1t7JAZF9c4xZiomlanwVnurcpyfEdyMpg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/starknet/-/starknet-7.1.0.tgz", + "integrity": "sha512-7e5UCmRAng4hwYntNBYmsRo2ox+1ORh8GLO06uJnuW+SKPH6oBf+MSH+g/UntVb4tVUeQVeMrGLkLZ8h1Ghu2Q==", "license": "MIT", "dependencies": { "@noble/curves": "1.7.0", "@noble/hashes": "1.6.0", "@scure/base": "1.2.1", "@scure/starknet": "1.1.0", - "abi-wan-kanabi": "^2.2.3", - "fetch-cookie": "~3.0.0", - "isomorphic-fetch": "~3.0.0", + "abi-wan-kanabi": "2.2.4", + "isows": "^1.0.6", "lossless-json": "^4.0.1", "pako": "^2.0.4", - "starknet-types-07": "npm:@starknet-io/types-js@^0.7.10", - "ts-mixer": "^6.0.3" + "starknet-types-07": "npm:@starknet-io/types-js@~0.7.10", + "starknet-types-08": "npm:@starknet-io/types-js@~0.8.1", + "ts-mixer": "^6.0.3", + "ws": "^8.18.0" } }, "node_modules/starknet-types-07": { @@ -15343,6 +15318,13 @@ "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", "license": "MIT" }, + "node_modules/starknet-types-08": { + "name": "@starknet-io/types-js", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.8.4.tgz", + "integrity": "sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==", + "license": "MIT" + }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -16118,21 +16100,6 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -17002,12 +16969,6 @@ "node": ">=10.13.0" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", diff --git a/js/package.json b/js/package.json index a6928726..7f472fac 100644 --- a/js/package.json +++ b/js/package.json @@ -26,7 +26,7 @@ "pg": "^8.14.1", "redlock": "^5.0.0-beta.2", "reflect-metadata": "^0.2.2", - "starknet": "^6.23.1", + "starknet": "^7.1.0", "tsyringe": "^4.9.1", "web3-provider-engine": "^17.0.1" }, diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequest.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequestModel.ts similarity index 54% rename from js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequest.ts rename to js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequestModel.ts index cca3f062..2a8a5262 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequest.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/FuelSignTransactionRequestModel.ts @@ -1,5 +1,5 @@ import { BaseSignTransactionRequestModel } from "./TreasurySignTransactionRequestModel"; -export interface FuelSignTransactionRequest extends BaseSignTransactionRequestModel { +export interface FuelSignTransactionRequestModel extends BaseSignTransactionRequestModel { nodeUrl: string; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/StarknetSignTransactionRequestModel.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/StarknetSignTransactionRequestModel.ts new file mode 100644 index 00000000..4142e086 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/StarknetSignTransactionRequestModel.ts @@ -0,0 +1,5 @@ +import { BaseSignTransactionRequestModel } from "./TreasurySignTransactionRequestModel"; + +export interface StarknetSignTransactionRequestModel extends BaseSignTransactionRequestModel { + signerInvocationDetails: string +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts index 067983e8..ff363b0d 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/index.ts @@ -1,13 +1,13 @@ import { TreasuryGenerateAddressResponseModel } from './TreasuryGenerateAddressResponseModel'; import { TreasurySignTransactionResponseModel } from './TreasurySignTransactionResponseModel'; import { BaseSignTransactionRequestModel } from './TreasurySignTransactionRequestModel'; -import { FuelSignTransactionRequest } from './FuelSignTransactionRequest'; -import { AztecSignTransactionRequest } from './AztecSignTransactionRequest'; +import { FuelSignTransactionRequestModel } from './FuelSignTransactionRequestModel'; +import { StarknetSignTransactionRequestModel } from './StarknetSignTransactionRequestModel'; export { TreasuryGenerateAddressResponseModel, TreasurySignTransactionResponseModel, BaseSignTransactionRequestModel, - FuelSignTransactionRequest, - AztecSignTransactionRequest, + FuelSignTransactionRequestModel, + StarknetSignTransactionRequestModel }; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts index cc2d81b4..86c59c09 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient.ts @@ -2,13 +2,14 @@ import { BaseSignTransactionRequestModel, TreasuryGenerateAddressResponseModel, TreasurySignTransactionResponseModel, - FuelSignTransactionRequest, - AztecSignTransactionRequest, + FuelSignTransactionRequestModel, + StarknetSignTransactionRequestModel, } from "./Models"; import axios from "axios"; +import { AztecSignTransactionRequest } from "./Models/AztecSignTransactionRequest"; export class TreasuryClient { - private apiClient + private apiClient; constructor(signerAgentUrl: string) { this.apiClient = axios.create({ @@ -20,7 +21,7 @@ export class TreasuryClient { async signTransaction( networkType: string, - request: BaseSignTransactionRequestModel | FuelSignTransactionRequest | AztecSignTransactionRequest + request: BaseSignTransactionRequestModel | FuelSignTransactionRequestModel | StarknetSignTransactionRequestModel | AztecSignTransactionRequest ): Promise { const res = await this.apiClient.post( `${networkType.toLowerCase()}/sign`, diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/AllowanceRequest.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/AllowanceRequest.ts index 107cd1be..244bb479 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/AllowanceRequest.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Models/AllowanceRequest.ts @@ -2,6 +2,5 @@ import { BaseRequest } from "./BaseRequest"; export interface AllowanceRequest extends BaseRequest { ownerAddress: string; - spenderAddress: string; asset: string; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/FeesModels/EstimateFeeRequest.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/FeesModels/EstimateFeeRequest.ts index 3c3d3252..6f6e32ac 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/FeesModels/EstimateFeeRequest.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Models/FeesModels/EstimateFeeRequest.ts @@ -6,4 +6,5 @@ export interface EstimateFeeRequest extends BaseRequest { fromAddress: string, asset: string, callData?: string + nonce: string } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/HookedWalletEthTxSubprovider.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/HookedWalletEthTxSubprovider.ts deleted file mode 100644 index beeb9e73..00000000 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/HookedWalletEthTxSubprovider.ts +++ /dev/null @@ -1,50 +0,0 @@ -// From https://github.com/trufflesuite/truffle/blob/v5.7.2/packages/hdwallet-provider/src/index.ts - -const HookedWalletProvider = require('web3-provider-engine/subproviders/hooked-wallet'); -import { signTypedData, SignTypedDataVersion, personalSign } from "@metamask/eth-sig-util"; - -export class HookedWalletTypedSignatureSubprovider extends HookedWalletProvider { - - constructor(private _opts: any) { - super(_opts) - } - - // https://github.com/trufflesuite/truffle/blob/v5.7.2/packages/hdwallet-provider/src/index.ts#L228 - signTypedMessage({ data, from }: { data: string; from: string }, cb: any) { - this._opts.getPrivateKey(from, function (err: any, privateKey: any) { - if (err) return cb(err) - - if (!data) { - cb("No data to sign"); - return; - } - - const signature = signTypedData({ - data: JSON.parse(data), - privateKey: privateKey, - version: SignTypedDataVersion.V4 - }); - - cb(null, signature); - }) - } - - signMessage({ data, from }: any, cb: any) { - this._opts.getPrivateKey(from, function (err: any, privateKey: any) { - if (err) return cb(err) - - if (!data) { - cb("No data to sign"); - return; - } - - const signature = personalSign({ privateKey, data }) - - cb(null, signature); - }) - } - - signPersonalMessage(payload: any, cb: any) { - this.signMessage(payload, cb); - }; -} diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyProvider.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyProvider.ts deleted file mode 100644 index 5609af6f..00000000 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyProvider.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { HookedWalletTypedSignatureSubprovider } from "./HookedWalletEthTxSubprovider"; -import RpcSubprovider from 'web3-provider-engine/subproviders/rpc'; -import Web3ProviderEngine from 'web3-provider-engine'; -import { Wallet } from 'ethers' - -function PrivateKeyProvider(privateKey: string, providerUrl: string = null) { - if (!privateKey) { - throw new Error(`Private Key missing, non-empty string expected, got "${privateKey}"`); - } - - this._providers = [] - - let wallet = new Wallet(privateKey); - var walletProvider = new HookedWalletTypedSignatureSubprovider({ - getAccounts: function (cb) { - cb(null, [wallet.address]) - }, - getPrivateKey: function (address, cb) { - if (address.toLowerCase() !== wallet.address.toLowerCase()) { - return cb('Account not found') - } - - let privateKey = wallet.privateKey; - if (privateKey.startsWith("0x")) { - privateKey = privateKey.substring(2); - } - - cb(null, privateKey) - } - }); - - this._providers.push(walletProvider); - if (providerUrl) { - this._providers.push(new RpcSubprovider({ rpcUrl: providerUrl })); - } -} - -PrivateKeyProvider.prototype._handleAsync = Web3ProviderEngine.prototype._handleAsync; - -PrivateKeyProvider.prototype.sendAsync = function (payload, cb) { - this._handleAsync(payload, cb) -} - -export default PrivateKeyProvider; diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyRepository.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyRepository.ts deleted file mode 100644 index 9b78961d..00000000 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/WalletsModels/PrivateKeyRepository.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { promises as fs } from 'fs'; -import nodeVault, { client } from 'node-vault' - -export class PrivateKeyRepository { - private pkKey: string = 'private_key'; - private vault: client; - private getTokenAsync!: () => Promise; - - constructor() { - this.vault = nodeVault({ - endpoint: process.env.TrainSolver__HashicorpKeyVaultUri - }); - - this.initLogin(); - } - - public async getAsync(address: string): Promise { - await this.getTokenAsync(); - const keyVaultMount = process.env.TrainSolver__HashicorpKeyVaultMountPath ?? 'secret'; - const {data} = await this.vault.read(`${keyVaultMount}/data/${address}`); - return data.data[this.pkKey]; - } - - public async getStarkPKAsync(address: string, network: string): Promise { - var key = `STARK-${network.replace('_', '-')}--${address.toLowerCase()}`; - return this.getAsync(key); - } - - private initLogin(): void { - const useKubernetesAuth = process.env.TrainSolver__HashicorpEnableKubernetesAuth === 'true'; - - this.getTokenAsync = useKubernetesAuth - ? async () => { - const k8sJWTPath = process.env.K8S_SERVICE_ACCOUNT_TOKEN_PATH; - var k8sRole = process.env.TrainSolver__HashicorpKeyVaultK8sAppRole; - const k8sJWT = await fs.readFile(k8sJWTPath, 'utf8'); - - await this.vault.kubernetesLogin({role: k8sRole , jwt: k8sJWT, mount_point: "kubernetes"}); - } - : async () => { - const userName = process.env.TrainSolver__HashicorpKeyVaultUsername; - const password = process.env.TrainSolver__HashicorpKeyVaultPassword; - - await this.vault - .userpassLogin({ - username: userName, - password: password, - mount_point: 'userpass', - }) - }; - } -} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts index f4fe712f..cea8a529 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Models/AztecSignTransactionModel.ts @@ -1,4 +1,4 @@ -import { AztecSignTransactionRequest } from "../../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models"; +import { AztecSignTransactionRequest } from "../../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/AztecSignTransactionRequest"; export interface AztecSignTransactionRequestModel { networkType: string; diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts index 11aebf9d..c511cd63 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/FuelBlockchainActivities.ts @@ -24,7 +24,7 @@ import { inject, injectable } from "tsyringe"; import Redis from "ioredis"; import Redlock from "redlock"; import { TreasuryClient } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient"; -import { FuelSignTransactionRequestModel } from "./Models/FuelSignTransactionModel"; +import { SignTransactionRequest } from "./Models/FuelSignTransactionModel"; import { TransactionFailedException } from "../../Blockchain.Abstraction/Exceptions/TransactionFailedException"; import { CurrentNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/CurrentNonceRequest"; import { NextNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/NextNonceRequest"; @@ -294,7 +294,7 @@ export class FuelBlockchainActivities implements IFuelBlockchainActivities { } } - public async SignTransaction(request: FuelSignTransactionRequestModel): Promise { + public async SignTransaction(request: SignTransactionRequest): Promise { const treasuryClient = new TreasuryClient(request.signerAgentUrl); diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/Helper/FuelEventTracker.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/Helper/FuelEventTracker.ts index 0edde747..1d46a1a0 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/Helper/FuelEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/Helper/FuelEventTracker.ts @@ -2,11 +2,9 @@ import { bn, Contract, DateTime, Provider, ReceiptType } from "fuels"; import abi from '../ABIs/train.json'; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; -import { TokenCommittedEvent } from "../Models/FuelTokenCommitedEvents"; -import { TokenLockedEvent } from "../Models/FuelTokenLockedEvent"; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; import { FormatAddress } from "../FuelBlockchainActivities"; -import { ethers } from "ethers"; +import { TokenCommittedEvent, TokenLockedEvent } from "../Models/EventModels"; export default async function TrackBlockEventsAsync( network: DetailedNetworkDto, diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/IFuelBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/IFuelBlockchainActivities.ts index 26950591..1c5c0f59 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/IFuelBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/IFuelBlockchainActivities.ts @@ -3,7 +3,7 @@ import { GetTransactionRequest } from "../../Blockchain.Abstraction/Models/Recei import { TransactionResponse } from "../../Blockchain.Abstraction/Models/ReceiptModels/TransactionResponse"; import { FuelPublishTransactionRequest } from "../Models/FuelPublishTransactionRequest"; import { FuelComposeTransactionRequest } from "../Models/FuelComposeTransactionRequest"; -import { FuelSignTransactionRequestModel } from "./Models/FuelSignTransactionModel"; +import { SignTransactionRequest } from "./Models/FuelSignTransactionModel"; import { NextNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/NextNonceRequest"; import { CurrentNonceRequest } from "../../Blockchain.Abstraction/Models/NonceModels/CurrentNonceRequest"; @@ -15,7 +15,7 @@ export interface IFuelBlockchainActivities extends IBlockchainActivities { ComposeRawTransaction(request: FuelComposeTransactionRequest): Promise; - SignTransaction(request: FuelSignTransactionRequestModel): Promise; + SignTransaction(request: SignTransactionRequest): Promise; GetNextNonce(request: NextNonceRequest): Promise; diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/EventModels.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/EventModels.ts new file mode 100644 index 00000000..458f6c14 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/EventModels.ts @@ -0,0 +1,22 @@ +export interface TokenCommittedEvent { + Id: string; + dstChain: string; + dstAddress: string; + dstAsset: string; + srcAsset: string; + amount: string; + timelock: string; + srcReceiver: AddressBits; + sender: AddressBits; + assetId: AddressBits; +} + +interface AddressBits { + bits: string; +} + +export interface TokenLockedEvent { + hashlock: string; + timelock: string; + Id: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelSignTransactionModel.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelSignTransactionModel.ts index 52f5cd82..de08be64 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelSignTransactionModel.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelSignTransactionModel.ts @@ -1,7 +1,7 @@ -import { FuelSignTransactionRequest } from "../../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models"; +import { FuelSignTransactionRequestModel } from "../../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models"; -export interface FuelSignTransactionRequestModel { +export interface SignTransactionRequest { networkType: string; - signRequest: FuelSignTransactionRequest; + signRequest: FuelSignTransactionRequestModel; signerAgentUrl: string; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenCommitedEvents.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenCommitedEvents.ts deleted file mode 100644 index 4f0315f5..00000000 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenCommitedEvents.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface TokenCommittedEvent { - Id: string; - dstChain: string; - dstAddress: string; - dstAsset: string; - srcAsset: string; - amount: string; - timelock: string; - srcReceiver: AddressBits; - sender: AddressBits; - assetId: AddressBits; -} - -interface AddressBits { - bits: string; -} diff --git a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenLockedEvent.ts b/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenLockedEvent.ts deleted file mode 100644 index 597a3ee7..00000000 --- a/js/src/Blockchain/Blockchain.Fuel/Activities/Models/FuelTokenLockedEvent.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface TokenLockedEvent { - hashlock: string; - timelock: string; - Id: string; - } - \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts index ae418182..ecb8fcb3 100644 --- a/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Fuel/Workflows/FuelTransactionProcessor.ts @@ -65,17 +65,15 @@ export async function FuelTransactionProcessor( callDataAmount: Number(preparedTransaction.callDataAmount), }); - const signedRawData = await defaultActivities.SignTransaction( - { - signerAgentUrl: request.signerAgentUrl, - networkType: NetworkType[request.network.type], - signRequest: { - unsignedTxn: rawTx, - address: request.fromAddress, - nodeUrl: request.network.nodes[0].url, - } + const signedRawData = await defaultActivities.SignTransaction({ + signerAgentUrl: request.signerAgentUrl, + networkType: NetworkType[request.network.type], + signRequest: { + unsignedTxn: rawTx, + address: request.fromAddress, + nodeUrl: request.network.nodes[0].url, } - ); + }); const publishedTransaction = await nonRetryableActivities.PublishTransaction({ network: request.network, @@ -88,15 +86,13 @@ export async function FuelTransactionProcessor( }); transactionResponse.asset = preparedTransaction.callDataAsset; - transactionResponse.amount = preparedTransaction.callDataAmount.toString(); + transactionResponse.amount = preparedTransaction.callDataAmount; - await defaultActivities.UpdateCurrentNonce( - { - address: request.fromAddress, - network: request.network, - currentNonce: nextNonce - } - ) + await defaultActivities.UpdateCurrentNonce({ + address: request.fromAddress, + network: request.network, + currentNonce: nextNonce + }); return transactionResponse; @@ -108,8 +104,7 @@ export async function FuelTransactionProcessor( address: request.fromAddress, network: request.network, currentNonce: nextNonce - } - ) + }); if ((error instanceof ApplicationFailure && error.type === 'TransactionFailedException')) { diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts new file mode 100644 index 00000000..0845f7fa --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts @@ -0,0 +1,25 @@ +export async function sendInvocation(rpcUrl: string, invocation: object): Promise { + + const res = await fetch( + rpcUrl, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + jsonrpc: "2.0", + id: 1, + method: "starknet_addInvokeTransaction", + params: [invocation], + }), + }); + + const body = await res.json(); + + if (body.error) { + throw new Error(`RPC error ${body.error.code}: ${body.error.message}`); + } + + if (body.result.transaction_hash) { + return body.result.transaction_hash; + } +} diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/ErrorParser.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/ErrorParser.ts index f33cbbc9..6e9c3ef1 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/ErrorParser.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/ErrorParser.ts @@ -1,8 +1,8 @@ export function ParseNonces(errorMessage: string): { expectedNonce: BigInt; providedNonce: BigInt; -} | null { - +} { + if (!errorMessage) { return null; } diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts index 5a1fb160..3092a789 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts @@ -1,13 +1,11 @@ import { CallData, hash, num, Provider } from "starknet"; -import { TokenLockedEvent as TokenLockAddedEvent, TokenLockedEvent } from "../../Models/StarknetTokenLockedEvent"; import { events } from 'starknet'; import trainAbi from '../ABIs/Train.json'; -import { TokenCommittedEvent as TokenCommittedEvent } from "../../Models/StarknetTokenCommittedEvent"; import { formatAddress} from "../StarknetBlockchainActivities"; -import { formatUnits } from "ethers/lib/utils"; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; import { BigIntToAscii, toHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; +import { TokenCommittedEvent, TokenLockedEvent } from "../../Models/EventModels"; export async function TrackBlockEventsAsync( @@ -76,7 +74,7 @@ export async function TrackBlockEventsAsync( response.htlcCommitEventMessages.push(commitMsg); } else if (eventName.endsWith("TokenLockAdded")) { - const data = eventData as unknown as TokenLockAddedEvent; + const data = eventData as unknown as TokenLockedEvent; const lockMsg: HTLCLockEventMessage = { txId: parsed.transaction_hash, @@ -94,4 +92,4 @@ export async function TrackBlockEventsAsync( export type ContractEvent = | Partial<{ TokenCommitted: TokenCommittedEvent }> - | Partial<{ TokenLockAdded: TokenLockAddedEvent }>; \ No newline at end of file + | Partial<{ TokenLockAdded: TokenLockedEvent }>; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts index 0b9d1774..1de78cc6 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts @@ -1,5 +1,5 @@ import { utils } from "ethers"; -import { cairo, Call, shortString, byteArray } from "starknet"; +import { cairo, Call, shortString, byteArray, Invocation } from "starknet"; import { decodeJson } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { ApprovePrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest"; import { HTLCAddLockSigTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCAddLockSigTransactionPrepareRequest"; @@ -27,7 +27,7 @@ export function createRefundCallData(network: DetailedNetworkDto, args: string): const callData = [cairo.uint256(refundRequest.commitId)]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: htlcContractAddress, entrypoint: "refund", calldata: callData @@ -62,7 +62,7 @@ export function createRedeemCallData(network: DetailedNetworkDto, args: string): cairo.uint256(redeemRequest.secret) ]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: htlcContractAddress, entrypoint: "redeem", calldata: callData @@ -107,7 +107,7 @@ export function createLockCallData(network: DetailedNetworkDto, args: string): P token.contract ]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: htlcContractAddress, entrypoint: "lock", calldata: callData @@ -145,7 +145,7 @@ export function createAddLockSigCallData(network: DetailedNetworkDto, args: stri cairo.uint256(addLockSigRequest.timelock), addLockSigRequest.signatureArray ]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: htlcContractAddress, entrypoint: "addLockSig", calldata: callData @@ -180,7 +180,7 @@ export function createApproveCallData(network: DetailedNetworkDto, args: string) cairo.uint256(Number(utils.parseUnits(approveRequest.amount.toString(), token.decimals))) ]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: token.contract, entrypoint: "approve", calldata: callData @@ -210,7 +210,7 @@ export function createTransferCallData(network: DetailedNetworkDto, args: string cairo.uint256(Number(utils.parseUnits(transferRequest.amount.toString(), token.decimals))) ]; - const methodCall: Call = { + const methodCall: Invocation = { contractAddress: token.contract, entrypoint: "transfer", calldata: callData diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts index e172a4f5..7b55d754 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts @@ -10,24 +10,33 @@ import { TransactionResponse } from "../../Blockchain.Abstraction/Models/Receipt import { AddLockSignatureRequest } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/AddLockSignatureRequest"; import { TransactionBuilderRequest } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransactionBuilderRequest"; import { PrepareTransactionResponse } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; -import { StarknetPublishTransactionRequest } from "../Models/StarknetPublishTransactionRequest "; +import { ComposeRawTransactionRequest, ComposeRawTransactionResponse } from "../Models/ComposeRawTxModels"; +import { EnsureSufficientBalanceRequest } from "../Models/EnsureSufficientBalanceModels"; +import { PublishTransactionRequest, SimulateTransactionRequest } from "../Models/TransactionModels"; +import { SignTransactionRequest } from "../Models/SignTransactionRequest"; export interface IStarknetBlockchainActivities extends IBlockchainActivities { - SimulateTransaction(request: StarknetPublishTransactionRequest): Promise; + SimulateTransaction(request: SimulateTransactionRequest): Promise; GetSpenderAllowance(request: AllowanceRequest): Promise; - PublishTransaction(request: StarknetPublishTransactionRequest): Promise; + PublishTransaction(request: PublishTransactionRequest): Promise; GetBatchTransaction(request: GetBatchTransactionRequest): Promise; EstimateFee(request: EstimateFeeRequest): Promise; - getNextNonce(request: NextNonceRequest): Promise; + GetNextNonce(request: NextNonceRequest): Promise; BuildTransaction(request: TransactionBuilderRequest): Promise; GetTransaction(request: GetTransactionRequest): Promise; - ValidateAddLockSignature(request: AddLockSignatureRequest): Promise + ValidateAddLockSignature(request: AddLockSignatureRequest): Promise; + + EnsureSufficientBalance(request: EnsureSufficientBalanceRequest): Promise; + + ComposeRawTransaction(request: ComposeRawTransactionRequest): Promise; + + SignTransaction(request: SignTransactionRequest): Promise; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts index a8cdb98d..5c71b5c7 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts @@ -1,13 +1,11 @@ -import { Abi, Account, cairo, Call, constants, Contract, hash, RpcProvider, shortString, transaction, TransactionType as StarknetTransactionType, uint256, addAddressPadding } from "starknet"; -import { ETransactionVersion2, TypedData, TypedDataRevision } from "starknet-types-07"; +import { Abi, cairo, Call, Contract, hash, RpcProvider, shortString, uint256, addAddressPadding, Invocation, SuccessfulTransactionReceiptResponse, InvocationsSignerDetails, stark, AccountInvocations, TransactionType as StarknetTransactionType, v3hash } from "starknet"; +import { TypedData, TypedDataRevision } from "starknet-types-07"; import { injectable, inject } from "tsyringe"; import erc20Json from './ABIs/ERC20.json' -import { StarknetPublishTransactionRequest } from "../Models/StarknetPublishTransactionRequest "; +import { PublishTransactionRequest, SimulateTransactionRequest } from "../Models/TransactionModels"; import { BigNumber, utils } from "ethers"; import { InvalidTimelockException } from "../../Blockchain.Abstraction/Exceptions/InvalidTimelockException"; -import { PrivateKeyRepository } from "../../Blockchain.Abstraction/Models/WalletsModels/PrivateKeyRepository"; import { ParseNonces } from "./Helper/ErrorParser"; -import { CalcV2InvokeTxHashArgs } from "../Models/StarknetTransactioCalculationType"; import { TransactionFailedException } from "../../Blockchain.Abstraction/Exceptions/TransactionFailedException"; import { TrackBlockEventsAsync } from "./Helper/StarknetEventTracker"; import Redis from "ioredis"; @@ -37,6 +35,10 @@ import { TransactionType } from "../../Blockchain.Abstraction/Models/Transaciton import { TransactionBuilderRequest } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransactionBuilderRequest"; import { TransactionNotComfirmedException } from "../../Blockchain.Abstraction/Exceptions/TransactionNotComfirmedException"; import { DetailedNetworkDto } from "../../Blockchain.Abstraction/Models/DetailedNetworkDto"; +import { EnsureSufficientBalanceRequest } from "../Models/EnsureSufficientBalanceModels"; +import { ComposeRawTransactionRequest, ComposeRawTransactionResponse } from "../Models/ComposeRawTxModels"; +import { SignTransactionRequest } from "../Models/SignTransactionRequest"; +import { sendInvocation } from "./Helper/Client"; import { TreasuryClient } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient"; @injectable() @@ -44,33 +46,83 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti constructor( @inject("Redis") private redis: Redis, @inject("Redlock") private lockFactory: Redlock, - @inject("TreasuryClient") private treasuryClient: TreasuryClient ) { } - readonly FeeSymbol = "ETH"; - readonly FeeDecimals = 18; readonly FEE_ESTIMATE_MULTIPLIER = BigInt(4); - public async GetBatchTransaction(request: GetBatchTransactionRequest): Promise { - let transaction: TransactionResponse = null; + public async BuildTransaction(request: TransactionBuilderRequest): Promise { + try { + switch (request.type) { + case TransactionType.HTLCLock: + return createLockCallData(request.network, request.prepareArgs); + case TransactionType.HTLCRedeem: + return createRedeemCallData(request.network, request.prepareArgs); + case TransactionType.HTLCRefund: + return createRefundCallData(request.network, request.prepareArgs); + case TransactionType.HTLCAddLockSig: + return createAddLockSigCallData(request.network, request.prepareArgs); + case TransactionType.Approve: + return createApproveCallData(request.network, request.prepareArgs); + case TransactionType.Transfer: + return createTransferCallData(request.network, request.prepareArgs); + case TransactionType.HTLCCommit: + return createCommitCallData(request.network, request.prepareArgs); + default: + throw new Error(`Unknown function name ${request.type}`); + } + } + catch (error) { + throw error; + } + } - for (const transactionId of request.TransactionHashes) { - transaction = await this.GetTransactionByHashAsync(request.network, transactionId); + public async GetBalance(request: BalanceRequest): Promise { + try { + const token = request.network.tokens.find(t => t.symbol === request.asset); + + if (!token) { + throw new Error(`Token not found for network ${request.network.name} and asset ${request.asset}`); + } + + const provider = new RpcProvider({ + nodeUrl: request.network.nodes[0].url + }); + + const erc20 = new Contract(erc20Json as Abi, token.contract, provider); + const balanceResult = await erc20.balanceOf(request.address); + const balanceInWei = BigNumber.from(uint256.uint256ToBN(balanceResult.balance as any).toString()); + + let result: BalanceResponse = { + amount: Number(balanceInWei) + } + + return result; + } + catch (error) { + throw error; } + } + + public async GetTransaction(request: GetTransactionRequest): Promise { + + const transaction = await this.GetTransactionByHashAsync(request.network, request.transactionHash); if (!transaction) { - throw new TransactionNotComfirmedException("Transaction not confirmed"); + throw new TransactionNotComfirmedException(`Transaction ${request.transactionHash} not found`); } return transaction; } - public async GetTransaction(request: GetTransactionRequest): Promise { + public async GetBatchTransaction(request: GetBatchTransactionRequest): Promise { + let transaction: TransactionResponse = null; - const transaction = await this.GetTransactionByHashAsync(request.network, request.transactionHash); + for (const transactionId of request.TransactionHashes) { + transaction = await this.GetTransactionByHashAsync(request.network, transactionId); + } if (!transaction) { - throw new TransactionNotComfirmedException(`Transaction ${request.transactionHash} not found`); + throw new TransactionNotComfirmedException("Transaction not confirmed"); } return transaction; @@ -92,15 +144,15 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const transactionReceiptResponse = await provider.getTransactionReceipt(transactionHash); - const confrimedTransaction = transactionReceiptResponse.isSuccess() ? transactionReceiptResponse : null; + const confrimedTransaction = transactionReceiptResponse.value as SuccessfulTransactionReceiptResponse if (!confrimedTransaction) { return null; } - const feeInWei = confrimedTransaction.actual_fee.amount; + const blockData = await provider.getBlockWithTxHashes(confrimedTransaction.block_number); - const feeAmount = Number(utils.formatUnits(BigNumber.from(feeInWei), this.FeeDecimals)); + const feeAmount = confrimedTransaction.actual_fee; let transactionModel: TransactionResponse = { transactionHash: transactionHash, @@ -110,19 +162,10 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti status: transactionStatus, feeAsset: network.nativeToken.symbol, feeAmount: feeAmount.toString(), - timestamp: new Date(), - networkName: network.name, + timestamp: new Date(blockData.timestamp * 1000), + networkName: network.name }; - const isConfirmed = "block_number" in confrimedTransaction; - - if (isConfirmed) { - const blockNumber = confrimedTransaction.block_number as string; - const blockData = await provider.getBlockWithTxHashes(blockNumber); - - transactionModel.timestamp = new Date(blockData.timestamp * 1000); - } - return transactionModel; } @@ -163,7 +206,7 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti ); } - public async getNextNonce(request: NextNonceRequest): Promise { + public async GetNextNonce(request: NextNonceRequest): Promise { const provider = new RpcProvider({ nodeUrl: request.network.nodes[0].url }); const formattedAddress = formatAddress(request.address); @@ -202,153 +245,39 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } } - public async PublishTransaction(request: StarknetPublishTransactionRequest): Promise { - let result: string; - - const privateKey = await new PrivateKeyRepository().getAsync(request.fromAddress); - - const provider = new RpcProvider({ - nodeUrl: request.network.nodes[0].url - }); - - const account = new Account(provider, request.fromAddress, privateKey, '1'); - - var transferCall: Call = JSON.parse(request.callData); - - const compiledCallData = transaction.getExecuteCalldata([transferCall], await account.getCairoVersion()); - - const args: CalcV2InvokeTxHashArgs = { - senderAddress: request.fromAddress, - version: ETransactionVersion2.V1, - compiledCalldata: compiledCallData, - maxFee: request.fee.FixedFeeData.FeeInWei, - chainId: request.network.chainId as constants.StarknetChainId, - nonce: request.nonce - }; - - const calcualtedTxHash = hash.calculateInvokeTransactionHash(args); - - try { - - const executeResponse = await account.execute( - [transferCall], - undefined, - { - maxFee: request.fee.FixedFeeData.FeeInWei, - nonce: request.nonce - }, - ); - - result = executeResponse.transaction_hash; - - if (!result || !result.startsWith("0x")) { - throw new Error(`Withdrawal response didn't contain a correct transaction hash. Response: ${JSON.stringify(executeResponse)}`); - } - - return result; - } - catch (error) { - const nonceInfo = ParseNonces(error?.message); - - if (nonceInfo && nonceInfo.providedNonce < nonceInfo.expectedNonce) { - return calcualtedTxHash; - } - - throw error; - } - } - - public async BuildTransaction(request: TransactionBuilderRequest): Promise { - try { - switch (request.type) { - case TransactionType.HTLCLock: - return createLockCallData(request.network, request.prepareArgs); - case TransactionType.HTLCRedeem: - return createRedeemCallData(request.network, request.prepareArgs); - case TransactionType.HTLCRefund: - return createRefundCallData(request.network, request.prepareArgs); - case TransactionType.HTLCAddLockSig: - return createAddLockSigCallData(request.network, request.prepareArgs); - case TransactionType.Approve: - return createApproveCallData(request.network, request.prepareArgs); - case TransactionType.Transfer: - return createTransferCallData(request.network, request.prepareArgs); - case TransactionType.HTLCCommit: - return createCommitCallData(request.network, request.prepareArgs); - default: - throw new Error(`Unknown function name ${request.type}`); - } - } - catch (error) { - throw error; - } - } + public async PublishTransaction(request: PublishTransactionRequest): Promise { - public async GetBalance(request: BalanceRequest): Promise { - try { - const token = request.network.tokens.find(t => t.symbol === request.asset); + const invocation: Invocation = JSON.parse(request.signedRawData); + const nodeUrl = request.network.nodes[0].url; - if (!token) { - throw new Error(`Token not found for network ${request.network.name} and asset ${request.asset}`); - } - - const provider = new RpcProvider({ - nodeUrl: request.network.nodes[0].url - }); + const txHash = await sendInvocation(nodeUrl, invocation); - const erc20 = new Contract(erc20Json as Abi, token.contract, provider); - const balanceResult = await erc20.balanceOf(request.address); - const balanceInWei = BigNumber.from(uint256.uint256ToBN(balanceResult.balance as any).toString()); - - let result: BalanceResponse = { - amount: Number(balanceInWei) - } - - return result; - } - catch (error) { - throw error; - } + return txHash; } - public async SimulateTransaction(request: StarknetPublishTransactionRequest): Promise { - - const privateKey = await new PrivateKeyRepository().getAsync(request.fromAddress); + public async SimulateTransaction(request: SimulateTransactionRequest): Promise { const provider = new RpcProvider({ nodeUrl: request.network.nodes[0].url }); - const account = new Account(provider, request.fromAddress, privateKey, '1'); - - var transferCall: Call = JSON.parse(request.callData); + const invocation: Invocation = JSON.parse(request.signedRawData); - const compiledCallData = transaction.getExecuteCalldata([transferCall], await account.getCairoVersion()); - - const args: CalcV2InvokeTxHashArgs = { - senderAddress: request.fromAddress, - version: ETransactionVersion2.V1, - compiledCalldata: compiledCallData, - maxFee: request.fee.FixedFeeData.FeeInWei, - chainId: request.network.chainId as constants.StarknetChainId, - nonce: request.nonce - }; - - const calcualtedTxHash = await hash.calculateInvokeTransactionHash(args); + const accountInvocations: AccountInvocations = + [ + { + type: StarknetTransactionType.INVOKE, + contractAddress: invocation.contractAddress, + entrypoint: invocation.entrypoint, + nonce: request.nonce, + signature: invocation.signature + } + ]; try { - await account.simulateTransaction( - [ - { - type: StarknetTransactionType.INVOKE, - payload: [transferCall] - } - ], - { - nonce: request.nonce - }); + await provider.getSimulateTransaction(accountInvocations); - return calcualtedTxHash; + return; } catch (error) { const nonceInfo = ParseNonces(error?.message); @@ -369,17 +298,18 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti public async EstimateFee(feeRequest: EstimateFeeRequest): Promise { try { - const privateKey = await new PrivateKeyRepository().getAsync(feeRequest.fromAddress); const provider = new RpcProvider({ nodeUrl: feeRequest.network.nodes[0].url }); - const account = new Account(provider, feeRequest.fromAddress, privateKey, '1'); - - var transferCall: Call = JSON.parse(feeRequest.callData); + const transferCall: Invocation = JSON.parse(feeRequest.callData); - let feeEstimateResponse = await account.estimateFee(transferCall); + const feeEstimateResponse = await provider.getInvokeEstimateFee( + transferCall, + { + nonce: feeRequest.nonce + }); if (!feeEstimateResponse?.suggestedMaxFee) { throw new Error(`Couldn't get fee estimation for the transfer. Response: ${JSON.stringify(feeEstimateResponse)}`); @@ -393,24 +323,12 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti FeeInWei: feeInWei.toString(), }; - let result: Fee = + const result: Fee = { - Asset: this.FeeSymbol, + Asset: feeRequest.network.nativeToken.symbol, FixedFeeData: fixedfeeData, } - const balanceResponse = await this.GetBalance({ - address: feeRequest.fromAddress, - network: feeRequest.network, - asset: this.FeeSymbol - }); - - const amount = feeInWei.add(BigNumber.from(feeRequest.amount)); - - if (BigNumber.from(balanceResponse.amount).lt(amount)) { - throw new Error(`Insufficient balance for fee. Balance: ${balanceResponse.amount}, Fee: ${amount}`); - } - return result; } catch (error: any) { @@ -421,6 +339,42 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } } + public async EnsureSufficientBalance(request: EnsureSufficientBalanceRequest): Promise { + + const nativeTokenAsset = request.network.nativeToken.symbol; + + const nativeTokenBalance = await this.GetBalance({ + address: request.address, + network: request.network, + asset: nativeTokenAsset + }); + + const amount = BigNumber.from(request.amount); + const feeAmount = BigNumber.from(request.feeAmount); + + if (nativeTokenAsset === request.asset) { + + if (BigNumber.from(nativeTokenBalance.amount).lt(amount.add(feeAmount))) { + throw new Error(`Insufficient balance for fee. Balance: ${nativeTokenBalance.amount} asset ${nativeTokenAsset}, Fee: ${amount.add(feeAmount)}`); + } + } + else { + const tokenBalance = await this.GetBalance({ + address: request.address, + network: request.network, + asset: request.asset + }); + + if (BigNumber.from(nativeTokenBalance.amount).lt(feeAmount)) { + throw new Error(`Insufficient balance for fee. Balance: ${nativeTokenBalance.amount} asset ${nativeTokenAsset}, Fee: ${feeAmount}`); + } + + if (BigNumber.from(tokenBalance.amount).lt(amount)) { + throw new Error(`Insufficient balance for fee. Balance: ${tokenBalance.amount} asset ${request.asset}, Fee: ${amount}`); + } + } + } + public async ValidateAddLockSignature(request: AddLockSignatureRequest): Promise { try { @@ -499,6 +453,50 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti throw error; } } + + public async ComposeRawTransaction(request: ComposeRawTransactionRequest): Promise { + + const provider = new RpcProvider({ + nodeUrl: request.network.nodes[0].url + }); + + const chainId = await provider.getChainId(); + + const signerDetails: InvocationsSignerDetails = { + ...stark.v3Details({}), + walletAddress: request.address, + nonce: request.nonce, + version: "0x3", + chainId, + cairoVersion: '1', + skipValidate: false + }; + + const parsedInvocation: Invocation = JSON.parse(request.callData); + + const transferCall: Call = + { + contractAddress: parsedInvocation.contractAddress, + entrypoint: parsedInvocation.entrypoint, + calldata: parsedInvocation.calldata + }; + + const result: ComposeRawTransactionResponse = + { + signerInvocationDetails: JSON.stringify(signerDetails), + unsignedTxn: JSON.stringify(transferCall) + }; + + return result; + }; + + public async SignTransaction(request: SignTransactionRequest): Promise { + const treasuryClient = new TreasuryClient(request.signerAgentUrl); + + const response = await treasuryClient.signTransaction(request.networkType, request.signRequest); + + return response.signedTxn; + } } export function formatAddress(address: string): string { diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts new file mode 100644 index 00000000..e10e844d --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts @@ -0,0 +1,12 @@ +import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; + +export interface ComposeRawTransactionRequest extends BaseRequest { + callData: string, + nonce: string, + address: string +} + +export interface ComposeRawTransactionResponse { + unsignedTxn: string, + signerInvocationDetails: string +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/EnsureSufficientBalanceModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/EnsureSufficientBalanceModels.ts new file mode 100644 index 00000000..369c5664 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/EnsureSufficientBalanceModels.ts @@ -0,0 +1,8 @@ +import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; + +export interface EnsureSufficientBalanceRequest extends BaseRequest{ + address: string, + asset: string, + amount: string, + feeAmount: string +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenCommittedEvent.ts b/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts similarity index 71% rename from js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenCommittedEvent.ts rename to js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts index 66da92e0..ed9f1fa8 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenCommittedEvent.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts @@ -1,3 +1,9 @@ +export interface TokenLockedEvent { + hashlock: bigint; + timelock: bigint; + Id: bigint; +} + export interface TokenCommittedEvent { Id: bigint; dstChain: bigint; @@ -9,5 +15,4 @@ export interface TokenCommittedEvent { tokenContract: string; srcReceiver: bigint; sender: bigint; - } - \ No newline at end of file +} diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/SignTransactionRequest.ts b/js/src/Blockchain/Blockchain.Starknet/Models/SignTransactionRequest.ts new file mode 100644 index 00000000..703f2845 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/SignTransactionRequest.ts @@ -0,0 +1,7 @@ +import { StarknetSignTransactionRequestModel } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/Models/StarknetSignTransactionRequestModel"; + +export interface SignTransactionRequest{ + signRequest: StarknetSignTransactionRequestModel; + networkType: string; + signerAgentUrl: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetPublishTransactionRequest .ts b/js/src/Blockchain/Blockchain.Starknet/Models/StarknetPublishTransactionRequest .ts deleted file mode 100644 index 3c68cbb0..00000000 --- a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetPublishTransactionRequest .ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; -import { Fee } from "../../Blockchain.Abstraction/Models/FeesModels/Fee"; - -export interface StarknetPublishTransactionRequest extends BaseRequest { - fromAddress: string; - callData: string; - nonce: string; - fee: Fee; - } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenLockedEvent.ts b/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenLockedEvent.ts deleted file mode 100644 index 01e0893b..00000000 --- a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTokenLockedEvent.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface TokenLockedEvent { - hashlock: bigint; - timelock: bigint; - Id: bigint; - } - \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTransactioCalculationType.ts b/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTransactioCalculationType.ts deleted file mode 100644 index 28d81b58..00000000 --- a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetTransactioCalculationType.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BigNumberish, Calldata, constants } from "starknet"; -import { ETransactionVersion2 } from "starknet-types-07"; - - -export type CalcV2InvokeTxHashArgs = { - senderAddress: BigNumberish; - version: ETransactionVersion2; - compiledCalldata: Calldata; - maxFee: BigNumberish; - chainId: constants.StarknetChainId; - nonce: BigNumberish; - }; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts new file mode 100644 index 00000000..19d76b0e --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts @@ -0,0 +1,11 @@ +import { BigNumberish, Calldata, constants } from "starknet"; +import { ETransactionVersion2 } from "starknet-types-07"; + +export type CalcV2InvokeTxHashArgs = { + senderAddress: BigNumberish; + version: ETransactionVersion2; + compiledCalldata: Calldata; + maxFee: BigNumberish; + chainId: constants.StarknetChainId; + nonce: BigNumberish; +}; \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts new file mode 100644 index 00000000..b22c547a --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts @@ -0,0 +1,9 @@ +import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; + +export interface PublishTransactionRequest extends BaseRequest { + signedRawData: string; +} + +export interface SimulateTransactionRequest extends PublishTransactionRequest { + nonce: string; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Worker/StarknetWorker.ts b/js/src/Blockchain/Blockchain.Starknet/Worker/StarknetWorker.ts index c7827779..3074343f 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Worker/StarknetWorker.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Worker/StarknetWorker.ts @@ -1,5 +1,4 @@ import { Worker, NativeConnection } from '@temporalio/worker'; -import * as dotenv from 'dotenv'; import 'reflect-metadata'; import { StarknetBlockchainActivities } from '../Activities/StarknetBlockchainActivities'; import { extractActivities as ExtractActivities } from '../../../TemporalHelper/ActivityParser'; @@ -7,7 +6,6 @@ import { container } from 'tsyringe'; import { AddCoreServices } from '../../Blockchain.Abstraction/Infrastructure/AddCoreServices'; export default async function run( taskQueue: string): Promise { - dotenv.config(); try { diff --git a/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts index 754bc6d5..fd4a4873 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts @@ -6,13 +6,13 @@ import { AlreadyClaimedExceptions } from '../../Blockchain.Abstraction/Exception import { HTLCAlreadyExistsException } from '../../Blockchain.Abstraction/Exceptions/HTLCAlreadyExistsException'; import { TransactionFailedException } from '../../Blockchain.Abstraction/Exceptions/TransactionFailedException'; import { buildProcessorId, decodeJson } from '../../Blockchain.Abstraction/Extensions/StringExtensions'; -import { AllowanceRequest } from '../../Blockchain.Abstraction/Models/AllowanceRequest'; import { TransactionResponse } from '../../Blockchain.Abstraction/Models/ReceiptModels/TransactionResponse'; import { TransactionExecutionContext } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionExecutionContext'; import { TransactionRequest } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionRequest'; import { HTLCLockTransactionPrepareRequest } from '../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCLockTransactionPrepareRequest'; import { TransferPrepareRequest } from '../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferPrepareRequest'; import { TransactionType } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionType'; +import { NetworkType } from '../../Blockchain.Abstraction/Models/Dtos/NetworkDto'; const defaultActivities = proxyActivities({ startToCloseTimeout: '1 hour', @@ -49,8 +49,16 @@ export async function StarknetTransactionProcessor( fromAddress: request.fromAddress, swapId: request.swapId, }); + try { + if (!context.nonce) { + context.nonce = await defaultActivities.GetNextNonce({ + network: request.network, + address: request.fromAddress, + }); + } + if (!context.fee) { context.fee = await nonRetryableActivities.EstimateFee({ network: request.network, @@ -59,32 +67,46 @@ export async function StarknetTransactionProcessor( fromAddress: request.fromAddress, asset: preparedTransaction.asset!, callData: preparedTransaction.data, + nonce: context.nonce }); } - if (!context.nonce) { - context.nonce = await defaultActivities.getNextNonce({ - network: request.network, + await defaultActivities.EnsureSufficientBalance( + { address: request.fromAddress, - }); - } - - const simulationTxId = await nonRetryableActivities.SimulateTransaction({ - network: request.network, - fromAddress: request.fromAddress, - nonce: context.nonce, + amount: preparedTransaction.callDataAmount, + asset: preparedTransaction.asset, + feeAmount: context.fee.FixedFeeData.FeeInWei, + network: request.network + } + ); + + const rawTx = await defaultActivities.ComposeRawTransaction({ + address: request.fromAddress, callData: preparedTransaction.data, - fee: context.fee, + network: request.network, + nonce: context.nonce }); - context.publishedTransactionIds.push(simulationTxId); + const signedRawData = await defaultActivities.SignTransaction({ + signerAgentUrl: request.signerAgentUrl, + networkType: NetworkType[request.network.type], + signRequest: { + unsignedTxn: rawTx.unsignedTxn, + signerInvocationDetails: rawTx.signerInvocationDetails, + address: request.fromAddress, + } + }); + + await nonRetryableActivities.SimulateTransaction({ + nonce: context.nonce, + network: request.network, + signedRawData: signedRawData + }); const txId = await nonRetryableActivities.PublishTransaction({ network: request.network, - fromAddress: request.fromAddress, - nonce: context.nonce, - callData: preparedTransaction.data, - fee: context.fee, + signedRawData: signedRawData }); context.publishedTransactionIds.push(txId); @@ -98,7 +120,6 @@ export async function StarknetTransactionProcessor( confirmed.amount = preparedTransaction.callDataAmount.toString(); return confirmed; - } catch (error) { if (error instanceof InvalidTimelockException && context.nonce) { @@ -138,7 +159,7 @@ export async function StarknetTransactionProcessor( } } -export async function checkAllowance(context: TransactionRequest): Promise { +async function checkAllowance(context: TransactionRequest): Promise { const lockRequest = decodeJson(context.prepareArgs); const allowance = await defaultActivities.GetSpenderAllowance( @@ -146,7 +167,7 @@ export async function checkAllowance(context: TransactionRequest): Promise network: context.network, ownerAddress: context.fromAddress!, asset: lockRequest.sourceAsset, - } as AllowanceRequest); + }); if (lockRequest.amount > allowance) { @@ -171,7 +192,7 @@ export async function checkAllowance(context: TransactionRequest): Promise }; const processorId = buildProcessorId(uuid4(), context.network.name, context.type); - + await executeChild(StarknetTransactionProcessor, { args: [approveRequest, childContext], diff --git a/js/src/index.ts b/js/src/index.ts index 75cd6dc2..d34b189c 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -14,9 +14,9 @@ switch (network) { case 'Fuel': fuelWorker(network); break; - case 'Aztec': - aztecWorker(network); - break; + // case 'Aztec': + // aztecWorker(network); + // break; default: console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel.`); process.exit(1); diff --git a/treasury/src/app/treasury.types.ts b/treasury/src/app/treasury.types.ts index 27c9c4cd..935923c9 100644 --- a/treasury/src/app/treasury.types.ts +++ b/treasury/src/app/treasury.types.ts @@ -1,6 +1,6 @@ import { EVMSignRequest, EVMSignResponse } from "../treasury/evm/evm.dto"; import { BaseSignRequest, BaseSignResponse } from "./dto/base.dto"; -import { StarknetSignRequest, StarknetSignResponse } from "../treasury/starknet/starknet.dto"; +import { StarknetSignRequest } from "../treasury/starknet/starknet.dto"; import { FuelSignRequest } from "../treasury/fuel/fuel.dto"; import { AztecSignRequest } from "../treasury/aztec/aztec.dto"; @@ -11,5 +11,4 @@ export type SignRequest = | AztecSignRequest) & BaseSignRequest; export type SignResponse = - (EVMSignResponse - | StarknetSignResponse) & BaseSignResponse; + (EVMSignResponse) & BaseSignResponse; diff --git a/treasury/src/treasury/starknet/starknet.dto.ts b/treasury/src/treasury/starknet/starknet.dto.ts index af06f899..01005501 100644 --- a/treasury/src/treasury/starknet/starknet.dto.ts +++ b/treasury/src/treasury/starknet/starknet.dto.ts @@ -1,7 +1,6 @@ import { BaseSignRequest, BaseSignResponse } from "../../app/dto/base.dto"; export class StarknetSignRequest extends BaseSignRequest { -} - -export class StarknetSignResponse extends BaseSignResponse { + signerInvocationDetails: string; + type: string } \ No newline at end of file diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index 11c12058..99cf72d1 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -1,26 +1,94 @@ import { Injectable } from '@nestjs/common'; import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { Network } from '../shared/networks.types'; -import { StarknetSignRequest, StarknetSignResponse } from './starknet.dto'; -import { GenerateResponse } from '../../app/dto/base.dto'; +import { StarknetSignRequest } from './starknet.dto'; +import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; +import { CairoCustomEnum, CairoOption, CairoOptionVariant, Call, CallData, DeployAccountSignerDetails, ec, hash, Invocation, InvocationsSignerDetails, Signer, stark, transaction } from 'starknet'; import { PrivateKeyService } from '../../kv/vault.service'; @Injectable() export class StarknetTreasuryService extends TreasuryService { - + readonly network: Network = 'starknet'; + readonly argentXaccountClassHash = '0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f'; - constructor(privateKeyService: PrivateKeyService){ + constructor(privateKeyService: PrivateKeyService) { super(privateKeyService); } - // TODO: Implement the Starknet signing logic - sign(req: StarknetSignRequest): Promise { - throw new Error('Method not implemented.'); + async sign(request: StarknetSignRequest): Promise { + + const privateKey = await this.privateKeyService.getAsync(request.address); + const signer = new Signer(privateKey); + + // if (request.type === "Deploy") { + // const pubKey = await signer.getPubKey(); + + // const axSigner = new CairoCustomEnum({ Starknet: { pubkey: pubKey } }); + // const axGuardian = new CairoOption(CairoOptionVariant.None); + + // const AXConstructorCallData = CallData.compile({ + // owner: axSigner, + // guardian: axGuardian, + // }); + + // const AXcontractAddress = hash.calculateContractAddressFromHash( + // pubKey, + // this.argentXaccountClassHash, + // AXConstructorCallData, + // 0 + // ); + + // const deployAccountPayload = { + // classHash: this.argentXaccountClassHash, + // constructorCalldata: AXConstructorCallData, + // contractAddress: request.address, + // addressSalt: pubKey, + // }; + + // const deployDetails: DeployAccountSignerDetails = + // { + + // } + // } + //else { + const transferCalls: Call = JSON.parse(request.unsignedTxn); + const signerDetails: InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); + + const calldata = transaction.getExecuteCalldata([transferCalls], signerDetails.cairoVersion); + const signature = await signer.signTransaction([transferCalls], signerDetails); + + const response: Invocation = { + ...stark.v3Details(signerDetails), + contractAddress: request.address, + calldata, + signature, + }; + + return { signedTxn: JSON.stringify(response) }; + //} } - // TODO: Implement the Starknet address generation(if applicable) - generate(): Promise { - throw new Error('Method not implemented.'); + async generate(): Promise { + + const privateKeyAX = stark.randomAddress(); + const starkKeyPubAX = ec.starkCurve.getStarkKey(privateKeyAX); + + // Calculate future address of the ArgentX account + const axSigner = new CairoCustomEnum({ Starknet: { pubkey: starkKeyPubAX } }); + const axGuardian = new CairoOption(CairoOptionVariant.None); + const AXConstructorCallData = CallData.compile({ + owner: axSigner, + guardian: axGuardian, + }); + + const address = hash.calculateContractAddressFromHash( + starkKeyPubAX, + this.argentXaccountClassHash, + AXConstructorCallData, + 0 + ); + + return { address } } } \ No newline at end of file diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index bae4e137..0aed57d9 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -17,8 +17,8 @@ import { AztecConfigService } from './aztec/aztec.config'; AztecConfigService, { provide: TREASURIES, - useFactory: (evm, starknet, fuel, aztec) => [evm, starknet, fuel, aztec], - inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, AztecTreasuryService], + useFactory: (evm, starknet, fuel) => [evm, starknet, fuel], + inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService], }, ], exports: [TREASURIES], From 424036aa05d6880c1bc251bb4a0609043dbf73fb Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 02:10:15 +0400 Subject: [PATCH 32/69] Fix starknet signature. --- treasury/src/treasury/starknet/starknet.service.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index 99cf72d1..ca626b47 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -18,7 +18,7 @@ export class StarknetTreasuryService extends TreasuryService { async sign(request: StarknetSignRequest): Promise { - const privateKey = await this.privateKeyService.getAsync(request.address); + const privateKey = "0x06ad03db56a96b3d8e99efd7b39d5dc3c06261679f36ed21531f6e9bfce5958c"; const signer = new Signer(privateKey); // if (request.type === "Deploy") { @@ -65,8 +65,7 @@ export class StarknetTreasuryService extends TreasuryService { signature, }; - return { signedTxn: JSON.stringify(response) }; - //} + return { signedTxn: this.serializeWithBigInt(response) }; } async generate(): Promise { @@ -91,4 +90,10 @@ export class StarknetTreasuryService extends TreasuryService { return { address } } + + private serializeWithBigInt(obj: unknown): string { + return JSON.stringify(obj, (_key, value) => + typeof value === 'bigint' ? value.toString() : value + ); + } } \ No newline at end of file From 7dcf0bb8070789b278dee44eb71327c6664ae622 Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 02:11:20 +0400 Subject: [PATCH 33/69] Fix private key. --- treasury/src/treasury/starknet/starknet.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index ca626b47..f084f287 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -18,7 +18,7 @@ export class StarknetTreasuryService extends TreasuryService { async sign(request: StarknetSignRequest): Promise { - const privateKey = "0x06ad03db56a96b3d8e99efd7b39d5dc3c06261679f36ed21531f6e9bfce5958c"; + const privateKey = await this.privateKeyService.getAsync(request.address); const signer = new Signer(privateKey); // if (request.type === "Deploy") { From 65ca76f66ab495a691cd0e5680d4a4c4f70f7670 Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 02:31:16 +0400 Subject: [PATCH 34/69] Make starknet to return bigints in starknet specific way. --- treasury/src/treasury/starknet/starknet.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index f084f287..96781399 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -3,7 +3,7 @@ import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { Network } from '../shared/networks.types'; import { StarknetSignRequest } from './starknet.dto'; import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; -import { CairoCustomEnum, CairoOption, CairoOptionVariant, Call, CallData, DeployAccountSignerDetails, ec, hash, Invocation, InvocationsSignerDetails, Signer, stark, transaction } from 'starknet'; +import { CairoCustomEnum, CairoOption, CairoOptionVariant, Call, CallData, DeployAccountSignerDetails, ec, hash, Invocation, InvocationsSignerDetails, Signer, stark, transaction, uint256 } from 'starknet'; import { PrivateKeyService } from '../../kv/vault.service'; @Injectable() @@ -93,7 +93,7 @@ export class StarknetTreasuryService extends TreasuryService { private serializeWithBigInt(obj: unknown): string { return JSON.stringify(obj, (_key, value) => - typeof value === 'bigint' ? value.toString() : value + typeof value === 'bigint' ? uint256.bnToUint256(value) : value ); } } \ No newline at end of file From 36edb13079d7b70f2f4abef46e32d597e482e86b Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 15:30:08 +0400 Subject: [PATCH 35/69] fix. --- treasury/src/treasury/starknet/starknet.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index 96781399..6ad64c12 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -65,7 +65,7 @@ export class StarknetTreasuryService extends TreasuryService { signature, }; - return { signedTxn: this.serializeWithBigInt(response) }; + return { signedTxn: JSON.stringify(response) }; } async generate(): Promise { From 7d8004c16870d626e90c88d03ac71ea1fa4a512b Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 16:15:39 +0400 Subject: [PATCH 36/69] Fix. --- treasury/src/treasury/starknet/starknet.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index 6ad64c12..c48009aa 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -3,7 +3,7 @@ import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { Network } from '../shared/networks.types'; import { StarknetSignRequest } from './starknet.dto'; import { BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; -import { CairoCustomEnum, CairoOption, CairoOptionVariant, Call, CallData, DeployAccountSignerDetails, ec, hash, Invocation, InvocationsSignerDetails, Signer, stark, transaction, uint256 } from 'starknet'; +import { CairoCustomEnum, CairoOption, CairoOptionVariant, Call, CallData, CallDetails, DeployAccountSignerDetails, ec, hash, Invocation, InvocationsSignerDetails, Signer, stark, transaction, uint256 } from 'starknet'; import { PrivateKeyService } from '../../kv/vault.service'; @Injectable() @@ -65,7 +65,7 @@ export class StarknetTreasuryService extends TreasuryService { signature, }; - return { signedTxn: JSON.stringify(response) }; + return { signedTxn: this.serializeWithBigInt(response) }; } async generate(): Promise { From 00423322a206ac0475ba7f58f0ae8215969265c1 Mon Sep 17 00:00:00 2001 From: maxim055 Date: Thu, 13 Nov 2025 18:33:00 +0400 Subject: [PATCH 37/69] Remove v3 detaisl. --- treasury/src/treasury/starknet/starknet.service.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/treasury/src/treasury/starknet/starknet.service.ts b/treasury/src/treasury/starknet/starknet.service.ts index c48009aa..669616a5 100644 --- a/treasury/src/treasury/starknet/starknet.service.ts +++ b/treasury/src/treasury/starknet/starknet.service.ts @@ -55,14 +55,13 @@ export class StarknetTreasuryService extends TreasuryService { const transferCalls: Call = JSON.parse(request.unsignedTxn); const signerDetails: InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); - const calldata = transaction.getExecuteCalldata([transferCalls], signerDetails.cairoVersion); const signature = await signer.signTransaction([transferCalls], signerDetails); const response: Invocation = { - ...stark.v3Details(signerDetails), - contractAddress: request.address, - calldata, - signature, + contractAddress: transferCalls.contractAddress, + calldata: transferCalls.calldata, + entrypoint: transferCalls.entrypoint, + signature }; return { signedTxn: this.serializeWithBigInt(response) }; From 92bf26e4594b767d3f23b2604bb735de49128a4a Mon Sep 17 00:00:00 2001 From: maxim055 Date: Fri, 14 Nov 2025 00:03:05 +0400 Subject: [PATCH 38/69] Some starknet fixes. --- js/package-lock.json | 47 +++---- js/package.json | 2 +- .../ApprovePrepareRequest.ts | 4 +- .../Activities/Helper/Client.ts | 52 +++++++- .../Helper/StarknetTransactionBuilder.ts | 6 +- .../Activities/Helper/Utils.ts | 54 ++++++++ .../IStarknetBlockchainActivities.ts | 7 +- .../StarknetBlockchainActivities.ts | 125 ++++++++++++++---- .../Models/ComposeRawTxModels.ts | 2 + .../Models/StarknetFeeModel.ts | 7 + .../Models/TransactionCalculationType.ts | 3 +- .../Models/TransactionModels.ts | 5 +- .../Workflows/StarknetTransactionProcessor.ts | 25 +++- treasury/tsconfig.json | 2 +- 14 files changed, 265 insertions(+), 76 deletions(-) create mode 100644 js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Utils.ts create mode 100644 js/src/Blockchain/Blockchain.Starknet/Models/StarknetFeeModel.ts diff --git a/js/package-lock.json b/js/package-lock.json index 29f4d969..b840f3df 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -24,7 +24,7 @@ "pg": "^8.14.1", "redlock": "^5.0.0-beta.2", "reflect-metadata": "^0.2.2", - "starknet": "^7.1.0", + "starknet": "7.6.4", "tsyringe": "^4.9.1", "web3-provider-engine": "^17.0.1" }, @@ -5872,6 +5872,20 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@starknet-io/starknet-types-07": { + "name": "@starknet-io/types-js", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.10.tgz", + "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", + "license": "MIT" + }, + "node_modules/@starknet-io/starknet-types-08": { + "name": "@starknet-io/types-js", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.8.4.tgz", + "integrity": "sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==", + "license": "MIT" + }, "node_modules/@swc/core": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.5.tgz", @@ -15292,39 +15306,26 @@ "license": "MIT" }, "node_modules/starknet": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/starknet/-/starknet-7.1.0.tgz", - "integrity": "sha512-7e5UCmRAng4hwYntNBYmsRo2ox+1ORh8GLO06uJnuW+SKPH6oBf+MSH+g/UntVb4tVUeQVeMrGLkLZ8h1Ghu2Q==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/starknet/-/starknet-7.6.4.tgz", + "integrity": "sha512-FB20IaLCDbh/XomkB+19f5jmNxG+RzNdRO7QUhm7nfH81UPIt2C/MyWAlHCYkbv2wznSEb73wpxbp9tytokTgQ==", "license": "MIT", "dependencies": { "@noble/curves": "1.7.0", "@noble/hashes": "1.6.0", "@scure/base": "1.2.1", "@scure/starknet": "1.1.0", + "@starknet-io/starknet-types-07": "npm:@starknet-io/types-js@~0.7.10", + "@starknet-io/starknet-types-08": "npm:@starknet-io/types-js@~0.8.4", "abi-wan-kanabi": "2.2.4", - "isows": "^1.0.6", "lossless-json": "^4.0.1", "pako": "^2.0.4", - "starknet-types-07": "npm:@starknet-io/types-js@~0.7.10", - "starknet-types-08": "npm:@starknet-io/types-js@~0.8.1", - "ts-mixer": "^6.0.3", - "ws": "^8.18.0" + "ts-mixer": "^6.0.3" + }, + "engines": { + "node": ">=22" } }, - "node_modules/starknet-types-07": { - "name": "@starknet-io/types-js", - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.10.tgz", - "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", - "license": "MIT" - }, - "node_modules/starknet-types-08": { - "name": "@starknet-io/types-js", - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.8.4.tgz", - "integrity": "sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==", - "license": "MIT" - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", diff --git a/js/package.json b/js/package.json index 7f472fac..75a998fc 100644 --- a/js/package.json +++ b/js/package.json @@ -26,7 +26,7 @@ "pg": "^8.14.1", "redlock": "^5.0.0-beta.2", "reflect-metadata": "^0.2.2", - "starknet": "^7.1.0", + "starknet": "7.6.4", "tsyringe": "^4.9.1", "web3-provider-engine": "^17.0.1" }, diff --git a/js/src/Blockchain/Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest.ts b/js/src/Blockchain/Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest.ts index ee527bd6..5b6a7c85 100644 --- a/js/src/Blockchain/Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest.ts +++ b/js/src/Blockchain/Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest.ts @@ -1,4 +1,4 @@ export interface ApprovePrepareRequest { - asset: string; - amount: number; + Asset: string; + Amount: number; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts index 0845f7fa..b6392e28 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts @@ -1,16 +1,20 @@ -export async function sendInvocation(rpcUrl: string, invocation: object): Promise { +import { uint256 } from "starknet"; + +export async function sendInvocation(rpcUrl: string, invocation: InvokeTransactionV3): Promise { + + const requestBody = serializeWithBigInt({ + jsonrpc: "2.0", + id: 1, + method: "starknet_addInvokeTransaction", + params: [ invocation ], + }); const res = await fetch( rpcUrl, { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - jsonrpc: "2.0", - id: 1, - method: "starknet_addInvokeTransaction", - params: [invocation], - }), + body: requestBody, }); const body = await res.json(); @@ -23,3 +27,37 @@ export async function sendInvocation(rpcUrl: string, invocation: object): Promis return body.result.transaction_hash; } } + +function serializeWithBigInt(obj: unknown): string { + return JSON.stringify(obj, (_key, value) => + typeof value === 'bigint' ? uint256.bnToUint256(value) : value + ); + } + + export interface InvokeTransactionV3 { + type: 'INVOKE'; + sender_address: string; + calldata: string[]; + version: string; + signature: string[]; + nonce: string; + resource_bounds: { + l2_gas: { + max_amount: string; + max_price_per_unit: string; + }; + l1_gas: { + max_amount: string; + max_price_per_unit: string; + }; + l1_data_gas?: { + max_amount: string; + max_price_per_unit: string; + }; + }; + tip: string; + paymaster_data: string[]; + account_deployment_data: string[]; + nonce_data_availability_mode: 'L1' | 'L2'; + fee_data_availability_mode: 'L1' | 'L2'; + } diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts index 1de78cc6..a39e084b 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts @@ -165,10 +165,10 @@ export function createApproveCallData(network: DetailedNetworkDto, args: string) const approveRequest = decodeJson(args); - const token = network.tokens.find(t => t.symbol === approveRequest.asset); + const token = network.tokens.find(t => t.symbol === approveRequest.Asset); if (!token) { - throw new Error(`Token not found for network ${network.name} and asset ${approveRequest.asset}`) + throw new Error(`Token not found for network ${network.name} and asset ${approveRequest.Asset}`) }; const spenderAddress = token.contract @@ -177,7 +177,7 @@ export function createApproveCallData(network: DetailedNetworkDto, args: string) const callData = [ spenderAddress, - cairo.uint256(Number(utils.parseUnits(approveRequest.amount.toString(), token.decimals))) + cairo.uint256(approveRequest.Amount.toString()) ]; const methodCall: Invocation = { diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Utils.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Utils.ts new file mode 100644 index 00000000..71566043 --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Utils.ts @@ -0,0 +1,54 @@ +import { ArraySignatureType, BigNumberish, ResourceBounds, Signature } from "starknet"; + +export function signatureToHexArray(sig?: Signature): ArraySignatureType { + return bigNumberishArrayToHexadecimalStringArray(formatSignature(sig)); +} + +export function formatSignature(sig?: Signature): ArraySignatureType { + if (!sig) throw Error('formatSignature: provided signature is undefined'); + if (Array.isArray(sig)) { + return sig.map((it) => toHex(it)); + } + try { + const { r, s } = sig; + return [toHex(r), toHex(s)]; + } catch (e) { + throw new Error('Signature need to be weierstrass.SignatureType or an array for custom'); + } +} + +export function bigNumberishArrayToHexadecimalStringArray(data: BigNumberish[]): string[] { + return data.map((x) => toHex(x)); +} + +export function toHex(value: BigNumberish): string { + return addHexPrefix(toBigInt(value).toString(16)); +} + +export function addHexPrefix(hex: string): string { + return `0x${removeHexPrefix(hex)}`; +} + +export function removeHexPrefix(hex: string): string { + return hex.startsWith('0x') || hex.startsWith('0X') ? hex.slice(2) : hex; +} + +export function toBigInt(value: BigNumberish): bigint { + return BigInt(value); +} + +export function resourceBoundsToHexString(resourceBoundsBN: ResourceBounds): ResourceBounds { + const convertBigIntToHex = (obj: any): any => { + if (isBigInt(obj)) { + return toHex(obj); + } + + return obj; + }; + + return convertBigIntToHex(resourceBoundsBN) as ResourceBounds; +} + +export function isBigInt(value: any): value is bigint { + return typeof value === 'bigint'; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts index 7b55d754..73dcdae2 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/IStarknetBlockchainActivities.ts @@ -12,11 +12,12 @@ import { TransactionBuilderRequest } from "../../Blockchain.Abstraction/Models/T import { PrepareTransactionResponse } from "../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; import { ComposeRawTransactionRequest, ComposeRawTransactionResponse } from "../Models/ComposeRawTxModels"; import { EnsureSufficientBalanceRequest } from "../Models/EnsureSufficientBalanceModels"; -import { PublishTransactionRequest, SimulateTransactionRequest } from "../Models/TransactionModels"; +import { PublishTransactionRequest } from "../Models/TransactionModels"; import { SignTransactionRequest } from "../Models/SignTransactionRequest"; +import { StarknetFeeModel } from "../Models/StarknetFeeModel"; export interface IStarknetBlockchainActivities extends IBlockchainActivities { - SimulateTransaction(request: SimulateTransactionRequest): Promise; + SimulateTransaction(request: PublishTransactionRequest): Promise; GetSpenderAllowance(request: AllowanceRequest): Promise; @@ -24,7 +25,7 @@ export interface IStarknetBlockchainActivities extends IBlockchainActivities { GetBatchTransaction(request: GetBatchTransactionRequest): Promise; - EstimateFee(request: EstimateFeeRequest): Promise; + EstimateFee(request: EstimateFeeRequest): Promise; GetNextNonce(request: NextNonceRequest): Promise; diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts index 5c71b5c7..cba8b254 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts @@ -1,8 +1,20 @@ -import { Abi, cairo, Call, Contract, hash, RpcProvider, shortString, uint256, addAddressPadding, Invocation, SuccessfulTransactionReceiptResponse, InvocationsSignerDetails, stark, AccountInvocations, TransactionType as StarknetTransactionType, v3hash } from "starknet"; -import { TypedData, TypedDataRevision } from "starknet-types-07"; +import { + Uint256, + Abi, cairo, Call, Contract, + hash, RpcProvider, shortString, uint256, addAddressPadding, + Invocation, SuccessfulTransactionReceiptResponse, InvocationsSignerDetails, + stark, AccountInvocations, TransactionType as StarknetTransactionType, v3hash, + WeierstrassSignatureType, + Account, + TypedData, + TypedDataRevision, + AccountInvocationItem, + V3InvocationsSignerDetails, + CallData} + from "starknet"; import { injectable, inject } from "tsyringe"; import erc20Json from './ABIs/ERC20.json' -import { PublishTransactionRequest, SimulateTransactionRequest } from "../Models/TransactionModels"; +import { PublishTransactionRequest} from "../Models/TransactionModels"; import { BigNumber, utils } from "ethers"; import { InvalidTimelockException } from "../../Blockchain.Abstraction/Exceptions/InvalidTimelockException"; import { ParseNonces } from "./Helper/ErrorParser"; @@ -38,8 +50,10 @@ import { DetailedNetworkDto } from "../../Blockchain.Abstraction/Models/Detailed import { EnsureSufficientBalanceRequest } from "../Models/EnsureSufficientBalanceModels"; import { ComposeRawTransactionRequest, ComposeRawTransactionResponse } from "../Models/ComposeRawTxModels"; import { SignTransactionRequest } from "../Models/SignTransactionRequest"; -import { sendInvocation } from "./Helper/Client"; +import { InvokeTransactionV3, sendInvocation } from "./Helper/Client"; import { TreasuryClient } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient"; +import { StarknetFeeModel } from "../Models/StarknetFeeModel"; +import { resourceBoundsToHexString, signatureToHexArray, toHex } from "./Helper/Utils"; @injectable() export class StarknetBlockchainActivities implements IStarknetBlockchainActivities { @@ -246,22 +260,48 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } public async PublishTransaction(request: PublishTransactionRequest): Promise { + let invocation: Invocation = this.deserializeWithBigInt(request.signedRawData); + + const signature = invocation.signature as WeierstrassSignatureType; + + invocation.signature = signature; + const signerDetails: InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); + + const accountInvocations: InvokeTransactionV3 = + { + type: 'INVOKE', + sender_address: request.fromAddress, + calldata: CallData.toHex(invocation.calldata), + version: signerDetails.version, + signature: signatureToHexArray(signature), + nonce: toHex(signerDetails.nonce), + resource_bounds: resourceBoundsToHexString((signerDetails as V3InvocationsSignerDetails).resourceBounds), + tip: toHex((signerDetails as V3InvocationsSignerDetails).tip), + paymaster_data: [], + account_deployment_data: [], + fee_data_availability_mode: (signerDetails as V3InvocationsSignerDetails).feeDataAvailabilityMode, + nonce_data_availability_mode: (signerDetails as V3InvocationsSignerDetails).nonceDataAvailabilityMode, + }; - const invocation: Invocation = JSON.parse(request.signedRawData); const nodeUrl = request.network.nodes[0].url; - const txHash = await sendInvocation(nodeUrl, invocation); + const txHash = await sendInvocation(nodeUrl, accountInvocations); return txHash; } - public async SimulateTransaction(request: SimulateTransactionRequest): Promise { + public async SimulateTransaction(request: PublishTransactionRequest): Promise { const provider = new RpcProvider({ nodeUrl: request.network.nodes[0].url }); - const invocation: Invocation = JSON.parse(request.signedRawData); + let invocation: Invocation = this.deserializeWithBigInt(request.signedRawData); + + const signature = invocation.signature as WeierstrassSignatureType; + + invocation.signature = signature; + const signerDetails: InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); const accountInvocations: AccountInvocations = [ @@ -270,7 +310,8 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti contractAddress: invocation.contractAddress, entrypoint: invocation.entrypoint, nonce: request.nonce, - signature: invocation.signature + signature: invocation.signature, + ...stark.v3Details(signerDetails), } ]; @@ -296,37 +337,50 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } } - public async EstimateFee(feeRequest: EstimateFeeRequest): Promise { + public async EstimateFee(feeRequest: EstimateFeeRequest): Promise { try { const provider = new RpcProvider({ nodeUrl: feeRequest.network.nodes[0].url }); - const transferCall: Invocation = JSON.parse(feeRequest.callData); + const account = new Account(provider, feeRequest.fromAddress, "0x0"); - const feeEstimateResponse = await provider.getInvokeEstimateFee( - transferCall, - { - nonce: feeRequest.nonce - }); + var transferCall: Call = JSON.parse(feeRequest.callData); + + var fees = await account.estimateFee([transferCall]); - if (!feeEstimateResponse?.suggestedMaxFee) { - throw new Error(`Couldn't get fee estimation for the transfer. Response: ${JSON.stringify(feeEstimateResponse)}`); + // const signature = JSON.parse(feeRequest.signature).signature; + // const r = uint256.uint256ToBN(signature.r); + // const recovery = signature.recovery; + // const s = uint256.uint256ToBN(signature.s); + + // transferCall.signature = {r, s, recovery} as WeierstrassSignatureType; + + // const feeEstimateResponse = await provider.getInvokeEstimateFee( + // transferCall, + // { + // nonce: feeRequest.nonce + // } + // ); + + if (!fees?.suggestedMaxFee) { + throw new Error(`Couldn't get fee estimation for the transfer. Response: ${JSON.stringify(fees)}`); }; const feeInWei = BigNumber - .from(feeEstimateResponse.suggestedMaxFee) + .from(fees.suggestedMaxFee) .mul(this.FEE_ESTIMATE_MULTIPLIER); const fixedfeeData: FixedFeeData = { FeeInWei: feeInWei.toString(), }; - const result: Fee = + const result: StarknetFeeModel = { Asset: feeRequest.network.nativeToken.symbol, FixedFeeData: fixedfeeData, + ResourceBounds: fees.resourceBounds } return result; @@ -349,12 +403,13 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti asset: nativeTokenAsset }); + const nativeTokenAmount = BigNumber.from(nativeTokenBalance.amount.toString()); const amount = BigNumber.from(request.amount); const feeAmount = BigNumber.from(request.feeAmount); if (nativeTokenAsset === request.asset) { - if (BigNumber.from(nativeTokenBalance.amount).lt(amount.add(feeAmount))) { + if (nativeTokenAmount.lt(amount.add(feeAmount))) { throw new Error(`Insufficient balance for fee. Balance: ${nativeTokenBalance.amount} asset ${nativeTokenAsset}, Fee: ${amount.add(feeAmount)}`); } } @@ -447,7 +502,7 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const ercContract = new Contract(tokenAbi, token.contract, provider); var response: BigInt = await ercContract.allowance(request.ownerAddress, spenderAddress); - return Number(utils.formatUnits(response.toString(), token.decimals)) + return Number(response.toString()) } catch (error) { throw error; @@ -463,13 +518,13 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const chainId = await provider.getChainId(); const signerDetails: InvocationsSignerDetails = { - ...stark.v3Details({}), + ...stark.v3Details({ resourceBounds: request.resourceBounds, tip: 0 }), walletAddress: request.address, nonce: request.nonce, version: "0x3", chainId, cairoVersion: '1', - skipValidate: false + skipValidate: true, }; const parsedInvocation: Invocation = JSON.parse(request.callData); @@ -497,6 +552,28 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti return response.signedTxn; } + + private deserializeWithBigInt(json: string): any { + return JSON.parse(json, (_key, value) => { + // Detect if this value is a uint256-like object + if ( + value && + typeof value === "object" && + "low" in value && + "high" in value && + Object.keys(value).length === 2 + ) { + try { + // Convert back to bigint + return uint256.uint256ToBN(value); + } catch { + // If it's not a valid uint256, return as-is + return value; + } + } + return value; + }); + } } export function formatAddress(address: string): string { diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts index e10e844d..6a753434 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Models/ComposeRawTxModels.ts @@ -1,9 +1,11 @@ +import { ResourceBounds } from "starknet"; import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; export interface ComposeRawTransactionRequest extends BaseRequest { callData: string, nonce: string, address: string + resourceBounds: ResourceBounds } export interface ComposeRawTransactionResponse { diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/StarknetFeeModel.ts b/js/src/Blockchain/Blockchain.Starknet/Models/StarknetFeeModel.ts new file mode 100644 index 00000000..018aeffa --- /dev/null +++ b/js/src/Blockchain/Blockchain.Starknet/Models/StarknetFeeModel.ts @@ -0,0 +1,7 @@ +import { ResourceBounds } from "starknet"; +import { Fee } from "../../Blockchain.Abstraction/Models/FeesModels/Fee"; + +export interface StarknetFeeModel extends Fee +{ + ResourceBounds: ResourceBounds; +} \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts index 19d76b0e..563a2475 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionCalculationType.ts @@ -1,5 +1,4 @@ -import { BigNumberish, Calldata, constants } from "starknet"; -import { ETransactionVersion2 } from "starknet-types-07"; +import { BigNumberish, Calldata, constants, ETransactionVersion2 } from "starknet"; export type CalcV2InvokeTxHashArgs = { senderAddress: BigNumberish; diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts index b22c547a..22be5e2d 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Models/TransactionModels.ts @@ -2,8 +2,7 @@ import { BaseRequest } from "../../Blockchain.Abstraction/Models/BaseRequest"; export interface PublishTransactionRequest extends BaseRequest { signedRawData: string; -} - -export interface SimulateTransactionRequest extends PublishTransactionRequest { + signerInvocationDetails: string; nonce: string; + fromAddress: string; } \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts index fd4a4873..3b03b809 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Workflows/StarknetTransactionProcessor.ts @@ -13,6 +13,7 @@ import { HTLCLockTransactionPrepareRequest } from '../../Blockchain.Abstraction/ import { TransferPrepareRequest } from '../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferPrepareRequest'; import { TransactionType } from '../../Blockchain.Abstraction/Models/TransacitonModels/TransactionType'; import { NetworkType } from '../../Blockchain.Abstraction/Models/Dtos/NetworkDto'; +import { StarknetFeeModel } from '../Models/StarknetFeeModel'; const defaultActivities = proxyActivities({ startToCloseTimeout: '1 hour', @@ -59,16 +60,20 @@ export async function StarknetTransactionProcessor( }); } + let fee: StarknetFeeModel; + if (!context.fee) { - context.fee = await nonRetryableActivities.EstimateFee({ + fee = await nonRetryableActivities.EstimateFee({ network: request.network, toAddress: preparedTransaction.toAddress, amount: Number(preparedTransaction.amount), fromAddress: request.fromAddress, asset: preparedTransaction.asset!, callData: preparedTransaction.data, - nonce: context.nonce + nonce: context.nonce, }); + + context.fee = fee; } await defaultActivities.EnsureSufficientBalance( @@ -85,7 +90,8 @@ export async function StarknetTransactionProcessor( address: request.fromAddress, callData: preparedTransaction.data, network: request.network, - nonce: context.nonce + nonce: context.nonce, + resourceBounds: fee.ResourceBounds, }); const signedRawData = await defaultActivities.SignTransaction({ @@ -101,12 +107,17 @@ export async function StarknetTransactionProcessor( await nonRetryableActivities.SimulateTransaction({ nonce: context.nonce, network: request.network, - signedRawData: signedRawData + signedRawData: signedRawData, + signerInvocationDetails: rawTx.signerInvocationDetails, + fromAddress: request.fromAddress, }); const txId = await nonRetryableActivities.PublishTransaction({ network: request.network, - signedRawData: signedRawData + signedRawData: signedRawData, + signerInvocationDetails: rawTx.signerInvocationDetails, + nonce: context.nonce, + fromAddress: request.fromAddress, }); context.publishedTransactionIds.push(txId); @@ -174,8 +185,8 @@ async function checkAllowance(context: TransactionRequest): Promise { const approveRequest: TransactionRequest = { signerAgentUrl: context.signerAgentUrl, prepareArgs: JSON.stringify({ - Amount: 1000000000, - Asset: lockRequest.sourceAsset, + amount: 1000000000, + asset: lockRequest.sourceAsset, }), type: TransactionType.Approve, diff --git a/treasury/tsconfig.json b/treasury/tsconfig.json index d8bc3493..49a62cad 100644 --- a/treasury/tsconfig.json +++ b/treasury/tsconfig.json @@ -16,6 +16,6 @@ "useDefineForClassFields": false, "allowJs": true }, - "include": ["src/**/*.ts", "src/**/*.js"], + "include": ["src//*.ts", "src//*.js"], "exclude": ["node_modules"] } \ No newline at end of file From 01400af1128a80221e1e8386973875f8ed424155 Mon Sep 17 00:00:00 2001 From: Aram Kocharyan Date: Fri, 14 Nov 2025 00:26:31 +0400 Subject: [PATCH 39/69] Reaad port from env variable --- treasury/Dockerfile | 3 ++- treasury/src/main.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/treasury/Dockerfile b/treasury/Dockerfile index bf815279..683bdc48 100644 --- a/treasury/Dockerfile +++ b/treasury/Dockerfile @@ -27,6 +27,7 @@ RUN npm ci --production && npm cache clean --force COPY --from=builder /usr/src/app/dist ./dist -EXPOSE 8080 +ENV PORT=80 +EXPOSE 80 CMD ["node", "dist/src/main"] \ No newline at end of file diff --git a/treasury/src/main.ts b/treasury/src/main.ts index c2e121df..4ddebb81 100644 --- a/treasury/src/main.ts +++ b/treasury/src/main.ts @@ -4,7 +4,8 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); - await app.listen(8080); + const port = process.env.PORT || 8080; + await app.listen(port); console.log(`Application is running on: ${await app.getUrl()}`); } bootstrap(); From f745782abed1e89b36eacf7b9e57e3a4387fe95a Mon Sep 17 00:00:00 2001 From: Aram Kocharyan Date: Fri, 14 Nov 2025 00:38:16 +0400 Subject: [PATCH 40/69] Add back 8080 port --- treasury/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/treasury/Dockerfile b/treasury/Dockerfile index 683bdc48..c89a8b8c 100644 --- a/treasury/Dockerfile +++ b/treasury/Dockerfile @@ -27,7 +27,7 @@ RUN npm ci --production && npm cache clean --force COPY --from=builder /usr/src/app/dist ./dist -ENV PORT=80 -EXPOSE 80 +ENV PORT=8080 +EXPOSE 8080 CMD ["node", "dist/src/main"] \ No newline at end of file From bc5bb8b070a6ff260a55070703e482644852ca02 Mon Sep 17 00:00:00 2001 From: maxim055 Date: Fri, 14 Nov 2025 00:51:47 +0400 Subject: [PATCH 41/69] Fixes. --- .../Activities/Helper/StarknetTransactionBuilder.ts | 2 +- treasury/src/treasury/starknet/starknet.dto.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts index a39e084b..db4b884e 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts @@ -103,7 +103,7 @@ export function createLockCallData(network: DetailedNetworkDto, args: string): P shortString.encodeShortString(lockRequest.destinationNetwork), byteArray.byteArrayFromString(lockRequest.destinationAddress), shortString.encodeShortString(lockRequest.destinationAsset), - cairo.uint256(Number(utils.parseUnits(lockRequest.amount.toString(), token.decimals))), + cairo.uint256(lockRequest.amount.toString()), token.contract ]; diff --git a/treasury/src/treasury/starknet/starknet.dto.ts b/treasury/src/treasury/starknet/starknet.dto.ts index 01005501..20d1e6f3 100644 --- a/treasury/src/treasury/starknet/starknet.dto.ts +++ b/treasury/src/treasury/starknet/starknet.dto.ts @@ -2,5 +2,4 @@ import { BaseSignRequest, BaseSignResponse } from "../../app/dto/base.dto"; export class StarknetSignRequest extends BaseSignRequest { signerInvocationDetails: string; - type: string } \ No newline at end of file From 49c53c64e0b28d1b15112f069dfd9b366df05c65 Mon Sep 17 00:00:00 2001 From: maxim055 Date: Fri, 14 Nov 2025 01:07:49 +0400 Subject: [PATCH 42/69] revert ts config. --- treasury/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/treasury/tsconfig.json b/treasury/tsconfig.json index 49a62cad..d8bc3493 100644 --- a/treasury/tsconfig.json +++ b/treasury/tsconfig.json @@ -16,6 +16,6 @@ "useDefineForClassFields": false, "allowJs": true }, - "include": ["src//*.ts", "src//*.js"], + "include": ["src/**/*.ts", "src/**/*.js"], "exclude": ["node_modules"] } \ No newline at end of file From cfe03d3fa6ee4e33952039b16ccb77cbf92d788d Mon Sep 17 00:00:00 2001 From: Mandzikyan <87118120+Mandzikyan@users.noreply.github.com> Date: Fri, 14 Nov 2025 18:30:39 +0400 Subject: [PATCH 43/69] Dev solana remove revert (#138) * Back Solana with treasury signer. * Minor fix. * Fix yml. * Check after transaction block height is still valid. --------- Co-authored-by: Davit Mandzikyan --- .github/workflows/solana.yml | 3 +- csharp/TrainSolver.slnx | 1 + .../Models/DetailedNetworkDto.cs | 4 +- .../Models/ExtendedNetworkDto.cs | 7 +- .../src/SmartNodeInvoker/ISmartNodeInvoker.cs | 9 +- .../src/SmartNodeInvoker/SmartNodeInvoker.cs | 11 +- .../Models/EstimateFeeRequest.cs | 3 +- .../Models/NextNonceRequest.cs | 4 +- .../Models/TransactionBuilderRequest.cs | 2 + .../Activities/EVMBlockchainActivities.cs | 2 +- csharp/src/Workflow.EVM/Program.cs | 1 - .../Activities/ISolanaBlockchainActivities.cs | 21 +- .../Activities/SolanaBlockchainActivities.cs | 511 ++++++------------ .../TrainSolverBuilderExtensions.cs | 17 +- .../Workflow.Solana/Helpers/EventDecoder.cs | 58 +- .../Helpers/SolanaTransactionBuilder.cs | 183 +++---- .../Models/SolanaComposeTransactionRequest.cs | 6 +- .../SolanaComposeTransactionResponse.cs | 8 + .../Models/SolanaGetReceiptRequest.cs | 12 + .../Models/SolanaGetTransactionRequest.cs | 8 - .../Models/SolanaPublishTransactionRequest.cs | 4 +- .../Models/SolanaSignTransactionRequest.cs | 12 + csharp/src/Workflow.Solana/Program.cs | 8 +- .../Workflow.Solana/Workflows.Solana.csproj | 5 +- .../Workflows/SolanaTransactionProcessor.cs | 112 ++-- treasury/package-lock.json | 448 ++++++++++++++- treasury/package.json | 2 + .../src/treasury/shared/networks.types.ts | 2 +- .../src/treasury/solana/solana.service.ts | 38 ++ 29 files changed, 859 insertions(+), 643 deletions(-) rename csharp/src/{Workflow.EVM => Workflow.Abstractions}/Models/EstimateFeeRequest.cs (79%) rename csharp/src/{Workflow.EVM => Workflow.Abstractions}/Models/NextNonceRequest.cs (52%) create mode 100644 csharp/src/Workflow.Solana/Models/SolanaComposeTransactionResponse.cs create mode 100644 csharp/src/Workflow.Solana/Models/SolanaGetReceiptRequest.cs delete mode 100644 csharp/src/Workflow.Solana/Models/SolanaGetTransactionRequest.cs create mode 100644 csharp/src/Workflow.Solana/Models/SolanaSignTransactionRequest.cs create mode 100644 treasury/src/treasury/solana/solana.service.ts diff --git a/.github/workflows/solana.yml b/.github/workflows/solana.yml index 68950697..bb05b389 100644 --- a/.github/workflows/solana.yml +++ b/.github/workflows/solana.yml @@ -1,6 +1,7 @@ name: Solana Workflow runner on: + workflow_dispatch: push: branches: [ disable ] paths: @@ -37,4 +38,4 @@ jobs: dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }} build-args: | - DOTNET_VERSION=${{ env.DOTNET_VERSION }} \ No newline at end of file + DOTNET_VERSION=${{ env.DOTNET_VERSION }} diff --git a/csharp/TrainSolver.slnx b/csharp/TrainSolver.slnx index 96ce8ca9..e73875de 100644 --- a/csharp/TrainSolver.slnx +++ b/csharp/TrainSolver.slnx @@ -33,6 +33,7 @@ + diff --git a/csharp/src/Infrastructure.Abstractions/Models/DetailedNetworkDto.cs b/csharp/src/Infrastructure.Abstractions/Models/DetailedNetworkDto.cs index 8b325e87..0f578e82 100644 --- a/csharp/src/Infrastructure.Abstractions/Models/DetailedNetworkDto.cs +++ b/csharp/src/Infrastructure.Abstractions/Models/DetailedNetworkDto.cs @@ -1,6 +1,4 @@ -using Train.Solver.Common.Enums; - -namespace Train.Solver.Infrastructure.Abstractions.Models; +namespace Train.Solver.Infrastructure.Abstractions.Models; public class DetailedNetworkDto : ExtendedNetworkDto { diff --git a/csharp/src/Infrastructure.Abstractions/Models/ExtendedNetworkDto.cs b/csharp/src/Infrastructure.Abstractions/Models/ExtendedNetworkDto.cs index 32ea271f..f1b3ac67 100644 --- a/csharp/src/Infrastructure.Abstractions/Models/ExtendedNetworkDto.cs +++ b/csharp/src/Infrastructure.Abstractions/Models/ExtendedNetworkDto.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Train.Solver.Common.Enums; +using Train.Solver.Common.Enums; namespace Train.Solver.Infrastructure.Abstractions.Models; diff --git a/csharp/src/SmartNodeInvoker/ISmartNodeInvoker.cs b/csharp/src/SmartNodeInvoker/ISmartNodeInvoker.cs index e2d0b62d..dfcad8e2 100644 --- a/csharp/src/SmartNodeInvoker/ISmartNodeInvoker.cs +++ b/csharp/src/SmartNodeInvoker/ISmartNodeInvoker.cs @@ -1,11 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Train.Solver.Common.Enums; - -namespace Train.Solver.SmartNodeInvoker; +namespace Train.Solver.SmartNodeInvoker; public interface ISmartNodeInvoker { diff --git a/csharp/src/SmartNodeInvoker/SmartNodeInvoker.cs b/csharp/src/SmartNodeInvoker/SmartNodeInvoker.cs index d24ded24..a4e59bf9 100644 --- a/csharp/src/SmartNodeInvoker/SmartNodeInvoker.cs +++ b/csharp/src/SmartNodeInvoker/SmartNodeInvoker.cs @@ -1,13 +1,5 @@ -using Microsoft.Extensions.Logging; -using StackExchange.Redis; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; +using StackExchange.Redis; using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Train.Solver.Common.Enums; using Train.Solver.Common.Helpers; namespace Train.Solver.SmartNodeInvoker; @@ -78,7 +70,6 @@ private async Task> OrderNodesByScoreAsync(string redisKey, IEnumer .ToList(); } - private async Task IncrementScoreAsync(string redisKey, string node, int delta) { var newScore = await cache.SortedSetIncrementAsync(redisKey, node, delta); diff --git a/csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs b/csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs similarity index 79% rename from csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs rename to csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs index e4ab8194..fb313bc1 100644 --- a/csharp/src/Workflow.EVM/Models/EstimateFeeRequest.cs +++ b/csharp/src/Workflow.Abstractions/Models/EstimateFeeRequest.cs @@ -1,7 +1,6 @@ using System.Numerics; -using Train.Solver.Workflow.Abstractions.Models; -namespace Train.Solver.Workflow.EVM.Models; +namespace Train.Solver.Workflow.Abstractions.Models; public class EstimateFeeRequest : BaseRequest { diff --git a/csharp/src/Workflow.EVM/Models/NextNonceRequest.cs b/csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs similarity index 52% rename from csharp/src/Workflow.EVM/Models/NextNonceRequest.cs rename to csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs index d912e6cd..c06e67f7 100644 --- a/csharp/src/Workflow.EVM/Models/NextNonceRequest.cs +++ b/csharp/src/Workflow.Abstractions/Models/NextNonceRequest.cs @@ -1,6 +1,4 @@ -using Train.Solver.Workflow.Abstractions.Models; - -namespace Train.Solver.Workflow.EVM.Models; +namespace Train.Solver.Workflow.Abstractions.Models; public class NextNonceRequest : BaseRequest { diff --git a/csharp/src/Workflow.Abstractions/Models/TransactionBuilderRequest.cs b/csharp/src/Workflow.Abstractions/Models/TransactionBuilderRequest.cs index 3467f538..9e0c3459 100644 --- a/csharp/src/Workflow.Abstractions/Models/TransactionBuilderRequest.cs +++ b/csharp/src/Workflow.Abstractions/Models/TransactionBuilderRequest.cs @@ -7,4 +7,6 @@ public class TransactionBuilderRequest : BaseRequest public TransactionType Type { get; set; } public string PrepareArgs { get; set; } = null!; + + public string? FromAddress { get; set; } } diff --git a/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs b/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs index 24a3f30e..d535c0a4 100644 --- a/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs +++ b/csharp/src/Workflow.EVM/Activities/EVMBlockchainActivities.cs @@ -109,7 +109,7 @@ public virtual async Task GetBatchTransactionAsync(GetBatch [Activity] public virtual Task BuildTransactionAsync(TransactionBuilderRequest request) { - PrepareTransactionDto result = request.Type switch + var result = request.Type switch { TransactionType.Transfer => EVMTransactionBuilder.BuildTransferTransaction(request.Network, request.PrepareArgs), TransactionType.Approve => EVMTransactionBuilder.BuildApproveTransaction(request.Network, request.PrepareArgs), diff --git a/csharp/src/Workflow.EVM/Program.cs b/csharp/src/Workflow.EVM/Program.cs index 15253408..f9d77f22 100644 --- a/csharp/src/Workflow.EVM/Program.cs +++ b/csharp/src/Workflow.EVM/Program.cs @@ -1,7 +1,6 @@ using Train.Solver.Infrastructure.DependencyInjection; using Train.Solver.Infrastructure.Logging.OpenTelemetry; using Train.Solver.Infrastrucutre.Secret.Treasury.Extensions; -using Train.Solver.Workflow.EVM.Activities; using Train.Solver.Workflow.EVM.Extensions; IHost host = Host.CreateDefaultBuilder(args) diff --git a/csharp/src/Workflow.Solana/Activities/ISolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/ISolanaBlockchainActivities.cs index a7806973..fff7a701 100644 --- a/csharp/src/Workflow.Solana/Activities/ISolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/ISolanaBlockchainActivities.cs @@ -1,29 +1,28 @@ using Temporalio.Activities; -using Train.Solver.Blockchain.Abstractions.Models; using Train.Solver.Blockchain.Solana.Models; +using Train.Solver.Infrastructure.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Solana.Models; -namespace Train.Solver.Blockchain.Solana.Activities; +namespace Train.Solver.Workflow.Solana.Activities; public interface ISolanaBlockchainActivities { [Activity] - Task EstimateFeeAsync(EstimateFeeRequest request); + Task BuildTransactionAsync(TransactionBuilderRequest request); [Activity] - Task GetNextNonceAsync(NextNonceRequest request); - - [Activity] - Task BuildTransactionAsync(TransactionBuilderRequest request); - - [Activity] - Task GetTransactionAsync(GetTransactionRequest request); + Task GetTransactionAsync(SolanaGetReceiptRequest request); [Activity] Task SimulateTransactionAsync(SolanaPublishTransactionRequest request); [Activity] - Task ComposeSolanaTranscationAsync(SolanaComposeTransactionRequest request); + Task ComposeSolanaTranscationAsync(SolanaComposeTransactionRequest request); [Activity] Task PublishTransactionAsync(SolanaPublishTransactionRequest request); + + [Activity] + Task SignTransactionAsync(SolanaSignTransactionRequest request); } diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index b09398df..a252cfb2 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -1,232 +1,83 @@ -using System.Numerics; +using Nethereum.Hex.HexConvertors.Extensions; +using Nethereum.RPC.Eth.DTOs; +using Nethereum.Web3; +using Org.BouncyCastle.Crypto.Parameters; +using Org.BouncyCastle.Crypto.Signers; using Solnet.Rpc; using Solnet.Rpc.Builders; using Solnet.Rpc.Models; using Solnet.Wallet; using Solnet.Wallet.Utilities; -using StackExchange.Redis; +using System.Buffers; +using System.Numerics; using Temporalio.Activities; -using static Train.Solver.Blockchain.Common.Helpers.ResilientNodeHelper; -using Nethereum.Web3; -using Train.Solver.Infrastructure.Abstractions.Exceptions; -using Train.Solver.Data.Abstractions.Repositories; -using Train.Solver.Data.Abstractions.Entities; -using Train.Solver.Blockchain.Abstractions.Activities; -using Train.Solver.Blockchain.Abstractions.Models; -using Train.Solver.Util.Extensions; -using Train.Solver.Infrastructure.Abstractions; using Train.Solver.Blockchain.Solana.Extensions; using Train.Solver.Blockchain.Solana.Helpers; using Train.Solver.Blockchain.Solana.Models; using Train.Solver.Blockchain.Solana.Programs; -using Train.Solver.Blockchain.Common.Helpers; -using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Crypto.Signers; -using System.Buffers; -using Nethereum.Hex.HexConvertors.Extensions; -using System.Text; +using Train.Solver.Common.Enums; +using Train.Solver.Data.Abstractions.Repositories; +using Train.Solver.Infrastructure.Abstractions; +using Train.Solver.Infrastructure.Abstractions.Exceptions; +using Train.Solver.Infrastructure.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Activities; +using Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Solana.Helpers; +using Train.Solver.Workflow.Solana.Models; +using Transaction = Solnet.Rpc.Models.Transaction; -namespace Train.Solver.Blockchain.Solana.Activities; +namespace Train.Solver.Workflow.Solana.Activities; public class SolanaBlockchainActivities( INetworkRepository networkRepository, - IDatabase cache, IPrivateKeyProvider privateKeyProvider) : ISolanaBlockchainActivities, IBlockchainActivities { private const int MaxConcurrentTaskCount = 4; - private const int LamportsPerSignature = 5000; private const int LamportsPerRent = 3000000; private const int BlockhashNotFoundErrorCode = -32002; [Activity] - public virtual async Task BuildTransactionAsync(TransactionBuilderRequest request) + public virtual async Task BuildTransactionAsync(TransactionBuilderRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var solverAccount = await networkRepository.GetSolverAccountAsync(network.Name); - - if (solverAccount is null) - { - throw new ArgumentNullException(nameof(network), $"Solver account for {request.NetworkName} not found"); - } - - PrepareTransactionResponse result; + PrepareTransactionDto result; switch (request.Type) { case TransactionType.Transfer: - result = await SolanaTransactionBuilder.BuildTransferTransactionAsync(network, request.Args); + result = await SolanaTransactionBuilder.BuildTransferTransactionAsync(request.Network, request.PrepareArgs); break; case TransactionType.HTLCLock: - result = await SolanaTransactionBuilder.BuildHTLCLockTransactionAsync(network, solverAccount, request.Args); + result = await SolanaTransactionBuilder.BuildHTLCLockTransactionAsync(request.Network, request.FromAddress!, request.PrepareArgs); break; case TransactionType.HTLCRedeem: - result = await SolanaTransactionBuilder.BuildHTLCRedeemTransactionAsync(network, solverAccount, request.Args); + result = await SolanaTransactionBuilder.BuildHTLCRedeemTransactionAsync(request.Network, request.FromAddress!, request.PrepareArgs); break; case TransactionType.HTLCRefund: - result = await SolanaTransactionBuilder.BuildHTLCRefundTransactionAsync(network, solverAccount, request.Args); + result = await SolanaTransactionBuilder.BuildHTLCRefundTransactionAsync(request.Network, request.FromAddress!, request.PrepareArgs); break; case TransactionType.HTLCAddLockSig: - result = await SolanaTransactionBuilder.BuildHTLCAddlockSigTransactionAsync(network, solverAccount, request.Args); + result = await SolanaTransactionBuilder.BuildHTLCAddlockSigTransactionAsync(request.Network, request.FromAddress!, request.PrepareArgs); break; default: - throw new ArgumentOutOfRangeException(nameof(request.Type), $"Not supported transaction type {request.Type} for network {request.NetworkName}"); + throw new ArgumentOutOfRangeException(nameof(request.Type), $"Not supported transaction type {request.Type} for network {request.Network.Name}"); } return result; } - [Activity] - public virtual async Task EstimateFeeAsync(EstimateFeeRequest request) - { - var result = new Dictionary(); - - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var currency = network.Tokens.SingleOrDefault(x => x.Asset == request.Asset); - - if (currency is null) - { - throw new ArgumentNullException(nameof(currency), $"Currency {request.Asset} for {request.NetworkName} is missing"); - } - - var privateKeyResult = await privateKeyProvider.GetAsync(request.FromAddress); - - var node = network.Nodes.FirstOrDefault(); - - if (node is null) - { - throw new ArgumentNullException(nameof(node), $"Node for network: {network.Id} is not configured"); - } - - var rpcClient = ClientFactory.GetClient(node.Url); - - var solanaAccount = new Account(privateKeyResult, request.FromAddress); - - var balanceForRentExemptionResult = await rpcClient.GetMinimumBalanceForRentExemptionAsync(165); - - if (!balanceForRentExemptionResult.WasSuccessful) - { - throw new Exception($"Failed to get minimum balance for rent exemption in network: {request.NetworkName}"); - } - - var builder = new TransactionBuilder() - .SetFeePayer(solanaAccount); - - var signers = new List { solanaAccount }; - - var transaction = Convert.FromBase64String(request.CallData!); - var tx = Solnet.Rpc.Models.Transaction.Deserialize(transaction); - - foreach (var instruction in tx.Instructions) - { - builder.AddInstruction(instruction); - } - - if (tx.FeePayer != solanaAccount) - { - var managedAddressPrivateKey = await privateKeyProvider.GetAsync(tx.FeePayer); - signers.Add(new Account(managedAddressPrivateKey, tx.FeePayer)); - } - - var latestBlockHashResponse = await rpcClient.GetLatestBlockHashAsync(); - - if (!latestBlockHashResponse.WasSuccessful) - { - throw new Exception($"Failed to get latest block hash, error: {latestBlockHashResponse.RawRpcResponse}"); - } - - builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); - - var rawTx = builder.Build(signers); - - var simulatedTransaction = await rpcClient.SimulateTransactionAsync(rawTx); - - if (!simulatedTransaction.WasSuccessful || simulatedTransaction.Result.Value.Error != null) - { - if (!simulatedTransaction.WasSuccessful) - { - throw new Exception($"Failed to simulate transaction in network{request.NetworkName}: Reason {simulatedTransaction.Reason}"); - } - - throw new Exception($"Failed to simulate transaction in network{request.NetworkName}: Error Type {simulatedTransaction.Result.Value.Error.Type}"); - } - - var computeUnitsUsed = SolanaConstants.BaseLimit + TransactionLogExtension.ExtractTotalComputeUnitsUsed(simulatedTransaction.Result.Value.Logs.ToList()); - - var baseFeeInLamports = balanceForRentExemptionResult.Result + ComputeRentFee(request.NetworkName, tx.Instructions) + signers.Count * LamportsPerSignature; - - var nativeCurrency = network.Tokens.SingleOrDefault(x => x.TokenContract is null); - - if (nativeCurrency is null) - { - throw new ArgumentNullException(nameof(nativeCurrency), $"Native currency is not configured on {request.NetworkName} network"); - } - - decimal computeUnitPrice = 0; - - if (!SolanaConstants.HighComputeUnitPrice.TryGetValue(request.NetworkName, out computeUnitPrice)) - { - throw new($"High compute unit price is not configured on {request.NetworkName} network"); - } - - computeUnitsUsed = computeUnitsUsed.PercentageIncrease(200); - - var fee = new Fee( - nativeCurrency.Asset, - nativeCurrency.Decimals, - new SolanaFeeData( - computeUnitPrice.ToString(), - computeUnitsUsed.ToString(), - baseFeeInLamports.ToString())); - - var balance = await GetBalanceAsync(new BalanceRequest - { - NetworkName = request.NetworkName, - Address = request.FromAddress, - Asset = fee.Asset - }); - - var amount = BigInteger.Parse(fee.AmountInWei) + BigInteger.Parse(request.Amount); - - if (BigInteger.Parse(balance.AmountInWei) < amount) - { - throw new Exception($"Insufficient funds in {request.NetworkName}. {request.FromAddress}. Required {amount} {fee.Asset}"); - } - - return fee; - } - [Activity] public virtual async Task GetBalanceAsync(BalanceRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var node = network.Nodes.FirstOrDefault(); + var node = request.Network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Primary node is not configured on {request.NetworkName} network"); + throw new ArgumentNullException(nameof(node), $"Primary node is not configured on {request.Network.Name} network"); } var rpcClient = ClientFactory.GetClient(node.Url); - var currency = network.Tokens.SingleOrDefault(x => x.Asset.ToUpper() == request.Asset.ToUpper()); + var currency = request.Network.Tokens.SingleOrDefault(x => x.Symbol.ToUpper() == request.Asset.ToUpper()); if (currency is null) { throw new ArgumentNullException(nameof(currency), $"Invalid currency"); @@ -236,9 +87,8 @@ public virtual async Task GetBalanceAsync(BalanceRequest reques try { - if (currency.TokenContract is null) + if (currency.Contract is null) { - var response = await rpcClient.GetBalanceAsync(request.Address); if (!response.WasSuccessful) @@ -250,7 +100,7 @@ public virtual async Task GetBalanceAsync(BalanceRequest reques } else { - var response = await rpcClient.GetTokenAccountsByOwnerAsync(request.Address, currency.TokenContract); + var response = await rpcClient.GetTokenAccountsByOwnerAsync(request.Address, currency.Contract); if (!response.WasSuccessful) { @@ -265,45 +115,40 @@ public virtual async Task GetBalanceAsync(BalanceRequest reques } catch (Exception ex) { - throw new Exception($"Failed to get balance of {currency.Asset} on {request.Address} address in {request.NetworkName} network , message {ex.Message}"); + throw new Exception($"Failed to get balance of {currency.Symbol} on {request.Address} address in {request.Network.Name} network , message {ex.Message}"); } var balanceResponse = new BalanceResponse { - AmountInWei = balance.ToString(), - Decimals = currency.Decimals, + Amount = balance, }; return balanceResponse; } [Activity] - public virtual async Task GetTransactionAsync(GetTransactionRequest request) + public virtual async Task GetTransactionAsync(SolanaGetReceiptRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); + var node = request.Network.Nodes.FirstOrDefault(); - if (network is null) + if (node is null) { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); + throw new($"Primary node is not configured on {request.Network.Name} network"); } - var nodes = network.Nodes; - - if (!nodes.Any()) - { - throw new ArgumentException($"Primary node is not configured on {request.NetworkName} network", nameof(nodes)); - } + var rpcClient = ClientFactory.GetClient(node.Url); - var epochInfoResponse = await GetDataFromNodesAsync(nodes, - async url => await ClientFactory.GetClient(url).GetEpochInfoAsync()); + var epochInfoResponse = await rpcClient.GetEpochInfoAsync(); TransactionResponse transaction; + try { - transaction = await GetDataFromNodesAsync(nodes, - async url => await GetTransactionAsync(request.TransactionHash, network, epochInfoResponse.Result, - ClientFactory.GetClient(url))); - + transaction = await GetTransactionReceiptAsync( + rpcClient, + request.Network, + epochInfoResponse.Result, + request.TxHash); } catch (AggregateException ae) { @@ -314,12 +159,11 @@ public virtual async Task GetTransactionAsync(GetTransactio throw transactionNotConfirmedException; } - var status = await GetDataFromNodesAsync(nodes, - async url => await ClientFactory.GetClient(url).GetSignatureStatusAsync(request.TransactionHash)); + var status = await rpcClient.GetSignatureStatusAsync(request.TxHash); if (status.Result.Value.FirstOrDefault() != null) { - throw new TransactionNotComfirmedException($"Transaction is not confirmed yet, TxHash: {request.TransactionHash}."); + throw new TransactionNotComfirmedException($"Transaction is not confirmed yet, TxHash: {request.TxHash}."); } throw; @@ -330,31 +174,19 @@ public virtual async Task GetTransactionAsync(GetTransactio throw new TransactionFailedException("Transaction failed"); } + await CheckBlockHeightAsync(rpcClient, request.TransactionBlockHeight); + return transaction; } [Activity] public virtual async Task GetEventsAsync(EventRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Chain for network: {request.NetworkName} is not configured"); - } - - var node = network!.Nodes.FirstOrDefault(); + var node = request.Network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Node for network: {request.NetworkName} is not configured"); - } - - var solverAccount = await networkRepository.GetSolverAccountAsync(network.Name); - - if (solverAccount is null) - { - throw new ArgumentNullException(nameof(network), $"Solver account for {request.NetworkName} not found"); + throw new ArgumentNullException(nameof(node), $"Node for network: {request.Network.Name} is not configured"); } var rpcClient = ClientFactory.GetClient(node.Url); @@ -363,18 +195,15 @@ public virtual async Task GetEventsAsync(EventRequest re var blocksForProcessing = Enumerable.Range((int)request.FromBlock, (int)(request.ToBlock - request.FromBlock) + 1).ToArray(); var events = new HTLCBlockEventResponse(); - var currencies = await networkRepository.GetTokensAsync(); - foreach (var blockChunk in blocksForProcessing.Chunk(MaxConcurrentTaskCount)) { foreach (var currentBlock in blockChunk) { blockProcessingTasks[currentBlock] = EventDecoder.GetBlockEventsAsync( rpcClient, - currentBlock, - network, - currencies, - solverAccount); + request.Network, + request.WalletAddresses, + currentBlock); } await Task.WhenAll(blockProcessingTasks.Values); @@ -394,18 +223,11 @@ public virtual async Task GetEventsAsync(EventRequest re [Activity] public virtual async Task GetLastConfirmedBlockNumberAsync(BaseRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var node = network.Nodes.FirstOrDefault(); + var node = request.Network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Node for network: {request.NetworkName} is not configured"); + throw new ArgumentNullException(nameof(node), $"Node for network: {request.Network.Name} is not configured"); } var rpcClient = ClientFactory.GetClient(node.Url); @@ -433,56 +255,21 @@ public virtual async Task GetLastConfirmedBlockNumberAsync( }; } - [Activity] - public virtual async Task GetNextNonceAsync(NextNonceRequest request) - { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network == null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var node = network.Nodes.FirstOrDefault(); - - if (node is null) - { - throw new ArgumentNullException(nameof(node), $"Node for network: {network.Name} is not configured"); - } - - var rpcClient = ClientFactory.GetClient(node.Url); - - var latestBlockHashResponse = await ClientFactory - .GetClient(node.Url) - .GetLatestBlockHashAsync(); - - if (!latestBlockHashResponse.WasSuccessful) - { - throw new Exception($"Failed to get latest block hash, error: {latestBlockHashResponse.RawRpcResponse}"); - } - - await cache.StringSetAsync(RedisHelper.BuildNonceKey(request.NetworkName, request.Address), - latestBlockHashResponse.Result.Value.LastValidBlockHeight, - expiry: TimeSpan.FromDays(7)); - - return latestBlockHashResponse.Result.Value.Blockhash; - } - [Activity] public async Task ValidateAddLockSignatureAsync(AddLockSignatureRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); + var network = await networkRepository.GetAsync(request.Network.Name); if (network is null) { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); + throw new ArgumentNullException(nameof(network), $"Network {request.Network.Name} not found"); } var currency = network.Tokens.Single(x => x.Asset.ToUpper() == request.Asset.ToUpper()); if (currency is null) { - throw new ArgumentNullException(nameof(currency), $"Currency {request.Asset} for {request.NetworkName} is missing"); + throw new ArgumentNullException(nameof(currency), $"Currency {request.Asset} for {request.Network.Name} is missing"); } if (request.Signature is null) @@ -493,7 +280,7 @@ public async Task ValidateAddLockSignatureAsync(AddLockSignatureRequest re var message = Ed25519Program.CreateAddLockSigMessage(new() { Hashlock = request.Hashlock.HexToByteArray(), - Id = request.Id.HexToByteArray(), + Id = request.CommitId.HexToByteArray(), Timelock = request.Timelock, SignerPublicKey = new PublicKey(request.SignerAddress), }); @@ -512,18 +299,11 @@ public async Task ValidateAddLockSignatureAsync(AddLockSignatureRequest re [Activity] public async Task SimulateTransactionAsync(SolanaPublishTransactionRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); - - if (network == null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); - } - - var node = network.Nodes.FirstOrDefault(); + var node = request.Network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Node for network: {network.Name} is not configured"); + throw new ArgumentNullException(nameof(node), $"Node for network: {request.Network.Name} is not configured"); } var rpcClient = ClientFactory.GetClient(node.Url); @@ -534,21 +314,21 @@ public async Task SimulateTransactionAsync(SolanaPublishTransactionRequest reque { if (!simulatedTransaction.WasSuccessful) { - throw new Exception($"Failed to simulate transaction in network {network.Name}: Reason {simulatedTransaction.Reason}"); + throw new Exception($"Failed to simulate transaction in network {request.Network.Name}: Reason {simulatedTransaction.Reason}"); } if (simulatedTransaction.Result.Value.Error.Type == TransactionErrorType.BlockhashNotFound) { throw new NonceMissMatchException( - $"Nonce mismatch error Failed to simulate transaction in network {network.Name}: Error Type {simulatedTransaction.Result.Value.Error.Type}"); + $"Nonce mismatch error Failed to simulate transaction in network {request.Network.Name}: Error Type {simulatedTransaction.Result.Value.Error.Type}"); } - throw new Exception($"Failed to simulate transaction in network {network.Name}: Error Type {simulatedTransaction.Result.Value.Error.Type}"); + throw new Exception($"Failed to simulate transaction in network {request.Network.Name}: Error Type {simulatedTransaction.Result.Value.Error.Type}"); } } [Activity] - public async Task ComposeSolanaTranscationAsync(SolanaComposeTransactionRequest request) + public async Task ComposeSolanaTranscationAsync(SolanaComposeTransactionRequest request) { var solanaAddress = new PublicKey(request.FromAddress); @@ -563,7 +343,7 @@ public async Task ComposeSolanaTranscationAsync(SolanaComposeTransaction } var transactionBytes = Convert.FromBase64String(request.CallData); - var tx = Solnet.Rpc.Models.Transaction.Deserialize(transactionBytes); + var tx = Transaction.Deserialize(transactionBytes); foreach (var instruction in tx.Instructions) { builder.AddInstruction(instruction); @@ -574,29 +354,53 @@ public async Task ComposeSolanaTranscationAsync(SolanaComposeTransaction signers.Add(tx.FeePayer); } + if (!SolanaConstants.MediumComputeUnitPrice.TryGetValue(request.Network.Name, out var computeUnitPrice)) + { + throw new($"Compute unit is not configured for netwokr {request.Network.Name}"); + } + + var node = request.Network.Nodes.FirstOrDefault(); + + if (node is null) + { + throw new ArgumentNullException(nameof(node), $"Node for network: {request.Network.Name} is not configured"); + } + + var rpcClient = ClientFactory.GetClient(node.Url); + + var latestBlockHashResponse = await rpcClient.GetLatestBlockHashAsync(); + + if (!latestBlockHashResponse.WasSuccessful) + { + throw new Exception($"Failed to get latest block hash, error: {latestBlockHashResponse.RawRpcResponse}"); + } + builder - .AddInstruction(ComputeBudgetProgram.SetComputeUnitLimit(uint.Parse(request.Fee.SolanaFeeData!.ComputeUnitLimit))) - .AddInstruction(ComputeBudgetProgram.SetComputeUnitPrice((ulong)Web3.Convert.ToWei(decimal.Parse(request.Fee.SolanaFeeData.ComputeUnitPrice), SolanaConstants.MicroLamportsDecimal))) - .SetRecentBlockHash(request.LastValidBlockHash); + .AddInstruction(ComputeBudgetProgram.SetComputeUnitPrice((ulong)Web3.Convert.ToWei(computeUnitPrice, SolanaConstants.MicroLamportsDecimal))) + .SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); - var rawTxResult = await SignSolanaTransactionAsync(builder, signers); + var rawTxResult = Convert.ToBase64String(builder.Serialize()); - return rawTxResult; + return new() + { + LastValidBlockHeight = latestBlockHashResponse.Result.Value.LastValidBlockHeight.ToString(), + RawTx = rawTxResult + }; } [Activity] public async Task PublishTransactionAsync(SolanaPublishTransactionRequest request) { - var network = await networkRepository.GetAsync(request.NetworkName); + var network = await networkRepository.GetAsync(request.Network.Name); if (network is null) { - throw new ArgumentNullException(nameof(network), $"Network {request.NetworkName} not found"); + throw new ArgumentNullException(nameof(network), $"Network {request.Network.Name} not found"); } if (network == null) { - throw new($"Network {request.NetworkName} not found"); + throw new($"Network {request.Network.Name} not found"); } var node = network.Nodes.FirstOrDefault(); @@ -608,9 +412,11 @@ public async Task PublishTransactionAsync(SolanaPublishTransactionReques var rpcClient = ClientFactory.GetClient(node.Url); + var signedRawData = Convert.FromBase64String(request.RawTx); + try { - var transactionResult = await rpcClient.SendSolanaTransactionAsync(request.RawTx); + var transactionResult = await rpcClient.SendSolanaTransactionAsync(signedRawData); if (!transactionResult.WasSuccessful) { @@ -631,47 +437,30 @@ public async Task PublishTransactionAsync(SolanaPublishTransactionReques { } - return CalculateTransactionHash(request.RawTx); + return CalculateTransactionHash(signedRawData); } private static bool ValidateAddress(string address) => PublicKey.IsValid(address); - private async Task SignSolanaTransactionAsync( - TransactionBuilder builder, - List managedAddresses) - { - var signers = new List(); + //private static BigInteger ComputeRentFee( + // string networkName, + // List instructions) + //{ + // int accountCreationCount = 0; - foreach (var address in managedAddresses) - { - var privateKeyResult = await privateKeyProvider.GetAsync(address); + // foreach (var instruction in instructions) + // { + // var lockDescriminator = FieldEncoder.Sighash(SolanaConstants.LockSighash); - var solanaAccount = new Account(privateKeyResult, address); - signers.Add(solanaAccount); - } + // if (instruction.Data.Take(8).SequenceEqual(lockDescriminator)) + // { + // accountCreationCount++; + // } + // } - return builder.Build(signers); - } - - private static BigInteger ComputeRentFee( - string networkName, - List instructions) - { - int accountCreationCount = 0; - - foreach (var instruction in instructions) - { - var lockDescriminator = FieldEncoder.Sighash(SolanaConstants.LockSighash); - - if (instruction.Data.Take(8).SequenceEqual(lockDescriminator)) - { - accountCreationCount++; - } - } - - return accountCreationCount * LamportsPerRent; - } + // return accountCreationCount * LamportsPerRent; + //} private static string CalculateTransactionHash(byte[] rawTransactionBytes) { @@ -685,45 +474,34 @@ private static string CalculateTransactionHash(byte[] rawTransactionBytes) } private async Task CheckBlockHeightAsync( - Network network, - string fromAddress) + IRpcClient rpcClient, + string lastValidBlockHeight) { - var primaryNode = network.Nodes.FirstOrDefault(); - - if (primaryNode is null) - { - throw new ArgumentNullException(nameof(primaryNode), $"Primary node is not configured on {network.Name} network"); - } - - var primaryRpcClient = ClientFactory.GetClient(primaryNode.Url); - - var epochInfoResponseResult = await primaryRpcClient.GetEpochInfoAsync(); + var epochInfoResponseResult = await rpcClient.GetEpochInfoAsync(); if (!epochInfoResponseResult.WasSuccessful) { - throw new Exception($"Failed to get latestBlock for {network.Name} network"); + throw new Exception($"Failed to get latestBlock"); } - if (!string.IsNullOrEmpty(fromAddress)) + if (ulong.Parse(lastValidBlockHeight) <= epochInfoResponseResult.Result.BlockHeight) { - var lastValidBlockHeight = await cache.StringGetAsync( - RedisHelper.BuildNonceKey(network.Name, fromAddress)); - - if (lastValidBlockHeight.HasValue && ulong.Parse(lastValidBlockHeight.ToString()) <= epochInfoResponseResult.Result.BlockHeight) - { - throw new TransactionFailedRetriableException("Transaction not found"); - } + throw new TransactionFailedRetriableException("Transaction not found"); } } - private static async Task GetTransactionAsync( - string transactionId, - Network network, + private static async Task GetTransactionReceiptAsync( + IRpcClient rpcClient, + DetailedNetworkDto network, EpochInfo epochInfo, - IRpcClient rpcClient) + string transactionId) { - var feeCurrency = network.Tokens - .Single(x => string.IsNullOrEmpty(x.TokenContract)); + var feeCurrency = network.NativeToken; + + if (feeCurrency == null) + { + throw new($"Fee currency not cinfigured for network {network.Name}"); + } var transactionReceiptResult = await rpcClient.GetParsedTransactionAsync(transactionId); @@ -737,18 +515,31 @@ private static async Task GetTransactionAsync( var result = new TransactionResponse { TransactionHash = transactionId, - FeeAmount = transactionReceiptResult.Result.Meta.Fee.ToString(), - FeeAsset = feeCurrency.Asset, + FeeAmount = transactionReceiptResult.Result.Meta.Fee, + FeeAsset = feeCurrency.Symbol, FeeDecimals = feeCurrency.Decimals, Timestamp = DateTimeOffset.FromUnixTimeMilliseconds(transactionReceiptResult.Result.BlockTime * 1000), Status = transactionReceiptResult.Result.Meta.Err is null ? TransactionStatus.Completed : TransactionStatus.Failed, Confirmations = confirmations, NetworkName = network.Name, - Decimals = feeCurrency.Decimals, }; return result; } - private static string FormatAddress(string address) => address; + public async Task SignTransactionAsync(SolanaSignTransactionRequest request) + { + var signedTransaction = await privateKeyProvider.SignAsync( + request.SignerAgentUrl, + request.Network.Type, + request.FromAddress, + request.UnsignRawTransaction); + + if (string.IsNullOrEmpty(signedTransaction)) + { + throw new Exception($"Failed to sign transaction for {request.FromAddress} on network {request.Network.Name}. RawTx {request.UnsignRawTransaction}"); + } + + return signedTransaction; + } } diff --git a/csharp/src/Workflow.Solana/Extensions/TrainSolverBuilderExtensions.cs b/csharp/src/Workflow.Solana/Extensions/TrainSolverBuilderExtensions.cs index da873058..24c35ecf 100644 --- a/csharp/src/Workflow.Solana/Extensions/TrainSolverBuilderExtensions.cs +++ b/csharp/src/Workflow.Solana/Extensions/TrainSolverBuilderExtensions.cs @@ -1,24 +1,19 @@ using Temporalio.Extensions.Hosting; -using Train.Solver.Blockchain.Common.Activities; -using Train.Solver.Blockchain.Common.Worklows; -using Train.Solver.Blockchain.Solana.Activities; -using Train.Solver.Blockchain.Solana.Workflows; -using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Infrastructure.DependencyInjection; +using Train.Solver.Workflow.Solana.Activities; +using Train.Solver.Workflow.Solana.Workflows; -namespace Train.Solver.Blockchain.Solana.Extensions; +namespace Train.Solver.Workflow.Solana.Extensions; public static class TrainSolverBuilderExtensions { public static TrainSolverBuilder WithSolanaWorkflows( this TrainSolverBuilder builder) { - var temporalBuilder = builder.Services - .AddHostedTemporalWorker(nameof(NetworkType.Solana)) + builder.Services + .AddHostedTemporalWorker(builder.Options.NetworkType) .AddWorkflow() - .AddWorkflow() - .AddTransientActivities() - .AddTransientActivities(); + .AddTransientActivities(); return builder; } diff --git a/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs b/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs index 4df25475..ef91c6db 100644 --- a/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs +++ b/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs @@ -1,15 +1,13 @@ -using System.Numerics; -using Nethereum.Hex.HexConvertors.Extensions; -using Nethereum.Web3; +using Nethereum.Hex.HexConvertors.Extensions; using Solnet.Rpc; using Solnet.Rpc.Builders; -using Solnet.Rpc.Models; using Solnet.Wallet; -using Train.Solver.Blockchain.Abstractions.Models; +using System.Numerics; using Train.Solver.Blockchain.Solana.Extensions; using Train.Solver.Blockchain.Solana.Models; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram; -using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Infrastructure.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; namespace Train.Solver.Blockchain.Solana.Helpers; @@ -17,10 +15,9 @@ public static class EventDecoder { public static async Task GetBlockEventsAsync( IRpcClient rpcClient, - int block, - Network network, - List currencies, - string solverAccount) + DetailedNetworkDto network, + string[] solverAccounts, + int block) { var blockResponseResult = await rpcClient.GetParsedEventBlockAsync(block); @@ -31,6 +28,8 @@ public static async Task GetBlockEventsAsync( var result = new HTLCBlockEventResponse(); + var currencies = network.Tokens; + if (blockResponseResult.Result != null && blockResponseResult.Result.Transactions.Any()) { var htlcTokenContractAddress = network.HTLCTokenContractAddress; @@ -48,6 +47,8 @@ public static async Task GetBlockEventsAsync( var isLockEvent = transaction.Meta.LogMessages .Any(x => x.Contains(SolanaConstants.HtlcConstants.addLockEventPrefixPattern)); + var accountForSimulation = solverAccounts.First(); + if (isCommitEvent) { var prefixPattern = "Program return: " + htlcTokenContractAddress + " "; @@ -61,23 +62,25 @@ public static async Task GetBlockEventsAsync( var commitEvent = await DeserializeCommitEventDataAsync( rpcClient, - id, network, - solverAccount); + id, + accountForSimulation); if (commitEvent == null) { continue; } - if (commitEvent.ReceiverAddress != solverAccount) + var receiverAddress = commitEvent.ReceiverAddress; + + if (!solverAccounts.Contains(receiverAddress)) { continue; } var destinationCurrency = currencies - .FirstOrDefault(x => x.Asset == commitEvent.DestinationAsset - && x.Network.Name == commitEvent.DestinationNetwork); + .FirstOrDefault(x => x.Symbol == commitEvent.DestinationAsset + && network.Name == commitEvent.DestinationNetwork); if (destinationCurrency is null) { @@ -85,7 +88,7 @@ public static async Task GetBlockEventsAsync( } var sourceCurrency = network.Tokens - .FirstOrDefault(x => x.Asset == commitEvent.SourceAsset); + .FirstOrDefault(x => x.Symbol == commitEvent.SourceAsset); if (sourceCurrency is null) { @@ -95,9 +98,9 @@ public static async Task GetBlockEventsAsync( var commitEventMessage = new HTLCCommitEventMessage { TxId = transaction.Transaction.Signatures.First(), - Id = commitEvent.Id, - AmountInWei = commitEvent.AmountInWei, - ReceiverAddress = solverAccount, + CommitId = commitEvent.Id, + Amount = BigInteger.Parse(commitEvent.AmountInWei), + ReceiverAddress = receiverAddress, SourceNetwork = network.Name, SourceAsset = commitEvent.SourceAsset, DestinationAddress = commitEvent.DestinationAddress, @@ -105,8 +108,6 @@ public static async Task GetBlockEventsAsync( DestinationAsset = commitEvent.DestinationAsset, SenderAddress = commitEvent.SenderAddress, TimeLock = commitEvent.TimeLock, - DestinationNetworkType = destinationCurrency.Network.Type, - SourceNetworkType = sourceCurrency.Network.Type }; result.HTLCCommitEventMessages.Add(commitEventMessage); @@ -125,9 +126,9 @@ public static async Task GetBlockEventsAsync( var addLockMessageResult = await DeserializeAddLockEventDataAsync( rpcClient, - id, network, - solverAccount); + id, + accountForSimulation); if (addLockMessageResult == null) { @@ -146,8 +147,8 @@ public static async Task GetBlockEventsAsync( private static async Task DeserializeCommitEventDataAsync( IRpcClient rpcClient, + DetailedNetworkDto network, string commitId, - Network network, string solverAccount) { if (solverAccount is null) @@ -194,13 +195,12 @@ private static async Task DeserializeCommitEventData response.Id = commitId; return response; - } private static async Task DeserializeAddLockEventDataAsync( IRpcClient rpcClient, - string id, - Network network, + DetailedNetworkDto network, + string commitId, string solverAccount) { try @@ -218,7 +218,7 @@ private static async Task DeserializeCommitEventData builder.SetGetDetailsInstruction( new PublicKey(htlcContractAddress), - id.HexToByteArray()); + commitId.HexToByteArray()); var latestBlockHashResponse = await rpcClient.GetLatestBlockHashAsync(); @@ -248,7 +248,7 @@ private static async Task DeserializeCommitEventData var response = new HTLCLockEventMessage(); - response.Id = id; + response.CommitId = commitId; response.HashLock = ExtractString( simulatedTransaction.Result.Value.Logs.FirstOrDefault(x => diff --git a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs index bf6628e6..85b4c84f 100644 --- a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs +++ b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs @@ -1,6 +1,4 @@ -using System.Numerics; -using System.Text.Json; -using Nethereum.Hex.HexConvertors.Extensions; +using Nethereum.Hex.HexConvertors.Extensions; using Nethereum.Hex.HexTypes; using Nethereum.Web3; using Solnet.Extensions; @@ -9,17 +7,20 @@ using Solnet.Rpc; using Solnet.Rpc.Builders; using Solnet.Wallet; -using Train.Solver.Blockchain.Abstractions.Models; -using Train.Solver.Data.Abstractions.Entities; +using System.Numerics; +using System.Text.Json; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram.Models; +using Train.Solver.Data.Abstractions.Entities; +using Train.Solver.Infrastructure.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; -namespace Train.Solver.Blockchain.Solana.Helpers; +namespace Train.Solver.Workflow.Solana.Helpers; public static class SolanaTransactionBuilder { - public static async Task BuildHTLCLockTransactionAsync( - Network network, + public static async Task BuildHTLCLockTransactionAsync( + DetailedNetworkDto network, string solverAccount, string args) { @@ -30,7 +31,7 @@ public static async Task BuildHTLCLockTransactionAsy throw new Exception($"Occured exception during deserializing {args}"); } - var currency = network.Tokens.SingleOrDefault(x => x.Asset.ToUpper() == request.SourceAsset.ToUpper()); + var currency = network.Tokens.SingleOrDefault(x => x.Symbol.ToUpper() == request.SourceAsset.ToUpper()); if (currency is null) { @@ -38,20 +39,23 @@ public static async Task BuildHTLCLockTransactionAsy $"Currency {request.SourceAsset} for {network.Name} is missing"); } - var isNative = currency.Id == network.NativeTokenId; + var account = new Account(); + + var isNative = currency.Symbol.ToUpper() == network.NativeToken!.Symbol.ToUpper(); + var node = network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Node is not configured on {network.Name} network"); + throw new($"Node is not configured on {network.Name} network"); } + var rpcClient = ClientFactory.GetClient(node.Url); + var htlcContractAddress = isNative ? network.HTLCNativeContractAddress : network.HTLCTokenContractAddress; - var rpcClient = ClientFactory.GetClient(node.Url); - var builder = new TransactionBuilder() .SetFeePayer(new PublicKey(solverAccount)); @@ -67,50 +71,49 @@ await GetOrCreateAssociatedTokenAccount( new HTLCLockRequest { Hashlock = request.Hashlock.HexToByteArray(), - Id = request.Id.HexToByteArray(), + Id = request.CommitId.HexToByteArray(), SignerPublicKey = new PublicKey(solverAccount), ReceiverPublicKey = new PublicKey(request.Receiver), - Amount = BigInteger.Parse(request.Amount), + Amount = request.Amount, Timelock = new BigInteger(request.Timelock), - SourceAsset = currency.Asset, + SourceAsset = currency.Symbol, DestinationNetwork = request.DestinationNetwork, SourceAddress = request.DestinationAddress, DestinationAsset = request.DestinationAsset, - SourceTokenPublicKey = new PublicKey(currency.TokenContract), - Reward = BigInteger.Parse(request.Reward), + SourceTokenPublicKey = new PublicKey(currency.Contract), + Reward = request.Reward, RewardTimelock = new BigInteger(request.RewardTimelock), }); - var latestBlockHashResponse = await rpcClient.GetLatestBlockHashAsync(); + var latestBlockResult = await rpcClient.GetLatestBlockHashAsync(); - if (!latestBlockHashResponse.WasSuccessful) + if (!latestBlockResult.WasSuccessful) { - throw new Exception($"Failed to get latest block hash, error: {latestBlockHashResponse.RawRpcResponse}"); + throw new ($"Failed to get last valid block"); } - builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); + builder.SetRecentBlockHash(latestBlockResult.Result.Value.Blockhash); var serializedTx = Convert.ToBase64String(builder.Serialize()); - var response = new PrepareTransactionResponse + + var response = new PrepareTransactionDto { Data = serializedTx, ToAddress = htlcContractAddress, - Asset = network.NativeToken.Asset, - AmountInWei = "0", - CallDataAmountInWei = request.Amount, - CallDataAsset = currency.Asset, + Asset = network.NativeToken.Symbol, + Amount = 0 }; if (isNative) { - response.AmountInWei = request.Amount; + response.Amount = request.Amount; } return response; } - public static async Task BuildHTLCRedeemTransactionAsync( - Network network, + public static async Task BuildHTLCRedeemTransactionAsync( + DetailedNetworkDto network, string solverAccount, string args) { @@ -131,7 +134,7 @@ public static async Task BuildHTLCRedeemTransactionA throw new ArgumentNullException(nameof(request.SenderAddress), "Sender address is required"); } - var currency = network.Tokens.SingleOrDefault(x => x.Asset.ToUpper() == request.Asset.ToUpper()); + var currency = network.Tokens.SingleOrDefault(x => x.Symbol.ToUpper() == request.Asset.ToUpper()); if (currency is null) { @@ -139,37 +142,38 @@ public static async Task BuildHTLCRedeemTransactionA $"Currency {request.Asset} for {network.Name} is missing"); } - var isNative = currency.Id == network.NativeTokenId; + var isNative = currency.Symbol.ToUpper() == network.NativeToken!.Symbol.ToUpper(); + var node = network.Nodes.FirstOrDefault(); if (node is null) { - throw new ArgumentNullException(nameof(node), $"Node is not configured on {network.Name} network"); + throw new($"Node is not configured on {network.Name} network"); } + var rpcClient = ClientFactory.GetClient(node.Url); + var htlcContractAddress = isNative ? network.HTLCNativeContractAddress : network.HTLCTokenContractAddress; - var rpcClient = ClientFactory.GetClient(node.Url); - var builder = new TransactionBuilder() .SetFeePayer(new PublicKey(solverAccount)); - await GetOrCreateAssociatedTokenAccount( + await GetOrCreateAssociatedTokenAccount( rpcClient, builder, currency, - new PublicKey(request.DestinationAddress), + new PublicKey(solverAccount), new PublicKey(solverAccount)); builder.SetRedeemTransactionInstruction( new PublicKey(htlcContractAddress), new HTLCRedeemRequest { - Id = request.Id.HexToByteArray(), + Id = request.CommitId.HexToByteArray(), Secret = BigInteger.Parse(request.Secret).ToHexBigInteger().HexValue.HexToByteArray(), - SourceTokenPublicKey = new PublicKey(currency.TokenContract), + SourceTokenPublicKey = new PublicKey(currency.Contract), SignerPublicKey = new PublicKey(solverAccount), ReceiverPublicKey = new PublicKey(request.DestinationAddress), SenderPublicKey = new PublicKey(request.SenderAddress), @@ -178,31 +182,29 @@ await GetOrCreateAssociatedTokenAccount( new PublicKey(request.SenderAddress), }); - var latestBlockHashResponse = await rpcClient.GetLatestBlockHashAsync(); + var latestBlockResult = await rpcClient.GetLatestBlockHashAsync(); - if (!latestBlockHashResponse.WasSuccessful) + if (!latestBlockResult.WasSuccessful) { - throw new Exception($"Failed to get latest block hash, error: {latestBlockHashResponse.RawRpcResponse}"); + throw new($"Failed to get last valid block"); } - builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); + builder.SetRecentBlockHash(latestBlockResult.Result.Value.Blockhash); var serializedTx = Convert.ToBase64String(builder.Serialize()); - var response = new PrepareTransactionResponse + var response = new PrepareTransactionDto { Data = serializedTx, ToAddress = htlcContractAddress, - Asset = network.NativeToken.Asset, - AmountInWei = "0", - CallDataAsset = currency.Asset, - CallDataAmountInWei = "0", + Asset = network.NativeToken.Symbol, + Amount = 0, }; return response; } - public static async Task BuildHTLCRefundTransactionAsync( - Network network, + public static async Task BuildHTLCRefundTransactionAsync( + DetailedNetworkDto network, string solverAccount, string args) { @@ -218,14 +220,15 @@ public static async Task BuildHTLCRefundTransactionA throw new ArgumentNullException(nameof(request.DestinationAddress), "Receiver address is required"); } - var currency = network.Tokens.SingleOrDefault(x => x.Asset.ToUpper() == request.Asset.ToUpper()); + var currency = network.Tokens.SingleOrDefault(x => x.Symbol.ToUpper() == request.Asset.ToUpper()); if (currency is null) { throw new ArgumentNullException(nameof(currency), "Currency {request.Asset} for {network.Name} is missing"); } - var isNative = currency.Id == network.NativeTokenId; + var isNative = currency.Symbol.ToUpper() == network.NativeToken!.Symbol.ToUpper(); + var node = network.Nodes.FirstOrDefault(); if (node is null) @@ -253,8 +256,8 @@ await GetOrCreateAssociatedTokenAccount( new PublicKey(htlcContractAddress), new HTLCRefundRequest { - Id = request.Id.HexToByteArray(), - SourceTokenPublicKey = new PublicKey(currency.TokenContract), + Id = request.CommitId.HexToByteArray(), + SourceTokenPublicKey = new PublicKey(currency.Contract), SignerPublicKey = new PublicKey(solverAccount), ReceiverPublicKey = new PublicKey(request.DestinationAddress) }); @@ -269,22 +272,21 @@ await GetOrCreateAssociatedTokenAccount( builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); var serializedTx = Convert.ToBase64String(builder.Serialize()); - var response = new PrepareTransactionResponse + var response = new PrepareTransactionDto { Data = serializedTx, ToAddress = htlcContractAddress, - Asset = network.NativeToken.Asset, - AmountInWei = "0", - CallDataAsset = currency.Asset, - CallDataAmountInWei = "0", + Asset = network.NativeToken.Symbol, + Amount = 0, }; return response; } - public static async Task BuildTransferTransactionAsync(Network network, string args) + public static async Task BuildTransferTransactionAsync( + DetailedNetworkDto network, + string args) { - var request = JsonSerializer.Deserialize(args); if (request is null) @@ -299,7 +301,7 @@ public static async Task BuildTransferTransactionAsy throw new ArgumentNullException(nameof(node), $"Node is not configured on {network.Name} network"); } - var currency = network.Tokens.SingleOrDefault(x => x.Asset == request.Asset); + var currency = network.Tokens.SingleOrDefault(x => x.Symbol == request.Asset); if (currency is null) { @@ -335,28 +337,21 @@ public static async Task BuildTransferTransactionAsy builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); - if (request.Memo != null) - { - builder.AddInstruction(MemoProgram.NewMemo(publicKeyFromAddress, request.Memo)); - } - var serializedTx = Convert.ToBase64String(builder.Serialize()); - var response = new PrepareTransactionResponse + var response = new PrepareTransactionDto { Data = serializedTx, ToAddress = request.ToAddress, Asset = request.Asset, - AmountInWei = amountInBaseUnits.ToString(), - CallDataAmountInWei = amountInBaseUnits.ToString(), - CallDataAsset = currency.Asset, + Amount = request.Amount, }; return response; } - public static async Task BuildHTLCAddlockSigTransactionAsync( - Network network, + public static async Task BuildHTLCAddlockSigTransactionAsync( + DetailedNetworkDto network, string solverAccount, string args) { @@ -377,7 +372,7 @@ public static async Task BuildHTLCAddlockSigTransact throw new ArgumentNullException(nameof(request.SignerAddress), "Sender address is required"); } - var currency = network.Tokens.SingleOrDefault(x => x.Asset.ToUpper() == request.Asset.ToUpper()); + var currency = network.Tokens.SingleOrDefault(x => x.Symbol.ToUpper() == request.Asset.ToUpper()); if (currency is null) { @@ -385,7 +380,7 @@ public static async Task BuildHTLCAddlockSigTransact $"Currency {request.Asset} for {network.Name} is missing"); } - var isNative = currency.Id == network.NativeTokenId; + var isNative = currency.Symbol.ToUpper() == network.NativeToken!.Symbol.ToUpper(); var node = network.Nodes.FirstOrDefault(); if (node is null) @@ -408,7 +403,7 @@ public static async Task BuildHTLCAddlockSigTransact { AddLockSigMessageRequest = new() { - Id = request.Id.HexToByteArray(), + Id = request.CommitId.HexToByteArray(), Hashlock = request.Hashlock.HexToByteArray(), Timelock = request.Timelock, SignerPublicKey = new PublicKey(request.SignerAddress), @@ -427,14 +422,12 @@ public static async Task BuildHTLCAddlockSigTransact builder.SetRecentBlockHash(latestBlockHashResponse.Result.Value.Blockhash); var serializedTx = Convert.ToBase64String(builder.Serialize()); - var response = new PrepareTransactionResponse + var response = new PrepareTransactionDto { Data = serializedTx, ToAddress = htlcContractAddress, - Asset = network.NativeToken.Asset, - AmountInWei = "0", - CallDataAsset = currency.Asset, - CallDataAmountInWei = "0", + Asset = network.NativeToken.Symbol, + Amount = 0, }; return response; @@ -442,7 +435,7 @@ public static async Task BuildHTLCAddlockSigTransact public static async Task CreateTransactionInstructionAsync( this TransactionBuilder builder, - Token currency, + TokenDto currency, IRpcClient rpcClient, PublicKey publicKeyFromAddress, string toAddress, @@ -451,7 +444,7 @@ public static async Task CreateTransactionInstructionAsync( { var publicKeyToAddress = new PublicKey(toAddress); - if (string.IsNullOrEmpty(currency.TokenContract)) + if (string.IsNullOrEmpty(currency.Contract)) { //SolanaTransactionProcessorWorkflow transfer builder.AddInstruction( @@ -466,9 +459,9 @@ public static async Task CreateTransactionInstructionAsync( { //SPL token transfer var token = new TokenDef( - currency.TokenContract, - currency.Asset, - currency.Asset, + currency.Contract, + currency.Symbol, + currency.Symbol, currency.Decimals); var tokenDefs = new TokenMintResolver(); @@ -483,18 +476,18 @@ public static async Task CreateTransactionInstructionAsync( { destination = destinationWallet.JitCreateAssociatedTokenAccount( builder, - currency.TokenContract, + currency.Contract, publicKeyFromAddress); } else { destination = AssociatedTokenAccountProgram.DeriveAssociatedTokenAccount(publicKeyToAddress, - new PublicKey(currency.TokenContract)); + new PublicKey(currency.Contract)); } var source = sourceWallet.JitCreateAssociatedTokenAccount( builder, - currency.TokenContract, + currency.Contract, publicKeyFromAddress); builder.AddInstruction( @@ -513,19 +506,19 @@ public static async Task CreateTransactionInstructionAsync( return builder; } - public async static Task GetOrCreateAssociatedTokenAccount( + private static async Task GetOrCreateAssociatedTokenAccount( IRpcClient rpcClient, TransactionBuilder builder, - Token currency, + TokenDto currency, PublicKey ownerPublicKey, PublicKey feePayerPublicKey) { try { var token = new TokenDef( - currency.TokenContract, - currency.Asset, - currency.Asset, + currency.Contract, + currency.Symbol, + currency.Symbol, currency.Decimals); var tokenDefs = new TokenMintResolver(); @@ -535,7 +528,7 @@ public async static Task GetOrCreateAssociatedTokenAccount( wallet.JitCreateAssociatedTokenAccount( builder, - currency.TokenContract, + currency.Contract, feePayerPublicKey); } catch (TokenWalletException ex) diff --git a/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionRequest.cs b/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionRequest.cs index cbd80ac0..c1eb1dd3 100644 --- a/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionRequest.cs +++ b/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionRequest.cs @@ -1,14 +1,12 @@ -using Train.Solver.Blockchain.Abstractions.Models; +using Train.Solver.Infrastructure.Abstractions.Models; namespace Train.Solver.Blockchain.Solana.Models; public class SolanaComposeTransactionRequest { - public required Fee Fee { get; set; } + public required DetailedNetworkDto Network { get; set; } = null!; public required string FromAddress { get; set; } = null!; public required string CallData { get; set; } = null!; - - public required string LastValidBlockHash { get; set; } = null!; } diff --git a/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionResponse.cs b/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionResponse.cs new file mode 100644 index 00000000..5d9f6990 --- /dev/null +++ b/csharp/src/Workflow.Solana/Models/SolanaComposeTransactionResponse.cs @@ -0,0 +1,8 @@ +namespace Train.Solver.Workflow.Solana.Models; + +public class SolanaComposeTransactionResponse +{ + public required string LastValidBlockHeight { get; set; } = null!; + + public required string RawTx { get; set; } = null!; +} diff --git a/csharp/src/Workflow.Solana/Models/SolanaGetReceiptRequest.cs b/csharp/src/Workflow.Solana/Models/SolanaGetReceiptRequest.cs new file mode 100644 index 00000000..3b873893 --- /dev/null +++ b/csharp/src/Workflow.Solana/Models/SolanaGetReceiptRequest.cs @@ -0,0 +1,12 @@ +using Train.Solver.Infrastructure.Abstractions.Models; + +namespace Train.Solver.Workflow.Solana.Models; + +public class SolanaGetReceiptRequest +{ + public required DetailedNetworkDto Network { get; set; } = null!; + + public required string TxHash { get; set; } = null!; + + public required string TransactionBlockHeight { get; set; } = null!; +} diff --git a/csharp/src/Workflow.Solana/Models/SolanaGetTransactionRequest.cs b/csharp/src/Workflow.Solana/Models/SolanaGetTransactionRequest.cs deleted file mode 100644 index 67e00f98..00000000 --- a/csharp/src/Workflow.Solana/Models/SolanaGetTransactionRequest.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Train.Solver.Blockchain.Abstractions.Models; - -namespace Train.Solver.Blockchain.Solana.Models; - -public class SolanaGetTransactionRequest : GetTransactionRequest -{ - public required string FromAddress { get; set; } = null!; -} diff --git a/csharp/src/Workflow.Solana/Models/SolanaPublishTransactionRequest.cs b/csharp/src/Workflow.Solana/Models/SolanaPublishTransactionRequest.cs index 0699597c..e98fc721 100644 --- a/csharp/src/Workflow.Solana/Models/SolanaPublishTransactionRequest.cs +++ b/csharp/src/Workflow.Solana/Models/SolanaPublishTransactionRequest.cs @@ -1,8 +1,8 @@ -using Train.Solver.Blockchain.Abstractions.Models; +using Train.Solver.Workflow.Abstractions.Models; namespace Train.Solver.Blockchain.Solana.Models; public class SolanaPublishTransactionRequest : BaseRequest { - public byte[] RawTx { get; set; } = null!; + public string RawTx { get; set; } = null!; } diff --git a/csharp/src/Workflow.Solana/Models/SolanaSignTransactionRequest.cs b/csharp/src/Workflow.Solana/Models/SolanaSignTransactionRequest.cs new file mode 100644 index 00000000..84842be8 --- /dev/null +++ b/csharp/src/Workflow.Solana/Models/SolanaSignTransactionRequest.cs @@ -0,0 +1,12 @@ +using Train.Solver.Workflow.Abstractions.Models; + +namespace Train.Solver.Workflow.Solana.Models; + +public class SolanaSignTransactionRequest : BaseRequest +{ + public required string SignerAgentUrl { get; set; } + + public required string UnsignRawTransaction { get; set; } = null!; + + public required string FromAddress { get; set; } = null!; +} diff --git a/csharp/src/Workflow.Solana/Program.cs b/csharp/src/Workflow.Solana/Program.cs index 76aa76bc..f595ae5c 100644 --- a/csharp/src/Workflow.Solana/Program.cs +++ b/csharp/src/Workflow.Solana/Program.cs @@ -1,8 +1,7 @@ -using Train.Solver.Blockchain.Solana.Extensions; -using Train.Solver.Infrastructure.Extensions; -using Train.Solver.Data.Npgsql.Extensions; +using Train.Solver.Data.Npgsql.Extensions; using Train.Solver.Infrastructure.Logging.OpenTelemetry; -using Train.Solver.Infrastructure.Secret.HashicorpKeyVault; +using Train.Solver.Infrastructure.DependencyInjection; +using Train.Solver.Workflow.Solana.Extensions; IHost host = Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(builder => @@ -17,7 +16,6 @@ .AddTrainSolver(hostContext.Configuration) .WithOpenTelemetryLogging("Solana Runner") .WithNpgsqlRepositories() - .WithHashicorpKeyVault() .WithSolanaWorkflows(); }) .Build(); diff --git a/csharp/src/Workflow.Solana/Workflows.Solana.csproj b/csharp/src/Workflow.Solana/Workflows.Solana.csproj index 4cb028e4..46a42618 100644 --- a/csharp/src/Workflow.Solana/Workflows.Solana.csproj +++ b/csharp/src/Workflow.Solana/Workflows.Solana.csproj @@ -12,10 +12,11 @@ - + + + - diff --git a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs index 467abe4c..7b447220 100644 --- a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs +++ b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs @@ -1,14 +1,15 @@ using Temporalio.Exceptions; using Temporalio.Workflows; -using Train.Solver.Blockchain.Abstractions.Models; -using Train.Solver.Blockchain.Common.Extensions; -using Train.Solver.Blockchain.Common.Helpers; -using Train.Solver.Blockchain.Solana.Activities; using Train.Solver.Infrastructure.Abstractions.Exceptions; using Train.Solver.Blockchain.Solana.Models; using static Temporalio.Workflows.Workflow; +using Train.Solver.Workflow.Solana.Activities; +using Train.Solver.Workflow.Abstractions.Models; +using Train.Solver.Workflow.Common.Helpers; +using Train.Solver.Workflow.Common.Extensions; +using Train.Solver.Workflow.Solana.Models; -namespace Train.Solver.Blockchain.Solana.Workflows; +namespace Train.Solver.Workflow.Solana.Workflows; [Workflow] public class SolanaTransactionProcessor @@ -18,55 +19,31 @@ public async Task RunAsync(TransactionRequest request, Tran { var preparedTransaction = await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.BuildTransactionAsync(new TransactionBuilderRequest - { - NetworkName = request.NetworkName, - Args = request.PrepareArgs, - Type = request.Type - } - ), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); - - if (context.Fee == null) - { - var fee = await ExecuteActivityAsync( - (ISolanaBlockchainActivities x) => x.EstimateFeeAsync(new EstimateFeeRequest - { - NetworkName = request.NetworkName, - FromAddress = request.FromAddress!, - ToAddress = preparedTransaction.ToAddress, - Asset = preparedTransaction.Asset, - Amount = preparedTransaction.AmountInWei, - CallData = preparedTransaction.Data, - } - ), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); - - if (fee is null) { - throw new("Unable to pay fees"); - } - - context.Fee = fee; - } - - var lastValidBLockHash = await ExecuteActivityAsync( - (ISolanaBlockchainActivities x) => x.GetNextNonceAsync( - new NextNonceRequest() - { - Address = request.NetworkName, - NetworkName = request.NetworkName, - }), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); + Network = request.Network, + PrepareArgs = request.PrepareArgs, + Type = request.Type + }), + TemporalHelper.DefaultActivityOptions(request.Network.Type)); - var rawTx = await ExecuteActivityAsync( + var composedTransaction = await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.ComposeSolanaTranscationAsync(new SolanaComposeTransactionRequest() - { - Fee = context.Fee, - FromAddress = request.FromAddress, - CallData = preparedTransaction.Data, - LastValidBlockHash = lastValidBLockHash, - }), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); + { + Network = request.Network, + FromAddress = request.FromAddress, + CallData = preparedTransaction.Data! + }), + TemporalHelper.DefaultActivityOptions(request.Network.Type)); + + var signedTx = await ExecuteActivityAsync( + (ISolanaBlockchainActivities x) => x.SignTransactionAsync(new SolanaSignTransactionRequest() + { + Network = request.Network, + UnsignRawTransaction = composedTransaction.RawTx, + FromAddress = request.FromAddress, + SignerAgentUrl = request.SignerAgentUrl + }), + TemporalHelper.DefaultActivityOptions(request.Network.Type)); TransactionResponse confirmedTransaction; @@ -76,11 +53,11 @@ public async Task RunAsync(TransactionRequest request, Tran await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.SimulateTransactionAsync( new SolanaPublishTransactionRequest() - { - RawTx = rawTx, - NetworkName = request.NetworkName - }), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); + { + RawTx = composedTransaction.RawTx, + Network= request.Network + }), + TemporalHelper.DefaultActivityOptions(request.Network.Type)); //Send transaction @@ -88,24 +65,21 @@ await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.PublishTransactionAsync( new SolanaPublishTransactionRequest() { - RawTx = rawTx, - NetworkName = request.NetworkName + RawTx = composedTransaction.RawTx, + Network = request.Network }), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); + TemporalHelper.DefaultActivityOptions(request.Network.Type)); //Wait for transaction receipt confirmedTransaction = await ExecuteActivityAsync( - (ISolanaBlockchainActivities x) => x.GetTransactionAsync( - new GetTransactionRequest() - { - NetworkName = request.NetworkName, - TransactionHash = transactionId - }), - TemporalHelper.DefaultActivityOptions(request.NetworkType)); - - confirmedTransaction.Asset = preparedTransaction.CallDataAsset; - confirmedTransaction.Amount = preparedTransaction.CallDataAmountInWei; + (ISolanaBlockchainActivities x) => x.GetTransactionAsync(new SolanaGetReceiptRequest + { + TxHash = transactionId, + Network = request.Network, + TransactionBlockHeight = composedTransaction.LastValidBlockHeight + }), + TemporalHelper.DefaultActivityOptions(request.Network.Type)); } catch (ActivityFailureException ex) { diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 46b71242..43188f7c 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -17,6 +17,8 @@ "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", "@nestjs/platform-express": "^11.1.6", + "@solana/web3.js": "^1.98.4", + "bs58": "^6.0.0", "class-transformer": "0.5.1", "class-validator": "0.14.2", "ethers": "^6.14.3", @@ -1136,6 +1138,15 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -5389,6 +5400,139 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", + "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", + "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", + "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^14.0.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@solana/errors/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@solana/web3.js": { + "version": "1.98.4", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz", + "integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "@solana/codecs-numbers": "^2.1.0", + "agentkeepalive": "^4.5.0", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "buffer": "6.0.3", + "fast-stable-stringify": "^1.0.0", + "jayson": "^4.1.1", + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" + } + }, + "node_modules/@solana/web3.js/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@solana/web3.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@tokenizer/inflate": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", @@ -5525,7 +5669,6 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -5800,12 +5943,27 @@ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "license": "MIT" }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "license": "MIT" + }, "node_modules/@types/validator": { "version": "13.15.3", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==", "license": "MIT" }, + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -6550,6 +6708,18 @@ "node": ">= 14" } }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -6997,6 +7167,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/base-x": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", + "license": "MIT" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -7153,6 +7329,35 @@ "node": ">=0.10.0" } }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/borsh/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/borsh/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -7223,6 +7428,15 @@ "node": ">= 6" } }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -7269,6 +7483,20 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", @@ -8355,6 +8583,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -8664,6 +8904,21 @@ "node": ">= 0.4" } }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, "node_modules/esbuild": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", @@ -9190,6 +9445,14 @@ ], "license": "MIT" }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "engines": { + "node": "> 0.1.90" + } + }, "node_modules/fast-copy": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", @@ -9260,6 +9523,12 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, + "node_modules/fast-stable-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", + "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", + "license": "MIT" + }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -10498,6 +10767,15 @@ "node": ">=14.18.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/iconv-lite": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", @@ -10855,6 +11133,15 @@ "whatwg-fetch": "^3.4.1" } }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/isows": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", @@ -11006,6 +11293,65 @@ "dev": true, "license": "MIT" }, + "node_modules/jayson": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.2.0.tgz", + "integrity": "sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==", + "license": "MIT", + "dependencies": { + "@types/connect": "^3.4.33", + "@types/node": "^12.12.54", + "@types/ws": "^7.4.4", + "commander": "^2.20.3", + "delay": "^5.0.0", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "isomorphic-ws": "^4.0.1", + "json-stringify-safe": "^5.0.1", + "stream-json": "^1.9.1", + "uuid": "^8.3.2", + "ws": "^7.5.10" + }, + "bin": { + "jayson": "bin/jayson.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jayson/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, + "node_modules/jayson/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -11977,9 +12323,9 @@ } }, "node_modules/koa": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", - "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.3.tgz", + "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", "license": "MIT", "dependencies": { "accepts": "^1.3.5", @@ -14423,6 +14769,44 @@ "node": ">= 18" } }, + "node_modules/rpc-websockets": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.3.1.tgz", + "integrity": "sha512-bY6a+i/lEtBJ/mUxwsCTgevoV1P0foXTVA7UoThzaIWbM+3NDqorf8NBWs5DmqKTFeA1IoNzgvkWjFCPgnzUiQ==", + "license": "LGPL-3.0-only", + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "uuid": "^8.3.2", + "ws": "^8.5.0" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/kozjak" + }, + "optionalDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + } + }, + "node_modules/rpc-websockets/node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -14966,6 +15350,12 @@ "license": "MIT", "peer": true }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "license": "BSD-3-Clause" + }, "node_modules/stream-events": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", @@ -14975,6 +15365,15 @@ "stubs": "^3.0.0" } }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, "node_modules/stream-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", @@ -15261,6 +15660,15 @@ "node": ">=4.0.0" } }, + "node_modules/superstruct": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/supertest": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.1.tgz", @@ -15667,6 +16075,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/text-encoding-utf-8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", + "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==" + }, "node_modules/thread-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", @@ -16155,7 +16568,6 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -16320,6 +16732,20 @@ "requires-port": "^1.0.0" } }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16358,9 +16784,9 @@ } }, "node_modules/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "version": "13.15.23", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz", + "integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -16474,9 +16900,9 @@ } }, "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "peer": true, "dependencies": { diff --git a/treasury/package.json b/treasury/package.json index e287548e..310e286e 100644 --- a/treasury/package.json +++ b/treasury/package.json @@ -27,6 +27,8 @@ "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", "@nestjs/platform-express": "^11.1.6", + "@solana/web3.js": "^1.98.4", + "bs58": "^6.0.0", "class-transformer": "0.5.1", "class-validator": "0.14.2", "ethers": "^6.14.3", diff --git a/treasury/src/treasury/shared/networks.types.ts b/treasury/src/treasury/shared/networks.types.ts index 796f5379..0c885369 100644 --- a/treasury/src/treasury/shared/networks.types.ts +++ b/treasury/src/treasury/shared/networks.types.ts @@ -1 +1 @@ -export type Network = 'evm' | 'starknet' | 'solana' | 'fuel' | 'aztec'; \ No newline at end of file +export type Network = 'evm' | 'starknet' | 'solana' | 'fuel' | 'aztec' | 'solana'; diff --git a/treasury/src/treasury/solana/solana.service.ts b/treasury/src/treasury/solana/solana.service.ts new file mode 100644 index 00000000..0b925ef1 --- /dev/null +++ b/treasury/src/treasury/solana/solana.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@nestjs/common'; +import { TreasuryService } from '../../app/interfaces/treasury.interface'; +import { Network } from '../shared/networks.types'; +import { BaseSignRequest, BaseSignResponse, GenerateResponse } from '../../app/dto/base.dto'; +import { PrivateKeyService } from '../../kv/vault.service'; +import { Keypair, Transaction } from "@solana/web3.js"; +import bs58 from "bs58"; + +@Injectable() +export class SolanaTreasuryService extends TreasuryService { + + readonly network: Network = 'solana'; + + constructor(privateKeyService: PrivateKeyService) { + super(privateKeyService); + } + + async sign(request: BaseSignRequest): Promise { + + const privateKey = await this.privateKeyService.getAsync(request.address); + + const account = Keypair.fromSecretKey(bs58.decode(privateKey)); + + let transaction: Transaction = Transaction.from(Buffer.from(request.unsignedTxn, 'base64')); + + transaction.sign(account); + + return { signedTxn: transaction.serialize().toString('base64') }; + } + + async generate(): Promise { + const keypair = Keypair.generate(); + + await this.privateKeyService.setAsync(keypair.publicKey.toBase58(), keypair.secretKey.toString()); + + return { address: keypair.publicKey.toBase58() }; + } +} \ No newline at end of file From 172dc65c220e6db7111a5037626ee13ae692fe42 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sat, 15 Nov 2025 01:17:04 +0400 Subject: [PATCH 44/69] get back aztec --- js/package-lock.json | 12000 +++++++++------- js/package.json | 11 +- .../Activities/AztecBlockchainActivities.ts | 3 +- .../Activities/Helper/AztecEventTracker.ts | 3 +- .../Helper/AztecTransactionBuilder.ts | 3 +- .../Helper/AztecTransactionStatusMapper.ts | 2 +- treasury/.env | 8 +- treasury/package-lock.json | 8548 ++++++----- treasury/package.json | 11 +- treasury/src/treasury/aztec/ABIs/train.json | 7352 +++++----- treasury/src/treasury/aztec/FPC.ts | 30 - treasury/src/treasury/aztec/Train.ts | 163 +- treasury/src/treasury/aztec/aztec.service.ts | 188 +- treasury/src/treasury/treasury.module.ts | 2 +- 14 files changed, 16026 insertions(+), 12298 deletions(-) delete mode 100644 treasury/src/treasury/aztec/FPC.ts diff --git a/js/package-lock.json b/js/package-lock.json index 29f4d969..f2c4750e 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -9,11 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@aztec/accounts": "^2.0.3", - "@aztec/aztec.js": "^2.0.3", - "@aztec/kv-store": "^2.0.3", - "@aztec/noir-contracts.js": "^2.0.3", - "@aztec/pxe": "^2.0.3", + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/test-wallet": "^3.0.0-devnet.2", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", @@ -43,5844 +44,8088 @@ "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", "license": "MIT" }, - "node_modules/@aztec/accounts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-2.0.3.tgz", - "integrity": "sha512-RNOQOgkRVQT6exmZ9IvqerTq5R/D/ptVXjIEuWmtu0pw/nAYypUAuF05vsTv7KP7ZhMvrUh40pSgAbgQSXFH9A==", - "dependencies": { - "@aztec/aztec.js": "2.0.3", - "@aztec/entrypoints": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=16.0.0" } }, - "node_modules/@aztec/aztec.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-2.0.3.tgz", - "integrity": "sha512-3JxvC1R0IvvIr0VUEIhM6Eu9MgBH7+VQosTfcX8J+Gx5b0ZWRDxhJT1YrWyst0JJnoPFEfFXThINJ5vJsq8W9A==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/entrypoints": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "axios": "^1.8.2", - "tslib": "^2.4.0", - "viem": "2.23.7" + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/bb-prover": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-2.0.3.tgz", - "integrity": "sha512-UqgC6OExLTDPkTyfnHcIuiFUzrH1ZvtfebV3Ryz+VKxDUOFDNeY/MYjUB7CC/VS1qulKZaiyDFzROAtmJUEeYg==", - "dependencies": { - "@aztec/bb.js": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/simulator": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "@aztec/world-state": "2.0.3", - "commander": "^12.1.0", - "pako": "^2.1.0", - "source-map-support": "^0.5.21", - "tslib": "^2.4.0" - }, - "bin": { - "bb-cli": "dest/bb/index.js" + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/bb.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-2.0.3.tgz", - "integrity": "sha512-sI8lA2L8RMACsi6iBtcuKgGLx4crMzoAaTNtfP3VAaOpjoIwB3O/AMETz5IDGdkOA6tOqM2R0nWh1J+wDYPlVQ==", - "license": "MIT", + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "comlink": "^4.4.1", - "commander": "^12.1.0", - "idb-keyval": "^6.2.1", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "pino": "^9.5.0", - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, - "bin": { - "bb.js": "dest/node/main.js" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aztec/blob-lib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-2.0.3.tgz", - "integrity": "sha512-bVyFI9s/VdT6kIgYz36X79E85gYdF8LwNvsHLqWKJdKokN5RKPxaD/Ez5+3h3R4HZpWIMc9yjUIKpp1Tn8ebWg==", + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "c-kzg": "4.0.0-alpha.1", - "tslib": "^2.4.0" + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-2.0.3.tgz", - "integrity": "sha512-sP6GTHKRburRmfq3ettRxASLjZNvHOPPbH19Mm8kt0LXx08SytZdpyCtaiJmakowYtXLhFMgKrO1QppLtUEfLg==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "commander": "^12.1.0" - }, - "bin": { - "aztec-builder": "dest/bin/cli.js" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/constants": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-2.0.3.tgz", - "integrity": "sha512-2HVuOWTFmpYphCMvA+HMKhQ6qmoZwlO4azlqEnnHTao6MP6SetEduRiqNSapRk8oFfuE7s/DKwnCwpxedcWRAw==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/entrypoints": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-2.0.3.tgz", - "integrity": "sha512-1mgEUC94411aXWXbrbTNJpDJwocwEskGW7vQ9sCbeDb2IvxDs3C904SDcJUJhSTUKDpWRGbINlXB26gFeAGhWQ==", + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=16.0.0" } }, - "node_modules/@aztec/ethereum": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-2.0.3.tgz", - "integrity": "sha512-i6SYcYRecuSbABsoYAdtIJsBlmF+mW9Be++W2qyi1uSAlqTDHo6eJ0yfbXMe+193zxZ053OPAn/KAS2vTY3Yiw==", + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", "dependencies": { - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@viem/anvil": "^0.0.10", - "dotenv": "^16.0.3", - "lodash.chunk": "^4.2.0", - "lodash.pickby": "^4.5.0", - "tslib": "^2.4.0", - "viem": "2.23.7", - "zod": "^3.23.8" + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/foundation": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-2.0.3.tgz", - "integrity": "sha512-qFDpKJQfB4pMORDr4i71C/zy2henlAS4hxG8WEOtiTn0bvTG+o5zekmtZMfDF5QR7LUDWg0kvQ9OFZB20sOItg==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/bb.js": "2.0.3", - "@koa/cors": "^5.0.0", - "@noble/curves": "=1.7.0", - "bn.js": "^5.2.1", - "colorette": "^2.0.20", - "detect-node": "^2.1.0", - "hash.js": "^1.1.7", - "koa": "^2.16.1", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "pako": "^2.1.0", - "pino": "^9.5.0", - "pino-pretty": "^13.0.0", - "sha3": "^2.1.4", - "undici": "^5.28.5", - "zod": "^3.23.8" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/key-store": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-2.0.3.tgz", - "integrity": "sha512-SKTBm6Mhrv7NcWzPCMcs2IOKd8dkjvBk40dTY8rV+Jj9y720vCie9fdhe4u5E/1bIXq2toLuV0idUb5Y4Rp7wA==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/kv-store": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-2.0.3.tgz", - "integrity": "sha512-U43RY0CxvWN9ryk3lBMlawV348ur/L5faA+ABP1xn1emXC5W60qyJ9fthv4jdUrz8s+czjFQDwjF4GERWHGReg==", + "node_modules/@aws-sdk/client-s3": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.930.0.tgz", + "integrity": "sha512-5ddhr3ShseFRIdNXH8bkh1CIC78p0ZXpa7HJZpONDU3JGvd/B+yHHgTr141rtgoFTaW0gjPdbdtqtPLnhlnK+A==", + "license": "Apache-2.0", "dependencies": { - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/native": "2.0.3", - "@aztec/stdlib": "2.0.3", - "idb": "^8.0.0", - "lmdb": "^3.2.0", - "msgpackr": "^1.11.2", - "ohash": "^2.0.11", - "ordered-binary": "^1.5.3" + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/credential-provider-node": "3.930.0", + "@aws-sdk/middleware-bucket-endpoint": "3.930.0", + "@aws-sdk/middleware-expect-continue": "3.930.0", + "@aws-sdk/middleware-flexible-checksums": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-location-constraint": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-sdk-s3": "3.930.0", + "@aws-sdk/middleware-ssec": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/signature-v4-multi-region": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/eventstream-serde-browser": "^4.2.5", + "@smithy/eventstream-serde-config-resolver": "^4.3.5", + "@smithy/eventstream-serde-node": "^4.2.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-blob-browser": "^4.2.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/hash-stream-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/md5-js": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.930.0.tgz", + "integrity": "sha512-sASqgm1iMLcmi+srSH9WJuqaf3GQAKhuB4xIJwkNEPUQ+yGV8HqErOOHJLXXuTUyskcdtK+4uMaBRLT2ESm+QQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.930.0.tgz", + "integrity": "sha512-E95pWT1ayfRWg0AW2KNOCYM7QQcVeOhMRLX5PXLeDKcdxP7s3x0LHG9t7a3nPbAbvYLRrhC7O2lLWzzMCpqjsw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/l1-artifacts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-2.0.3.tgz", - "integrity": "sha512-APwOQZH0JeZ4Z836tZycHNR/f0gWflb8Fjkp8p3xKocm0ZXocnDlOJhnu7Waiz2i+rTHmSCVPdeOjYc7plEqJQ==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.930.0.tgz", + "integrity": "sha512-5tJyxNQmm9C1XKeiWt/K67mUHtTiU2FxTkVsqVrzAMjNsF3uyA02kyTK70byh5n29oVR9XNValVEl6jk01ipYg==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/merkle-tree": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-2.0.3.tgz", - "integrity": "sha512-PgND5Gysca1XcriXZpE2bBHJr8AVI/OuvYNDzGvp4rH6a6yHqpZq+U5y+6CUQJDR9cIuoEVaU1VnwMHlmaD9fQ==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.930.0.tgz", + "integrity": "sha512-vw565GctpOPoRJyRvgqXM8U/4RG8wYEPfhe6GHvt9dchebw0OaFeW1mmSYpwEPkMhZs9Z808dkSPScwm8WZBKA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/stdlib": "2.0.3", - "sha256": "^0.2.0", - "tslib": "^2.4.0" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/native": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/native/-/native-2.0.3.tgz", - "integrity": "sha512-fgRFz8HNFo7leiWv4FXGZ8RFUqiY0+Y7VoglSrEmAhDQWvLE7X3xl/hyLWlztLRcXDeXNPPF+3bgzTcNv0VpbA==", + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.930.0.tgz", + "integrity": "sha512-Ua4T5MWjm7QdHi7ZSUvnPBFwBZmLFP/IEGCLacPKbUT1sQO30hlWuB/uQOj0ns4T6p7V4XsM8bz5+xsW2yRYbQ==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "bindings": "^1.5.0", - "msgpackr": "^1.11.2" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/credential-provider-env": "3.930.0", + "@aws-sdk/credential-provider-http": "3.930.0", + "@aws-sdk/credential-provider-process": "3.930.0", + "@aws-sdk/credential-provider-sso": "3.930.0", + "@aws-sdk/credential-provider-web-identity": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-acvm_js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-2.0.3.tgz", - "integrity": "sha512-ykxlUHop7ouYpsCstd55h97ijTYPr9feDmrg0Mcb3cyQMhyAIMnEfkDV8/sUdqmA+UetE1n1x1/91F/+AD6fBg==", - "license": "MIT" - }, - "node_modules/@aztec/noir-contracts.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-2.0.3.tgz", - "integrity": "sha512-7gMTJ7FAVM20w/pJSJDG1+WJCTMFQyutQnMvkI0IbTEYVnUlwpytcsCKlZ3sWrl48mC3kw04JQ0s6WmIEPmtHw==", + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.930.0.tgz", + "integrity": "sha512-LTx5G0PsL51hNCCzOIdacGPwqnTp3X2Ck8CjLL4Kz9FTR0mfY02qEJB5y5segU1hlge/WdQYxzBBMhtMUR2h8A==", + "license": "Apache-2.0", "dependencies": { - "@aztec/aztec.js": "2.0.3", - "tslib": "^2.4.0" + "@aws-sdk/credential-provider-env": "3.930.0", + "@aws-sdk/credential-provider-http": "3.930.0", + "@aws-sdk/credential-provider-ini": "3.930.0", + "@aws-sdk/credential-provider-process": "3.930.0", + "@aws-sdk/credential-provider-sso": "3.930.0", + "@aws-sdk/credential-provider-web-identity": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-noir_codegen": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-2.0.3.tgz", - "integrity": "sha512-wPKroQazBfzngSMpUlWeF36Bf6CFmD6Mrly3KL3q0ebOoDwyzquhrLLXgHcpCBQo8R0ZruK/O3sVAiF4rFzGTg==", - "license": "(MIT OR Apache-2.0)", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.930.0.tgz", + "integrity": "sha512-lqC4lepxgwR2uZp/JROTRjkHld4/FEpSgofmiIOAfUfDx0OWSg7nkWMMS/DzlMpODqATl9tO0DcvmIJ8tMbh6g==", + "license": "Apache-2.0", "dependencies": { - "@aztec/noir-types": "2.0.3", - "glob": "^11.0.2", - "ts-command-line-args": "^2.5.1" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "bin": { - "noir-codegen": "lib/main.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-noirc_abi": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.3.tgz", - "integrity": "sha512-6Ghb5l8vFV6L7mdJmp0fL9P6O6SBq2S6MTO0Jtvs5kF+De/qHxvp3GCtbUswoSBfqo3s5JbJyyTzDbM8V6SkZw==", - "license": "(MIT OR Apache-2.0)", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.930.0.tgz", + "integrity": "sha512-LIs2aaVoFfioRokR1R9SpLS9u8CmbHhrV/gpHO1ED41qNCujn23vAxRNQmWzJ2XoCxSTwvToiHD2i6CjPA6rHQ==", + "license": "Apache-2.0", "dependencies": { - "@aztec/noir-types": "2.0.3" + "@aws-sdk/client-sso": "3.930.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/token-providers": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-protocol-circuits-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-2.0.3.tgz", - "integrity": "sha512-E3X0NsIrTqrjqE8w10iOpMmrMruWn8OnjPJ/Y8fY45zOwvrn/vC+MeEkWuO5jLFVb225xI2k+a0EP7APiirpqg==", - "dependencies": { - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-acvm_js": "2.0.3", - "@aztec/noir-noir_codegen": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/stdlib": "2.0.3", - "change-case": "^5.4.4", - "tslib": "^2.4.0" + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.930.0.tgz", + "integrity": "sha512-iIYF8GReLOp16yn2bnRWrc4UOW/vVLifqyRWZ3iAGe8NFzUiHBq+Nok7Edh+2D8zt30QOCOsWCZ31uRrPuXH8w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-2.0.3.tgz", - "integrity": "sha512-f8eEjPg+vdbAJ+RD8YHH7PFuUdxU59/3VAf6QBT7VTN6yL52LKVH7XP/g3Dy4vkfctyUWcQsuI4n+k8Uq4Ur7A==", - "license": "(MIT OR Apache-2.0)" + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.930.0.tgz", + "integrity": "sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aztec/protocol-contracts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-2.0.3.tgz", - "integrity": "sha512-Uri5NxnTpCqSFOY4hDVVUj74sGtg8SUFHdEbKKPOH+RGvs2zocYNNaQ+l6CWqDtYmJZnhsBLJMaMImSCupm7rQ==", + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.930.0.tgz", + "integrity": "sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "lodash.chunk": "^4.2.0", - "lodash.omit": "^4.5.0", - "tslib": "^2.4.0" + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/pxe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-2.0.3.tgz", - "integrity": "sha512-19r1EgEi9NGEI8leu8vvGfw0u9d9k/KiWe1nQIkVZluDukIdzsA9xviZ5LKT3pbD17yl3k4IVD6AUucYWBbcNg==", - "dependencies": { - "@aztec/bb-prover": "2.0.3", - "@aztec/bb.js": "2.0.3", - "@aztec/builder": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/key-store": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/simulator": "2.0.3", - "@aztec/stdlib": "2.0.3", - "json-stringify-deterministic": "1.0.12", - "koa": "^2.16.1", - "koa-router": "^12.0.0", - "lodash.omit": "^4.5.0", - "sha3": "^2.1.4", - "tslib": "^2.4.0", - "viem": "2.23.7" + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.930.0.tgz", + "integrity": "sha512-ZbAwwe7sqIO7tmNH3Q8rH91tZCQwBGliyXUbANoVMp1CWLPDAeaECurkmuBe/UJmoszi2U3gyhIQlbfzD2SBLw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "bin": { - "pxe": "dest/bin/index.js" + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", + "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/simulator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-2.0.3.tgz", - "integrity": "sha512-v1N1yqbiFYn7Pk1QvhoBaHpRgPfR7SiyhS44cNwgh5+EHUo1e9R43/hzxFIunckWoNl2arMHjX2JYUaE7Q6u3Q==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-acvm_js": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "@aztec/world-state": "2.0.3", - "lodash.clonedeep": "^4.5.0", - "lodash.merge": "^4.6.2", - "tslib": "^2.4.0" + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.930.0.tgz", + "integrity": "sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/stdlib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-2.0.3.tgz", - "integrity": "sha512-kzYspDE4xWTRZQOEMwuYRD84YE5XNJQBzTo/pLq5UnhupdnyqjW1KJIVmi82Ql3vstjx6ZzIldveqjzE3Q0QwQ==", - "dependencies": { - "@aztec/bb.js": "2.0.3", - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@google-cloud/storage": "^7.15.0", - "axios": "^1.9.0", - "json-stringify-deterministic": "1.0.12", - "lodash.chunk": "^4.2.0", - "lodash.isequal": "^4.5.0", - "lodash.omit": "^4.5.0", - "lodash.times": "^4.3.2", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "tslib": "^2.4.0", - "viem": "2.23.7", - "zod": "^3.23.8" + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", + "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/telemetry-client": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-2.0.3.tgz", - "integrity": "sha512-3geZjXE0U8Y3QzGoaVBhscOqE/d7hu5xpnu3yQuaM20VQEN7VeP3E1JTSg9YTCwXtdXnQ9ethSQrmXt3jq0ICA==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", + "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.55.0", - "@opentelemetry/core": "^1.28.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", - "@opentelemetry/host-metrics": "^0.35.4", - "@opentelemetry/otlp-exporter-base": "^0.55.0", - "@opentelemetry/resource-detector-gcp": "^0.32.0", - "@opentelemetry/resources": "^1.28.0", - "@opentelemetry/sdk-logs": "^0.55.0", - "@opentelemetry/sdk-metrics": "^1.28.0", - "@opentelemetry/sdk-trace-node": "^1.28.0", - "@opentelemetry/semantic-conventions": "^1.28.0", - "prom-client": "^15.1.3", - "viem": "2.23.7" + "@aws-sdk/types": "3.930.0", + "@aws/lambda-invoke-store": "^0.1.1", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/world-state": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-2.0.3.tgz", - "integrity": "sha512-PwoscvIQzaOR3gV72PZbAkfpHcTip5O5AOyhW5s05NScNc+EKkEdXJLuzUoorec5GIIfPxkPkJDxZSoWYJznOw==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/merkle-tree": "2.0.3", - "@aztec/native": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "tslib": "^2.4.0", - "zod": "^3.23.8" + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.930.0.tgz", + "integrity": "sha512-bnVK0xVVmrPyKTbV5MgG6KP7MPe87GngBPD5MrYj9kWmGrJIvnt0qer0UIgWAnsyCi7XrTfw7SMgYRpSxOYEMw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.930.0.tgz", + "integrity": "sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.930.0.tgz", + "integrity": "sha512-UUItqy02biaHoZDd1Z2CskFon3Lej15ZCIZzW4n2lsJmgLWNvz21jtFA8DQny7ZgCLAOOXI8YK3VLZptZWtIcg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/nested-clients": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.930.0.tgz", + "integrity": "sha512-eEDjTVXNiDkoV0ZV+X+WV40GTpF70xZmDW13CQzQF7rzOC2iFjtTRU+F7MUhy/Vs+e9KvDgiuCDecITtaOXUNw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.930.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", + "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.930.0.tgz", + "integrity": "sha512-UOAq1ftbrZc9HRP/nG970OONNykIDWunjth9GvGDODkW0FR7DHJWBmTwj61ZnrSiuSParp1eQfa+JsZ8eXNPcw==", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@aws-sdk/middleware-sdk-s3": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=18.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/token-providers": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.930.0.tgz", + "integrity": "sha512-K+fJFJXA2Tdx10WhhTm+xQmf1WDHu14rUutByyqx6W0iW2rhtl3YeRr188LWSU3/hpz7BPyvigaAb0QyRti6FQ==", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@aws-sdk/core": "3.930.0", + "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/types": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", + "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", + "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", + "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.930.0.tgz", + "integrity": "sha512-tYc5uFKogn0vLukeZ6Zz2dR1/WiTjxZH7+Jjoce6aEYgRVfyrDje1POFb7YxhNZ7Pp1WzHCuwW2KgkmMoYVbxQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/xml-builder": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", + "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", + "node_modules/@aws/lambda-invoke-store": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", + "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/accounts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-3.0.0-devnet.2.tgz", + "integrity": "sha512-xmhQYvkIR3KMhpTJoTPCSrOwdOOEbNUF4mXkQh0JWfWRPCw8DWqJr0dJcECS+PlxABIFE/OcLdUq7gNXmhhxWg==", + "dependencies": { + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/entrypoints": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/aztec.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-3suXrSKeZUq9rMWgyYLxOUDKwxcbcnX1PX82dBRqlsAagThwHi3NPD+9QiEO/7vU2G27oQzrb6YRmARnVqL6aQ==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/entrypoints": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "axios": "^1.12.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "node_modules/@aztec/bb-prover": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-3.0.0-devnet.2.tgz", + "integrity": "sha512-b/uNARAQcrOFH3WGbdQB5+zZyu3rA5uX61L2Au//GAu2pLPAq9BjJfHPhDXrNmV5q8vk0RiMX0jR+ITw73jfww==", + "dependencies": { + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/simulator": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "@aztec/world-state": "3.0.0-devnet.2", + "commander": "^12.1.0", + "pako": "^2.1.0", + "source-map-support": "^0.5.21", + "tslib": "^2.4.0" + }, + "bin": { + "bb-cli": "dest/bb/index.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, + "node_modules/@aztec/bb.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-KRU8YuFuZ68J2I6woQ+NJsRZcr3WG2n1KaRKcT83l9fjG8OtNmPH77/SXio/cPOXjXvdzTDvfiNNt54o1olfLg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "pino": "^9.5.0", + "tslib": "^2.4.0" }, "bin": { - "parser": "bin/babel-parser.js" + "bb.js": "dest/node/main.js" + } + }, + "node_modules/@aztec/blob-lib": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-3.0.0-devnet.2.tgz", + "integrity": "sha512-cRyjcgljsQ8ChNxufo4AdAasgS7IFzAgZw2pdkOkRyP/nXh1TyUx1QtrmgDU2R5oam+7HtUDck28gI0u2O80SA==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@crate-crypto/node-eth-kzg": "^0.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/builder": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-3.0.0-devnet.2.tgz", + "integrity": "sha512-zSSG3nDsHAlyUI8Ct3rpWmEOjc7MGQo7MSb9znPLa8mxZoLrXA0lP6R0M1srwjdhNxgTMod+VceAXocvka+sDQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "commander": "^12.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "bin": { + "aztec-builder": "dest/bin/cli.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/constants": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-3.0.0-devnet.2.tgz", + "integrity": "sha512-uM9kD87JDPwsSjb9ty6CO65I14G3J44FB90Btyf61Cv1Vi21hcTjWDLlExLdvm2EXSPyry/c3IM8hV7xMV5ZGA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "node_modules/@aztec/entrypoints": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-3.0.0-devnet.2.tgz", + "integrity": "sha512-7A/CbOj8ACKkKi2Fet5Ddl44Pfohp3j8RewFR4j8ZyT55EKJBabM3SdGcQ9aGA9TaNAoMoqmOqp1R3yRCVj5Vw==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "node_modules/@aztec/ethereum": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-3.0.0-devnet.2.tgz", + "integrity": "sha512-BkY6jt10LifQkATtaeyenXBSMbVAWcH95dPaQbeQMykMlmT4c2sNISn8O69IQDY8zAoET61+ivBbT7hP108FpQ==", + "dependencies": { + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@viem/anvil": "^0.0.10", + "dotenv": "^16.0.3", + "lodash.chunk": "^4.2.0", + "lodash.pickby": "^4.5.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/foundation": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-3.0.0-devnet.2.tgz", + "integrity": "sha512-EYtzdsr8R+tIBjQWSKA/Z91ElCPSUobdcP9RmXmnNi5ByOs+3gpRIbrIz1mBb+9dG+jq0iVNadq/2raUz+e4pQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aztec/bb.js": "3.0.0-devnet.2", + "@koa/cors": "^5.0.0", + "@noble/curves": "=1.7.0", + "bn.js": "^5.2.1", + "colorette": "^2.0.20", + "detect-node": "^2.1.0", + "hash.js": "^1.1.7", + "koa": "^2.16.1", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^13.1.1", + "leveldown": "^6.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "pako": "^2.1.0", + "pino": "^9.5.0", + "pino-pretty": "^13.0.0", + "sha3": "^2.1.4", + "undici": "^5.28.5", + "zod": "^3.23.8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@aztec/key-store": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-3.0.0-devnet.2.tgz", + "integrity": "sha512-gCrhwzGx9/fXHRF+x/6r2BrmCMvz6QkLGeROjNu9Fr5xcLxrxIiPrqzShaHTgSBzYCBiZRbdd7VQB6GUR9e59w==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/@aztec/kv-store": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-3.0.0-devnet.2.tgz", + "integrity": "sha512-U2VvPiZVwNIXNWCNu2h+3kfSXH6MoMjWQb1dNlm6CWh7O3PBxnJ+96YUWm1oY1kmQA5YcbU31kjYa0s93HntZA==", + "dependencies": { + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "idb": "^8.0.0", + "lmdb": "^3.2.0", + "msgpackr": "^1.11.2", + "ohash": "^2.0.11", + "ordered-binary": "^1.5.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/l1-artifacts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-3.0.0-devnet.2.tgz", + "integrity": "sha512-F/zs3JlV6tA09OgxvrLZkphG+f+GvLPRqgPGD0JxHqYpcyHhj6oF91sCoUNmja/L1WhY9PBblI5/Sz2yftEySw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/merkle-tree": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-3.0.0-devnet.2.tgz", + "integrity": "sha512-E5A5ZRKz1k/R8IG37e6o3rFHysmeC1uBg+TxYKyi07P6TgFeBTb9J+F2fCCDyPHAQSWU5yQbEbGaexVwuqzkXw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "sha256": "^0.2.0", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/native": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-3.0.0-devnet.2.tgz", + "integrity": "sha512-FF67c8s8Wgu6s8Qvfg3Aq2RvLDFZZvwyHz4+mwI5aXbI2//xo65jPxz3HozjaLWz/CRiYC9Dkg9faZ9wUiG+Iw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/foundation": "3.0.0-devnet.2", + "msgpackr": "^1.11.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-acvm_js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-3.0.0-devnet.2.tgz", + "integrity": "sha512-CyKCYq32w0gWN14Vc7SwAAsjMqKmQD5G2ssy6MW0UNJ5mVXusUTdq90LfFZFIAh139tLcpxG2lOOd7jYhzNZ/A==", + "license": "MIT" + }, + "node_modules/@aztec/noir-contracts.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-GDItJIjO5AGuWKbS8mAbgEI+PrT1ZWafvf7BY+OXKjLAdRZ8lzLx9ftug9/iic6S1v3wHKC1R79YJj30YxQpLw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/aztec.js": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-noir_codegen": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-3.0.0-devnet.2.tgz", + "integrity": "sha512-4H4QGvqXpyk6pV7khu88D2WDDkXUn6SxVMA6686qvJCK11I17g49f1Kg6+94XKWTAQ+BWFJgm0Ff3k7S3gppkA==", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/noir-types": "3.0.0-devnet.2", + "glob": "^11.0.3", + "ts-command-line-args": "^2.5.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "noir-codegen": "lib/main.js" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-noirc_abi": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-3.0.0-devnet.2.tgz", + "integrity": "sha512-stPneUeYTdGBzzt21oPJv3+8/QpjiI/3rvmet3k1ZFvGZFyPq0GL87kTKOQdStE4shc8ypOEG00isGTGNtTRmg==", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aztec/noir-types": "3.0.0-devnet.2" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "node_modules/@aztec/noir-protocol-circuits-types": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-3.0.0-devnet.2.tgz", + "integrity": "sha512-jOHgAMoOH52QDeEW8lIH+Fy9+rOf90DPNSO65DHgVt+n/VZG7ln7FxQl3lxHA2cjMv8moKD/wtTusAy77MXQuw==", + "dependencies": { + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/noir-acvm_js": "3.0.0-devnet.2", + "@aztec/noir-noir_codegen": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "change-case": "^5.4.4", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-types": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-3.0.0-devnet.2.tgz", + "integrity": "sha512-XXOfS9flhEStIJOneZJJlIQjgegWvmfeqSpGzSPHBBvYUAWSZVbjfl+8AEJcamVo311EyqQWiwScJh+1xvM4lw==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/@aztec/protocol-contracts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-3.0.0-devnet.2.tgz", + "integrity": "sha512-W4bcAv2c5FwxzA9JLm8aQx5J0aH7hEWGICK/lMGTr0AotuXsg3mzixg27JB2T4XHSmL7jVX589ci72FdBv4/nQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "lodash.chunk": "^4.2.0", + "lodash.omit": "^4.5.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "node_modules/@aztec/pxe": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-3.0.0-devnet.2.tgz", + "integrity": "sha512-DmY5j3YxJhdVnd2Ri2bqcOY4s996xmPcRCoIvg2kJwobKzaWTCHub0fdmHb8fJOJyiw5JVQhRrFYw0bY6ftyEA==", + "dependencies": { + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/builder": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/key-store": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/simulator": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "koa": "^2.16.1", + "koa-router": "^13.1.1", + "lodash.omit": "^4.5.0", + "sha3": "^2.1.4", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0" + }, + "bin": { + "pxe": "dest/bin/index.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" + "node_modules/@aztec/simulator": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-3.0.0-devnet.2.tgz", + "integrity": "sha512-WjLeQRSLkuE3HqTDBO2j9rUGKjDTxv0pUOa3BSmF+WtatZsjX5YjcBmnJO+Oca6wXYy3Asmif3L2k42rAOqCuA==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/noir-acvm_js": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "@aztec/world-state": "3.0.0-devnet.2", + "lodash.clonedeep": "^4.5.0", + "lodash.merge": "^4.6.2", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "node_modules/@aztec/stdlib": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-3.0.0-devnet.2.tgz", + "integrity": "sha512-YTepOqs+0aPK6pXj1LqPiYFJHcq2pyYDvUXaNaLG5FdxghdhepZQd1KjG4V7zm2cXIqASlgVyzsBJ2mTZKhaXQ==", + "dependencies": { + "@aws-sdk/client-s3": "^3.892.0", + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.12.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/telemetry-client": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-3.0.0-devnet.2.tgz", + "integrity": "sha512-SAIg2ANvVzUDWbP00+2lN35dBRdJQPMcQ8QZ2M+aQBMKvRbyClgVy9800UVGRplPiiirClkN57kkwW+TWX9rrQ==", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.55.0", + "@opentelemetry/core": "^1.28.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/host-metrics": "^0.36.2", + "@opentelemetry/otlp-exporter-base": "^0.55.0", + "@opentelemetry/resource-detector-gcp": "^0.32.0", + "@opentelemetry/resources": "^1.28.0", + "@opentelemetry/sdk-logs": "^0.55.0", + "@opentelemetry/sdk-metrics": "^1.28.0", + "@opentelemetry/sdk-trace-node": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "prom-client": "^15.1.3", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0" }, "engines": { - "node": ">=12" + "node": ">=20.10" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/test-wallet": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/test-wallet/-/test-wallet-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-obYjdKQVhXdY2VhwqCZWQAZ7/0PkbXsuAK/NOLGaGyuhNgz/b+oBvrkeWzgYZS1P8uS+R7TVmwqcIki4GPK5xQ==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@aztec/accounts": "3.0.0-nightly.20250911", + "@aztec/aztec.js": "3.0.0-nightly.20250911", + "@aztec/entrypoints": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/noir-contracts.js": "3.0.0-nightly.20250911", + "@aztec/stdlib": "3.0.0-nightly.20250911" + }, + "engines": { + "node": ">=20.10" } }, - "node_modules/@cypress/request": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", - "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", - "license": "Apache-2.0", + "node_modules/@aztec/test-wallet/node_modules/@aztec/accounts": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-fFgAzaYTA8jFMkSquY+ZjjIwmjIegnGaV+sXs6QtH82HuwJg3cx2Rb/7ArH2Awie2L6YDsHnzd+6VXN2gzQKaw==", "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~4.0.4", - "http-signature": "~1.4.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "6.14.0", - "safe-buffer": "^5.1.2", - "tough-cookie": "^5.0.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "@aztec/aztec.js": "3.0.0-nightly.20250911", + "@aztec/entrypoints": "3.0.0-nightly.20250911", + "@aztec/ethereum": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/stdlib": "3.0.0-nightly.20250911", + "tslib": "^2.4.0" }, "engines": { - "node": ">= 6" + "node": ">=20.10" } }, - "node_modules/@cypress/request/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "license": "BSD-3-Clause", + "node_modules/@aztec/test-wallet/node_modules/@aztec/aztec.js": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-POy0Zb2CeiN8iXEoJq7UyLcQPUpidJ/wTy7ZlS/4iBlWAeovFotoc2M/8wYhEeKLywH5F52SNTRnd3wcUjHmRw==", "dependencies": { - "tldts": "^6.1.32" + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/entrypoints": "3.0.0-nightly.20250911", + "@aztec/ethereum": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/l1-artifacts": "3.0.0-nightly.20250911", + "@aztec/protocol-contracts": "3.0.0-nightly.20250911", + "@aztec/stdlib": "3.0.0-nightly.20250911", + "axios": "^1.8.2", + "tslib": "^2.4.0", + "viem": "2.23.7" }, "engines": { - "node": ">=16" + "node": ">=20.10" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", - "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", - "cpu": [ - "ppc64" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/bb.js": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-VNIU6jaHjs8MLuDN6e9Ezu6VXMy4VU76uDS/4cgLn9hMCsuhciPt+HrEUfIZj7aIzfbz7T/Y81cpgjRi0LNd2Q==", "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "pino": "^9.5.0", + "tslib": "^2.4.0" + }, + "bin": { + "bb.js": "dest/node/main.js" + } + }, + "node_modules/@aztec/test-wallet/node_modules/@aztec/blob-lib": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-xZE/I4nSjcDaP2dazzJWWaGYnEvseXb76JkXYJSD7erLacr7x0exaWBC4HUZKpCPHEcOtveT/l8asColApgNsA==", + "dependencies": { + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "c-kzg": "4.0.0-alpha.1", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", - "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/constants": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-p2cFeSb9xS0f8hhsFvLFek3YGF5Oe/+RYDHlMi29UiHr5aR0jRDpuWt392hDXEibWEDxEAuE4MXIPBXBN3X71Q==", + "dependencies": { + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", - "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/entrypoints": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-Y29vf6XqqUAQC9COLUb7cvMIL+F8Q6si2hS7JUs3ASi2eA3zWz0GwabIrfZ0notzM1lElF/Jrof6ojgc6zPaiQ==", + "dependencies": { + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/protocol-contracts": "3.0.0-nightly.20250911", + "@aztec/stdlib": "3.0.0-nightly.20250911", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", - "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/ethereum": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-1d7E0vWYawiUC+FEEWkkk0Me7tmEKAFDdmijd0GFo0UEJlYaSPOEWykVQYW423yg4fV4laFbLYZGW0op9AQTVw==", + "dependencies": { + "@aztec/blob-lib": "3.0.0-nightly.20250911", + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/l1-artifacts": "3.0.0-nightly.20250911", + "@viem/anvil": "^0.0.10", + "dotenv": "^16.0.3", + "lodash.chunk": "^4.2.0", + "lodash.pickby": "^4.5.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", - "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/foundation": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-xW6ObIhyyEGeorxD2Z9YLSX6DvcmwsvNofUujjDf7AS/BC8tjn+De7g15PWIfR1WtcKjhLLGiHxD6ZSPIgWz2A==", + "dependencies": { + "@aztec/bb.js": "3.0.0-nightly.20250911", + "@koa/cors": "^5.0.0", + "@noble/curves": "=1.7.0", + "bn.js": "^5.2.1", + "colorette": "^2.0.20", + "detect-node": "^2.1.0", + "hash.js": "^1.1.7", + "koa": "^2.16.1", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^12.0.0", + "leveldown": "^6.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "pako": "^2.1.0", + "pino": "^9.5.0", + "pino-pretty": "^13.0.0", + "sha3": "^2.1.4", + "undici": "^5.28.5", + "zod": "^3.23.8" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", - "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" + "node_modules/@aztec/test-wallet/node_modules/@aztec/l1-artifacts": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-uuKwQLYA1auhU6hppFgmPIVXSXpmTgJh8xbyzEBNbRP5rqevVhKCAlB8x3iIEL46r6E5ovC9gghwoJCDdTHBlg==", + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", - "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/noir-contracts.js": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-LQTzdez+5vmbDvypQ4Azks68Ajfy3eWmmATUwqaeuNQB6zmiT+kDTKM6Ic+QDr8BijBmDMSK+JY/MuwAslLXCw==", + "dependencies": { + "@aztec/aztec.js": "3.0.0-nightly.20250911", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", - "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "node_modules/@aztec/test-wallet/node_modules/@aztec/noir-noirc_abi": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-fYh9tNhGoDAtdIq6GhAQ+3k8O/p5QKh/eYsrvZ2lFF38wlWlxZMTIytvasnHbIWMrOqvDhYPGwpf4KQvLH4L9w==", + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "@aztec/noir-types": "3.0.0-nightly.20250911" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", - "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/noir-types": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-yRFDmOXp4YNTiZrB/E2fnAiYHyUKd60O8iX+kt8XFIYZBHIi7GQuzKUTtGcuQGHfMpEzrixB751CWDz60/5utw==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/@aztec/test-wallet/node_modules/@aztec/protocol-contracts": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-3NEWFJvap8GyA7lKcWEn2u5YtCHxFjj2PhyJL5TsISac5by14B8KgiFsvQ6cxCUWCjbxZbUESfhxIoh7yZIAXg==", + "dependencies": { + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/stdlib": "3.0.0-nightly.20250911", + "lodash.chunk": "^4.2.0", + "lodash.omit": "^4.5.0", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", - "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@aztec/test-wallet/node_modules/@aztec/stdlib": { + "version": "3.0.0-nightly.20250911", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-3.0.0-nightly.20250911.tgz", + "integrity": "sha512-lVEzRrx3esUec3rUJj0tfb0am77rbWpltgk8AFMJCUhD8T4BZJDHDjyh/P2rkS55xnT3EM8XwePrObPKNdSy+A==", + "dependencies": { + "@aztec/bb.js": "3.0.0-nightly.20250911", + "@aztec/blob-lib": "3.0.0-nightly.20250911", + "@aztec/constants": "3.0.0-nightly.20250911", + "@aztec/ethereum": "3.0.0-nightly.20250911", + "@aztec/foundation": "3.0.0-nightly.20250911", + "@aztec/l1-artifacts": "3.0.0-nightly.20250911", + "@aztec/noir-noirc_abi": "3.0.0-nightly.20250911", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.9.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "2.23.7", + "zod": "^3.23.8" + }, "engines": { - "node": ">=18" + "node": ">=20.10" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", - "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", - "cpu": [ - "ia32" - ], + "node_modules/@aztec/test-wallet/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", - "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", - "cpu": [ - "loong64" - ], + "node_modules/@aztec/test-wallet/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", - "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", - "cpu": [ - "mips64el" - ], + "node_modules/@aztec/test-wallet/node_modules/@scure/bip32": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", - "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", - "cpu": [ - "ppc64" - ], + "node_modules/@aztec/test-wallet/node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@noble/hashes": "1.7.2" + }, "engines": { - "node": ">=18" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", - "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", - "cpu": [ - "riscv64" - ], + "node_modules/@aztec/test-wallet/node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", - "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", - "cpu": [ - "s390x" - ], + "node_modules/@aztec/test-wallet/node_modules/@scure/bip39": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", - "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/test-wallet/node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", - "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "node_modules/@aztec/test-wallet/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@aztec/test-wallet/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">=18" + "node": ">= 0.8" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", - "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", - "cpu": [ - "x64" + "node_modules/@aztec/test-wallet/node_modules/isows": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } ], "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "ws": "*" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", - "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aztec/test-wallet/node_modules/koa-router": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", + "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "deprecated": "Please use @koa/router instead, starting from v9! ", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "dependencies": { + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.2.1" + }, "engines": { - "node": ">=18" + "node": ">= 12" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", - "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", - "cpu": [ - "x64" + "node_modules/@aztec/test-wallet/node_modules/ox": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } ], "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@adraffy/ens-normalize": "^1.10.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@scure/bip32": "^1.5.0", + "@scure/bip39": "^1.4.0", + "abitype": "^1.0.6", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", - "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/test-wallet/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], "engines": { - "node": ">=18" + "node": ">= 0.8" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", - "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", - "cpu": [ - "arm64" + "node_modules/@aztec/test-wallet/node_modules/viem": { + "version": "2.23.7", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz", + "integrity": "sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } ], "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@noble/curves": "1.8.1", + "@noble/hashes": "1.7.1", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "abitype": "1.0.8", + "isows": "1.0.6", + "ox": "0.6.7", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", - "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", - "cpu": [ - "ia32" - ], + "node_modules/@aztec/test-wallet/node_modules/viem/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@noble/hashes": "1.7.1" + }, "engines": { - "node": ">=18" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", - "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", - "cpu": [ - "x64" - ], + "node_modules/@aztec/test-wallet/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=18" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@ethereumjs/block": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-4.3.0.tgz", - "integrity": "sha512-NHzfNIqadldAB91LjkHOaQgMNA/Pc7C1N9NAm/QpewW6D0B9bSIYYnxwmv3EUyd/sbfBEheLFpwrBpvkCN+iAA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" + "node_modules/@aztec/world-state": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-3.0.0-devnet.2.tgz", + "integrity": "sha512-YGcKr49SYgDrcUBiXLfbuAog9vzvv5+u6VDBeowBRbfjOrk5oEsujD+DvwwICl+y/vDEFV+uAtJF+QsjP3fBfQ==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/merkle-tree": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "tslib": "^2.4.0", + "zod": "^3.23.8" }, "engines": { - "node": ">=14" + "node": ">=20.10" } }, - "node_modules/@ethereumjs/blockchain": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-6.3.0.tgz", - "integrity": "sha512-2FLtkThtA0SsfG6v7BzElEwLHMYE0nQf8BFGO/+HeFTwldWw0tybaobzJcX/p0j9bwEsRtnadU/iTAbXsHuNFw==", - "license": "MPL-2.0", + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/ethash": "^2.1.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "abstract-level": "^1.0.3", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "level": "^8.0.0", - "lru-cache": "^5.1.1", - "memory-level": "^1.0.0" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/common": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", - "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/ethash": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-2.1.0.tgz", - "integrity": "sha512-J7nOkkNcPaWM2cZ7vdTZ8lmuRVhSQatiO/9yHTo9fkWnAxiOjkLw7ppLUrtpcCJbP7Ouk75n2ppixd4SdacNJQ==", - "license": "MPL-2.0", + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "abstract-level": "^1.0.3", - "bigint-crypto-utils": "^3.2.2", - "ethereum-cryptography": "^2.0.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@ethereumjs/evm": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/evm/-/evm-1.4.0.tgz", - "integrity": "sha512-ruLYlw6lfYukFiHyoGpJTI42UciW5ASXwMCRsmng9kuxv8TyBs711SbBUlzpO/Y2bxKGWvx6XCQJGxMCd/bqzw==", - "license": "MPL-2.0", + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "@ethersproject/providers": "^5.7.1", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "license": "MPL-2.0", - "bin": { - "rlp": "bin/rlp" + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/statemanager": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.1.0.tgz", - "integrity": "sha512-yOM0Q1SMCyi0Z/D9xbXsFYdZvbXtNAYNyZ2qmEfyUk46DZHILay78/ghjPaAqszqog3zeBf7hZqzBzf2Od4o2A==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "ethers": "^5.7.1", - "js-sdsl": "^4.1.4" + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@ethereumjs/trie": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/trie/-/trie-5.1.0.tgz", - "integrity": "sha512-OVaHuZUx1ao+VmYYg63kzmMgPqwFHPdDTP3hqp5Jh4QGWdhY5ddIMVhXBZRTxqEnDZkUmBA21yyAxdmI8YaBzA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "^2.0.0", - "readable-stream": "^3.6.0" - }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/tx": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", - "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "license": "MPL-2.0", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", - "license": "MPL-2.0", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@ethereumjs/vm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-6.5.0.tgz", - "integrity": "sha512-/i9dnF3Gw+l/47k/YgY/ba2p6lg2WY3YCkIVx0aoF71fC9nULfkQfJrTYlcn3FBiBFEjacI3p/N1F3hW7YcyzA==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/block": "^4.3.0", - "@ethereumjs/blockchain": "^6.3.0", - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/evm": "^1.4.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/statemanager": "^1.1.0", - "@ethereumjs/trie": "^5.1.0", - "@ethereumjs/tx": "^4.2.0", - "@ethereumjs/util": "^8.1.0", - "debug": "^4.3.3", - "ethereum-cryptography": "^2.0.0", - "mcl-wasm": "^0.7.1", - "rustbn.js": "~0.2.0" - }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abi": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", - "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", - "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", - "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/address": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", - "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/rlp": "^5.8.0" + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@ethersproject/base64": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", - "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/basex": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", - "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/properties": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", - "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "bn.js": "^5.2.1" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.8.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/constants": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", - "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bignumber": "^5.8.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/contracts": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", - "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abi": "^5.8.0", - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/hash": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", - "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/hdnode": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", - "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", - "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/keccak256": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", - "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "js-sha3": "0.8.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", - "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/logger": "^5.8.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/providers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", - "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0", - "bech32": "1.1.4", - "ws": "8.18.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10.0.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ethersproject/random": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", - "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/rlp": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", - "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/signing-key": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", - "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@crate-crypto/node-eth-kzg": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg/-/node-eth-kzg-0.10.0.tgz", + "integrity": "sha512-sGDPH1nW2EhJzjzHyINvTQwDNGRzdq/2vVzFwwrmFOHtIBaRjXGqo7wKj/JoJoNjuRSGeXz/EmaahRq0pgxzqw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@crate-crypto/node-eth-kzg-darwin-arm64": "0.10.0", + "@crate-crypto/node-eth-kzg-darwin-x64": "0.10.0", + "@crate-crypto/node-eth-kzg-linux-arm64-gnu": "0.10.0", + "@crate-crypto/node-eth-kzg-linux-x64-gnu": "0.10.0", + "@crate-crypto/node-eth-kzg-win32-arm64-msvc": "0.10.0", + "@crate-crypto/node-eth-kzg-win32-x64-msvc": "0.10.0" + } + }, + "node_modules/@crate-crypto/node-eth-kzg-darwin-arm64": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-darwin-arm64/-/node-eth-kzg-darwin-arm64-0.10.0.tgz", + "integrity": "sha512-cKhqkrRdnWhgPycHkcdwfu/w41PuCvAERkX5yYDR3cSYR4h87Gn4t/infE6UNsPDBCN7yYV42YmZfQDfEt2xrw==", + "cpu": [ + "arm64" ], "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "bn.js": "^5.2.1", - "elliptic": "6.6.1", - "hash.js": "1.1.7" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/solidity": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", - "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@crate-crypto/node-eth-kzg-darwin-x64": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-darwin-x64/-/node-eth-kzg-darwin-x64-0.10.0.tgz", + "integrity": "sha512-8fn4+UBP01ZBxVARTZvxPBGrmcUbYFM/b5z0wZkEevQ9Sz5GYk8hursgpqbhekj+xTCxmwa9pPkzDbtG6oZGQg==", + "cpu": [ + "x64" ], "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/strings": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", - "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@crate-crypto/node-eth-kzg-linux-arm64-gnu": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-linux-arm64-gnu/-/node-eth-kzg-linux-arm64-gnu-0.10.0.tgz", + "integrity": "sha512-euuqBTDLOpI9wNx0jO7AD24BdiCs9sz8cBybsdGJvyZ8QLUIezTnA/aXcrZBzsA5ZOrHYjaWS2NJpgDdAjLLuQ==", + "cpu": [ + "arm64" ], "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/transactions": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", - "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@crate-crypto/node-eth-kzg-linux-x64-gnu": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-linux-x64-gnu/-/node-eth-kzg-linux-x64-gnu-0.10.0.tgz", + "integrity": "sha512-b4klE/jp98PBZ7PWuFE1OscWBILSS8jP+JMbIJ+qE7y42s/6ImWH5bWmVdFOfh6u0o95cb9hCS0xIECM80SqBg==", + "cpu": [ + "x64" ], "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/units": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", - "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@crate-crypto/node-eth-kzg-win32-arm64-msvc": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-win32-arm64-msvc/-/node-eth-kzg-win32-arm64-msvc-0.10.0.tgz", + "integrity": "sha512-tFKv02TG/JYsD4gvV0gTvjLqd09/4g/B37fCPXIuEFzq5LgIuWHu37hhQ6K8eIfoXZOTY3wqqkY1jTXYhs2sTA==", + "cpu": [ + "arm64" ], "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/wallet": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", - "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "node_modules/@crate-crypto/node-eth-kzg-win32-x64-msvc": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-win32-x64-msvc/-/node-eth-kzg-win32-x64-msvc-0.10.0.tgz", + "integrity": "sha512-mYieW1mBesbLFRB2j4LdodpCkwIxZ8ZHZzzwV+MXqapI61B2SbH+FyMYQ5lJYqQeMHCY0ojq5ScW1zZj1uNGjA==", + "cpu": [ + "x64" ], "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/json-wallets": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", - "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "optional": true, + "os": [ + "win32" ], - "license": "MIT", - "dependencies": { - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "engines": { + "node": ">= 10" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", - "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, "license": "MIT", "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "license": "MIT", + "@jridgewell/trace-mapping": "0.3.9" + }, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@fuel-ts/abi-coder": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", - "integrity": "sha512-ZlifuRVn7yuR3VknX1vHWDX9BmUFryoGiNqdGTXCBq5XC6Z2ASmdJTis4wcGYaBsrlZv95RWym9i9TtRLA+Y1A==", - "license": "Apache-2.0", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "type-fest": "4.34.1" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@fuel-ts/abi-typegen": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", - "integrity": "sha512-WWXESg9SaBOLBXYsTeW5We3LA2aHzRhCzUAp5UDqaCChztzAyyj4aXd68zpUiJ5UlH3C6bxgv2zHMhWMo+rriA==", + "node_modules/@cypress/request": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.9.tgz", + "integrity": "sha512-I3l7FdGRXluAS44/0NguwWlO83J18p0vlr2FYHrJkWdNYhgVoiYo61IXPqaOsL+vNxU1ZqMACzItGK3/KKDsdw==", "license": "Apache-2.0", "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "commander": "13.1.0", - "glob": "10.4.5", - "handlebars": "4.7.8", - "mkdirp": "3.0.1", - "ramda": "0.30.1", - "rimraf": "5.0.10" - }, - "bin": { - "fuels-typegen": "typegen.js" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.4", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.14.0", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">= 6" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", + "cpu": [ + "ppc64" + ], "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/@esbuild/android-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@fuel-ts/account": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.3.tgz", - "integrity": "sha512-ubDVW4NSRdTEyaAFUnL75+ysjLcb+/5M3Rtk5hFDawhcrA9rSB0UDel5lOavERuJlKPtu4jngcv8nTiXdu4mGw==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/merkle": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "@noble/curves": "1.8.1", - "events": "3.3.0", - "graphql": "16.10.0", - "graphql-request": "6.1.0", - "graphql-tag": "2.12.6", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@noble/hashes": "1.7.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/address": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.3.tgz", - "integrity": "sha512-GbolfGNSSx8hEHPxI4ayD3MAhnHMCg3mqCFncTXXFaL2uMK82aSvab8s0QLNxcIPZmS9T5rOCMY0sqwm5ahh7w==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/contract": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.3.tgz", - "integrity": "sha512-uMpELAr/jkyyNIUCuCrTKbhT1oH/smUEVKL7D+4HvJ2nqn7xO4XdaNFGf6/5qylElDP8xn4Xtte8sb+d9UeZTA==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/merkle": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/crypto": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.3.tgz", - "integrity": "sha512-bb/wnMMcf8czSpsamPfJx/I3/ag/mcmO2B9Tzy5Z4cFYbRs1Vzm2rVAmh7qsr00evxhftiu9QesPACZUjabZag==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/errors": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.3.tgz", - "integrity": "sha512-c2WqH0fkSLPqDmAeCNJonca1Ui9CElFz3PEh/77btIE61bX9Iclq/L7/GtZabz8jsedBBbGJwyrgE4GTgNMwXQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/versions": "0.101.3" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/hasher": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.3.tgz", - "integrity": "sha512-XaT1Gwq7KdQQUEDXrY3Vx7c6vgIAZlAVG6RszkY6a2Gl72eYGB1tMf1GKkkKEMw5/liF/C8OG9/recwbxlI4XQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18" } }, - "node_modules/@fuel-ts/math": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.3.tgz", - "integrity": "sha512-vqU4rzBjDkLHT7YTjhFWvbo3LDnDR3vgl33kMDj93eMu2tfm8W8WWRxOoqzLNf18sl8dcoYMrNvIgXIOplddOQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@types/bn.js": "5.1.6", - "bn.js": "5.2.1" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/math/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@fuel-ts/merkle": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", - "integrity": "sha512-zOLlsSjmCmjACHPiJscVRIfq2DKtHd4eOPFwhQkaBedzp/NRAINAaapFayTJiyF8sBucCQN4cOyC6ZGD7jjf4w==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3" - }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/program": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.3.tgz", - "integrity": "sha512-DZzP8CiqXqhi+jR9m0u+lbCrDtojGX5pv+j2lAyGRdyt80UIkFucDrbVXD0v2Iuni02PIaLDEAoum+y/sqGgrw==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/recipes": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.3.tgz", - "integrity": "sha512-rzVDeJM69Wth8wXly656g3VCNbFpouHfZQA2vJiEoAZn+YB9m9Z73DfAIDn7WUw3Sy/iBAw884OKoV3zZjV8qw==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/abi-typegen": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/contract": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3" - }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/script": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.3.tgz", - "integrity": "sha512-Bt5NT9R9S9PNi9xmeq20J27QWgD9H4/csH1zXLVkWqS/hy+HKwojwn1n8Nje0ZgbQIBB52OHGiq/txz2XaIsrg==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/transactions": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.3.tgz", - "integrity": "sha512-JBQ6BOUFiI/UX1VAvY+8AdS73XCTRirOBF/aLrnc8X+uVpoyHKvDaM+oWzl6YMMkgAGVz+D4DgYkjNWiKN+oag==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/utils": "0.101.3" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/utils": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.3.tgz", - "integrity": "sha512-VGhp0TKT9h/E1Ptx7nFbiK/GnQptuewUg7aJgsgcYuSqyoJa+3cYbdTed5r9Mzoi4y/K/x/ano8Ui1yQETTa8Q==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "fflate": "0.8.2" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - }, - "peerDependencies": { - "vitest": "3.0.9" + "node": ">=18" } }, - "node_modules/@fuel-ts/versions": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.3.tgz", - "integrity": "sha512-IVsK4t/ouxtvsWZNxLccOUVe+3BIsjsXhok74jWiwB8ATGmf/CtKnvsDJhhx9OrALZFdMz7WiCXrsBkhEITpCA==", - "license": "Apache-2.0", - "dependencies": { - "chalk": "4", - "cli-table": "0.3.11" - }, - "bin": { - "fuels-versions": "versions.js" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuels/vm-asm": { - "version": "0.60.2", - "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", - "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", - "license": "Apache-2.0" - }, - "node_modules/@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "license": "Apache-2.0", + "node_modules/@ethereumjs/block": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-4.3.0.tgz", + "integrity": "sha512-NHzfNIqadldAB91LjkHOaQgMNA/Pc7C1N9NAm/QpewW6D0B9bSIYYnxwmv3EUyd/sbfBEheLFpwrBpvkCN+iAA==", + "license": "MPL-2.0", "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "license": "Apache-2.0", "engines": { "node": ">=14" } }, - "node_modules/@google-cloud/storage": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.1.tgz", - "integrity": "sha512-2FMQbpU7qK+OtBPaegC6n+XevgZksobUGo6mGKnXNmeZpvLiAo1gTAE3oTKsrMGDV4VtL8Zzpono0YsK/Q7Iqg==", - "license": "Apache-2.0", + "node_modules/@ethereumjs/blockchain": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-6.3.0.tgz", + "integrity": "sha512-2FLtkThtA0SsfG6v7BzElEwLHMYE0nQf8BFGO/+HeFTwldWw0tybaobzJcX/p0j9bwEsRtnadU/iTAbXsHuNFw==", + "license": "MPL-2.0", "dependencies": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "<4.1.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.4.1", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/ethash": "^2.1.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" }, "engines": { "node": ">=14" } }, - "node_modules/@graphql-typed-document-node/core": { + "node_modules/@ethereumjs/common": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" } }, - "node_modules/@grpc/grpc-js": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.0.tgz", - "integrity": "sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==", - "license": "Apache-2.0", + "node_modules/@ethereumjs/ethash": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-2.1.0.tgz", + "integrity": "sha512-J7nOkkNcPaWM2cZ7vdTZ8lmuRVhSQatiO/9yHTo9fkWnAxiOjkLw7ppLUrtpcCJbP7Ouk75n2ppixd4SdacNJQ==", + "license": "MPL-2.0", "dependencies": { - "@grpc/proto-loader": "^0.8.0", - "@js-sdsl/ordered-map": "^4.4.2" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.2.2", + "ethereum-cryptography": "^2.0.0" }, "engines": { - "node": ">=12.10.0" + "node": ">=14" } }, - "node_modules/@grpc/proto-loader": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", - "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", - "license": "Apache-2.0", + "node_modules/@ethereumjs/evm": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/evm/-/evm-1.4.0.tgz", + "integrity": "sha512-ruLYlw6lfYukFiHyoGpJTI42UciW5ASXwMCRsmng9kuxv8TyBs711SbBUlzpO/Y2bxKGWvx6XCQJGxMCd/bqzw==", + "license": "MPL-2.0", "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.5.3", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "@ethersproject/providers": "^5.7.1", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" }, "engines": { - "node": ">=6" + "node": ">=14" } }, - "node_modules/@hapi/bourne": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", - "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", - "license": "BSD-3-Clause" - }, - "node_modules/@ioredis/commands": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz", - "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==", - "license": "MIT" - }, - "node_modules/@isaacs/balanced-match": { + "node_modules/@ethereumjs/rlp": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, "engines": { - "node": "20 || >=22" + "node": ">=14" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", + "node_modules/@ethereumjs/statemanager": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/statemanager/-/statemanager-1.1.0.tgz", + "integrity": "sha512-yOM0Q1SMCyi0Z/D9xbXsFYdZvbXtNAYNyZ2qmEfyUk46DZHILay78/ghjPaAqszqog3zeBf7hZqzBzf2Od4o2A==", + "license": "MPL-2.0", "dependencies": { - "@isaacs/balanced-match": "^4.0.1" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "ethers": "^5.7.1", + "js-sdsl": "^4.1.4" + } + }, + "node_modules/@ethereumjs/trie": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/trie/-/trie-5.1.0.tgz", + "integrity": "sha512-OVaHuZUx1ao+VmYYg63kzmMgPqwFHPdDTP3hqp5Jh4QGWdhY5ddIMVhXBZRTxqEnDZkUmBA21yyAxdmI8YaBzA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "@types/readable-stream": "^2.3.13", + "ethereum-cryptography": "^2.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": "20 || >=22" + "node": ">=14" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "license": "MPL-2.0", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" }, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "license": "MIT", + "node_modules/@ethereumjs/vm": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-6.5.0.tgz", + "integrity": "sha512-/i9dnF3Gw+l/47k/YgY/ba2p6lg2WY3YCkIVx0aoF71fC9nULfkQfJrTYlcn3FBiBFEjacI3p/N1F3hW7YcyzA==", + "license": "MPL-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" + "@ethereumjs/block": "^4.3.0", + "@ethereumjs/blockchain": "^6.3.0", + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/evm": "^1.4.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/statemanager": "^1.1.0", + "@ethereumjs/trie": "^5.1.0", + "@ethereumjs/tx": "^4.2.0", + "@ethereumjs/util": "^8.1.0", + "debug": "^4.3.3", + "ethereum-cryptography": "^2.0.0", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=14" } }, - "node_modules/@jest/console/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, - "node_modules/@jest/console/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, + "node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, - "node_modules/@jest/console/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, + "node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0" } }, - "node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, + "node_modules/@ethersproject/basex": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, + "node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@ethersproject/bignumber": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", + "node_modules/@ethersproject/contracts": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, + "node_modules/@ethersproject/hdnode": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", + "node_modules/@ethersproject/json-wallets": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, + "node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" } }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", + "node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" } }, - "node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, + "node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, + "node_modules/@ethersproject/providers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", + "bech32": "1.1.4", + "ws": "8.18.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@jest/expect/node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, + "node_modules/@ethersproject/random": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/@ethersproject/sha2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "hash.js": "1.1.7" } }, - "node_modules/@jest/expect/node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, + "node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" } }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, + "node_modules/@ethersproject/solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, + "node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, + "node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, + "node_modules/@ethersproject/units": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, + "node_modules/@ethersproject/wallet": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, + "node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/expect/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, + "node_modules/@ethersproject/wordlists": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fuel-ts/abi-coder": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", + "integrity": "sha512-ZlifuRVn7yuR3VknX1vHWDX9BmUFryoGiNqdGTXCBq5XC6Z2ASmdJTis4wcGYaBsrlZv95RWym9i9TtRLA+Y1A==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "type-fest": "4.34.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/abi-typegen": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", + "integrity": "sha512-WWXESg9SaBOLBXYsTeW5We3LA2aHzRhCzUAp5UDqaCChztzAyyj4aXd68zpUiJ5UlH3C6bxgv2zHMhWMo+rriA==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "commander": "13.1.0", + "glob": "10.4.5", + "handlebars": "4.7.8", + "mkdirp": "3.0.1", + "ramda": "0.30.1", + "rimraf": "5.0.10" + }, + "bin": { + "fuels-typegen": "typegen.js" + }, "engines": { - "node": ">=8" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, + "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/abi-typegen/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/abi-typegen/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/fake-timers/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/account": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.3.tgz", + "integrity": "sha512-ubDVW4NSRdTEyaAFUnL75+ysjLcb+/5M3Rtk5hFDawhcrA9rSB0UDel5lOavERuJlKPtu4jngcv8nTiXdu4mGw==", + "license": "Apache-2.0", "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "@noble/curves": "1.8.1", + "events": "3.3.0", + "graphql": "16.10.0", + "graphql-request": "6.1.0", + "graphql-tag": "2.12.6", + "ramda": "0.30.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, + "node_modules/@fuel-ts/account/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" + "@noble/hashes": "1.7.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/address": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.3.tgz", + "integrity": "sha512-GbolfGNSSx8hEHPxI4ayD3MAhnHMCg3mqCFncTXXFaL2uMK82aSvab8s0QLNxcIPZmS9T5rOCMY0sqwm5ahh7w==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", "engines": { - "node": "*" + "node": "^14.21.3 || >=16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/contract": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.3.tgz", + "integrity": "sha512-uMpELAr/jkyyNIUCuCrTKbhT1oH/smUEVKL7D+4HvJ2nqn7xO4XdaNFGf6/5qylElDP8xn4Xtte8sb+d9UeZTA==", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/crypto": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.3.tgz", + "integrity": "sha512-bb/wnMMcf8czSpsamPfJx/I3/ag/mcmO2B9Tzy5Z4cFYbRs1Vzm2rVAmh7qsr00evxhftiu9QesPACZUjabZag==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", "engines": { - "node": "*" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/reporters/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/errors": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.3.tgz", + "integrity": "sha512-c2WqH0fkSLPqDmAeCNJonca1Ui9CElFz3PEh/77btIE61bX9Iclq/L7/GtZabz8jsedBBbGJwyrgE4GTgNMwXQ==", + "license": "Apache-2.0", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@fuel-ts/versions": "0.101.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/hasher": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.3.tgz", + "integrity": "sha512-XaT1Gwq7KdQQUEDXrY3Vx7c6vgIAZlAVG6RszkY6a2Gl72eYGB1tMf1GKkkKEMw5/liF/C8OG9/recwbxlI4XQ==", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" }, "engines": { - "node": ">=8" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, + "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/math": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.3.tgz", + "integrity": "sha512-vqU4rzBjDkLHT7YTjhFWvbo3LDnDR3vgl33kMDj93eMu2tfm8W8WWRxOoqzLNf18sl8dcoYMrNvIgXIOplddOQ==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@fuel-ts/errors": "0.101.3", + "@types/bn.js": "5.1.6", + "bn.js": "5.2.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/math/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@fuel-ts/merkle": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", + "integrity": "sha512-zOLlsSjmCmjACHPiJscVRIfq2DKtHd4eOPFwhQkaBedzp/NRAINAaapFayTJiyF8sBucCQN4cOyC6ZGD7jjf4w==", + "license": "Apache-2.0", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/program": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.3.tgz", + "integrity": "sha512-DZzP8CiqXqhi+jR9m0u+lbCrDtojGX5pv+j2lAyGRdyt80UIkFucDrbVXD0v2Iuni02PIaLDEAoum+y/sqGgrw==", + "license": "Apache-2.0", "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/recipes": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.3.tgz", + "integrity": "sha512-rzVDeJM69Wth8wXly656g3VCNbFpouHfZQA2vJiEoAZn+YB9m9Z73DfAIDn7WUw3Sy/iBAw884OKoV3zZjV8qw==", + "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/abi-typegen": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/contract": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/script": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.3.tgz", + "integrity": "sha512-Bt5NT9R9S9PNi9xmeq20J27QWgD9H4/csH1zXLVkWqS/hy+HKwojwn1n8Nje0ZgbQIBB52OHGiq/txz2XaIsrg==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/transactions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.3.tgz", + "integrity": "sha512-JBQ6BOUFiI/UX1VAvY+8AdS73XCTRirOBF/aLrnc8X+uVpoyHKvDaM+oWzl6YMMkgAGVz+D4DgYkjNWiKN+oag==", + "license": "Apache-2.0", "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/utils": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.3.tgz", + "integrity": "sha512-VGhp0TKT9h/E1Ptx7nFbiK/GnQptuewUg7aJgsgcYuSqyoJa+3cYbdTed5r9Mzoi4y/K/x/ano8Ui1yQETTa8Q==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "fflate": "0.8.2" + }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + }, + "peerDependencies": { + "vitest": "3.0.9" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", + "node_modules/@fuel-ts/versions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.3.tgz", + "integrity": "sha512-IVsK4t/ouxtvsWZNxLccOUVe+3BIsjsXhok74jWiwB8ATGmf/CtKnvsDJhhx9OrALZFdMz7WiCXrsBkhEITpCA==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "chalk": "4", + "cli-table": "0.3.11" + }, + "bin": { + "fuels-versions": "versions.js" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } + "node_modules/@fuels/vm-asm": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", + "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", + "license": "Apache-2.0" }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@jsonjoy.com/buffers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", - "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", "license": "Apache-2.0", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=14.0.0" } }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", "license": "Apache-2.0", "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=14" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.14.0.tgz", - "integrity": "sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==", + "node_modules/@google-cloud/storage": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.3.tgz", + "integrity": "sha512-gOnCAbFgAYKRozywLsxagdevTF7Gm+2Ncz5u5CQAuOv/2VCa0rdGJWvJFDOftPx1tc+q8TXiC2pEJfFKu+yeMQ==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.1", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0" + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=14" } }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", - "license": "Apache-2.0", + "node_modules/@google-cloud/storage/node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "strnum": "^1.1.1" }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@google-cloud/storage/node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "license": "MIT", "peerDependencies": { - "tslib": "2" + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", - "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "node_modules/@grpc/grpc-js": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.1.tgz", + "integrity": "sha512-sPxgEWtPUR3EnRJCEtbGZG2iX8LQDUls2wUS3o27jg07KqJFMq6YDeWvMo1wfpmy3rqRdS0rivpLwhqQtEyCuQ==", "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=12.10.0" } }, - "node_modules/@koa/cors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", - "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", - "license": "MIT", + "node_modules/@grpc/proto-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "license": "Apache-2.0", "dependencies": { - "vary": "^1.1.2" + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" }, "engines": { - "node": ">= 14.0.0" + "node": ">=6" } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", - "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", - "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", - "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", - "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", - "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@ioredis/commands": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.4.0.tgz", + "integrity": "sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==", + "license": "MIT" }, - "node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", - "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", - "cpu": [ - "arm64" - ], + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "20 || >=22" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", - "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", - "cpu": [ - "x64" - ], + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@metamask/abi-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", - "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", - "license": "(Apache-2.0 AND MIT)", "dependencies": { - "@metamask/superstruct": "^3.1.0", - "@metamask/utils": "^9.0.0" + "@isaacs/balanced-match": "^4.0.1" }, "engines": { - "node": ">=16.0.0" + "node": "20 || >=22" } }, - "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "license": "ISC", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=12" } }, - "node_modules/@metamask/abi-utils/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@metamask/eth-block-tracker": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@metamask/eth-block-tracker/-/eth-block-tracker-9.0.3.tgz", - "integrity": "sha512-I29IwdhnSJtk/A05vFsiOV92ADXXtBymXfC0naSvHP9TYNNOryG9y2l0jmnSzBsP3+wefCkHJWEzEwF4YSKogw==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", - "dependencies": { - "@metamask/eth-json-rpc-provider": "^3.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.1.0", - "json-rpc-random-id": "^1.0.1", - "pify": "^5.0.0" - }, "engines": { - "node": ">=16.20 || ^18.16" + "node": ">=8" } }, - "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/eth-json-rpc-provider": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", - "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", - "license": "ISC", + "node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "license": "MIT", "dependencies": { - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/eth-json-rpc-filters": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-filters/-/eth-json-rpc-filters-7.0.1.tgz", - "integrity": "sha512-lq3JKi528MZi9ygkPLVyKV/FIJUMwvJnPF0OPnZuhEWA8S0SVC1si5qhqerGz+jrwgrweWf17m1wzgso0MbIfw==", - "license": "ISC", - "dependencies": { - "@metamask/eth-query": "^4.0.0", - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "async-mutex": "^0.5.0", - "pify": "^5.0.0" - }, + "node_modules/@jest/console/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": "^16.20 || ^18.16 || >=20", - "yarn": "^1.22.22" + "node": ">=8" } }, - "node_modules/@metamask/eth-json-rpc-infura": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-infura/-/eth-json-rpc-infura-9.1.0.tgz", - "integrity": "sha512-47x7evivl5XUsTsRoF9t27guCXgmfsbQq+pjHHFf87WoISGsgua6wVr91b1iVCv8MzQqupJBewtnG8AzWpwEEQ==", - "license": "ISC", - "dependencies": { - "@metamask/eth-json-rpc-provider": "^2.1.0", - "@metamask/json-rpc-engine": "^7.1.1", - "@metamask/rpc-errors": "^6.0.0", - "@metamask/utils": "^8.1.0", - "node-fetch": "^2.7.0" - }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": "^16.20 || ^18.16 || >=20" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/json-rpc-engine": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", - "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", - "license": "ISC", + "node_modules/@jest/console/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/eth-json-rpc-middleware": { - "version": "12.1.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-12.1.2.tgz", - "integrity": "sha512-qhaUq0SenE8P916yuYDj5dbdGRvl/qJDsjPGSlSJOi0QBASFDbKpo5k1st+ban6duJfRUQhrwzERCVyNbtil7w==", - "license": "ISC", + "node_modules/@jest/console/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@metamask/eth-block-tracker": "^9.0.3", - "@metamask/eth-json-rpc-provider": "^3.0.2", - "@metamask/eth-sig-util": "^7.0.0", - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/rpc-errors": "^6.0.0", - "@metamask/utils": "^8.1.0", - "klona": "^2.0.6", - "pify": "^5.0.0", - "safe-stable-stringify": "^2.4.3" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^16.20 || ^18.16 || >=20" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/eth-json-rpc-provider": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", - "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", - "license": "ISC", + "node_modules/@jest/console/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@metamask/json-rpc-engine": "^8.0.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/eth-json-rpc-provider": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-2.3.2.tgz", - "integrity": "sha512-VaZx++3gfi85+j9zB5TvqSWLeZ6QpsNjIk56Nq6OMDp2U8iUEPgjdA8CybOtkyDb88EbpuOSzHZcdHEeIX3zPw==", - "license": "ISC", + "node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "license": "MIT", "dependencies": { - "@metamask/json-rpc-engine": "^7.3.2", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/json-rpc-engine": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", - "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", - "license": "ISC", - "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" - }, + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16.0.0" + "node": ">=8" } }, - "node_modules/@metamask/eth-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@metamask/eth-query/-/eth-query-4.0.0.tgz", - "integrity": "sha512-j2yPO2axYGyxwdqXRRhk2zBijt1Nd/xKCIXQkzvfWac0sKP0L9mSt1ZxMOe/sOF1SwS2R+NSaq+gsQDsQvrC4Q==", - "license": "ISC", - "dependencies": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" - }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@metamask/eth-sig-util": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", - "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", - "license": "ISC", + "node_modules/@jest/core/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/util": "^8.1.0", - "@metamask/abi-utils": "^2.0.4", - "@metamask/utils": "^9.0.0", - "@scure/base": "~1.1.3", - "ethereum-cryptography": "^2.1.2", - "tweetnacl": "^1.0.3" - }, - "engines": { - "node": "^16.20 || ^18.16 || >=20" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", - "license": "ISC", + "node_modules/@jest/core/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@metamask/eth-sig-util/node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "node_modules/@jest/core/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "license": "Unlicense" - }, - "node_modules/@metamask/eth-sig-util/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/@jest/core/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/json-rpc-engine": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", - "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", + "node_modules/@jest/core/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "@metamask/rpc-errors": "^6.2.1", - "@metamask/safe-event-emitter": "^3.0.0", - "@metamask/utils": "^8.3.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16.0.0" + "node": "*" } }, - "node_modules/@metamask/rpc-errors": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", - "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, "license": "MIT", "dependencies": { - "@metamask/utils": "^9.0.0", - "fast-safe-stringify": "^2.0.6" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", - "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "node_modules/@jest/core/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.1.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=16.0.0" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@metamask/rpc-errors/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@metamask/safe-event-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", - "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", - "license": "ISC", + "node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + }, "engines": { - "node": ">=12.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/superstruct": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", - "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, "license": "MIT", + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, "engines": { - "node": ">=16.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@metamask/utils": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", - "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", - "license": "ISC", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", "dependencies": { - "@ethereumjs/tx": "^4.2.0", - "@metamask/superstruct": "^3.0.0", - "@noble/hashes": "^1.3.1", - "@scure/base": "^1.1.3", - "@types/debug": "^4.1.7", - "debug": "^4.3.4", - "pony-cause": "^2.1.10", - "semver": "^7.5.4", - "uuid": "^9.0.1" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@metamask/utils/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/@jest/expect/node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", - "cpu": [ - "arm64" - ], + "node_modules/@jest/expect/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.6.0" - }, "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=8" } }, - "node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "node_modules/@jest/expect/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": ">=10" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", - "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/api": "^1.3.0" + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", - "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", - "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.55.0", - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-exporter-base": "0.55.0", - "@opentelemetry/otlp-transformer": "0.55.0", - "@opentelemetry/sdk-logs": "0.55.0" + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", - "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-exporter-base": "0.55.0", - "@opentelemetry/otlp-transformer": "0.55.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-metrics": "1.28.0" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", + "node_modules/@jest/expect/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" - }, + "node_modules/@jest/fake-timers/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz", - "integrity": "sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A==", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-exporter-base": "0.55.0", - "@opentelemetry/otlp-transformer": "0.55.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-trace-base": "1.28.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", + "node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/@opentelemetry/host-metrics": { - "version": "0.35.5", - "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz", - "integrity": "sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g==", - "license": "Apache-2.0", + "node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "license": "MIT", "dependencies": { - "systeminformation": "5.23.8" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">=14" + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz", - "integrity": "sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-transformer": "0.55.0" - }, + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "node": ">=8" } }, - "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=10" }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=14" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/reporters/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", + "license": "MIT", + "dependencies": { + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.4.tgz", + "integrity": "sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.4.tgz", + "integrity": "sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.4.tgz", + "integrity": "sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.4.tgz", + "integrity": "sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.4.tgz", + "integrity": "sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.4.tgz", + "integrity": "sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.4.tgz", + "integrity": "sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@metamask/abi-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", + "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "@metamask/superstruct": "^3.1.0", + "@metamask/utils": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/eth-block-tracker": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-block-tracker/-/eth-block-tracker-9.0.3.tgz", + "integrity": "sha512-I29IwdhnSJtk/A05vFsiOV92ADXXtBymXfC0naSvHP9TYNNOryG9y2l0jmnSzBsP3+wefCkHJWEzEwF4YSKogw==", + "license": "MIT", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.1.0", + "json-rpc-random-id": "^1.0.1", + "pify": "^5.0.0" + }, + "engines": { + "node": ">=16.20 || ^18.16" + } + }, + "node_modules/@metamask/eth-block-tracker/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-filters": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-filters/-/eth-json-rpc-filters-7.0.1.tgz", + "integrity": "sha512-lq3JKi528MZi9ygkPLVyKV/FIJUMwvJnPF0OPnZuhEWA8S0SVC1si5qhqerGz+jrwgrweWf17m1wzgso0MbIfw==", + "license": "ISC", + "dependencies": { + "@metamask/eth-query": "^4.0.0", + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "async-mutex": "^0.5.0", + "pify": "^5.0.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20", + "yarn": "^1.22.22" + } + }, + "node_modules/@metamask/eth-json-rpc-infura": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-infura/-/eth-json-rpc-infura-9.1.0.tgz", + "integrity": "sha512-47x7evivl5XUsTsRoF9t27guCXgmfsbQq+pjHHFf87WoISGsgua6wVr91b1iVCv8MzQqupJBewtnG8AzWpwEEQ==", + "license": "ISC", + "dependencies": { + "@metamask/eth-json-rpc-provider": "^2.1.0", + "@metamask/json-rpc-engine": "^7.1.1", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "node-fetch": "^2.7.0" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-json-rpc-infura/node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", + "dependencies": { + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-middleware": { + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-middleware/-/eth-json-rpc-middleware-12.1.2.tgz", + "integrity": "sha512-qhaUq0SenE8P916yuYDj5dbdGRvl/qJDsjPGSlSJOi0QBASFDbKpo5k1st+ban6duJfRUQhrwzERCVyNbtil7w==", + "license": "ISC", + "dependencies": { + "@metamask/eth-block-tracker": "^9.0.3", + "@metamask/eth-json-rpc-provider": "^3.0.2", + "@metamask/eth-sig-util": "^7.0.0", + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/rpc-errors": "^6.0.0", + "@metamask/utils": "^8.1.0", + "klona": "^2.0.6", + "pify": "^5.0.0", + "safe-stable-stringify": "^2.4.3" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-json-rpc-middleware/node_modules/@metamask/eth-json-rpc-provider": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-3.0.2.tgz", + "integrity": "sha512-ma5bYjKa71bSw5+iibEnIiY25s8wkDnTljrqOnGw5MkTEU4PQDiKnK9YjxfUZSasx2BPEsp1OW2NS+pnrRMO4Q==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^8.0.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-provider": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-2.3.2.tgz", + "integrity": "sha512-VaZx++3gfi85+j9zB5TvqSWLeZ6QpsNjIk56Nq6OMDp2U8iUEPgjdA8CybOtkyDb88EbpuOSzHZcdHEeIX3zPw==", + "license": "ISC", + "dependencies": { + "@metamask/json-rpc-engine": "^7.3.2", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-json-rpc-provider/node_modules/@metamask/json-rpc-engine": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", + "license": "ISC", + "dependencies": { + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@metamask/eth-query/-/eth-query-4.0.0.tgz", + "integrity": "sha512-j2yPO2axYGyxwdqXRRhk2zBijt1Nd/xKCIXQkzvfWac0sKP0L9mSt1ZxMOe/sOF1SwS2R+NSaq+gsQDsQvrC4Q==", + "license": "ISC", + "dependencies": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", + "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", + "license": "ISC", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "@metamask/abi-utils": "^2.0.4", + "@metamask/utils": "^9.0.0", + "@scure/base": "~1.1.3", + "ethereum-cryptography": "^2.1.2", + "tweetnacl": "^1.0.3" + }, + "engines": { + "node": "^16.20 || ^18.16 || >=20" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@metamask/eth-sig-util/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" + }, + "node_modules/@metamask/eth-sig-util/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/json-rpc-engine": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", + "integrity": "sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==", + "license": "ISC", + "dependencies": { + "@metamask/rpc-errors": "^6.2.1", + "@metamask/safe-event-emitter": "^3.0.0", + "@metamask/utils": "^8.3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.4.0.tgz", + "integrity": "sha512-1ugFO1UoirU2esS3juZanS/Fo8C8XYocCuBpfZI5N7ECtoG+zu0wF+uWZASik6CkO6w9n/Iebt4iI4pT0vptpg==", + "license": "MIT", + "dependencies": { + "@metamask/utils": "^9.0.0", + "fast-safe-stringify": "^2.0.6" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/rpc-errors/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@metamask/safe-event-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.2.tgz", + "integrity": "sha512-5yb2gMI1BDm0JybZezeoX/3XhPDOtTbcFvpTXM9kxsoZjPZFh4XciqRbpD6N86HYZqWDhEaKUDuOyR0sQHEjMA==", + "license": "ISC", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@metamask/superstruct": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", + "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", + "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", + "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/sdk-logs": "0.55.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", + "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz", + "integrity": "sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/host-metrics": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.36.2.tgz", + "integrity": "sha512-eMdea86cfIqx3cdFpcKU3StrjqFkQDIVp7NANVnVWO8O6hDw/DBwGwu4Gi1wJCuoQ2JVwKNWQxUTSRheB6O29Q==", + "license": "Apache-2.0", + "dependencies": { + "systeminformation": "5.23.8" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz", + "integrity": "sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-transformer": "0.55.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz", + "integrity": "sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-logs": "0.55.0", + "@opentelemetry/sdk-metrics": "1.28.0", + "@opentelemetry/sdk-trace-base": "1.28.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", + "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", + "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.32.0.tgz", + "integrity": "sha512-+WdWSG4sZAfsk5DvRj/OUmatsHc+7Rdz8xdmxQdr1jpfUWjcKwOkGA4rondIf2ou/qPLOeYCs6hLLexsRdZaUw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", + "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", + "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", + "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.30.1", + "@opentelemetry/core": "1.30.1", + "@opentelemetry/propagator-b3": "1.30.1", + "@opentelemetry/propagator-jaeger": "1.30.1", + "@opentelemetry/sdk-trace-base": "1.30.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", + "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@postman/tough-cookie": { + "version": "4.1.3-postman.1", + "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", + "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@postman/tunnel-agent": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", + "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@scure/base": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", + "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz", - "integrity": "sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA==", - "license": "Apache-2.0", + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.55.0", - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-logs": "0.55.0", - "@opentelemetry/sdk-metrics": "1.28.0", - "@opentelemetry/sdk-trace-base": "1.28.0", - "protobufjs": "^7.3.0" + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">=14" + "node": "^14.21.3 || >=16" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", "engines": { - "node": ">=14" + "node": "^14.21.3 || >=16" }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", - "license": "Apache-2.0", + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", "engines": { - "node": ">=14" + "node": "^14.21.3 || >=16" }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", - "license": "Apache-2.0", + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", + "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" - }, - "engines": { - "node": ">=14" + "@noble/curves": "~1.7.0", + "@noble/hashes": "~1.6.0" }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/@opentelemetry/propagator-b3": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz", - "integrity": "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ==", - "license": "Apache-2.0", + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@opentelemetry/core": "1.30.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz", - "integrity": "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg==", + "node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.30.1" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/resource-detector-gcp": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.32.0.tgz", - "integrity": "sha512-+WdWSG4sZAfsk5DvRj/OUmatsHc+7Rdz8xdmxQdr1jpfUWjcKwOkGA4rondIf2ou/qPLOeYCs6hLLexsRdZaUw==", + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^1.0.0", - "@opentelemetry/resources": "^1.10.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "gcp-metadata": "^6.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-logs": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", - "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", + "node_modules/@smithy/core": { + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.3.tgz", + "integrity": "sha512-qqpNskkbHOSfrbFbjhYj5o8VMXO26fvN1K/+HbCzUNlTuxgNcPRouUDNm+7D6CkN244WG7aK533Ne18UtJEgAA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.55.0", - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@smithy/middleware-serde": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.4.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", - "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", - "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz", - "integrity": "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ==", + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/context-async-hooks": "1.30.1", - "@opentelemetry/core": "1.30.1", - "@opentelemetry/propagator-b3": "1.30.1", - "@opentelemetry/propagator-jaeger": "1.30.1", - "@opentelemetry/sdk-trace-base": "1.30.1", - "semver": "^7.5.2" + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", - "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "license": "MIT", + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=18.0.0" } }, - "node_modules/@postman/tough-cookie": { - "version": "4.1.3-postman.1", - "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", - "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", - "license": "BSD-3-Clause", + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.10.tgz", + "integrity": "sha512-SoAag3QnWBFoXjwa1jenEThkzJYClidZUyqsLKwWZ8kOlZBwehrLBp4ygVDjNEM2a2AamCQ2FBA/HuzKJ/LiTA==", + "license": "Apache-2.0", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@smithy/core": "^3.18.3", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">=18.0.0" } }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", - "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", + "node_modules/@smithy/middleware-retry": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.10.tgz", + "integrity": "sha512-6fOwX34gXxcqKa3bsG0mR0arc2Cw4ddOS6tp3RgUD2yoTrDTbQ2aVADnDjhUuxaiDZN2iilxndgGDhnpL/XvJA==", "license": "Apache-2.0", "dependencies": { - "safe-buffer": "^5.0.1" + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", + "node_modules/@smithy/middleware-serde": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.5.tgz", + "integrity": "sha512-La1ldWTJTZ5NqQyPqnCNeH9B+zjFhrNoQIL1jTh4zuqXRlmXhxYHhMtI1/92OlnoAtp6JoN7kzuwhWoXrBwPqg==", + "license": "Apache-2.0", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", - "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", - "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", - "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", - "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", - "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", - "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", - "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", - "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", - "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", - "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", - "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", - "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", - "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", - "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", - "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", - "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", - "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", - "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "peer": true + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", - "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", - "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@smithy/smithy-client": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.6.tgz", + "integrity": "sha512-hGz42hggqReicRRZUvrKDQiAmoJnx1Q+XfAJnYAGu544gOfxQCAC3hGGD7+Px2gEUUxB/kKtQV7LOtBRNyxteQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.3", + "@smithy/middleware-endpoint": "^4.3.10", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", - "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", - "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@scure/base": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", - "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", - "license": "MIT", + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.2" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", - "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", - "license": "MIT", + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "1.7.2" + "tslib": "^2.6.2" }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "license": "MIT", + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.9.tgz", + "integrity": "sha512-Bh5bU40BgdkXE2BcaNazhNtEXi1TC0S+1d84vUwv5srWfvbeRNUKFzwKQgC6p6MXPvEgw+9+HdX3pOwT6ut5aw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.12.tgz", + "integrity": "sha512-EHZwe1E9Q7umImIyCKQg/Cm+S+7rjXxCRvfGmKifqwYvn7M8M4ZcowwUOQzvuuxUUmdzCkqL0Eq0z1m74Pq6pw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.6", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", - "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", - "license": "MIT", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.4" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "license": "MIT", + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/starknet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", - "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", - "license": "MIT", + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", "dependencies": { - "@noble/curves": "~1.7.0", - "@noble/hashes": "~1.6.0" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true, - "license": "MIT" + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", "dependencies": { - "type-detect": "4.0.8" + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@swc/core": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.5.tgz", - "integrity": "sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.1.tgz", + "integrity": "sha512-s9GN3M2jA32k+StvuS9uGe4ztf5KVGBdlJMMC6LR6Ah23Lq/CWKVcC3WeQi8qaAcLd+DiddoNCNMUWymLv+wWQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.24" + "@swc/types": "^0.1.25" }, "engines": { "node": ">=10" @@ -5890,16 +8135,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.13.5", - "@swc/core-darwin-x64": "1.13.5", - "@swc/core-linux-arm-gnueabihf": "1.13.5", - "@swc/core-linux-arm64-gnu": "1.13.5", - "@swc/core-linux-arm64-musl": "1.13.5", - "@swc/core-linux-x64-gnu": "1.13.5", - "@swc/core-linux-x64-musl": "1.13.5", - "@swc/core-win32-arm64-msvc": "1.13.5", - "@swc/core-win32-ia32-msvc": "1.13.5", - "@swc/core-win32-x64-msvc": "1.13.5" + "@swc/core-darwin-arm64": "1.15.1", + "@swc/core-darwin-x64": "1.15.1", + "@swc/core-linux-arm-gnueabihf": "1.15.1", + "@swc/core-linux-arm64-gnu": "1.15.1", + "@swc/core-linux-arm64-musl": "1.15.1", + "@swc/core-linux-x64-gnu": "1.15.1", + "@swc/core-linux-x64-musl": "1.15.1", + "@swc/core-win32-arm64-msvc": "1.15.1", + "@swc/core-win32-ia32-msvc": "1.15.1", + "@swc/core-win32-x64-msvc": "1.15.1" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -5911,9 +8156,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.5.tgz", - "integrity": "sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.1.tgz", + "integrity": "sha512-vEPrVxegWIjKEz+1VCVuKRY89jhokhSmQ/YXBWLnmLj9cI08G61RTZJvdsIcjYUjjTu7NgZlYVK+b2y0fbh11g==", "cpu": [ "arm64" ], @@ -5927,9 +8172,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.5.tgz", - "integrity": "sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.1.tgz", + "integrity": "sha512-z9QguKxE3aldvwKHHDg5OlKehasbJBF1lacn5CnN6SlrHbdwokXHFA3nIoO3Bh1Tw7bCgFtdIR4jKlTTn3kBZA==", "cpu": [ "x64" ], @@ -5943,9 +8188,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.5.tgz", - "integrity": "sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.1.tgz", + "integrity": "sha512-yS2FHA8E4YeiPG9YeYk/6mKiCWuXR5RdYlCmtlGzKcjWbI4GXUVe7+p9C0M6myRt3zdj3M1knmJxk52MQA9EZQ==", "cpu": [ "arm" ], @@ -5959,9 +8204,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.5.tgz", - "integrity": "sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.1.tgz", + "integrity": "sha512-IFrjDu7+5Y61jLsUqBVXlXutDoPBX10eEeNTjW6C1yzm+cSTE7ayiKXMIFri4gEZ4VpXS6MUgkwjxtDpIXTh+w==", "cpu": [ "arm64" ], @@ -5975,9 +8220,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.5.tgz", - "integrity": "sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.1.tgz", + "integrity": "sha512-fKzP9mRQGbhc5QhJPIsqKNNX/jyWrZgBxmo3Nz1SPaepfCUc7RFmtcJQI5q8xAun3XabXjh90wqcY/OVyg2+Kg==", "cpu": [ "arm64" ], @@ -5991,9 +8236,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.5.tgz", - "integrity": "sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.1.tgz", + "integrity": "sha512-ZLjMi138uTJxb+1wzo4cB8mIbJbAsSLWRNeHc1g1pMvkERPWOGlem+LEYkkzaFzCNv1J8aKcL653Vtw8INHQeg==", "cpu": [ "x64" ], @@ -6007,9 +8252,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.5.tgz", - "integrity": "sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.1.tgz", + "integrity": "sha512-jvSI1IdsIYey5kOITzyajjofXOOySVitmLxb45OPUjoNojql4sDojvlW5zoHXXFePdA6qAX4Y6KbzAOV3T3ctA==", "cpu": [ "x64" ], @@ -6023,9 +8268,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.5.tgz", - "integrity": "sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.1.tgz", + "integrity": "sha512-X/FcDtNrDdY9r4FcXHt9QxUqC/2FbQdvZobCKHlHe8vTSKhUHOilWl5EBtkFVfsEs4D5/yAri9e3bJbwyBhhBw==", "cpu": [ "arm64" ], @@ -6039,9 +8284,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.5.tgz", - "integrity": "sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.1.tgz", + "integrity": "sha512-vfheiWBux8PpC87oy1cshcqzgH7alWYpnVq5jWe7xuVkjqjGGDbBUKuS84eJCdsWcVaB5EXIWLKt+11W3/BOwA==", "cpu": [ "ia32" ], @@ -6055,9 +8300,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.5.tgz", - "integrity": "sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.1.tgz", + "integrity": "sha512-n3Ppn0LSov/IdlANq+8kxHqENuJRX5XtwQqPgQsgwKIcFq22u17NKfDs9vL5PwRsEHY6Xd67pnOqQX0h4AvbuQ==", "cpu": [ "x64" ], @@ -6086,13 +8331,13 @@ } }, "node_modules/@temporalio/activity": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/activity/-/activity-1.13.0.tgz", - "integrity": "sha512-/h+S7+D7JylaRGZq/3q6h0HxFwFop5zO7qWWrYAT7HCgXdtVNZJWEbPjpV9elJXDVSZ7lIz4GrZREATYZ38Txw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/activity/-/activity-1.13.2.tgz", + "integrity": "sha512-Mp0pAGNKGeIlZEy6ToLCt1gJdrumu64xHF1yAc1gsOVeqo4a3ISGFbCSpM56bokwtj9jpFK/Z1f3zCFnif2ogg==", "license": "MIT", "dependencies": { - "@temporalio/client": "1.13.0", - "@temporalio/common": "1.13.0", + "@temporalio/client": "1.13.2", + "@temporalio/common": "1.13.2", "abort-controller": "^3.0.0" }, "engines": { @@ -6100,42 +8345,42 @@ } }, "node_modules/@temporalio/client": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/client/-/client-1.13.0.tgz", - "integrity": "sha512-cIEqEFNy8HdvlKGTJQH80C8vUWG0PUAYVS++EGuSNmU3TFb/3TaV/ATVlBiLeiIr05lbDl3LAsWxTSO3gaRXEg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/client/-/client-1.13.2.tgz", + "integrity": "sha512-gyptINv/i6DTG4sRgE6S10vsO6V56iQQujDFaVIwg5pcRsRqqHIwoOldI4j1RqrEoEy7J4prRBGNwOd5H3Yf8A==", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", - "@temporalio/common": "1.13.0", - "@temporalio/proto": "1.13.0", + "@temporalio/common": "1.13.2", + "@temporalio/proto": "1.13.2", "abort-controller": "^3.0.0", "long": "^5.2.3", - "uuid": "^9.0.1" + "uuid": "^11.1.0" }, "engines": { "node": ">= 18.0.0" } }, "node_modules/@temporalio/client/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/@temporalio/common": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/common/-/common-1.13.0.tgz", - "integrity": "sha512-YBUXof7zsLbjI+J+FdndbN0JPZY3vKbBWhXV5T4efLZD1IyFmHww10bayDk+37/aVCgqPalBbgWHJnkwk0tRYA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/common/-/common-1.13.2.tgz", + "integrity": "sha512-qpp/1Bn+Uvbnew3jHL5u1YWRfBmNnklzfZwa5oOnQ5EBxKMWmpGzCtvh+VwaGXunbPHh1Teqy76Mqp/Uj2kmbA==", "license": "MIT", "dependencies": { - "@temporalio/proto": "1.13.0", + "@temporalio/proto": "1.13.2", "long": "^5.2.3", "ms": "3.0.0-canary.1", "nexus-rpc": "^0.0.1", @@ -6146,14 +8391,14 @@ } }, "node_modules/@temporalio/core-bridge": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/core-bridge/-/core-bridge-1.13.0.tgz", - "integrity": "sha512-xJpO+6m88Bdt2g9n13CvfiLy0Rw80Rn8bbCG1U87LPVPoR2xbE2YgcX7ps56zptiQgrSldT7S8UYU2f5X5iAyQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/core-bridge/-/core-bridge-1.13.2.tgz", + "integrity": "sha512-zwYZqeWypi1YHTeoYwBYgIVmWNg4+/T+CCcOwtyNUvA25wim85p9JOCB9tKgG4e8Hu1Nptd7yEjPaZtLPmJjjg==", "hasInstallScript": true, "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", - "@temporalio/common": "1.13.0", + "@temporalio/common": "1.13.2", "arg": "^5.0.2", "cargo-cp-artifact": "^0.1.8", "which": "^4.0.0" @@ -6163,14 +8408,14 @@ } }, "node_modules/@temporalio/nexus": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/nexus/-/nexus-1.13.0.tgz", - "integrity": "sha512-YKVIWzE8/83aGzaR28Y2m45WWlAxboKjHrvpdIrWogYEB7sG6dgju07zIqCKtXcA/k7ja29fq638y5ii7SLP8Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/nexus/-/nexus-1.13.2.tgz", + "integrity": "sha512-oG+yZcgUiDCNU08aI7q5dKvRyeUtzJH7Woz66dx4QlhEIvRoUeEFqjLHySMf2r/3l1pbhZ5G2z12HcL4pVE5Eg==", "license": "MIT", "dependencies": { - "@temporalio/client": "1.13.0", - "@temporalio/common": "1.13.0", - "@temporalio/proto": "1.13.0", + "@temporalio/client": "1.13.2", + "@temporalio/common": "1.13.2", + "@temporalio/proto": "1.13.2", "long": "^5.2.3", "nexus-rpc": "^0.0.1" }, @@ -6179,9 +8424,9 @@ } }, "node_modules/@temporalio/proto": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/proto/-/proto-1.13.0.tgz", - "integrity": "sha512-jplwOQAgghdRJljTVI9Lawar4L0vGM+vT0TfxvKm+/hVf4CpPEAwvy+El9doR4wu1uYg9g94LnPmZdzoUu5qyA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/proto/-/proto-1.13.2.tgz", + "integrity": "sha512-V8agtFxM2KkKOtUjcCZFaIdOV64j86VrUQ4bvOZtzwmWGyp5ZCebskoaTTL8UMkRx4bTIeEKOckLrXo8VeorWg==", "license": "MIT", "dependencies": { "long": "^5.2.3", @@ -6192,20 +8437,20 @@ } }, "node_modules/@temporalio/worker": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/worker/-/worker-1.13.0.tgz", - "integrity": "sha512-NmtDleOccUVrYwbg8H3gjQt5dPMbKG6SUTegO9KlhipsEuJQ69OAeenMhjUmuEsZhG/jkaFwPR81JnAvBovgIw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/worker/-/worker-1.13.2.tgz", + "integrity": "sha512-UEyHDjY/xJsTIg6DEwla6wncenOrmOGu13HnjwwqY2iUNJdoQUSHlqMK7Cc7hK0zpeAb7qLOCi2A1bSYVncAHg==", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.12.4", "@swc/core": "^1.3.102", - "@temporalio/activity": "1.13.0", - "@temporalio/client": "1.13.0", - "@temporalio/common": "1.13.0", - "@temporalio/core-bridge": "1.13.0", - "@temporalio/nexus": "1.13.0", - "@temporalio/proto": "1.13.0", - "@temporalio/workflow": "1.13.0", + "@temporalio/activity": "1.13.2", + "@temporalio/client": "1.13.2", + "@temporalio/common": "1.13.2", + "@temporalio/core-bridge": "1.13.2", + "@temporalio/nexus": "1.13.2", + "@temporalio/proto": "1.13.2", + "@temporalio/workflow": "1.13.2", "abort-controller": "^3.0.0", "heap-js": "^2.6.0", "memfs": "^4.6.0", @@ -6225,13 +8470,13 @@ } }, "node_modules/@temporalio/workflow": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@temporalio/workflow/-/workflow-1.13.0.tgz", - "integrity": "sha512-8mVMB55cwl0e4+EBlp1prQyttJ8qYZfhsieVcygirr5xXKBU6wcSCun3sAk16lTYa4S5We7XZPyZk0vBB6/WOA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@temporalio/workflow/-/workflow-1.13.2.tgz", + "integrity": "sha512-vK8s0iCTMGNLtUZeKiFVfmLd4nVUDaJ4aS0yCy8WvMUpgqBTpaaOWPAy7KiH0grKB7zIskiWljEMtpt3ce586w==", "license": "MIT", "dependencies": { - "@temporalio/common": "1.13.0", - "@temporalio/proto": "1.13.0", + "@temporalio/common": "1.13.2", + "@temporalio/proto": "1.13.2", "nexus-rpc": "^0.0.1" }, "engines": { @@ -6248,9 +8493,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "dev": true, "license": "MIT" }, @@ -6438,12 +8683,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.6.1.tgz", - "integrity": "sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==", + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", "dependencies": { - "undici-types": "~7.13.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/prettier": { @@ -6512,9 +8757,9 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.34", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", + "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", "dev": true, "license": "MIT", "dependencies": { @@ -6853,16 +9098,16 @@ } }, "node_modules/abitype": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", - "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/wevm" }, "peerDependencies": { "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" + "zod": "^3.22.0 || ^4.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -7235,9 +9480,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -7383,9 +9628,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz", - "integrity": "sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==", + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.28.tgz", + "integrity": "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -7463,6 +9708,12 @@ "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "license": "MIT" }, + "node_modules/bowser": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -7503,9 +9754,9 @@ } }, "node_modules/browserslist": { - "version": "4.26.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", - "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "funding": [ { "type": "opencollective", @@ -7522,11 +9773,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.3", - "caniuse-lite": "^1.0.30001741", - "electron-to-chromium": "^1.5.218", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -7629,6 +9880,12 @@ "node-addon-api": "^5.0.0" } }, + "node_modules/c-kzg/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -7720,9 +9977,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001746", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz", - "integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "funding": [ { "type": "opencollective", @@ -8054,9 +10311,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -8531,9 +10788,9 @@ } }, "node_modules/detect-libc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -8650,9 +10907,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.228", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", - "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", + "version": "1.5.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", + "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "license": "ISC" }, "node_modules/elliptic": { @@ -9194,9 +11451,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "funding": [ { "type": "github", @@ -9205,7 +11462,7 @@ ], "license": "MIT", "dependencies": { - "strnum": "^1.1.1" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -9741,9 +11998,9 @@ } }, "node_modules/glob-to-regex.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz", - "integrity": "sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", "license": "Apache-2.0", "engines": { "node": ">=10.0" @@ -10240,9 +12497,9 @@ "license": "ISC" }, "node_modules/ioredis": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.0.tgz", - "integrity": "sha512-AUXbKn9gvo9hHKvk6LbZJQSKn/qIfkWXrnsyL9Yrf+oeXmla9Nmf6XEumOddyhM8neynpK5oAV6r9r99KBuwzA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.8.2.tgz", + "integrity": "sha512-C6uC+kleiIMmjViJINWk80sOQw5lEzse1ZmvD+S/s8p8CWapftSaC+kocGTx6xrbrJ4WmYQGC08ffHLr6ToR6Q==", "license": "MIT", "dependencies": { "@ioredis/commands": "1.4.0", @@ -10264,9 +12521,9 @@ } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -10465,9 +12722,9 @@ } }, "node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", "funding": [ { "type": "github", @@ -12535,6 +14792,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", "dependencies": { "tsscmp": "1.0.6" @@ -12563,9 +14821,9 @@ } }, "node_modules/koa": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", - "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.3.tgz", + "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", "license": "MIT", "dependencies": { "accepts": "^1.3.5", @@ -12651,20 +14909,19 @@ "license": "MIT" }, "node_modules/koa-router": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", - "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-13.1.1.tgz", + "integrity": "sha512-3GxRi7CxEgsfGhdFf4OW4OLv0DFdyNl2drcOCtoezi+LDSnkg0mhr1Iq5Q25R4FJt3Gw6dcAKrcpaCJ7WJfhYg==", "deprecated": "Please use @koa/router instead, starting from v9! ", "license": "MIT", "dependencies": { - "debug": "^4.3.4", + "debug": "^4.4.1", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^6.3.0" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/koa-router/node_modules/http-errors": { @@ -12779,9 +15036,9 @@ "license": "MIT" }, "node_modules/lmdb": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", - "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.4.tgz", + "integrity": "sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -12795,21 +15052,15 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.4.2", - "@lmdb/lmdb-darwin-x64": "3.4.2", - "@lmdb/lmdb-linux-arm": "3.4.2", - "@lmdb/lmdb-linux-arm64": "3.4.2", - "@lmdb/lmdb-linux-x64": "3.4.2", - "@lmdb/lmdb-win32-arm64": "3.4.2", - "@lmdb/lmdb-win32-x64": "3.4.2" + "@lmdb/lmdb-darwin-arm64": "3.4.4", + "@lmdb/lmdb-darwin-x64": "3.4.4", + "@lmdb/lmdb-linux-arm": "3.4.4", + "@lmdb/lmdb-linux-arm64": "3.4.4", + "@lmdb/lmdb-linux-x64": "3.4.4", + "@lmdb/lmdb-win32-arm64": "3.4.4", + "@lmdb/lmdb-win32-x64": "3.4.4" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "license": "MIT" - }, "node_modules/load-tsconfig": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", @@ -12820,12 +15071,16 @@ } }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/locate-path": { @@ -12929,9 +15184,9 @@ "license": "Apache-2.0" }, "node_modules/lossless-json": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.2.0.tgz", - "integrity": "sha512-bsHH3x+7acZfqokfn9Ks/ej96yF/z6oGGw1aBmXesq4r3fAjhdG4uYuqzDgZMk5g1CZUd5w3kwwIp9K1LOYUiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.3.0.tgz", + "integrity": "sha512-ToxOC+SsduRmdSuoLZLYAr5zy1Qu7l5XhmPWM3zefCZ5IcrzW/h108qbJUKfOlDlhvhjUK84+8PSVX0kxnit0g==", "license": "MIT" }, "node_modules/loupe": { @@ -12951,9 +15206,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "license": "MIT", "peer": true, "dependencies": { @@ -13021,9 +15276,9 @@ } }, "node_modules/memfs": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.47.0.tgz", - "integrity": "sha512-Xey8IZA57tfotV/TN4d6BmccQuhFP+CqRiI7TTNdipZdZBzF2WnzUcH//Cudw6X4zJiUbo/LTuU/HPA/iC/pNg==", + "version": "4.51.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", + "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.11.0", @@ -13142,9 +15397,10 @@ } }, "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", + "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", + "license": "MIT", "dependencies": { "dom-walk": "^0.1.0" } @@ -13162,10 +15418,10 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "license": "ISC", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" }, @@ -13330,9 +15586,9 @@ "license": "MIT" }, "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "license": "MIT" }, "node_modules/node-fetch": { @@ -13388,15 +15644,15 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", - "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "license": "MIT" }, "node_modules/node-vault": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.5.tgz", - "integrity": "sha512-sIyB/5296U2tMT7hH1nrkoYUXkRxuLsG40fgUHaBhzM+G/uyBKBo+QNsvKqE5FNq24QJM+tr97N+knLQiEEcSg==", + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.9.tgz", + "integrity": "sha512-WBZmNt1AuWY0+Yr2A1urZyP94+qciQEEnI4GlhLdO+1kX+4E+w4n0N6CeMh56T5bJ1MIuUpshxtow0h66EaO2w==", "license": "MIT", "dependencies": { "debug": "^4.3.4", @@ -13537,9 +15793,9 @@ "license": "MIT" }, "node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz", + "integrity": "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==", "funding": [ { "type": "github", @@ -13548,12 +15804,13 @@ ], "license": "MIT", "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { @@ -13565,6 +15822,33 @@ } } }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/ox/node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -13708,9 +15992,9 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", @@ -13881,11 +16165,12 @@ } }, "node_modules/pino": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.12.0.tgz", - "integrity": "sha512-0Gd0OezGvqtqMwgYxpL7P0pSHHzTJ0Lx992h+mNlMtRVfNnqweWmf0JmRWk5gJzHalyd2mxTzKjhiNbGS2Ztfw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.14.0.tgz", + "integrity": "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==", "license": "MIT", "dependencies": { + "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", @@ -13894,7 +16179,6 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "slow-redact": "^0.3.0", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, @@ -13912,9 +16196,9 @@ } }, "node_modules/pino-pretty": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", - "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.2.tgz", + "integrity": "sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==", "license": "MIT", "dependencies": { "colorette": "^2.0.7", @@ -14095,9 +16379,9 @@ } }, "node_modules/postman-request": { - "version": "2.88.1-postman.43", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.43.tgz", - "integrity": "sha512-5ivoZnMvnX47/HA7mk2GQubZsnXptlJGVyO0hLV3MTK/MDgJVnB/q3bUgzU4KhwG8OBxe2L8uqv3ZpK6mp+RdA==", + "version": "2.88.1-postman.46", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.46.tgz", + "integrity": "sha512-gcDb2vzjPXRKulfXq3p04H6VJVnMMREK2Nk+eBMhHTC5PQ7PXDp3AejzNAbcpqYR+e9FU09yJ4mYImddNAGG3Q==", "license": "Apache-2.0", "dependencies": { "@postman/form-data": "~3.1.1", @@ -14564,13 +16848,13 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14728,9 +17012,9 @@ } }, "node_modules/rollup": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", - "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", "license": "MIT", "peer": true, "dependencies": { @@ -14744,28 +17028,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.3", - "@rollup/rollup-android-arm64": "4.52.3", - "@rollup/rollup-darwin-arm64": "4.52.3", - "@rollup/rollup-darwin-x64": "4.52.3", - "@rollup/rollup-freebsd-arm64": "4.52.3", - "@rollup/rollup-freebsd-x64": "4.52.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", - "@rollup/rollup-linux-arm-musleabihf": "4.52.3", - "@rollup/rollup-linux-arm64-gnu": "4.52.3", - "@rollup/rollup-linux-arm64-musl": "4.52.3", - "@rollup/rollup-linux-loong64-gnu": "4.52.3", - "@rollup/rollup-linux-ppc64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-musl": "4.52.3", - "@rollup/rollup-linux-s390x-gnu": "4.52.3", - "@rollup/rollup-linux-x64-gnu": "4.52.3", - "@rollup/rollup-linux-x64-musl": "4.52.3", - "@rollup/rollup-openharmony-arm64": "4.52.3", - "@rollup/rollup-win32-arm64-msvc": "4.52.3", - "@rollup/rollup-win32-ia32-msvc": "4.52.3", - "@rollup/rollup-win32-x64-gnu": "4.52.3", - "@rollup/rollup-win32-x64-msvc": "4.52.3", + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" } }, @@ -14860,9 +17144,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", @@ -14885,9 +17169,9 @@ "license": "MIT" }, "node_modules/secure-json-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", - "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", "funding": [ { "type": "github", @@ -14909,9 +17193,9 @@ } }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -15102,12 +17386,6 @@ "node": ">=8" } }, - "node_modules/slow-redact": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.0.tgz", - "integrity": "sha512-cf723wn9JeRIYP9tdtd86GuqoR5937u64Io+CYjlm2i7jvu7g0H+Cp0l0ShAf/4ZL+ISUTVT+8Qzz7RZmp9FjA==", - "license": "MIT" - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -15335,9 +17613,9 @@ } }, "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "license": "MIT", "peer": true }, @@ -15549,9 +17827,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "funding": [ { "type": "github", @@ -15694,9 +17972,9 @@ } }, "node_modules/tapable": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", - "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "license": "MIT", "engines": { "node": ">=6" @@ -15787,9 +18065,9 @@ } }, "node_modules/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -16100,6 +18378,18 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -16408,9 +18698,9 @@ } }, "node_modules/undici-types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.13.0.tgz", - "integrity": "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/unionfs": { @@ -16440,9 +18730,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "funding": [ { "type": "opencollective", @@ -16547,9 +18837,10 @@ } }, "node_modules/viem": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz", - "integrity": "sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==", + "name": "@spalladino/viem", + "version": "2.38.2-eip7594.0", + "resolved": "https://registry.npmjs.org/@spalladino/viem/-/viem-2.38.2-eip7594.0.tgz", + "integrity": "sha512-1gwcB0wxqUoSuzbwTafhqLOeNPWOaIKkSUUvzgsg5gBDOXDxA8tPJWUXBFFdr640maizWRjTbP9GLuLzgMeSuQ==", "funding": [ { "type": "github", @@ -16558,14 +18849,14 @@ ], "license": "MIT", "dependencies": { - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "abitype": "1.0.8", - "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.1.0", + "isows": "1.0.7", + "ox": "0.9.6", + "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" @@ -16577,12 +18868,12 @@ } }, "node_modules/viem/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.7.1" + "@noble/hashes": "1.8.0" }, "engines": { "node": "^14.21.3 || >=16" @@ -16592,9 +18883,9 @@ } }, "node_modules/viem/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -16603,31 +18894,10 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/viem/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "peer": true, "dependencies": { @@ -16913,9 +19183,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.102.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", - "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", + "version": "5.102.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz", + "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -16926,7 +19196,7 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.5", + "browserslist": "^4.26.3", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", @@ -16938,8 +19208,8 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.2.3", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" diff --git a/js/package.json b/js/package.json index 7f472fac..232f67d9 100644 --- a/js/package.json +++ b/js/package.json @@ -11,11 +11,12 @@ "license": "ISC", "description": "", "dependencies": { - "@aztec/accounts": "^2.0.3", - "@aztec/aztec.js": "^2.0.3", - "@aztec/kv-store": "^2.0.3", - "@aztec/noir-contracts.js": "^2.0.3", - "@aztec/pxe": "^2.0.3", + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/test-wallet": "^3.0.0-devnet.2", "@temporalio/worker": "^1.12.1", "axios": "^1.11.0", "dotenv": "^16.4.7", diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts index a360bd34..eec8cf71 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/AztecBlockchainActivities.ts @@ -15,7 +15,8 @@ import { AddLockSignatureRequest } from "../../Blockchain.Abstraction/Models/Tra import TrackBlockEventsAsync from "./Helper/AztecEventTracker"; import { createRefundCallData, createLockCallData, createRedeemCallData, createCommitCallData } from "./Helper/AztecTransactionBuilder"; import { TransactionFailedException } from "../../Blockchain.Abstraction/Exceptions/TransactionFailedException"; -import { createAztecNodeClient, Tx, TxHash } from "@aztec/aztec.js"; +import { Tx, TxHash } from "@aztec/aztec.js/tx"; +import { createAztecNodeClient } from '@aztec/aztec.js/node'; import { mapAztecStatusToInternal } from "./Helper/AztecTransactionStatusMapper"; import { AztecPublishTransactionRequest } from "../Models/AztecPublishTransactionRequest"; import { TreasuryClient } from "../../Blockchain.Abstraction/Infrastructure/TreasuryClient/treasuryClient"; diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts index 91906e72..8c853338 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecEventTracker.ts @@ -1,5 +1,6 @@ -import { AztecAddress, createAztecNodeClient } from '@aztec/aztec.js'; +import { AztecAddress } from '@aztec/aztec.js/addresses'; +import { createAztecNodeClient } from '@aztec/aztec.js/node'; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; import { ensureHexPrefix, removeHexPrefix } from '../../../Blockchain.Abstraction/Extensions/StringExtensions'; diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts index ae6634db..58ac5737 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionBuilder.ts @@ -4,7 +4,8 @@ import { HTLCRedeemTransactionPrepareRequest } from "../../../Blockchain.Abstrac import { HTLCRefundTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCRefundTransactionPrepareRequest"; import { HTLCCommitTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCCommitTransactionPrepareRequest"; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; -import { AztecAddress, Fr } from "@aztec/aztec.js"; +import { AztecAddress } from '@aztec/aztec.js/addresses'; +import { Fr } from '@aztec/foundation/fields'; import { PrepareTransactionResponse } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferBuilderResponse"; import crypto from 'crypto'; import { TransferPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/TransferPrepareRequest"; diff --git a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts index 9d18c294..b8b0c12c 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Activities/Helper/AztecTransactionStatusMapper.ts @@ -1,4 +1,4 @@ -import { TxStatus } from "@aztec/aztec.js"; +import { TxStatus } from "@aztec/aztec.js/tx"; import { TransactionStatus } from '../../../Blockchain.Abstraction/Models/TransacitonModels/TransactionStatus'; export function mapAztecStatusToInternal(status: TxStatus): TransactionStatus { diff --git a/treasury/.env b/treasury/.env index 9902f080..f27787b3 100644 --- a/treasury/.env +++ b/treasury/.env @@ -1,4 +1,4 @@ -VAULT_URL={KV_URL_HERE} -VAULT_USERNAME={USERNAME} -VAULT_PASSWORD={PASSWORD} -AZTEC_STORE_PATH={AZTEC_STORE_PATH} \ No newline at end of file +VAULT_URL=https://vault-dev.lb.layerswap.cloud/ +VAULT_USERNAME=rick +VAULT_PASSWORD=peaceamongworlds +AZTEC_STORE_PATH="C:\Users\kosta\OneDrive\Desktop\aztecTr" \ No newline at end of file diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 46b71242..17751e6a 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -8,11 +8,12 @@ "name": "train-treasury", "version": "1.0.0", "dependencies": { - "@aztec/accounts": "^2.0.3", - "@aztec/aztec.js": "^2.0.3", - "@aztec/kv-store": "^2.0.3", - "@aztec/noir-contracts.js": "^2.0.3", - "@aztec/pxe": "^2.0.3", + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/test-wallet": "3.0.0-devnet.2", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", @@ -201,1399 +202,2002 @@ "tslib": "^2.1.0" } }, - "node_modules/@aztec/accounts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-2.0.3.tgz", - "integrity": "sha512-RNOQOgkRVQT6exmZ9IvqerTq5R/D/ptVXjIEuWmtu0pw/nAYypUAuF05vsTv7KP7ZhMvrUh40pSgAbgQSXFH9A==", - "dependencies": { - "@aztec/aztec.js": "2.0.3", - "@aztec/entrypoints": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=16.0.0" } }, - "node_modules/@aztec/aztec.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-2.0.3.tgz", - "integrity": "sha512-3JxvC1R0IvvIr0VUEIhM6Eu9MgBH7+VQosTfcX8J+Gx5b0ZWRDxhJT1YrWyst0JJnoPFEfFXThINJ5vJsq8W9A==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/entrypoints": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "axios": "^1.8.2", - "tslib": "^2.4.0", - "viem": "2.23.7" + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/bb-prover": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-2.0.3.tgz", - "integrity": "sha512-UqgC6OExLTDPkTyfnHcIuiFUzrH1ZvtfebV3Ryz+VKxDUOFDNeY/MYjUB7CC/VS1qulKZaiyDFzROAtmJUEeYg==", - "dependencies": { - "@aztec/bb.js": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/simulator": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "@aztec/world-state": "2.0.3", - "commander": "^12.1.0", - "pako": "^2.1.0", - "source-map-support": "^0.5.21", - "tslib": "^2.4.0" - }, - "bin": { - "bb-cli": "dest/bb/index.js" + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/bb.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-2.0.3.tgz", - "integrity": "sha512-sI8lA2L8RMACsi6iBtcuKgGLx4crMzoAaTNtfP3VAaOpjoIwB3O/AMETz5IDGdkOA6tOqM2R0nWh1J+wDYPlVQ==", - "license": "MIT", + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "comlink": "^4.4.1", - "commander": "^12.1.0", - "idb-keyval": "^6.2.1", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "pino": "^9.5.0", - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, - "bin": { - "bb.js": "dest/node/main.js" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aztec/blob-lib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-2.0.3.tgz", - "integrity": "sha512-bVyFI9s/VdT6kIgYz36X79E85gYdF8LwNvsHLqWKJdKokN5RKPxaD/Ez5+3h3R4HZpWIMc9yjUIKpp1Tn8ebWg==", + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "c-kzg": "4.0.0-alpha.1", - "tslib": "^2.4.0" + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-2.0.3.tgz", - "integrity": "sha512-sP6GTHKRburRmfq3ettRxASLjZNvHOPPbH19Mm8kt0LXx08SytZdpyCtaiJmakowYtXLhFMgKrO1QppLtUEfLg==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "commander": "^12.1.0" - }, - "bin": { - "aztec-builder": "dest/bin/cli.js" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/constants": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-2.0.3.tgz", - "integrity": "sha512-2HVuOWTFmpYphCMvA+HMKhQ6qmoZwlO4azlqEnnHTao6MP6SetEduRiqNSapRk8oFfuE7s/DKwnCwpxedcWRAw==", + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/entrypoints": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-2.0.3.tgz", - "integrity": "sha512-1mgEUC94411aXWXbrbTNJpDJwocwEskGW7vQ9sCbeDb2IvxDs3C904SDcJUJhSTUKDpWRGbINlXB26gFeAGhWQ==", + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=16.0.0" } }, - "node_modules/@aztec/ethereum": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-2.0.3.tgz", - "integrity": "sha512-i6SYcYRecuSbABsoYAdtIJsBlmF+mW9Be++W2qyi1uSAlqTDHo6eJ0yfbXMe+193zxZ053OPAn/KAS2vTY3Yiw==", + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", "dependencies": { - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@viem/anvil": "^0.0.10", - "dotenv": "^16.0.3", - "lodash.chunk": "^4.2.0", - "lodash.pickby": "^4.5.0", - "tslib": "^2.4.0", - "viem": "2.23.7", - "zod": "^3.23.8" + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/foundation": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-2.0.3.tgz", - "integrity": "sha512-qFDpKJQfB4pMORDr4i71C/zy2henlAS4hxG8WEOtiTn0bvTG+o5zekmtZMfDF5QR7LUDWg0kvQ9OFZB20sOItg==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/bb.js": "2.0.3", - "@koa/cors": "^5.0.0", - "@noble/curves": "=1.7.0", - "bn.js": "^5.2.1", - "colorette": "^2.0.20", - "detect-node": "^2.1.0", - "hash.js": "^1.1.7", - "koa": "^2.16.1", - "koa-bodyparser": "^4.4.0", - "koa-compress": "^5.1.0", - "koa-router": "^12.0.0", - "leveldown": "^6.1.1", - "lodash.chunk": "^4.2.0", - "lodash.clonedeepwith": "^4.5.0", - "pako": "^2.1.0", - "pino": "^9.5.0", - "pino-pretty": "^13.0.0", - "sha3": "^2.1.4", - "undici": "^5.28.5", - "zod": "^3.23.8" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/key-store": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-2.0.3.tgz", - "integrity": "sha512-SKTBm6Mhrv7NcWzPCMcs2IOKd8dkjvBk40dTY8rV+Jj9y720vCie9fdhe4u5E/1bIXq2toLuV0idUb5Y4Rp7wA==", + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/stdlib": "2.0.3", - "tslib": "^2.4.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=14.0.0" } }, - "node_modules/@aztec/kv-store": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-2.0.3.tgz", - "integrity": "sha512-U43RY0CxvWN9ryk3lBMlawV348ur/L5faA+ABP1xn1emXC5W60qyJ9fthv4jdUrz8s+czjFQDwjF4GERWHGReg==", + "node_modules/@aws-sdk/client-s3": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.932.0.tgz", + "integrity": "sha512-qrlbJ3W5QR3Gzz2S+yaItH8ZhX7vaeA4j4fDAi8+0FmsVhXOfBbomWr+JO1wk/YojZMdyLfmfYRHrJvAQsLFVw==", + "license": "Apache-2.0", "dependencies": { - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/native": "2.0.3", - "@aztec/stdlib": "2.0.3", - "idb": "^8.0.0", - "lmdb": "^3.2.0", - "msgpackr": "^1.11.2", - "ohash": "^2.0.11", - "ordered-binary": "^1.5.3" + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/credential-provider-node": "3.932.0", + "@aws-sdk/middleware-bucket-endpoint": "3.930.0", + "@aws-sdk/middleware-expect-continue": "3.930.0", + "@aws-sdk/middleware-flexible-checksums": "3.932.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-location-constraint": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-sdk-s3": "3.932.0", + "@aws-sdk/middleware-ssec": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/signature-v4-multi-region": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/eventstream-serde-browser": "^4.2.5", + "@smithy/eventstream-serde-config-resolver": "^4.3.5", + "@smithy/eventstream-serde-node": "^4.2.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-blob-browser": "^4.2.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/hash-stream-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/md5-js": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.932.0.tgz", + "integrity": "sha512-XHqHa5iv2OQsKoM2tUQXs7EAyryploC00Wg0XSFra/KAKqyGizUb5XxXsGlyqhebB29Wqur+zwiRwNmejmN0+Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.932.0.tgz", + "integrity": "sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/l1-artifacts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-2.0.3.tgz", - "integrity": "sha512-APwOQZH0JeZ4Z836tZycHNR/f0gWflb8Fjkp8p3xKocm0ZXocnDlOJhnu7Waiz2i+rTHmSCVPdeOjYc7plEqJQ==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.932.0.tgz", + "integrity": "sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA==", + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/merkle-tree": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-2.0.3.tgz", - "integrity": "sha512-PgND5Gysca1XcriXZpE2bBHJr8AVI/OuvYNDzGvp4rH6a6yHqpZq+U5y+6CUQJDR9cIuoEVaU1VnwMHlmaD9fQ==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.932.0.tgz", + "integrity": "sha512-b6N9Nnlg8JInQwzBkUq5spNaXssM3h3zLxGzpPrnw0nHSIWPJPTbZzA5Ca285fcDUFuKP+qf3qkuqlAjGOdWhg==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/stdlib": "2.0.3", - "sha256": "^0.2.0", - "tslib": "^2.4.0" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/native": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/native/-/native-2.0.3.tgz", - "integrity": "sha512-fgRFz8HNFo7leiWv4FXGZ8RFUqiY0+Y7VoglSrEmAhDQWvLE7X3xl/hyLWlztLRcXDeXNPPF+3bgzTcNv0VpbA==", + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.932.0.tgz", + "integrity": "sha512-ZBjSAXVGy7danZRHCRMJQ7sBkG1Dz39thYlvTiUaf9BKZ+8ymeiFhuTeV1OkWUBBnY0ki2dVZJvboTqfINhNxA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "bindings": "^1.5.0", - "msgpackr": "^1.11.2" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/credential-provider-env": "3.932.0", + "@aws-sdk/credential-provider-http": "3.932.0", + "@aws-sdk/credential-provider-process": "3.932.0", + "@aws-sdk/credential-provider-sso": "3.932.0", + "@aws-sdk/credential-provider-web-identity": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-acvm_js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-2.0.3.tgz", - "integrity": "sha512-ykxlUHop7ouYpsCstd55h97ijTYPr9feDmrg0Mcb3cyQMhyAIMnEfkDV8/sUdqmA+UetE1n1x1/91F/+AD6fBg==", - "license": "MIT" - }, - "node_modules/@aztec/noir-contracts.js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-2.0.3.tgz", - "integrity": "sha512-7gMTJ7FAVM20w/pJSJDG1+WJCTMFQyutQnMvkI0IbTEYVnUlwpytcsCKlZ3sWrl48mC3kw04JQ0s6WmIEPmtHw==", + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.932.0.tgz", + "integrity": "sha512-SEG9t2taBT86qe3gTunfrK8BxT710GVLGepvHr+X5Pw+qW225iNRaGN0zJH+ZE/j91tcW9wOaIoWnURkhR5wIg==", + "license": "Apache-2.0", "dependencies": { - "@aztec/aztec.js": "2.0.3", - "tslib": "^2.4.0" + "@aws-sdk/credential-provider-env": "3.932.0", + "@aws-sdk/credential-provider-http": "3.932.0", + "@aws-sdk/credential-provider-ini": "3.932.0", + "@aws-sdk/credential-provider-process": "3.932.0", + "@aws-sdk/credential-provider-sso": "3.932.0", + "@aws-sdk/credential-provider-web-identity": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-noir_codegen": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-2.0.3.tgz", - "integrity": "sha512-wPKroQazBfzngSMpUlWeF36Bf6CFmD6Mrly3KL3q0ebOoDwyzquhrLLXgHcpCBQo8R0ZruK/O3sVAiF4rFzGTg==", - "license": "(MIT OR Apache-2.0)", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.932.0.tgz", + "integrity": "sha512-BodZYKvT4p/Dkm28Ql/FhDdS1+p51bcZeMMu2TRtU8PoMDHnVDhHz27zASEKSZwmhvquxHrZHB0IGuVqjZUtSQ==", + "license": "Apache-2.0", "dependencies": { - "@aztec/noir-types": "2.0.3", - "glob": "^11.0.2", - "ts-command-line-args": "^2.5.1" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "bin": { - "noir-codegen": "lib/main.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-noirc_abi": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.3.tgz", - "integrity": "sha512-6Ghb5l8vFV6L7mdJmp0fL9P6O6SBq2S6MTO0Jtvs5kF+De/qHxvp3GCtbUswoSBfqo3s5JbJyyTzDbM8V6SkZw==", - "license": "(MIT OR Apache-2.0)", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.932.0.tgz", + "integrity": "sha512-XYmkv+ltBjjmPZ6AmR1ZQZkQfD0uzG61M18/Lif3HAGxyg3dmod0aWx9aL6lj9SvxAGqzscrx5j4PkgLqjZruw==", + "license": "Apache-2.0", "dependencies": { - "@aztec/noir-types": "2.0.3" + "@aws-sdk/client-sso": "3.932.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/token-providers": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-protocol-circuits-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-2.0.3.tgz", - "integrity": "sha512-E3X0NsIrTqrjqE8w10iOpMmrMruWn8OnjPJ/Y8fY45zOwvrn/vC+MeEkWuO5jLFVb225xI2k+a0EP7APiirpqg==", - "dependencies": { - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-acvm_js": "2.0.3", - "@aztec/noir-noir_codegen": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/stdlib": "2.0.3", - "change-case": "^5.4.4", - "tslib": "^2.4.0" + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.932.0.tgz", + "integrity": "sha512-Yw/hYNnC1KHuVIQF9PkLXbuKN7ljx70OSbJYDRufllQvej3kRwNcqQSnzI1M4KaObccqKaE6srg22DqpPy9p8w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/noir-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-2.0.3.tgz", - "integrity": "sha512-f8eEjPg+vdbAJ+RD8YHH7PFuUdxU59/3VAf6QBT7VTN6yL52LKVH7XP/g3Dy4vkfctyUWcQsuI4n+k8Uq4Ur7A==", - "license": "(MIT OR Apache-2.0)" - }, - "node_modules/@aztec/protocol-contracts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-2.0.3.tgz", - "integrity": "sha512-Uri5NxnTpCqSFOY4hDVVUj74sGtg8SUFHdEbKKPOH+RGvs2zocYNNaQ+l6CWqDtYmJZnhsBLJMaMImSCupm7rQ==", + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.930.0.tgz", + "integrity": "sha512-cnCLWeKPYgvV4yRYPFH6pWMdUByvu2cy2BAlfsPpvnm4RaVioztyvxmQj5PmVN5fvWs5w/2d6U7le8X9iye2sA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "lodash.chunk": "^4.2.0", - "lodash.omit": "^4.5.0", - "tslib": "^2.4.0" + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/pxe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-2.0.3.tgz", - "integrity": "sha512-19r1EgEi9NGEI8leu8vvGfw0u9d9k/KiWe1nQIkVZluDukIdzsA9xviZ5LKT3pbD17yl3k4IVD6AUucYWBbcNg==", - "dependencies": { - "@aztec/bb-prover": "2.0.3", - "@aztec/bb.js": "2.0.3", - "@aztec/builder": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/key-store": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/simulator": "2.0.3", - "@aztec/stdlib": "2.0.3", - "json-stringify-deterministic": "1.0.12", - "koa": "^2.16.1", - "koa-router": "^12.0.0", - "lodash.omit": "^4.5.0", - "sha3": "^2.1.4", - "tslib": "^2.4.0", - "viem": "2.23.7" - }, - "bin": { - "pxe": "dest/bin/index.js" + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.930.0.tgz", + "integrity": "sha512-5HEQ+JU4DrLNWeY27wKg/jeVa8Suy62ivJHOSUf6e6hZdVIMx0h/kXS1fHEQNNiLu2IzSEP/bFXsKBaW7x7s0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/simulator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-2.0.3.tgz", - "integrity": "sha512-v1N1yqbiFYn7Pk1QvhoBaHpRgPfR7SiyhS44cNwgh5+EHUo1e9R43/hzxFIunckWoNl2arMHjX2JYUaE7Q6u3Q==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/noir-acvm_js": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@aztec/noir-protocol-circuits-types": "2.0.3", - "@aztec/noir-types": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "@aztec/world-state": "2.0.3", - "lodash.clonedeep": "^4.5.0", - "lodash.merge": "^4.6.2", - "tslib": "^2.4.0" + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.932.0.tgz", + "integrity": "sha512-hyvRz/XS/0HTHp9/Ld1mKwpOi7bZu5olI42+T112rkCTbt1bewkygzEl4oflY4H7cKMamQusYoL0yBUD/QSEvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/stdlib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-2.0.3.tgz", - "integrity": "sha512-kzYspDE4xWTRZQOEMwuYRD84YE5XNJQBzTo/pLq5UnhupdnyqjW1KJIVmi82Ql3vstjx6ZzIldveqjzE3Q0QwQ==", - "dependencies": { - "@aztec/bb.js": "2.0.3", - "@aztec/blob-lib": "2.0.3", - "@aztec/constants": "2.0.3", - "@aztec/ethereum": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/l1-artifacts": "2.0.3", - "@aztec/noir-noirc_abi": "2.0.3", - "@google-cloud/storage": "^7.15.0", - "axios": "^1.9.0", - "json-stringify-deterministic": "1.0.12", - "lodash.chunk": "^4.2.0", - "lodash.isequal": "^4.5.0", - "lodash.omit": "^4.5.0", - "lodash.times": "^4.3.2", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "tslib": "^2.4.0", - "viem": "2.23.7", - "zod": "^3.23.8" + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.930.0.tgz", + "integrity": "sha512-x30jmm3TLu7b/b+67nMyoV0NlbnCVT5DI57yDrhXAPCtdgM1KtdLWt45UcHpKOm1JsaIkmYRh2WYu7Anx4MG0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/telemetry-client": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-2.0.3.tgz", - "integrity": "sha512-3geZjXE0U8Y3QzGoaVBhscOqE/d7hu5xpnu3yQuaM20VQEN7VeP3E1JTSg9YTCwXtdXnQ9ethSQrmXt3jq0ICA==", + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.930.0.tgz", + "integrity": "sha512-QIGNsNUdRICog+LYqmtJ03PLze6h2KCORXUs5td/hAEjVP5DMmubhtrGg1KhWyctACluUH/E/yrD14p4pRXxwA==", + "license": "Apache-2.0", "dependencies": { - "@aztec/foundation": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.55.0", - "@opentelemetry/core": "^1.28.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", - "@opentelemetry/host-metrics": "^0.35.4", - "@opentelemetry/otlp-exporter-base": "^0.55.0", - "@opentelemetry/resource-detector-gcp": "^0.32.0", - "@opentelemetry/resources": "^1.28.0", - "@opentelemetry/sdk-logs": "^0.55.0", - "@opentelemetry/sdk-metrics": "^1.28.0", - "@opentelemetry/sdk-trace-node": "^1.28.0", - "@opentelemetry/semantic-conventions": "^1.28.0", - "prom-client": "^15.1.3", - "viem": "2.23.7" + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@aztec/world-state": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-2.0.3.tgz", - "integrity": "sha512-PwoscvIQzaOR3gV72PZbAkfpHcTip5O5AOyhW5s05NScNc+EKkEdXJLuzUoorec5GIIfPxkPkJDxZSoWYJznOw==", - "dependencies": { - "@aztec/constants": "2.0.3", - "@aztec/foundation": "2.0.3", - "@aztec/kv-store": "2.0.3", - "@aztec/merkle-tree": "2.0.3", - "@aztec/native": "2.0.3", - "@aztec/protocol-contracts": "2.0.3", - "@aztec/stdlib": "2.0.3", - "@aztec/telemetry-client": "2.0.3", - "tslib": "^2.4.0", - "zod": "^3.23.8" + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.930.0.tgz", + "integrity": "sha512-vh4JBWzMCBW8wREvAwoSqB2geKsZwSHTa0nSt0OMOLp2PdTYIZDi0ZiVMmpfnjcx9XbS6aSluLv9sKx4RrG46A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.10" + "node": ">=18.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.930.0.tgz", + "integrity": "sha512-gv0sekNpa2MBsIhm2cjP3nmYSfI4nscx/+K9u9ybrWZBWUIC4kL2sV++bFjjUz4QxUIlvKByow3/a9ARQyCu7Q==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@aws-sdk/types": "3.930.0", + "@aws/lambda-invoke-store": "^0.1.1", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.932.0.tgz", + "integrity": "sha512-bYMHxqQzseaAP9Z5qLI918z5AtbAnZRRtFi3POb4FLZyreBMgCgBNaPkIhdgywnkqaydTWvbMBX4s9f4gUwlTw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.18.2", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.930.0.tgz", + "integrity": "sha512-N2/SvodmaDS6h7CWfuapt3oJyn1T2CBz0CsDIiTDv9cSagXAVFjPdm2g4PFJqrNBeqdDIoYBnnta336HmamWHg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.932.0.tgz", + "integrity": "sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg==", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@smithy/core": "^3.18.2", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=18.0.0" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@aws-sdk/nested-clients": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.932.0.tgz", + "integrity": "sha512-E2ucBfiXSpxZflHTf3UFbVwao4+7v7ctAeg8SWuglc1UMqMlpwMFFgWiSONtsf0SR3+ZDoWGATyCXOfDWerJuw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/middleware-host-header": "3.930.0", + "@aws-sdk/middleware-logger": "3.930.0", + "@aws-sdk/middleware-recursion-detection": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", + "@aws-sdk/region-config-resolver": "3.930.0", + "@aws-sdk/types": "3.930.0", + "@aws-sdk/util-endpoints": "3.930.0", + "@aws-sdk/util-user-agent-browser": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.2", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.9", + "@smithy/middleware-retry": "^4.4.9", + "@smithy/middleware-serde": "^4.2.5", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.8", + "@smithy/util-defaults-mode-node": "^4.2.11", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.930.0.tgz", + "integrity": "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.932.0.tgz", + "integrity": "sha512-NCIRJvoRc9246RZHIusY1+n/neeG2yGhBGdKhghmrNdM+mLLN6Ii7CKFZjx3DhxtpHMpl1HWLTMhdVrGwP2upw==", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@aws-sdk/middleware-sdk-s3": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/token-providers": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.932.0.tgz", + "integrity": "sha512-43u82ulVuHK4zWhcSPyuPS18l0LNHi3QJQ1YtP2MfP8bPf5a6hMYp5e3lUr9oTDEWcpwBYtOW0m1DVmoU/3veA==", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@aws-sdk/core": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@aws-sdk/types": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.930.0.tgz", + "integrity": "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.930.0.tgz", + "integrity": "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw==", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.930.0.tgz", + "integrity": "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.930.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.932.0.tgz", + "integrity": "sha512-/kC6cscHrZL74TrZtgiIL5jJNbVsw9duGGPurmaVgoCbP7NnxyaSWEurbNV3VPNPhNE3bV3g4Ci+odq+AlsYQg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.932.0", + "@aws-sdk/types": "3.930.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", + "node_modules/@aws-sdk/xml-builder": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", + "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", + "node_modules/@aws/lambda-invoke-store": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz", + "integrity": "sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA==", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/accounts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/accounts/-/accounts-3.0.0-devnet.2.tgz", + "integrity": "sha512-xmhQYvkIR3KMhpTJoTPCSrOwdOOEbNUF4mXkQh0JWfWRPCw8DWqJr0dJcECS+PlxABIFE/OcLdUq7gNXmhhxWg==", + "dependencies": { + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/entrypoints": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "node_modules/@aztec/aztec.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/aztec.js/-/aztec.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-3suXrSKeZUq9rMWgyYLxOUDKwxcbcnX1PX82dBRqlsAagThwHi3NPD+9QiEO/7vU2G27oQzrb6YRmARnVqL6aQ==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/entrypoints": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "axios": "^1.12.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.10" } }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.4" + "node_modules/@aztec/bb-prover": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/bb-prover/-/bb-prover-3.0.0-devnet.2.tgz", + "integrity": "sha512-b/uNARAQcrOFH3WGbdQB5+zZyu3rA5uX61L2Au//GAu2pLPAq9BjJfHPhDXrNmV5q8vk0RiMX0jR+ITw73jfww==", + "dependencies": { + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/simulator": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "@aztec/world-state": "3.0.0-devnet.2", + "commander": "^12.1.0", + "pako": "^2.1.0", + "source-map-support": "^0.5.21", + "tslib": "^2.4.0" }, "bin": { - "parser": "bin/babel-parser.js" + "bb-cli": "dest/bb/index.js" }, "engines": { - "node": ">=6.0.0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, + "node_modules/@aztec/bb.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/bb.js/-/bb.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-KRU8YuFuZ68J2I6woQ+NJsRZcr3WG2n1KaRKcT83l9fjG8OtNmPH77/SXio/cPOXjXvdzTDvfiNNt54o1olfLg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "pino": "^9.5.0", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "bb.js": "dest/node/main.js" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/blob-lib": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/blob-lib/-/blob-lib-3.0.0-devnet.2.tgz", + "integrity": "sha512-cRyjcgljsQ8ChNxufo4AdAasgS7IFzAgZw2pdkOkRyP/nXh1TyUx1QtrmgDU2R5oam+7HtUDck28gI0u2O80SA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@crate-crypto/node-eth-kzg": "^0.10.0", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/builder": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/builder/-/builder-3.0.0-devnet.2.tgz", + "integrity": "sha512-zSSG3nDsHAlyUI8Ct3rpWmEOjc7MGQo7MSb9znPLa8mxZoLrXA0lP6R0M1srwjdhNxgTMod+VceAXocvka+sDQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "commander": "^12.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "aztec-builder": "dest/bin/cli.js" + }, + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/constants": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/constants/-/constants-3.0.0-devnet.2.tgz", + "integrity": "sha512-uM9kD87JDPwsSjb9ty6CO65I14G3J44FB90Btyf61Cv1Vi21hcTjWDLlExLdvm2EXSPyry/c3IM8hV7xMV5ZGA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "node_modules/@aztec/entrypoints": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/entrypoints/-/entrypoints-3.0.0-devnet.2.tgz", + "integrity": "sha512-7A/CbOj8ACKkKi2Fet5Ddl44Pfohp3j8RewFR4j8ZyT55EKJBabM3SdGcQ9aGA9TaNAoMoqmOqp1R3yRCVj5Vw==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/@aztec/ethereum": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/ethereum/-/ethereum-3.0.0-devnet.2.tgz", + "integrity": "sha512-BkY6jt10LifQkATtaeyenXBSMbVAWcH95dPaQbeQMykMlmT4c2sNISn8O69IQDY8zAoET61+ivBbT7hP108FpQ==", + "dependencies": { + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@viem/anvil": "^0.0.10", + "dotenv": "^16.0.3", + "lodash.chunk": "^4.2.0", + "lodash.pickby": "^4.5.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/foundation": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/foundation/-/foundation-3.0.0-devnet.2.tgz", + "integrity": "sha512-EYtzdsr8R+tIBjQWSKA/Z91ElCPSUobdcP9RmXmnNi5ByOs+3gpRIbrIz1mBb+9dG+jq0iVNadq/2raUz+e4pQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/bb.js": "3.0.0-devnet.2", + "@koa/cors": "^5.0.0", + "@noble/curves": "=1.7.0", + "bn.js": "^5.2.1", + "colorette": "^2.0.20", + "detect-node": "^2.1.0", + "hash.js": "^1.1.7", + "koa": "^2.16.1", + "koa-bodyparser": "^4.4.0", + "koa-compress": "^5.1.0", + "koa-router": "^13.1.1", + "leveldown": "^6.1.1", + "lodash.chunk": "^4.2.0", + "lodash.clonedeepwith": "^4.5.0", + "pako": "^2.1.0", + "pino": "^9.5.0", + "pino-pretty": "^13.0.0", + "sha3": "^2.1.4", + "undici": "^5.28.5", + "zod": "^3.23.8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "node_modules/@aztec/key-store": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/key-store/-/key-store-3.0.0-devnet.2.tgz", + "integrity": "sha512-gCrhwzGx9/fXHRF+x/6r2BrmCMvz6QkLGeROjNu9Fr5xcLxrxIiPrqzShaHTgSBzYCBiZRbdd7VQB6GUR9e59w==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/@aztec/kv-store": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/kv-store/-/kv-store-3.0.0-devnet.2.tgz", + "integrity": "sha512-U2VvPiZVwNIXNWCNu2h+3kfSXH6MoMjWQb1dNlm6CWh7O3PBxnJ+96YUWm1oY1kmQA5YcbU31kjYa0s93HntZA==", + "dependencies": { + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "idb": "^8.0.0", + "lmdb": "^3.2.0", + "msgpackr": "^1.11.2", + "ohash": "^2.0.11", + "ordered-binary": "^1.5.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/l1-artifacts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/l1-artifacts/-/l1-artifacts-3.0.0-devnet.2.tgz", + "integrity": "sha512-F/zs3JlV6tA09OgxvrLZkphG+f+GvLPRqgPGD0JxHqYpcyHhj6oF91sCoUNmja/L1WhY9PBblI5/Sz2yftEySw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "tslib": "^2.4.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/merkle-tree": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/merkle-tree/-/merkle-tree-3.0.0-devnet.2.tgz", + "integrity": "sha512-E5A5ZRKz1k/R8IG37e6o3rFHysmeC1uBg+TxYKyi07P6TgFeBTb9J+F2fCCDyPHAQSWU5yQbEbGaexVwuqzkXw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "sha256": "^0.2.0", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/native": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/native/-/native-3.0.0-devnet.2.tgz", + "integrity": "sha512-FF67c8s8Wgu6s8Qvfg3Aq2RvLDFZZvwyHz4+mwI5aXbI2//xo65jPxz3HozjaLWz/CRiYC9Dkg9faZ9wUiG+Iw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/foundation": "3.0.0-devnet.2", + "msgpackr": "^1.11.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-acvm_js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-acvm_js/-/noir-acvm_js-3.0.0-devnet.2.tgz", + "integrity": "sha512-CyKCYq32w0gWN14Vc7SwAAsjMqKmQD5G2ssy6MW0UNJ5mVXusUTdq90LfFZFIAh139tLcpxG2lOOd7jYhzNZ/A==", + "license": "MIT" + }, + "node_modules/@aztec/noir-contracts.js": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-contracts.js/-/noir-contracts.js-3.0.0-devnet.2.tgz", + "integrity": "sha512-GDItJIjO5AGuWKbS8mAbgEI+PrT1ZWafvf7BY+OXKjLAdRZ8lzLx9ftug9/iic6S1v3wHKC1R79YJj30YxQpLw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/aztec.js": "3.0.0-devnet.2", + "tslib": "^2.4.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-noir_codegen": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-noir_codegen/-/noir-noir_codegen-3.0.0-devnet.2.tgz", + "integrity": "sha512-4H4QGvqXpyk6pV7khu88D2WDDkXUn6SxVMA6686qvJCK11I17g49f1Kg6+94XKWTAQ+BWFJgm0Ff3k7S3gppkA==", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aztec/noir-types": "3.0.0-devnet.2", + "glob": "^11.0.3", + "ts-command-line-args": "^2.5.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "noir-codegen": "lib/main.js" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-noirc_abi": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-noirc_abi/-/noir-noirc_abi-3.0.0-devnet.2.tgz", + "integrity": "sha512-stPneUeYTdGBzzt21oPJv3+8/QpjiI/3rvmet3k1ZFvGZFyPq0GL87kTKOQdStE4shc8ypOEG00isGTGNtTRmg==", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aztec/noir-types": "3.0.0-devnet.2" + } + }, + "node_modules/@aztec/noir-protocol-circuits-types": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-3.0.0-devnet.2.tgz", + "integrity": "sha512-jOHgAMoOH52QDeEW8lIH+Fy9+rOf90DPNSO65DHgVt+n/VZG7ln7FxQl3lxHA2cjMv8moKD/wtTusAy77MXQuw==", + "dependencies": { + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/noir-acvm_js": "3.0.0-devnet.2", + "@aztec/noir-noir_codegen": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "change-case": "^5.4.4", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", + "node_modules/@aztec/noir-types": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/noir-types/-/noir-types-3.0.0-devnet.2.tgz", + "integrity": "sha512-XXOfS9flhEStIJOneZJJlIQjgegWvmfeqSpGzSPHBBvYUAWSZVbjfl+8AEJcamVo311EyqQWiwScJh+1xvM4lw==", + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/@aztec/protocol-contracts": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/protocol-contracts/-/protocol-contracts-3.0.0-devnet.2.tgz", + "integrity": "sha512-W4bcAv2c5FwxzA9JLm8aQx5J0aH7hEWGICK/lMGTr0AotuXsg3mzixg27JB2T4XHSmL7jVX589ci72FdBv4/nQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "lodash.chunk": "^4.2.0", + "lodash.omit": "^4.5.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.10" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "node_modules/@aztec/pxe": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/pxe/-/pxe-3.0.0-devnet.2.tgz", + "integrity": "sha512-DmY5j3YxJhdVnd2Ri2bqcOY4s996xmPcRCoIvg2kJwobKzaWTCHub0fdmHb8fJOJyiw5JVQhRrFYw0bY6ftyEA==", + "dependencies": { + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/builder": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/key-store": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/simulator": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "koa": "^2.16.1", + "koa-router": "^13.1.1", + "lodash.omit": "^4.5.0", + "sha3": "^2.1.4", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "pxe": "dest/bin/index.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.10" } }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "node_modules/@aztec/simulator": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/simulator/-/simulator-3.0.0-devnet.2.tgz", + "integrity": "sha512-WjLeQRSLkuE3HqTDBO2j9rUGKjDTxv0pUOa3BSmF+WtatZsjX5YjcBmnJO+Oca6wXYy3Asmif3L2k42rAOqCuA==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/noir-acvm_js": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2", + "@aztec/noir-types": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "@aztec/world-state": "3.0.0-devnet.2", + "lodash.clonedeep": "^4.5.0", + "lodash.merge": "^4.6.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/stdlib": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/stdlib/-/stdlib-3.0.0-devnet.2.tgz", + "integrity": "sha512-YTepOqs+0aPK6pXj1LqPiYFJHcq2pyYDvUXaNaLG5FdxghdhepZQd1KjG4V7zm2cXIqASlgVyzsBJ2mTZKhaXQ==", + "dependencies": { + "@aws-sdk/client-s3": "^3.892.0", + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/blob-lib": "3.0.0-devnet.2", + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/ethereum": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/l1-artifacts": "3.0.0-devnet.2", + "@aztec/noir-noirc_abi": "3.0.0-devnet.2", + "@google-cloud/storage": "^7.15.0", + "axios": "^1.12.0", + "json-stringify-deterministic": "1.0.12", + "lodash.chunk": "^4.2.0", + "lodash.isequal": "^4.5.0", + "lodash.omit": "^4.5.0", + "lodash.times": "^4.3.2", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/telemetry-client": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/telemetry-client/-/telemetry-client-3.0.0-devnet.2.tgz", + "integrity": "sha512-SAIg2ANvVzUDWbP00+2lN35dBRdJQPMcQ8QZ2M+aQBMKvRbyClgVy9800UVGRplPiiirClkN57kkwW+TWX9rrQ==", + "dependencies": { + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.55.0", + "@opentelemetry/core": "^1.28.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.55.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.55.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.55.0", + "@opentelemetry/host-metrics": "^0.36.2", + "@opentelemetry/otlp-exporter-base": "^0.55.0", + "@opentelemetry/resource-detector-gcp": "^0.32.0", + "@opentelemetry/resources": "^1.28.0", + "@opentelemetry/sdk-logs": "^0.55.0", + "@opentelemetry/sdk-metrics": "^1.28.0", + "@opentelemetry/sdk-trace-node": "^1.28.0", + "@opentelemetry/semantic-conventions": "^1.28.0", + "prom-client": "^15.1.3", + "viem": "npm:@spalladino/viem@2.38.2-eip7594.0" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/test-wallet": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/test-wallet/-/test-wallet-3.0.0-devnet.2.tgz", + "integrity": "sha512-IhAqs9b1gZebciUCqNyU89SvvqfHLJYocoPk53cHGKvz3X5vDUbwx/GwQhePhzanyh2R4onVMfD9qX5BVn1xGg==", + "dependencies": { + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/entrypoints": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@aztec/world-state": { + "version": "3.0.0-devnet.2", + "resolved": "https://registry.npmjs.org/@aztec/world-state/-/world-state-3.0.0-devnet.2.tgz", + "integrity": "sha512-YGcKr49SYgDrcUBiXLfbuAog9vzvv5+u6VDBeowBRbfjOrk5oEsujD+DvwwICl+y/vDEFV+uAtJF+QsjP3fBfQ==", + "dependencies": { + "@aztec/constants": "3.0.0-devnet.2", + "@aztec/foundation": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/merkle-tree": "3.0.0-devnet.2", + "@aztec/native": "3.0.0-devnet.2", + "@aztec/protocol-contracts": "3.0.0-devnet.2", + "@aztec/stdlib": "3.0.0-devnet.2", + "@aztec/telemetry-client": "3.0.0-devnet.2", + "tslib": "^2.4.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=20.10" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@borewit/text-codec": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", - "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=0.1.90" + "node": ">=6.9.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", - "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", - "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", - "cpu": [ - "arm" - ], + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", - "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", - "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", - "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", - "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", - "cpu": [ - "x64" - ], + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", - "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, "engines": { - "node": ">=18" + "node": ">=6.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", - "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", - "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", - "cpu": [ - "arm" - ], + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", - "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", - "cpu": [ - "arm64" - ], + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", - "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", - "cpu": [ - "ia32" - ], + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", - "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", - "cpu": [ - "loong64" - ], + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", - "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", - "cpu": [ - "mips64el" - ], + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", - "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", - "cpu": [ - "ppc64" - ], + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", - "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", - "cpu": [ - "riscv64" - ], + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", - "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", - "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", - "cpu": [ - "x64" - ], + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.1.1.tgz", + "integrity": "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=0.1.90" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", - "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "node_modules/@crate-crypto/node-eth-kzg": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg/-/node-eth-kzg-0.10.0.tgz", + "integrity": "sha512-sGDPH1nW2EhJzjzHyINvTQwDNGRzdq/2vVzFwwrmFOHtIBaRjXGqo7wKj/JoJoNjuRSGeXz/EmaahRq0pgxzqw==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@crate-crypto/node-eth-kzg-darwin-arm64": "0.10.0", + "@crate-crypto/node-eth-kzg-darwin-x64": "0.10.0", + "@crate-crypto/node-eth-kzg-linux-arm64-gnu": "0.10.0", + "@crate-crypto/node-eth-kzg-linux-x64-gnu": "0.10.0", + "@crate-crypto/node-eth-kzg-win32-arm64-msvc": "0.10.0", + "@crate-crypto/node-eth-kzg-win32-x64-msvc": "0.10.0" + } + }, + "node_modules/@crate-crypto/node-eth-kzg-darwin-arm64": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-darwin-arm64/-/node-eth-kzg-darwin-arm64-0.10.0.tgz", + "integrity": "sha512-cKhqkrRdnWhgPycHkcdwfu/w41PuCvAERkX5yYDR3cSYR4h87Gn4t/infE6UNsPDBCN7yYV42YmZfQDfEt2xrw==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "netbsd" + "darwin" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", - "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "node_modules/@crate-crypto/node-eth-kzg-darwin-x64": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-darwin-x64/-/node-eth-kzg-darwin-x64-0.10.0.tgz", + "integrity": "sha512-8fn4+UBP01ZBxVARTZvxPBGrmcUbYFM/b5z0wZkEevQ9Sz5GYk8hursgpqbhekj+xTCxmwa9pPkzDbtG6oZGQg==", "cpu": [ "x64" ], "license": "MIT", "optional": true, "os": [ - "netbsd" + "darwin" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", - "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "node_modules/@crate-crypto/node-eth-kzg-linux-arm64-gnu": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-linux-arm64-gnu/-/node-eth-kzg-linux-arm64-gnu-0.10.0.tgz", + "integrity": "sha512-euuqBTDLOpI9wNx0jO7AD24BdiCs9sz8cBybsdGJvyZ8QLUIezTnA/aXcrZBzsA5ZOrHYjaWS2NJpgDdAjLLuQ==", "cpu": [ "arm64" ], "license": "MIT", "optional": true, "os": [ - "openbsd" + "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", - "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "node_modules/@crate-crypto/node-eth-kzg-linux-x64-gnu": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-linux-x64-gnu/-/node-eth-kzg-linux-x64-gnu-0.10.0.tgz", + "integrity": "sha512-b4klE/jp98PBZ7PWuFE1OscWBILSS8jP+JMbIJ+qE7y42s/6ImWH5bWmVdFOfh6u0o95cb9hCS0xIECM80SqBg==", "cpu": [ "x64" ], "license": "MIT", "optional": true, "os": [ - "openbsd" + "linux" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", - "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "node_modules/@crate-crypto/node-eth-kzg-win32-arm64-msvc": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-win32-arm64-msvc/-/node-eth-kzg-win32-arm64-msvc-0.10.0.tgz", + "integrity": "sha512-tFKv02TG/JYsD4gvV0gTvjLqd09/4g/B37fCPXIuEFzq5LgIuWHu37hhQ6K8eIfoXZOTY3wqqkY1jTXYhs2sTA==", "cpu": [ - "x64" + "arm64" ], "license": "MIT", "optional": true, "os": [ - "sunos" + "win32" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", - "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "node_modules/@crate-crypto/node-eth-kzg-win32-x64-msvc": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@crate-crypto/node-eth-kzg-win32-x64-msvc/-/node-eth-kzg-win32-x64-msvc-0.10.0.tgz", + "integrity": "sha512-mYieW1mBesbLFRB2j4LdodpCkwIxZ8ZHZzzwV+MXqapI61B2SbH+FyMYQ5lJYqQeMHCY0ojq5ScW1zZj1uNGjA==", "cpu": [ - "arm64" + "x64" ], "license": "MIT", "optional": true, @@ -1601,2700 +2205,3144 @@ "win32" ], "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", - "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", "cpu": [ - "ia32" + "ppc64" ], "license": "MIT", "optional": true, "os": [ - "win32" + "aix" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/win32-x64": { + "node_modules/@esbuild/android-arm": { "version": "0.25.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", - "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", "cpu": [ - "x64" + "arm" ], "license": "MIT", "optional": true, "os": [ - "win32" + "android" ], "engines": { "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, + "node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@eslint/config-array": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", - "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", - "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/js": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", - "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", - "dev": true, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" + "node": ">=18" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-coder": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", - "integrity": "sha512-ZlifuRVn7yuR3VknX1vHWDX9BmUFryoGiNqdGTXCBq5XC6Z2ASmdJTis4wcGYaBsrlZv95RWym9i9TtRLA+Y1A==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "type-fest": "4.34.1" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", - "integrity": "sha512-WWXESg9SaBOLBXYsTeW5We3LA2aHzRhCzUAp5UDqaCChztzAyyj4aXd68zpUiJ5UlH3C6bxgv2zHMhWMo+rriA==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "commander": "13.1.0", - "glob": "10.4.5", - "handlebars": "4.7.8", - "mkdirp": "3.0.1", - "ramda": "0.30.1", - "rimraf": "5.0.10" - }, - "bin": { - "fuels-typegen": "typegen.js" - }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@fuel-ts/abi-typegen/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@fuel-ts/account": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.3.tgz", - "integrity": "sha512-ubDVW4NSRdTEyaAFUnL75+ysjLcb+/5M3Rtk5hFDawhcrA9rSB0UDel5lOavERuJlKPtu4jngcv8nTiXdu4mGw==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/merkle": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "@noble/curves": "1.8.1", - "events": "3.3.0", - "graphql": "16.10.0", - "graphql-request": "6.1.0", - "graphql-tag": "2.12.6", - "ramda": "0.30.1" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "dev": true, "license": "MIT", "dependencies": { - "@noble/hashes": "1.7.1" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^14.21.3 || >=16" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^14.21.3 || >=16" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@fuel-ts/address": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.3.tgz", - "integrity": "sha512-GbolfGNSSx8hEHPxI4ayD3MAhnHMCg3mqCFncTXXFaL2uMK82aSvab8s0QLNxcIPZmS9T5rOCMY0sqwm5ahh7w==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/contract": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.3.tgz", - "integrity": "sha512-uMpELAr/jkyyNIUCuCrTKbhT1oH/smUEVKL7D+4HvJ2nqn7xO4XdaNFGf6/5qylElDP8xn4Xtte8sb+d9UeZTA==", + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/merkle": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/crypto": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.3.tgz", - "integrity": "sha512-bb/wnMMcf8czSpsamPfJx/I3/ag/mcmO2B9Tzy5Z4cFYbRs1Vzm2rVAmh7qsr00evxhftiu9QesPACZUjabZag==", - "license": "Apache-2.0", + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, "license": "MIT", "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@fuel-ts/errors": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.3.tgz", - "integrity": "sha512-c2WqH0fkSLPqDmAeCNJonca1Ui9CElFz3PEh/77btIE61bX9Iclq/L7/GtZabz8jsedBBbGJwyrgE4GTgNMwXQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/versions": "0.101.3" - }, + "node_modules/@eslint/js": { + "version": "9.28.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", + "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" - } - }, - "node_modules/@fuel-ts/hasher": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.3.tgz", - "integrity": "sha512-XaT1Gwq7KdQQUEDXrY3Vx7c6vgIAZlAVG6RszkY6a2Gl72eYGB1tMf1GKkkKEMw5/liF/C8OG9/recwbxlI4XQ==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/crypto": "0.101.3", - "@fuel-ts/utils": "0.101.3", - "@noble/hashes": "1.7.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "funding": { + "url": "https://eslint.org/donate" } }, - "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", - "license": "MIT", + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/math": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.3.tgz", - "integrity": "sha512-vqU4rzBjDkLHT7YTjhFWvbo3LDnDR3vgl33kMDj93eMu2tfm8W8WWRxOoqzLNf18sl8dcoYMrNvIgXIOplddOQ==", + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@types/bn.js": "5.1.6", - "bn.js": "5.2.1" + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/math/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/@fuel-ts/merkle": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", - "integrity": "sha512-zOLlsSjmCmjACHPiJscVRIfq2DKtHd4eOPFwhQkaBedzp/NRAINAaapFayTJiyF8sBucCQN4cOyC6ZGD7jjf4w==", + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@fuel-ts/program": { + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fuel-ts/abi-coder": { "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.3.tgz", - "integrity": "sha512-DZzP8CiqXqhi+jR9m0u+lbCrDtojGX5pv+j2lAyGRdyt80UIkFucDrbVXD0v2Iuni02PIaLDEAoum+y/sqGgrw==", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-coder/-/abi-coder-0.101.3.tgz", + "integrity": "sha512-ZlifuRVn7yuR3VknX1vHWDX9BmUFryoGiNqdGTXCBq5XC6Z2ASmdJTis4wcGYaBsrlZv95RWym9i9TtRLA+Y1A==", "license": "Apache-2.0", "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/address": "0.101.3", + "@fuel-ts/crypto": "0.101.3", "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", "@fuel-ts/math": "0.101.3", - "@fuel-ts/transactions": "0.101.3", "@fuel-ts/utils": "0.101.3", - "@fuels/vm-asm": "0.60.2", - "ramda": "0.30.1" + "type-fest": "4.34.1" }, "engines": { "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@fuel-ts/recipes": { + "node_modules/@fuel-ts/abi-typegen": { "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.3.tgz", - "integrity": "sha512-rzVDeJM69Wth8wXly656g3VCNbFpouHfZQA2vJiEoAZn+YB9m9Z73DfAIDn7WUw3Sy/iBAw884OKoV3zZjV8qw==", + "resolved": "https://registry.npmjs.org/@fuel-ts/abi-typegen/-/abi-typegen-0.101.3.tgz", + "integrity": "sha512-WWXESg9SaBOLBXYsTeW5We3LA2aHzRhCzUAp5UDqaCChztzAyyj4aXd68zpUiJ5UlH3C6bxgv2zHMhWMo+rriA==", "license": "Apache-2.0", "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/abi-typegen": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/contract": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3" + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "commander": "13.1.0", + "glob": "10.4.5", + "handlebars": "4.7.8", + "mkdirp": "3.0.1", + "ramda": "0.30.1", + "rimraf": "5.0.10" + }, + "bin": { + "fuels-typegen": "typegen.js" }, "engines": { "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@fuel-ts/script": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.3.tgz", - "integrity": "sha512-Bt5NT9R9S9PNi9xmeq20J27QWgD9H4/csH1zXLVkWqS/hy+HKwojwn1n8Nje0ZgbQIBB52OHGiq/txz2XaIsrg==", - "license": "Apache-2.0", + "node_modules/@fuel-ts/abi-typegen/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/account": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/program": "0.101.3", - "@fuel-ts/transactions": "0.101.3", - "@fuel-ts/utils": "0.101.3" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@fuel-ts/transactions": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.3.tgz", - "integrity": "sha512-JBQ6BOUFiI/UX1VAvY+8AdS73XCTRirOBF/aLrnc8X+uVpoyHKvDaM+oWzl6YMMkgAGVz+D4DgYkjNWiKN+oag==", - "license": "Apache-2.0", - "dependencies": { - "@fuel-ts/abi-coder": "0.101.3", - "@fuel-ts/address": "0.101.3", - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/hasher": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/utils": "0.101.3" - }, + "node_modules/@fuel-ts/abi-typegen/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "license": "MIT", "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "node": ">=18" } }, - "node_modules/@fuel-ts/utils": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.3.tgz", - "integrity": "sha512-VGhp0TKT9h/E1Ptx7nFbiK/GnQptuewUg7aJgsgcYuSqyoJa+3cYbdTed5r9Mzoi4y/K/x/ano8Ui1yQETTa8Q==", - "license": "Apache-2.0", + "node_modules/@fuel-ts/abi-typegen/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { - "@fuel-ts/errors": "0.101.3", - "@fuel-ts/math": "0.101.3", - "@fuel-ts/versions": "0.101.3", - "fflate": "0.8.2" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "bin": { + "glob": "dist/esm/bin.mjs" }, - "peerDependencies": { - "vitest": "3.0.9" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@fuel-ts/versions": { - "version": "0.101.3", - "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.3.tgz", - "integrity": "sha512-IVsK4t/ouxtvsWZNxLccOUVe+3BIsjsXhok74jWiwB8ATGmf/CtKnvsDJhhx9OrALZFdMz7WiCXrsBkhEITpCA==", - "license": "Apache-2.0", + "node_modules/@fuel-ts/abi-typegen/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { - "chalk": "4", - "cli-table": "0.3.11" + "@isaacs/cliui": "^8.0.2" }, - "bin": { - "fuels-versions": "versions.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || ^24.0.0" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/@fuels/vm-asm": { - "version": "0.60.2", - "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", - "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", - "license": "Apache-2.0" + "node_modules/@fuel-ts/abi-typegen/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, - "node_modules/@google-cloud/paginator": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", - "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", - "license": "Apache-2.0", + "node_modules/@fuel-ts/abi-typegen/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "license": "Apache-2.0", + "node_modules/@fuel-ts/abi-typegen/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, "engines": { - "node": ">=14.0.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@google-cloud/promisify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", - "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node_modules/@fuel-ts/abi-typegen/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@google-cloud/storage": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.1.tgz", - "integrity": "sha512-2FMQbpU7qK+OtBPaegC6n+XevgZksobUGo6mGKnXNmeZpvLiAo1gTAE3oTKsrMGDV4VtL8Zzpono0YsK/Q7Iqg==", + "node_modules/@fuel-ts/account": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/account/-/account-0.101.3.tgz", + "integrity": "sha512-ubDVW4NSRdTEyaAFUnL75+ysjLcb+/5M3Rtk5hFDawhcrA9rSB0UDel5lOavERuJlKPtu4jngcv8nTiXdu4mGw==", "license": "Apache-2.0", "dependencies": { - "@google-cloud/paginator": "^5.0.0", - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "<4.1.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "duplexify": "^4.1.3", - "fast-xml-parser": "^4.4.1", - "gaxios": "^6.0.2", - "google-auth-library": "^9.6.3", - "html-entities": "^2.5.2", - "mime": "^3.0.0", - "p-limit": "^3.0.1", - "retry-request": "^7.0.0", - "teeny-request": "^9.0.0", - "uuid": "^8.0.0" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "@noble/curves": "1.8.1", + "events": "3.3.0", + "graphql": "16.10.0", + "graphql-request": "6.1.0", + "graphql-tag": "2.12.6", + "ramda": "0.30.1" }, "engines": { - "node": ">=14" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "node_modules/@fuel-ts/account/node_modules/@noble/curves": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "dependencies": { + "@noble/hashes": "1.7.1" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@hapi/bourne": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", - "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", - "license": "BSD-3-Clause" - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@fuel-ts/account/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, + "node_modules/@fuel-ts/address": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/address/-/address-0.101.3.tgz", + "integrity": "sha512-GbolfGNSSx8hEHPxI4ayD3MAhnHMCg3mqCFncTXXFaL2uMK82aSvab8s0QLNxcIPZmS9T5rOCMY0sqwm5ahh7w==", "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" }, "engines": { - "node": ">=18.18.0" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@fuel-ts/address/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "license": "MIT", "engines": { - "node": ">=12.22" + "node": "^14.21.3 || >=16" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, + "node_modules/@fuel-ts/contract": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/contract/-/contract-0.101.3.tgz", + "integrity": "sha512-uMpELAr/jkyyNIUCuCrTKbhT1oH/smUEVKL7D+4HvJ2nqn7xO4XdaNFGf6/5qylElDP8xn4Xtte8sb+d9UeZTA==", "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "dependencies": { + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/merkle": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz", - "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=18" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz", - "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/crypto": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/crypto/-/crypto-0.101.3.tgz", + "integrity": "sha512-bb/wnMMcf8czSpsamPfJx/I3/ag/mcmO2B9Tzy5Z4cFYbRs1Vzm2rVAmh7qsr00evxhftiu9QesPACZUjabZag==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.18", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz", - "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==", - "dev": true, + "node_modules/@fuel-ts/crypto/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" - }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": "^14.21.3 || >=16" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@inquirer/core": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz", - "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/errors": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/errors/-/errors-0.101.3.tgz", + "integrity": "sha512-c2WqH0fkSLPqDmAeCNJonca1Ui9CElFz3PEh/77btIE61bX9Iclq/L7/GtZabz8jsedBBbGJwyrgE4GTgNMwXQ==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" + "@fuel-ts/versions": "0.101.3" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz", - "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/hasher": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/hasher/-/hasher-0.101.3.tgz", + "integrity": "sha512-XaT1Gwq7KdQQUEDXrY3Vx7c6vgIAZlAVG6RszkY6a2Gl72eYGB1tMf1GKkkKEMw5/liF/C8OG9/recwbxlI4XQ==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/external-editor": "^1.0.2", - "@inquirer/type": "^3.0.8" + "@fuel-ts/crypto": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@noble/hashes": "1.7.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz", - "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==", - "dev": true, + "node_modules/@fuel-ts/hasher/node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, "engines": { - "node": ">=18" + "node": "^14.21.3 || >=16" }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", - "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/math": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/math/-/math-0.101.3.tgz", + "integrity": "sha512-vqU4rzBjDkLHT7YTjhFWvbo3LDnDR3vgl33kMDj93eMu2tfm8W8WWRxOoqzLNf18sl8dcoYMrNvIgXIOplddOQ==", + "license": "Apache-2.0", "dependencies": { - "chardet": "^2.1.0", - "iconv-lite": "^0.7.0" + "@fuel-ts/errors": "0.101.3", + "@types/bn.js": "5.1.6", + "bn.js": "5.2.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", - "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/math/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/@fuel-ts/merkle": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/merkle/-/merkle-0.101.3.tgz", + "integrity": "sha512-zOLlsSjmCmjACHPiJscVRIfq2DKtHd4eOPFwhQkaBedzp/NRAINAaapFayTJiyF8sBucCQN4cOyC6ZGD7jjf4w==", + "license": "Apache-2.0", + "dependencies": { + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3" + }, "engines": { - "node": ">=18" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/input": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz", - "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/program": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/program/-/program-0.101.3.tgz", + "integrity": "sha512-DZzP8CiqXqhi+jR9m0u+lbCrDtojGX5pv+j2lAyGRdyt80UIkFucDrbVXD0v2Iuni02PIaLDEAoum+y/sqGgrw==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3", + "@fuels/vm-asm": "0.60.2", + "ramda": "0.30.1" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/number": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz", - "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/recipes": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/recipes/-/recipes-0.101.3.tgz", + "integrity": "sha512-rzVDeJM69Wth8wXly656g3VCNbFpouHfZQA2vJiEoAZn+YB9m9Z73DfAIDn7WUw3Sy/iBAw884OKoV3zZjV8qw==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/abi-typegen": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/contract": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/password": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz", - "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/script": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/script/-/script-0.101.3.tgz", + "integrity": "sha512-Bt5NT9R9S9PNi9xmeq20J27QWgD9H4/csH1zXLVkWqS/hy+HKwojwn1n8Nje0ZgbQIBB52OHGiq/txz2XaIsrg==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/account": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/program": "0.101.3", + "@fuel-ts/transactions": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/prompts": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.1.tgz", - "integrity": "sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/transactions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/transactions/-/transactions-0.101.3.tgz", + "integrity": "sha512-JBQ6BOUFiI/UX1VAvY+8AdS73XCTRirOBF/aLrnc8X+uVpoyHKvDaM+oWzl6YMMkgAGVz+D4DgYkjNWiKN+oag==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/checkbox": "^4.1.5", - "@inquirer/confirm": "^5.1.9", - "@inquirer/editor": "^4.2.10", - "@inquirer/expand": "^4.0.12", - "@inquirer/input": "^4.1.9", - "@inquirer/number": "^3.0.12", - "@inquirer/password": "^4.0.12", - "@inquirer/rawlist": "^4.0.12", - "@inquirer/search": "^3.0.12", - "@inquirer/select": "^4.1.1" + "@fuel-ts/abi-coder": "0.101.3", + "@fuel-ts/address": "0.101.3", + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/hasher": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/utils": "0.101.3" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz", - "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/utils": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/utils/-/utils-0.101.3.tgz", + "integrity": "sha512-VGhp0TKT9h/E1Ptx7nFbiK/GnQptuewUg7aJgsgcYuSqyoJa+3cYbdTed5r9Mzoi4y/K/x/ano8Ui1yQETTa8Q==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" + "@fuel-ts/errors": "0.101.3", + "@fuel-ts/math": "0.101.3", + "@fuel-ts/versions": "0.101.3", + "fflate": "0.8.2" }, "engines": { - "node": ">=18" + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" }, "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "vitest": "3.0.9" } }, - "node_modules/@inquirer/search": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz", - "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==", - "dev": true, - "license": "MIT", + "node_modules/@fuel-ts/versions": { + "version": "0.101.3", + "resolved": "https://registry.npmjs.org/@fuel-ts/versions/-/versions-0.101.3.tgz", + "integrity": "sha512-IVsK4t/ouxtvsWZNxLccOUVe+3BIsjsXhok74jWiwB8ATGmf/CtKnvsDJhhx9OrALZFdMz7WiCXrsBkhEITpCA==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" + "chalk": "4", + "cli-table": "0.3.11" }, - "peerDependencies": { - "@types/node": ">=18" + "bin": { + "fuels-versions": "versions.js" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, - "node_modules/@inquirer/select": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz", - "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==", - "dev": true, - "license": "MIT", + "node_modules/@fuels/vm-asm": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", + "integrity": "sha512-wkCu63jTGJWpRZQirTaB8S4/gyoebEJLk3AKfnykt/lgWp1U9iHOcCICVHQP547i+y8jEVKwk18+huINFyYVFQ==", + "license": "Apache-2.0" + }, + "node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" + "arrify": "^2.0.0", + "extend": "^3.0.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=14.0.0" } }, - "node_modules/@inquirer/type": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", - "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", - "dev": true, - "license": "MIT", + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "license": "Apache-2.0", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=14.0.0" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", + "node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "license": "Apache-2.0", "engines": { - "node": "20 || >=22" + "node": ">=14" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", + "node_modules/@google-cloud/storage": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.3.tgz", + "integrity": "sha512-gOnCAbFgAYKRozywLsxagdevTF7Gm+2Ncz5u5CQAuOv/2VCa0rdGJWvJFDOftPx1tc+q8TXiC2pEJfFKu+yeMQ==", + "license": "Apache-2.0", "dependencies": { - "@isaacs/balanced-match": "^4.0.1" + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "<4.1.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=14" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/@google-cloud/storage/node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "strnum": "^1.1.1" }, - "engines": { - "node": ">=12" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "node_modules/@google-cloud/storage/node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "license": "BSD-3-Clause" }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.18.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18.18.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=6" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "node-notifier": { + "@types/node": { "optional": true } } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@inquirer/prompts": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.1.tgz", + "integrity": "sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "@inquirer/checkbox": "^4.1.5", + "@inquirer/confirm": "^5.1.9", + "@inquirer/editor": "^4.2.10", + "@inquirer/expand": "^4.0.12", + "@inquirer/input": "^4.1.9", + "@inquirer/number": "^3.0.12", + "@inquirer/password": "^4.0.12", + "@inquirer/rawlist": "^4.0.12", + "@inquirer/search": "^3.0.12", + "@inquirer/select": "^4.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "node-notifier": { + "@types/node": { "optional": true } } }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "*" + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "devOptional": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "devOptional": true, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "engines": { + "node": ">=8" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "devOptional": true, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@koa/cors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", - "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "license": "MIT", "dependencies": { - "vary": "^1.1.2" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.2.tgz", - "integrity": "sha512-NK80WwDoODyPaSazKbzd3NEJ3ygePrkERilZshxBViBARNz21rmediktGHExoj9n5t9+ChlgLlxecdFKLCuCKg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.2.tgz", - "integrity": "sha512-zevaowQNmrp3U7Fz1s9pls5aIgpKRsKb3dZWDINtLiozh3jZI9fBrI19lYYBxqdyiIyNdlyiidPnwPShj4aK+w==", - "cpu": [ - "x64" - ], + "node_modules/@jest/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "engines": { + "node": ">=8" + } }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.2.tgz", - "integrity": "sha512-OmHCULY17rkx/RoCoXlzU7LyR8xqrksgdYWwtYa14l/sseezZ8seKWXcogHcjulBddER5NnEFV4L/Jtr2nyxeg==", - "cpu": [ - "arm" - ], + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.2.tgz", - "integrity": "sha512-ZBEfbNZdkneebvZs98Lq30jMY8V9IJzckVeigGivV7nTHJc+89Ctomp1kAIWKlwIG0ovCDrFI448GzFPORANYg==", - "cpu": [ - "arm64" - ], + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.2.tgz", - "integrity": "sha512-vL9nM17C77lohPYE4YaAQvfZCSVJSryE4fXdi8M7uWPBnU+9DJabgKVAeyDb84ZM2vcFseoBE4/AagVtJeRE7g==", - "cpu": [ - "x64" - ], + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.2.tgz", - "integrity": "sha512-SXWjdBfNDze4ZPeLtYIzsIeDJDJ/SdsA0pEXcUBayUIMO0FQBHfVZZyHXQjjHr4cvOAzANBgIiqaXRwfMhzmLw==", - "cpu": [ - "arm64" - ], + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.2.tgz", - "integrity": "sha512-IY+r3bxKW6Q6sIPiMC0L533DEfRJSXibjSI3Ft/w9Q8KQBNqEIvUFXt+09wV8S5BRk0a8uSF19YWxuRwEfI90g==", - "cpu": [ - "x64" - ], + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", - "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@nestjs/cli": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.7.tgz", - "integrity": "sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.8", - "@angular-devkit/schematics": "19.2.8", - "@angular-devkit/schematics-cli": "19.2.8", - "@inquirer/prompts": "7.4.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "3.17.0", - "chokidar": "4.0.3", - "cli-table3": "0.6.5", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "11.0.1", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "tree-kill": "1.2.2", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.8.3", - "webpack": "5.99.6", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": ">= 20.11" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", - "@swc/core": "^1.3.62" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { + "node-notifier": { "optional": true } } }, - "node_modules/@nestjs/cli/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@jest/reporters/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nestjs/cli/node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "ansi-regex": "^5.0.1" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@nestjs/cli/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "@sinclair/typebox": "^0.27.8" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, "engines": { - "node": ">= 6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=4.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", - "dev": true, - "license": "ISC", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nestjs/cli/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nestjs/cli/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "devOptional": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@nestjs/cli/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@nestjs/cli/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.0.0" } }, - "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.99.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", - "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", - "dev": true, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@nestjs/common": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.2.tgz", - "integrity": "sha512-cHh4OPH44PjaHM93D1jgE1HO/B7XTZVRDxy/cPuGgyMEA4p2zXO+qqcOgTMC5FYcp7dX9jLeCjXAU0ToFAnODw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "devOptional": true, "license": "MIT", "dependencies": { - "file-type": "21.0.0", - "iterare": "1.2.1", - "load-esm": "1.0.2", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@nestjs/config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz", - "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==", + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", "license": "MIT", "dependencies": { - "dotenv": "16.4.7", - "dotenv-expand": "12.0.1", - "lodash": "4.17.21" + "vary": "^1.1.2" }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "rxjs": "^7.1.0" - } - }, - "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + "node": ">= 14.0.0" } }, - "node_modules/@nestjs/core": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.2.tgz", - "integrity": "sha512-QRuyxwu0BjNfmmmunsw1ylX7RSyfDQHt+xD+tKncdtgiMOOzAu+LA1gB4WoZnw4frQkk+qZbhEbM61cIjOxD3w==", - "hasInstallScript": true, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.4.tgz", + "integrity": "sha512-XaKL705gDWd6XVls3ATDj13ZdML/LqSIxwgnYpG8xTzH2ifArx8fMMDdvqGE/Emd+W6R90W2fveZcJ0AyS8Y0w==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.2.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.4.tgz", + "integrity": "sha512-GPHGEVcwJlkD01GmIr7B4kvbIcUDS2+kBadVEd7lU4can1RZaZQLDDBJRrrNfS2Kavvl0VLI/cMv7UASAXGrww==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.4.tgz", + "integrity": "sha512-cmev5/dZr5ACKri9f6GU6lZCXTjMhV72xujlbOhFCgFXrt4W0TxGsmY8kA1BITvH60JBKE50cSxsiulybAbrrw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.4.tgz", + "integrity": "sha512-mALqr7DE42HsiwVTKpQWxacjHoJk+e9p00RWIJqTACh/hpucxp/0lK/XMh5XzWnU/TDCZLukq1+vNqnNumTP/Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.4.tgz", + "integrity": "sha512-QjLs8OcmCNcraAcLoZyFlo0atzBJniQLLwhtR+ymQqS5kLYpV5RqwriL87BW+ZiR9ZiGgZx3evrz5vnWPtJ1fQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.4.tgz", + "integrity": "sha512-tr/pwHDlZ33forLGAr0tI04cRmP4SgF93yHbb+2zvZiDEyln5yMHhbKDySxY66aUOkhvBvTuHq9q/3YmTj6ZHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.4.tgz", + "integrity": "sha512-KRzfocJzB/mgoTCqnMawuLSKheHRVTqWfSmouIgYpFs6Hx4zvZSvsZKSCEb5gHmICy7qsx9l06jk3MFTtiFVAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nestjs/cli": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.7.tgz", + "integrity": "sha512-svrP8j1R0/lQVJ8ZI3BlDtuZxmkvVJokUJSB04sr6uibunk2wHeVDDVLZvYBUorCdGU/RHJl1IufhqUBM91vAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.8", + "@angular-devkit/schematics": "19.2.8", + "@angular-devkit/schematics-cli": "19.2.8", + "@inquirer/prompts": "7.4.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "3.17.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "11.0.1", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tree-kill": "1.2.2", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.8.3", + "webpack": "5.99.6", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" }, "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { + "@swc/cli": { "optional": true }, - "@nestjs/websockets": { + "@swc/core": { "optional": true } } }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.6", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.6.tgz", - "integrity": "sha512-HErwPmKnk+loTq8qzu1up+k7FC6Kqa8x6lJ4cDw77KnTxLzsCaPt+jBvOq6UfICmfqcqCCf3dKXg+aObQp+kIQ==", + "node_modules/@nestjs/cli/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, "license": "MIT", "dependencies": { - "cors": "2.8.5", - "express": "5.1.0", - "multer": "2.0.2", - "path-to-regexp": "8.2.0", - "tslib": "2.8.1" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@nestjs/schematics": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz", - "integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==", + "node_modules/@nestjs/cli/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.6", - "@angular-devkit/schematics": "19.2.6", - "comment-json": "4.2.5", - "jsonc-parser": "3.3.1", - "pluralize": "8.0.0" + "ajv": "^8.0.0" }, "peerDependencies": { - "typescript": ">=4.8.2" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz", - "integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==", + "node_modules/@nestjs/cli/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "fast-deep-equal": "^3.1.3" }, "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "ajv": "^8.8.2" } }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz", - "integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==", + "node_modules/@nestjs/cli/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@nestjs/cli/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@angular-devkit/core": "19.2.6", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=8.0.0" } }, - "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@nestjs/cli/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@nestjs/cli/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "dev": true, + "license": "ISC", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { + "node_modules/@nestjs/cli/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/@nestjs/cli/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@nestjs/testing": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.2.tgz", - "integrity": "sha512-BQxVKUVW6gzEbbHAvmg5RgcP3s++pRgTCmsgaDF/DtcLRUeKi8SjAdqzLm14xbkMeibxOf3fNqM2iwqUKj8ffw==", + "node_modules/@nestjs/cli/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" + "mime-db": "1.52.0" }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } + "engines": { + "node": ">= 0.6" } }, - "node_modules/@noble/curves": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", - "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", - "license": "MIT", + "node_modules/@nestjs/cli/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@noble/hashes": "1.6.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "^14.21.3 || >=16" + "node": "20 || >=22" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@noble/hashes": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", - "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "node_modules/@nestjs/cli/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">= 10.13.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@nestjs/cli/node_modules/webpack": { + "version": "5.99.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", + "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">= 8" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, + "node_modules/@nestjs/common": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.2.tgz", + "integrity": "sha512-cHh4OPH44PjaHM93D1jgE1HO/B7XTZVRDxy/cPuGgyMEA4p2zXO+qqcOgTMC5FYcp7dX9jLeCjXAU0ToFAnODw==", "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "file-type": "21.0.0", + "iterare": "1.2.1", + "load-esm": "1.0.2", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, + "node_modules/@nestjs/config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz", + "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==", "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "dotenv": "16.4.7", + "dotenv-expand": "12.0.1", + "lodash": "4.17.21" }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" } }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", + "node_modules/@nestjs/config/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", "engines": { - "node": ">=8.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", - "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", - "license": "Apache-2.0", + "node_modules/@nestjs/core": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.2.tgz", + "integrity": "sha512-QRuyxwu0BjNfmmmunsw1ylX7RSyfDQHt+xD+tKncdtgiMOOzAu+LA1gB4WoZnw4frQkk+qZbhEbM61cIjOxD3w==", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@opentelemetry/api": "^1.3.0" + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.2.0", + "tslib": "2.8.1", + "uid": "2.0.2" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", - "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } } }, - "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", - "license": "Apache-2.0", + "node_modules/@nestjs/platform-express": { + "version": "11.1.9", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.9.tgz", + "integrity": "sha512-GVd3+0lO0mJq2m1kl9hDDnVrX3Nd4oH3oDfklz0pZEVEVS0KVSp63ufHq2Lu9cyPdSBuelJr9iPm2QQ1yX+Kmw==", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" + "cors": "2.8.5", + "express": "5.1.0", + "multer": "2.0.2", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" }, - "engines": { - "node": ">=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" } }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node_modules/@nestjs/platform-express/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", - "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", - "license": "Apache-2.0", + "node_modules/@nestjs/schematics": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz", + "integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/api-logs": "0.55.0", - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-exporter-base": "0.55.0", - "@opentelemetry/otlp-transformer": "0.55.0", - "@opentelemetry/sdk-logs": "0.55.0" - }, - "engines": { - "node": ">=14" + "@angular-devkit/core": "19.2.6", + "@angular-devkit/schematics": "19.2.6", + "comment-json": "4.2.5", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "typescript": ">=4.8.2" } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", - "license": "Apache-2.0", + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz", + "integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": ">=14" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz", + "integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.6", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, "engines": { - "node": ">=14" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", - "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", - "license": "Apache-2.0", + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/otlp-exporter-base": "0.55.0", - "@opentelemetry/otlp-transformer": "0.55.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-metrics": "1.28.0" - }, - "engines": { - "node": ">=14" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "node_modules/@nestjs/schematics/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" + "tslib": "^2.1.0" } }, - "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", - "license": "Apache-2.0", + "node_modules/@nestjs/testing": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.2.tgz", + "integrity": "sha512-BQxVKUVW6gzEbbHAvmg5RgcP3s++pRgTCmsgaDF/DtcLRUeKi8SjAdqzLm14xbkMeibxOf3fNqM2iwqUKj8ffw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", + "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", + "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz", + "integrity": "sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/sdk-logs": "0.55.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz", + "integrity": "sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.28.0", + "@opentelemetry/otlp-exporter-base": "0.55.0", + "@opentelemetry/otlp-transformer": "0.55.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" @@ -4391,15 +5439,15 @@ } }, "node_modules/@opentelemetry/host-metrics": { - "version": "0.35.5", - "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.35.5.tgz", - "integrity": "sha512-Zf9Cjl7H6JalspnK5KD1+LLKSVecSinouVctNmUxRy+WP+20KwHq+qg4hADllkEmJ99MZByLLmEmzrr7s92V6g==", + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/host-metrics/-/host-metrics-0.36.2.tgz", + "integrity": "sha512-eMdea86cfIqx3cdFpcKU3StrjqFkQDIVp7NANVnVWO8O6hDw/DBwGwu4Gi1wJCuoQ2JVwKNWQxUTSRheB6O29Q==", "license": "Apache-2.0", "dependencies": { "systeminformation": "5.23.8" }, "engines": { - "node": ">=14" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" @@ -4772,24 +5820,30 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", - "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", + "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", "license": "Apache-2.0", "engines": { "node": ">=14" } }, "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", "dev": true, "license": "MIT", "dependencies": { "@noble/hashes": "^1.1.5" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -4949,9 +6003,9 @@ "license": "BSD-3-Clause" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", - "integrity": "sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", "cpu": [ "arm" ], @@ -4963,9 +6017,9 @@ "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.3.tgz", - "integrity": "sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", "cpu": [ "arm64" ], @@ -4977,9 +6031,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.3.tgz", - "integrity": "sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", "cpu": [ "arm64" ], @@ -4991,9 +6045,9 @@ "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.3.tgz", - "integrity": "sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", "cpu": [ "x64" ], @@ -5005,9 +6059,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.3.tgz", - "integrity": "sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", "cpu": [ "arm64" ], @@ -5019,9 +6073,9 @@ "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.3.tgz", - "integrity": "sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", "cpu": [ "x64" ], @@ -5033,9 +6087,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.3.tgz", - "integrity": "sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", "cpu": [ "arm" ], @@ -5047,9 +6101,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.3.tgz", - "integrity": "sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", "cpu": [ "arm" ], @@ -5061,9 +6115,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.3.tgz", - "integrity": "sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", "cpu": [ "arm64" ], @@ -5075,9 +6129,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.3.tgz", - "integrity": "sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", "cpu": [ "arm64" ], @@ -5089,9 +6143,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.3.tgz", - "integrity": "sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", "cpu": [ "loong64" ], @@ -5103,9 +6157,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.3.tgz", - "integrity": "sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", "cpu": [ "ppc64" ], @@ -5117,9 +6171,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.3.tgz", - "integrity": "sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", "cpu": [ "riscv64" ], @@ -5131,9 +6185,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.3.tgz", - "integrity": "sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", "cpu": [ "riscv64" ], @@ -5145,9 +6199,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.3.tgz", - "integrity": "sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", "cpu": [ "s390x" ], @@ -5159,9 +6213,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.3.tgz", - "integrity": "sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", "cpu": [ "x64" ], @@ -5173,9 +6227,9 @@ "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.3.tgz", - "integrity": "sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", "cpu": [ "x64" ], @@ -5187,9 +6241,9 @@ "peer": true }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.3.tgz", - "integrity": "sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", "cpu": [ "arm64" ], @@ -5201,9 +6255,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.3.tgz", - "integrity": "sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", "cpu": [ "arm64" ], @@ -5215,9 +6269,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.3.tgz", - "integrity": "sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", "cpu": [ "ia32" ], @@ -5229,9 +6283,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.3.tgz", - "integrity": "sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", "cpu": [ "x64" ], @@ -5243,9 +6297,9 @@ "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.3.tgz", - "integrity": "sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", "cpu": [ "x64" ], @@ -5265,128 +6319,860 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip32": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", - "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", - "license": "MIT", + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/starknet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", + "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.7.0", + "@noble/hashes": "~1.6.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", + "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", + "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", + "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", + "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-endpoint": "^4.3.11", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", "dependencies": { - "@noble/curves": "~1.8.1", - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.2" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@noble/curves": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", - "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", - "license": "MIT", + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "1.7.2" + "tslib": "^2.6.2" }, "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", + "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", + "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip32/node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", - "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", - "license": "MIT", + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "~1.7.1", - "@scure/base": "~1.2.4" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39/node_modules/@noble/hashes": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", - "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", - "license": "MIT", + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.21.3 || >=16" + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/bip39/node_modules/@scure/base": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", - "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@scure/starknet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", - "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", - "license": "MIT", + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", "dependencies": { - "@noble/curves": "~1.7.0", - "@noble/hashes": "~1.6.0" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", "dependencies": { - "type-detect": "4.0.8" + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@tokenizer/inflate": { @@ -5423,9 +7209,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "dev": true, "license": "MIT" }, @@ -5579,9 +7365,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz", + "integrity": "sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==", "dev": true, "license": "MIT", "dependencies": { @@ -5660,13 +7446,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { "version": "22.15.29", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", @@ -5741,26 +7520,24 @@ } }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@types/node": "*" } }, "node_modules/@types/stack-utils": { @@ -5801,15 +7578,15 @@ "license": "MIT" }, "node_modules/@types/validator": { - "version": "13.15.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.3.tgz", - "integrity": "sha512-7bcUmDyS6PN3EuD9SlGGOxM77F8WLVsrwkxyWxKnxzmXoequ6c7741QBrANq6htVRGOITJ7z72mTP6Z4XyuG+Q==", + "version": "13.15.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.9.tgz", + "integrity": "sha512-9ENIuq9PUX45M1QRtfJDprgfErED4fBiMPmjlPci4W9WiBelVtHYCjF3xkQNcSnmUeuruLS1kH6hSl5M1vz4Sw==", "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -6422,16 +8199,16 @@ } }, "node_modules/abitype": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", - "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/wevm" }, "peerDependencies": { "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" + "zod": "^3.22.0 || ^4.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -6855,9 +8632,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -7018,9 +8795,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.10.tgz", - "integrity": "sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==", + "version": "2.8.28", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.28.tgz", + "integrity": "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7057,15 +8834,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bintrees": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", @@ -7153,6 +8921,12 @@ "node": ">=0.10.0" } }, + "node_modules/bowser": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -7177,9 +8951,9 @@ } }, "node_modules/browserslist": { - "version": "4.26.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", - "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "dev": true, "funding": [ { @@ -7197,11 +8971,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.3", - "caniuse-lite": "^1.0.30001741", - "electron-to-chromium": "^1.5.218", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -7304,17 +9078,6 @@ "node": ">= 0.8" } }, - "node_modules/c-kzg": { - "version": "4.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/c-kzg/-/c-kzg-4.0.0-alpha.1.tgz", - "integrity": "sha512-I8S9+c6OEaF6mD5OQJ/PylPk8C3TENQqvMomzV4u+NyOTdVOwF/VFj/z2o5OOPt930qkms0AbzXZ+Qu4qQCYxg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^5.0.0" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -7409,9 +9172,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001746", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001746.tgz", - "integrity": "sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -7507,9 +9270,9 @@ } }, "node_modules/chardet": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", - "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, "license": "MIT" }, @@ -7811,9 +9574,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -8390,9 +10153,9 @@ } }, "node_modules/detect-libc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -8546,9 +10309,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.228", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.228.tgz", - "integrity": "sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==", + "version": "1.5.252", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.252.tgz", + "integrity": "sha512-53uTpjtRgS7gjIxZ4qCgFdNO2q+wJt/Z8+xAvxbCqXPJrY6h7ighUkadQmNMXH96crtpa6gPFNP7BF4UBGDuaA==", "dev": true, "license": "ISC" }, @@ -9278,9 +11041,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "funding": [ { "type": "github", @@ -9289,7 +11052,7 @@ ], "license": "MIT", "dependencies": { - "strnum": "^1.1.1" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -9380,12 +11143,6 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -10095,10 +11852,10 @@ "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "license": "ISC", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" }, @@ -10631,9 +12388,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -10856,9 +12613,9 @@ } }, "node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", "funding": [ { "type": "github", @@ -11787,9 +13544,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -11948,6 +13705,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", "dependencies": { "tsscmp": "1.0.6" @@ -11977,9 +13735,9 @@ } }, "node_modules/koa": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.2.tgz", - "integrity": "sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q==", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.3.tgz", + "integrity": "sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g==", "license": "MIT", "dependencies": { "accepts": "^1.3.5", @@ -12142,20 +13900,19 @@ "license": "MIT" }, "node_modules/koa-router": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.1.tgz", - "integrity": "sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-13.1.1.tgz", + "integrity": "sha512-3GxRi7CxEgsfGhdFf4OW4OLv0DFdyNl2drcOCtoezi+LDSnkg0mhr1Iq5Q25R4FJt3Gw6dcAKrcpaCJ7WJfhYg==", "deprecated": "Please use @koa/router instead, starting from v9! ", "license": "MIT", "dependencies": { - "debug": "^4.3.4", + "debug": "^4.4.1", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^6.3.0" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/koa-router/node_modules/path-to-regexp": { @@ -12356,9 +14113,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.23", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.23.tgz", - "integrity": "sha512-RN3q3gImZ91BvRDYjWp7ICz3gRn81mW5L4SW+2afzNCC0I/nkXstBgZThQGTE3S/9q5J90FH4dP+TXx8NhdZKg==", + "version": "1.12.26", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.26.tgz", + "integrity": "sha512-MagMOuqEXB2Pa90cWE+BoCmcKJx+de5uBIicaUkQ+uiEslZ0OBMNOkSZT/36syXNHu68UeayTxPm3DYM2IHoLQ==", "license": "MIT" }, "node_modules/lines-and-columns": { @@ -12369,9 +14126,9 @@ "license": "MIT" }, "node_modules/lmdb": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.2.tgz", - "integrity": "sha512-nwVGUfTBUwJKXd6lRV8pFNfnrCC1+l49ESJRM19t/tFb/97QfJEixe5DYRvug5JO7DSFKoKaVy7oGMt5rVqZvg==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.4.4.tgz", + "integrity": "sha512-+Y2DqovevLkb6DrSQ6SXTYLEd6kvlRbhsxzgJrk7BUfOVA/mt21ak6pFDZDKxiAczHMWxrb02kXBTSTIA0O94A==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -12385,21 +14142,15 @@ "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.4.2", - "@lmdb/lmdb-darwin-x64": "3.4.2", - "@lmdb/lmdb-linux-arm": "3.4.2", - "@lmdb/lmdb-linux-arm64": "3.4.2", - "@lmdb/lmdb-linux-x64": "3.4.2", - "@lmdb/lmdb-win32-arm64": "3.4.2", - "@lmdb/lmdb-win32-x64": "3.4.2" + "@lmdb/lmdb-darwin-arm64": "3.4.4", + "@lmdb/lmdb-darwin-x64": "3.4.4", + "@lmdb/lmdb-linux-arm": "3.4.4", + "@lmdb/lmdb-linux-arm64": "3.4.4", + "@lmdb/lmdb-linux-x64": "3.4.4", + "@lmdb/lmdb-win32-arm64": "3.4.4", + "@lmdb/lmdb-win32-x64": "3.4.4" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "license": "MIT" - }, "node_modules/load-esm": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.2.tgz", @@ -12429,13 +14180,17 @@ } }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/locate-path": { @@ -12547,9 +14302,9 @@ "license": "Apache-2.0" }, "node_modules/lossless-json": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.2.0.tgz", - "integrity": "sha512-bsHH3x+7acZfqokfn9Ks/ej96yF/z6oGGw1aBmXesq4r3fAjhdG4uYuqzDgZMk5g1CZUd5w3kwwIp9K1LOYUiA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.3.0.tgz", + "integrity": "sha512-ToxOC+SsduRmdSuoLZLYAr5zy1Qu7l5XhmPWM3zefCZ5IcrzW/h108qbJUKfOlDlhvhjUK84+8PSVX0kxnit0g==", "license": "MIT" }, "node_modules/loupe": { @@ -12674,6 +14429,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12987,9 +14743,9 @@ "license": "MIT" }, "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "license": "MIT" }, "node_modules/node-emoji": { @@ -13055,16 +14811,16 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.21", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", - "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, "node_modules/node-vault": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.5.tgz", - "integrity": "sha512-sIyB/5296U2tMT7hH1nrkoYUXkRxuLsG40fgUHaBhzM+G/uyBKBo+QNsvKqE5FNq24QJM+tr97N+knLQiEEcSg==", + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/node-vault/-/node-vault-0.10.9.tgz", + "integrity": "sha512-WBZmNt1AuWY0+Yr2A1urZyP94+qciQEEnI4GlhLdO+1kX+4E+w4n0N6CeMh56T5bJ1MIuUpshxtow0h66EaO2w==", "license": "MIT", "dependencies": { "debug": "^4.3.4", @@ -13270,9 +15026,9 @@ "license": "MIT" }, "node_modules/ox": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.7.tgz", - "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz", + "integrity": "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==", "funding": [ { "type": "github", @@ -13281,12 +15037,13 @@ ], "license": "MIT", "dependencies": { - "@adraffy/ens-normalize": "^1.10.1", - "@noble/curves": "^1.6.0", - "@noble/hashes": "^1.5.0", - "@scure/bip32": "^1.5.0", - "@scure/bip39": "^1.4.0", - "abitype": "^1.0.6", + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", "eventemitter3": "5.0.1" }, "peerDependencies": { @@ -13298,6 +15055,39 @@ } } }, + "node_modules/ox/node_modules/@adraffy/ens-normalize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", + "license": "MIT" + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/ox/node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -13435,9 +15225,9 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", @@ -13514,11 +15304,12 @@ } }, "node_modules/pino": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.12.0.tgz", - "integrity": "sha512-0Gd0OezGvqtqMwgYxpL7P0pSHHzTJ0Lx992h+mNlMtRVfNnqweWmf0JmRWk5gJzHalyd2mxTzKjhiNbGS2Ztfw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.14.0.tgz", + "integrity": "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==", "license": "MIT", "dependencies": { + "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", @@ -13527,7 +15318,6 @@ "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "slow-redact": "^0.3.0", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, @@ -13545,9 +15335,9 @@ } }, "node_modules/pino-pretty": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.1.tgz", - "integrity": "sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-13.1.2.tgz", + "integrity": "sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ==", "license": "MIT", "dependencies": { "colorette": "^2.0.7", @@ -13740,9 +15530,9 @@ } }, "node_modules/postman-request": { - "version": "2.88.1-postman.43", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.43.tgz", - "integrity": "sha512-5ivoZnMvnX47/HA7mk2GQubZsnXptlJGVyO0hLV3MTK/MDgJVnB/q3bUgzU4KhwG8OBxe2L8uqv3ZpK6mp+RdA==", + "version": "2.88.1-postman.46", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.46.tgz", + "integrity": "sha512-gcDb2vzjPXRKulfXq3p04H6VJVnMMREK2Nk+eBMhHTC5PQ7PXDp3AejzNAbcpqYR+e9FU09yJ4mYImddNAGG3Q==", "license": "Apache-2.0", "dependencies": { "@postman/form-data": "~3.1.1", @@ -14202,13 +15992,13 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14366,9 +16156,9 @@ } }, "node_modules/rollup": { - "version": "4.52.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.3.tgz", - "integrity": "sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==", + "version": "4.53.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", "license": "MIT", "peer": true, "dependencies": { @@ -14382,28 +16172,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.3", - "@rollup/rollup-android-arm64": "4.52.3", - "@rollup/rollup-darwin-arm64": "4.52.3", - "@rollup/rollup-darwin-x64": "4.52.3", - "@rollup/rollup-freebsd-arm64": "4.52.3", - "@rollup/rollup-freebsd-x64": "4.52.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.3", - "@rollup/rollup-linux-arm-musleabihf": "4.52.3", - "@rollup/rollup-linux-arm64-gnu": "4.52.3", - "@rollup/rollup-linux-arm64-musl": "4.52.3", - "@rollup/rollup-linux-loong64-gnu": "4.52.3", - "@rollup/rollup-linux-ppc64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-gnu": "4.52.3", - "@rollup/rollup-linux-riscv64-musl": "4.52.3", - "@rollup/rollup-linux-s390x-gnu": "4.52.3", - "@rollup/rollup-linux-x64-gnu": "4.52.3", - "@rollup/rollup-linux-x64-musl": "4.52.3", - "@rollup/rollup-openharmony-arm64": "4.52.3", - "@rollup/rollup-win32-arm64-msvc": "4.52.3", - "@rollup/rollup-win32-ia32-msvc": "4.52.3", - "@rollup/rollup-win32-x64-gnu": "4.52.3", - "@rollup/rollup-win32-x64-msvc": "4.52.3", + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" } }, @@ -14528,9 +16318,9 @@ } }, "node_modules/secure-json-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", - "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", "funding": [ { "type": "github", @@ -14544,9 +16334,9 @@ "license": "BSD-3-Clause" }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14603,9 +16393,9 @@ } }, "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", "license": "MIT" }, "node_modules/setprototypeof": { @@ -14761,12 +16551,6 @@ "node": ">=8" } }, - "node_modules/slow-redact": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/slow-redact/-/slow-redact-0.3.0.tgz", - "integrity": "sha512-cf723wn9JeRIYP9tdtd86GuqoR5937u64Io+CYjlm2i7jvu7g0H+Cp0l0ShAf/4ZL+ISUTVT+8Qzz7RZmp9FjA==", - "license": "MIT" - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -14960,9 +16744,9 @@ } }, "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "license": "MIT", "peer": true }, @@ -15194,9 +16978,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "funding": [ { "type": "github", @@ -15387,9 +17171,9 @@ } }, "node_modules/tapable": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", - "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, "license": "MIT", "engines": { @@ -15464,9 +17248,9 @@ } }, "node_modules/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "devOptional": true, "license": "BSD-2-Clause", "dependencies": { @@ -15588,9 +17372,9 @@ "license": "MIT" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "dependencies": { @@ -16270,9 +18054,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "dev": true, "funding": [ { @@ -16358,9 +18142,9 @@ } }, "node_modules/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "version": "13.15.23", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.23.tgz", + "integrity": "sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -16396,9 +18180,10 @@ "license": "MIT" }, "node_modules/viem": { - "version": "2.23.7", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.7.tgz", - "integrity": "sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A==", + "name": "@spalladino/viem", + "version": "2.38.2-eip7594.0", + "resolved": "https://registry.npmjs.org/@spalladino/viem/-/viem-2.38.2-eip7594.0.tgz", + "integrity": "sha512-1gwcB0wxqUoSuzbwTafhqLOeNPWOaIKkSUUvzgsg5gBDOXDxA8tPJWUXBFFdr640maizWRjTbP9GLuLzgMeSuQ==", "funding": [ { "type": "github", @@ -16407,14 +18192,14 @@ ], "license": "MIT", "dependencies": { - "@noble/curves": "1.8.1", - "@noble/hashes": "1.7.1", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "abitype": "1.0.8", - "isows": "1.0.6", - "ox": "0.6.7", - "ws": "8.18.0" + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.1.0", + "isows": "1.0.7", + "ox": "0.9.6", + "ws": "8.18.3" }, "peerDependencies": { "typescript": ">=5.0.4" @@ -16426,12 +18211,12 @@ } }, "node_modules/viem/node_modules/@noble/curves": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", - "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "dependencies": { - "@noble/hashes": "1.7.1" + "@noble/hashes": "1.8.0" }, "engines": { "node": "^14.21.3 || >=16" @@ -16441,9 +18226,9 @@ } }, "node_modules/viem/node_modules/@noble/hashes": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", - "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -16452,31 +18237,10 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/viem/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/vite": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", - "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", "peer": true, "dependencies": { @@ -16688,9 +18452,9 @@ "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.102.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", - "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", + "version": "5.102.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz", + "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", "dev": true, "license": "MIT", "peer": true, @@ -16703,7 +18467,7 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.5", + "browserslist": "^4.26.3", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", @@ -16715,8 +18479,8 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.2.3", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" @@ -16868,9 +18632,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "peer": true, diff --git a/treasury/package.json b/treasury/package.json index e287548e..838e1cd4 100644 --- a/treasury/package.json +++ b/treasury/package.json @@ -18,11 +18,12 @@ "test:e2e": "jest --config ./e2e/jest-e2e.json" }, "dependencies": { - "@aztec/accounts": "^2.0.3", - "@aztec/aztec.js": "^2.0.3", - "@aztec/kv-store": "^2.0.3", - "@aztec/noir-contracts.js": "^2.0.3", - "@aztec/pxe": "^2.0.3", + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/bb-prover": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/test-wallet": "3.0.0-devnet.2", "@nestjs/common": "11.1.2", "@nestjs/config": "^4.0.2", "@nestjs/core": "11.1.2", diff --git a/treasury/src/treasury/aztec/ABIs/train.json b/treasury/src/treasury/aztec/ABIs/train.json index 2d7a5b87..5e3fe559 100644 --- a/treasury/src/treasury/aztec/ABIs/train.json +++ b/treasury/src/treasury/aztec/ABIs/train.json @@ -1,33 +1,603 @@ { - "transpiled": true, - "noir_version": "1.0.0-beta.11+5b65f9637e85a4177692c3190cb35ea678fb15e9-aztec", - "name": "Train", + "file_map": { + "100": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", + "source": "use super::utils::compute_fn_selector;\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse protocol_types::meta::utils::get_params_len_quote;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let params_len_quote = get_params_len_quote(parameters);\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $params_len_quote] = dep::aztec::context::public_context::calldata_copy(1, $params_len_quote);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[external(\"public\")]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" + }, + "104": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", + "source": "//! Stubs are auto-generated wrapper functions that provide an ergonomic interface for cross-contract calls.\n//! Instead of manually serializing arguments and creating call interfaces, stubs allow natural syntax, e.g. for\n//! enqueuing calls to public functions:\n//!\n//! ExternalContract.at(address).some_method(arg1, arg2).enqueue()\n\nuse crate::macros::utils::{AsStrQuote, compute_fn_selector, is_fn_view};\nuse super::stub_registry;\nuse protocol_types::meta::utils::derive_serialization_quotes;\nuse std::meta::unquote;\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\npub comptime fn register_private_fn_stub(f: FunctionDefinition) {\n let stub = if is_fn_view(f) {\n create_private_static_stub(f)\n } else {\n create_private_stub(f)\n };\n stub_registry::register(f.module(), stub);\n}\n\npub comptime fn register_public_fn_stub(f: FunctionDefinition) {\n let stub = if is_fn_view(f) {\n create_public_static_stub(f)\n } else {\n create_public_stub(f)\n };\n stub_registry::register(f.module(), stub);\n}\n\npub comptime fn register_utility_fn_stub(f: FunctionDefinition) {\n let stub = create_utility_stub(f);\n stub_registry::register(f.module(), stub);\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, Quoted, u32, Field) {\n // Dear privacy adventurer,\n // Chances are, you've command+clicked on the name of an external function\n // call -- seeking to view that function -- only to end up here.\n // Here's an explanation:\n // The external contract that you're calling was likely annotated with the `#[aztec]`\n // annotation -- as all good aztec contracts are. This triggers a macro which generates\n // a \"contract interface\" for that contract, which is effectively a pretty interface\n // that gives natural contract calling semantics:\n //\n // `MyImportedContract.at(some_address).my_method(arg1, arg2).enqueue();\n //\n // Unfortunately, the usage of macros makes it a bit of a black box.\n // To actually view the target function, you could instead command+click on\n // `MyImportedContract`, or you can just manually search it.\n // If you want to view the noir code that gets generated by this macro, you can\n // use `nargo expand` on your contract.\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n\n let (serialized_args_array_construction, _, serialized_args_array_name) =\n derive_serialization_quotes(fn_parameters, false);\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, serialized_args_array_name,\n fn_name_str, fn_name_len, fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, serialized_args_array_name, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $serialized_args_array_name,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, serialized_args_array_name, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $serialized_args_array_name,\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, serialized_args_array_name, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $serialized_args_array_name,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, serialized_args_array_name, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $serialized_args_array_name,\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, serialized_args_array_name, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $serialized_args_array_name,\n )\n }\n }\n}\n" + }, + "105": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\n// Used by `create_mark_as_initialized` (you won't find it through searching)\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\n// Used by `create_mark_as_initialized` (you won't find it through searching)\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\n// Used by `create_init_check` (you won't find it through searching)\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\n// Used by `create_init_check` (you won't find it through searching)\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\n// Used by `create_assert_correct_initializer_args` (you won't find it through searching)\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender().unwrap()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n// Used by `create_assert_correct_initializer_args` (you won't find it through searching)\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender().unwrap()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" + }, + "108": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", + "source": "use crate::macros::{\n functions::{\n auth_registry::AUTHORIZE_ONCE_REGISTRY,\n call_interface_stubs::{\n register_private_fn_stub, register_public_fn_stub, register_utility_fn_stub,\n },\n },\n notes::NOTES,\n utils::{\n fn_has_authorize_once, fn_has_noinitcheck, is_fn_contract_library_method, is_fn_external,\n is_fn_initializer, is_fn_internal, is_fn_test, is_fn_view, modify_fn_body,\n module_has_initializer, module_has_storage,\n },\n};\nuse dep::protocol_types::meta::utils::derive_serialization_quotes;\nuse std::meta::{ctstring::AsCtString, type_of};\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) {\n register_private_fn_stub(f);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n let (args_serialization, _, serialized_args_name) =\n derive_serialization_quotes(original_params, false);\n\n let context_creation = quote {\n $args_serialization\n let args_hash = dep::aztec::hash::hash_args_array($serialized_args_name);\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, args_hash);\n };\n\n let function_name = f.name();\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n let assertion_message = f\"Function {function_name} can only be called internally\";\n quote { assert(context.msg_sender().unwrap() == context.this_address(), $assertion_message); }\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n let assertion_message =\n f\"Function {function_name} can only be called statically\".as_ctstring().as_quoted_str();\n quote { assert(context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (\n quote { aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_private(context); },\n quote { aztec::macros::functions::initialization_utils::mark_as_initialized_private(&mut context); },\n )\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n quote { aztec::macros::functions::initialization_utils::assert_is_initialized_private(&mut context); }\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f, true)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is serialized and hashed before being passed to the context.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n\n let (return_serialization, _, serialized_return_name) =\n derive_serialization_quotes([(return_value_var_name, return_value_type)], false);\n\n body = body_without_return;\n\n quote {\n $return_value_assignment\n $return_serialization\n context.set_return_hash($serialized_return_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n $authorize_once_check\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) {\n register_public_fn_stub(f);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n\n let args_len_quote = if original_params.len() == 0 {\n // If the function has no parameters, we set the args_len to 0.\n quote { 0 }\n } else {\n // The following will give us ::N + ::N + ...\n original_params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::protocol_types::traits::Serialize>::N\n }\n })\n .join(quote {+})\n };\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len_quote] = dep::aztec::context::public_context::calldata_copy(1, $args_len_quote);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n let name = f.name();\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender().unwrap() == context.this_address(), $assertion_message); }\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n let name = f.name();\n let assertion_message =\n f\"Function {name} can only be called statically\".as_ctstring().as_quoted_str();\n quote { assert(context.is_static_call(), $assertion_message); }\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (\n quote { aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_public(context); },\n quote { aztec::macros::functions::initialization_utils::mark_as_initialized_public(&mut context); },\n )\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n quote { aztec::macros::functions::initialization_utils::assert_is_initialized_public(&mut context); }\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f, false)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $authorize_once_check\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) {\n register_utility_fn_stub(f);\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage(f.module()) {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Injects an authwit verification check of the form:\n/// ```\n/// if (!from.eq(context.msg_sender().unwrap())) {\n/// assert_current_call_valid_authwit::(&mut context, from);\n/// } else {\n/// assert(authwit_nonce, \"Invalid authwit nonce. When 'from' and 'msg_sender' are the same, authwit_nonce must be zero\");\n/// }\n/// ```\n/// where `from` and `authwit_nonce` are the names of the parameters that are expected to be present in the function definition.\n/// This check is injected by the `#[authorize_once(\"from_arg_name\", \"nonce_arg_name\")]`, which allows the user to define\n/// which parameters to use.\n///\n/// # Arguments\n/// * `f` - The function definition to inject the authwit verification check into. The function must have parameters\n/// matching the names specified in the `#[authorize_once]` attribute.\n/// * `is_private` - Whether the function is a private function (`true`) or a public function (`false`). This determines\n/// which authwit verification method to use: `assert_current_call_valid_authwit` for private functions\n/// or `assert_current_call_valid_authwit_public` for public functions.\npub(crate) comptime fn create_authorize_once_check(\n f: FunctionDefinition,\n is_private: bool,\n) -> Quoted {\n let maybe_authorize_once_args = AUTHORIZE_ONCE_REGISTRY.get(f);\n let authorize_once_args = if maybe_authorize_once_args.is_some() {\n maybe_authorize_once_args.unwrap()\n } else {\n // We need to for authorize_once to have already executed so that we can retrieve its params - this depends on\n // the order in which the attributes are applied.\n panic(\n f\"Functions marked with #[authorize_once] must have the #[external(\\\"private\\\")] or #[external(\\\"public\\\")] attribute placed last\",\n )\n };\n\n let (from_arg_name, nonce_arg_name) = authorize_once_args;\n let name: Quoted = f.name();\n\n let from_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{from_arg_name}\".quoted_contents());\n let (from_arg_name_quoted, from_arg_type) = if from_arg_candidates.len() == 1 {\n from_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {from_arg_name} parameter. Please specify which one to use in #[authorize_once(\\\"...\\\", \\\"authwit_nonce\\\")]\",\n )\n };\n if from_arg_type\n != quote { dep::protocol_types::address::aztec_address::AztecAddress }.as_type() {\n panic(\n f\"Argument {from_arg_name_quoted} in function {name} must be of type AztecAddress, but is of type {from_arg_type}\",\n )\n }\n\n let nonce_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{nonce_arg_name}\".quoted_contents());\n let (nonce_arg_name_quoted, nonce_arg_type) = if nonce_arg_candidates.len() == 1 {\n nonce_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {nonce_arg_name}. Please specify which one to use in #[authorize_once(\\\"from\\\", \\\"...\\\")]\",\n )\n };\n if nonce_arg_type != quote { Field }.as_type() {\n panic(\n f\"Argument {nonce_arg_name_quoted} in function {name} must be of type Field, but is of type {nonce_arg_type}\",\n );\n }\n\n let nonce_check_quote = f\"{nonce_arg_name_quoted} == 0\".quoted_contents();\n\n let fn_call = if is_private {\n // At this point, the original args of the fn have already been altered by the macro\n // to include PrivateContextInputs, so we need to adjust the args_len accordingly.\n let args_len = f.parameters().len() - 1;\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit::<$args_len> }\n } else {\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit_public }\n };\n let invalid_nonce_message = f\"Invalid authwit nonce. When '{from_arg_name}' and 'msg_sender' are the same, '{nonce_arg_name}' must be zero\"\n .as_ctstring()\n .as_quoted_str();\n quote { \n if (!$from_arg_name_quoted.eq(context.msg_sender().unwrap())) {\n $fn_call(&mut context, $from_arg_name_quoted);\n } else {\n assert($nonce_check_quote, $invalid_nonce_message);\n }\n }\n}\n\n/// Checks if each function in the module is marked with either #[external(...)], #[contract_library_method], or #[test].\n/// Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_external(f) & !is_fn_contract_library_method(f) & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[external(...)], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" + }, + "110": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", + "source": "use crate::note::note_getter_options::PropertySelector;\nuse std::{collections::bounded_vec::BoundedVec, meta::{ctstring::AsCtString, type_of}};\n\n/// Maximum number of note types within 1 contract.\ncomptime global MAX_NOTE_TYPES: u32 = 128;\n\n/// A BoundedVec containing all the note types within this contract.\npub comptime mut global NOTES: BoundedVec = BoundedVec::new();\n\ncomptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < MAX_NOTE_TYPES,\n f\"A contract can contain at most {MAX_NOTE_TYPES} different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_type_impl(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n let typ = s.as_type();\n let note_type_name: str<_> = f\"{name}\".as_ctstring().as_quoted_str!();\n let max_note_packed_len = crate::messages::discovery::private_notes::MAX_NOTE_PACKED_LEN;\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n // This static assertion ensures the note's packed length doesn't exceed the maximum allowed size.\n // While this check would ideally live in the Packable trait implementation, we place it here since\n // this function is always generated by our macros and the Packable trait implementation is not.\n // Note: We set the note type name and max packed length as local variables because injecting them\n // directly into the error message doesn't work.\n let note_type_name = $note_type_name;\n let max_note_packed_len: u32 = $max_note_packed_len; // Casting to u32 to avoid the value to be printed in hex.\n let note_packed_len = <$typ as Packable>::N;\n std::static_assert(note_packed_len <= $max_note_packed_len, f\"{note_type_name} has a packed length of {note_packed_len} fields, which exceeds the maximum allowed length of {max_note_packed_len} fields\");\n\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullification: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullification: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::traits::Packable::pack(self).concat( [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::context::PrivateContext,\n note_hash_for_nullification: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullification, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullification: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullification, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates the core note functionality for a struct:\n///\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - NoteHash trait implementation: Handles note hash and nullifier computation\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Have an `owner` field\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Generated Code\n///\n/// For detailed documentation on the generated implementations, see:\n/// - `generate_note_properties()`\n/// - `generate_note_type_impl()`\n/// - `generate_note_hash_trait_impl()`\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n\n quote {\n $note_properties\n $note_type_impl\n $note_hash_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// Unlike the `#[note]` macro, there is no requirement for an `owner` field.\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_type_id = get_next_note_type_id();\n let note_properties = generate_note_properties(s);\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n\n quote {\n $note_properties\n $note_type_impl\n }\n}\n\n/// Asserts that the given note implements the `Packable` trait.\n///\n/// We require that notes have the `Packable` trait implemented because it is used when emitting a note in a log or as\n/// an offchain message.\ncomptime fn assert_has_packable(note: TypeDefinition) {\n let packable_constraint =\n quote { crate::protocol_types::traits::Packable }.as_trait_constraint();\n let note_name = note.name();\n\n assert(\n note.as_type().implements(packable_constraint),\n f\"{note_name} does not implement Packable trait. Either implement it manually or place #[derive(Packable)] on the note struct before #[note] macro invocation.\",\n );\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n let note_name = note.name();\n\n assert(\n has_owner,\n f\"{note_name} does not have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" + }, + "111": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", + "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields = storage_layout_fields.push_back(\n quote { pub $name: dep::aztec::state_vars::storage::Storable },\n );\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::state_vars::storage::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" + }, + "113": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", + "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{\n private_notes::MAX_NOTE_PACKED_LEN, process_message::process_message_ciphertext,\n },\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullification = aztec::note::utils::compute_note_hash_for_nullification(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullification);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\npub type ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private logs are downloaded and inspected to find new private\n/// notes, partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Note that the state is synchronized up to the latest block synchronized by PXE. That should be close to the chain\n/// tip as block synchronization is performed before contract function simulation is done.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n process_message_ciphertext(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" + }, + "114": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", + "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullification,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullification = compute_note_hash_for_nullification(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullification);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(\n compute_note_hash_for_nullification(retrieved_note, STORAGE_SLOT),\n );\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" + }, + "115": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", + "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" + }, + "116": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", + "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__EVENT_COMMITMENT,\n hash::poseidon2_hash_with_separator_bounded_vec, traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" + }, + "117": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", + "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" + }, + "118": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", + "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::{decode_message, MESSAGE_CIPHERTEXT_LEN, MESSAGE_PLAINTEXT_LEN},\n encryption::{aes128::AES128, message_encryption::MessageEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn process_message_ciphertext(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n process_message_plaintext(\n contract_address,\n compute_note_hash_and_nullifier,\n AES128::decrypt(message_ciphertext, message_context.recipient),\n message_context,\n );\n}\n\npub unconstrained fn process_message_plaintext(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_plaintext: BoundedVec,\n message_context: MessageContext,\n) {\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message_plaintext);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" + }, + "119": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", + "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::utils::array;\nuse protocol_types::constants::PRIVATE_LOG_CIPHERTEXT_LEN;\n\n// We reassign to the constant here to communicate the distinction between a log and a message. In Aztec.nr, unlike in\n// protocol circuits, we have a concept of a message that can be emitted either as a private log or as an offchain\n// message. Message is a piece of data that is to be eventually delivered to a contract via the `process_message(...)`\n// utility function function that is injected by the #[aztec] macro.\npub global MESSAGE_CIPHERTEXT_LEN: u32 = PRIVATE_LOG_CIPHERTEXT_LEN;\n\n// TODO(#12750): The global variables below should not be here as they are AES128 specific.\n// ciphertext_length (2) + 14 bytes pkcs#7 AES padding.\npub(crate) global HEADER_CIPHERTEXT_SIZE_IN_BYTES: u32 = 16;\n\npub global EPH_PK_X_SIZE_IN_FIELDS: u32 = 1;\npub global EPH_PK_SIGN_BYTE_SIZE_IN_BYTES: u32 = 1;\n\n// (17 - 1) * 31 - 16 - 1 = 479\nglobal MESSAGE_PLAINTEXT_SIZE_IN_BYTES: u32 = (MESSAGE_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS)\n * 31\n - HEADER_CIPHERTEXT_SIZE_IN_BYTES\n - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES;\n// Each field of the original note log was serialized to 32 bytes. Below we convert the bytes back to fields.\n// 479 / 32 = 15\npub global MESSAGE_PLAINTEXT_LEN: u32 = MESSAGE_PLAINTEXT_SIZE_IN_BYTES / 32;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MESSAGE_PLAINTEXT_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" + }, + "12": { + "path": "std/convert.nr", + "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u16 {\n fn from(value: u8) -> u16 {\n value as u16\n }\n}\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u32 {\n fn from(value: u16) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u16) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u16) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u16) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i16 {\n fn from(value: i8) -> i16 {\n value as i16\n }\n}\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i32 {\n fn from(value: i16) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i16) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u16 {\n fn from(value: bool) -> u16 {\n value as u16\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for u128 {\n fn from(value: bool) -> u128 {\n value as u128\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i16 {\n fn from(value: bool) -> i16 {\n value as i16\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n\n let u_types =\n [quote { bool }, quote { u8 }, quote { u16 }, quote { u32 }, quote { u64 }, quote { u128 }];\n\n for type2 in u_types {\n let body = quote { self as Field };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive for $type2 {\n fn as_(self) -> Field {\n $body\n }\n }\n },\n );\n }\n\n for type1 in u_types {\n let body = if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for Field {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n\n impls.join(quote {})\n}\n" + }, + "120": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", + "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2},\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encoding::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, MESSAGE_CIPHERTEXT_LEN, MESSAGE_PLAINTEXT_LEN,\n },\n encryption::message_encryption::MessageEncryption,\n logs::arithmetic_generics_utils::{\n get_arr_of_size__message_bytes__from_PT,\n get_arr_of_size__message_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\n/**\n * Computes N close-to-uniformly-random 256 bits from a given ECDH shared_secret.\n *\n * NEVER re-use the same iv and sym_key.\n * DO NOT call this function more than once with the same shared_secret.\n *\n * This function is only known to be safe if shared_secret is computed by combining a \n * random ephemeral key with an address point. See big comment within the body of the function.\n * See big comment within the body of the function.\n */\nfn extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [[u8; 32]; N] {\n /*\n * Unsafe because of https://eprint.iacr.org/2010/264.pdf Page 13, Lemma 2 (and the * two paragraphs below it).\n *\n * If you call this function, you need to be careful and aware of how the arg\n * `shared_secret` has been derived.\n *\n * The paper says that the way you derive aes keys and IVs should be fine with poseidon2\n * (modelled as a RO), as long as you _don't_ use Poseidon2 as a PRG to generate the * two exponents x & y which multiply to the shared secret S:\n *\n * S = [x*y]*G.\n *\n * (Otherwise, you would have to \"key\" poseidon2, i.e. generate a uniformly string K\n * which can be public and compute Hash(x) as poseidon(K,x)).\n * In that lemma, k would be 2*254=508, and m would be the number of points on the * grumpkin curve (which is close to r according to the Hasse bound).\n *\n * Our shared secret S is [esk * address_sk] * G, and the question is: * Can we compute hash(S) using poseidon2 instead of sha256?\n *\n * Well, esk is random and not generated with poseidon2, so that's good.\n * What about address_sk?\n * Well, address_sk = poseidon2(stuff) + ivsk, so there was some\n * discussion about whether address_sk is independent of poseidon2.\n * Given that ivsk is random and independent of poseidon2, the address_sk is also\n * independent of poseidon2.\n *\n * Tl;dr: we believe it's safe to hash S = [esk * address_sk] * G using poseidon2,\n * in order to derive a symmetric key.\n *\n * If you're calling this function for a differently-derived `shared_secret`, be\n * careful.\n *\n */\n\n /* The output of this function needs to be 32 random bytes.\n * A single field won't give us 32 bytes of entropy.\n * So we compute two \"random\" fields, by poseidon-hashing with two different\n * generators.\n * We then extract the last 16 (big endian) bytes of each \"random\" field.\n * Note: we use to_be_bytes because it's slightly more efficient. But we have to\n * be careful not to take bytes from the \"big end\", because the \"big\" byte is\n * not uniformly random over the byte: it only has < 6 bits of randomness, because\n * it's the big end of a 254-bit field element.\n */\n\n let mut all_bytes: [[u8; 32]; N] = std::mem::zeroed();\n // We restrict N to be < 2^8, because of how we compute the domain separator\n // from k below (where k <= N must be 8 bits). In practice, it's extremely\n // unlikely that an app will want to compute >= 256 ciphertexts.\n std::static_assert(N < 256, \"N too large\");\n for k in 0..N {\n // We augment the domain separator with the loop index, so that we can\n // generate N lots of randomness.\n let k_shift = (k as u16 << 8);\n let separator_1 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY as u16;\n let separator_2 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY_2 as u16;\n\n let rand1: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_1);\n let rand2: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_2);\n\n let rand1_bytes: [u8; 32] = rand1.to_be_bytes();\n let rand2_bytes: [u8; 32] = rand2.to_be_bytes();\n\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n // We take bytes from the \"little end\" of the be-bytes arrays:\n let j = 32 - i - 1;\n bytes[i] = rand1_bytes[j];\n bytes[16 + i] = rand2_bytes[j];\n }\n\n all_bytes[k] = bytes;\n }\n\n all_bytes\n}\n\nfn derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(\n many_random_256_bits: [[u8; 32]; N],\n) -> [([u8; 16], [u8; 16]); N] {\n // Many (sym_key, iv) pairs:\n let mut many_pairs: [([u8; 16], [u8; 16]); N] = std::mem::zeroed();\n for k in 0..N {\n let random_256_bits = many_random_256_bits[k];\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n many_pairs[k] = (sym_key, iv);\n }\n\n many_pairs\n}\n\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [([u8; 16], [u8; 16]); N] {\n let many_random_256_bits: [[u8; 32]; N] = extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret,\n );\n\n derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(many_random_256_bits)\n}\n\npub struct AES128 {}\n\nimpl MessageEncryption for AES128 {\n fn encrypt(\n plaintext: [Field; PlaintextLen],\n recipient: AztecAddress,\n ) -> [Field; MESSAGE_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the message in `do_process_message`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n // TODO (#17158): Currently we unwrap the Option returned by derive_ecdh_shared_secret_using_aztec_address.\n // We need to handle the case where the ephemeral public key is invalid to prevent potential DoS vectors.\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient).unwrap();\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n // It is safe to call the `unsafe` function here, because we know the `shared_secret`\n // was derived using an AztecAddress (the recipient). See the block comment\n // at the start of this unsafe target function for more info.\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, body_iv, body_sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n std::static_assert(\n ciphertext_bytes.len() == 16 * (1 + (PlaintextLen * 32) / 16),\n \"unexpected ciphertext length\",\n );\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, header_iv, header_sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n std::static_assert(\n header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES,\n \"unexpected ciphertext header length\",\n );\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut message_bytes_padding_to_mult_31 =\n get_arr_of_size__message_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n message_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut message_bytes = get_arr_of_size__message_bytes__from_PT::();\n\n std::static_assert(\n message_bytes.len() % 31 == 0,\n \"Unexpected error: message_bytes.len() should be divisible by 31, by construction.\",\n );\n\n message_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n message_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n message_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..message_bytes_padding_to_mult_31.len() {\n message_bytes[offset + i] = message_bytes_padding_to_mult_31[i];\n }\n offset += message_bytes_padding_to_mult_31.len();\n\n // Ideally we would be able to have a static assert where we check that the offset would be such that we've\n // written to the entire log_bytes array, but we cannot since Noir does not treat the offset as a comptime\n // value (despite the values that it goes through being known at each stage). We instead check that the\n // computation used to obtain the offset computes the expected value (which we _can_ do in a static check), and\n // then add a cheap runtime check to also validate that the offset matches this.\n std::static_assert(\n 1\n + header_ciphertext_bytes.len()\n + ciphertext_bytes.len()\n + message_bytes_padding_to_mult_31.len()\n == message_bytes.len(),\n \"unexpected message length\",\n );\n assert(offset == message_bytes.len(), \"unexpected encrypted message length\");\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make messages produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let message_bytes_as_fields = bytes_to_fields(message_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final message\n // *****************************************************************************\n\n let mut ciphertext: [Field; MESSAGE_CIPHERTEXT_LEN] = [0; MESSAGE_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..message_bytes_as_fields.len() {\n ciphertext[offset + i] = message_bytes_as_fields[i];\n }\n offset += message_bytes_as_fields.len();\n\n for i in offset..MESSAGE_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the message\n // (all the \"real\" message fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the message to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret\n // TODO(#17158): handle invalid ephemeral keys when decrypting to prevent DoS vectors\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk.unwrap());\n\n // Derive symmetric keys:\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with messages with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext =\n aes128_decrypt_oracle(header_ciphertext_bvec, header_iv, header_sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (MESSAGE_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, body_iv, body_sym_key);\n\n // Each field of the original note message was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::{\n encoding::MESSAGE_PLAINTEXT_LEN, encryption::message_encryption::MessageEncryption,\n },\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{address::AztecAddress, traits::FromField};\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt() {\n let env = TestEnvironment::new();\n\n // Message decryption requires oracles that are only available during private execution\n env.private_context(|_| {\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"privateGetNextAppTagAsSender\").returns(42);\n\n // Encrypt the message\n let encrypted_message = BoundedVec::from_array(AES128::encrypt(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n\n let _ = OracleMock::mock(\"utilityGetSharedSecret\").returns(shared_secret.unwrap());\n\n // Decrypt the message\n let decrypted = AES128::decrypt(encrypted_message, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with messages with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec = BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(\n decrypted,\n plaintext_bvec,\n \"Decrypted bytes should match original plaintext\",\n );\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n });\n }\n}\n" + }, + "128": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", + "source": "use crate::oracle::notes::{get_next_app_tag_as_sender, get_sender_for_tags};\nuse dep::protocol_types::address::AztecAddress;\n\n// TODO(#14565): Add constrained tagging\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe {\n let sender = get_sender_for_tags().expect(\n f\"Sender for tags is not set when emitting a private log. Set it by calling `set_sender_for_tags(...)`.\",\n );\n get_next_app_tag_as_sender(sender, recipient)\n };\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{address::AztecAddress, traits::FromField};\n use std::test::OracleMock;\n\n #[test(should_fail)]\n unconstrained fn no_tag_sender() {\n let recipient = AztecAddress::from_field(2);\n\n let expected_tag = 42;\n\n // Mock the tagging oracles - note privateGetSenderForTags returns none\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::::none());\n let _ = OracleMock::mock(\"privateGetNextAppTagAsSender\").returns(expected_tag);\n\n let log_without_tag = [1, 2, 3];\n let _ = prefix_with_tag(log_without_tag, recipient);\n }\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let expected_tag = 42;\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::some(sender));\n let _ = OracleMock::mock(\"privateGetNextAppTagAsSender\").returns(expected_tag);\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, recipient);\n\n let expected_result = [expected_tag, 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" + }, + "137": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", + "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" + }, + "142": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", + "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{\n compute_note_hash_for_nullification_from_read_request, compute_note_hash_for_read_request,\n },\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter, context)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullification = compute_note_hash_for_nullification_from_read_request(\n retrieved_note,\n note_hash_for_read_request,\n );\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullification);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullification\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" + }, + "144": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", + "source": "use crate::{\n context::PrivateContext,\n messages::{\n encryption::{aes128::AES128, message_encryption::MessageEncryption},\n logs::{note::private_note_to_message_plaintext, utils::prefix_with_tag},\n message_delivery::MessageDelivery,\n offchain_messages::emit_offchain_message,\n },\n note::note_interface::NoteType,\n utils::remove_constraints::remove_constraints_if,\n};\nuse protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct NoteEmissionContent {\n // The struct fields are exposed only because of tests.\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\n/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub content: NoteEmissionContent,\n\n // NoteEmission is expected to be constructed when a note is created, which means that the `context` object will be\n // in scope. By storing a reference to it inside this object we remove the need for its methods to receive it,\n // resulting in a cleaner end-user API.\n context: &mut PrivateContext,\n}\n\nimpl NoteEmission\nwhere\n Note: NoteType + Packable,\n{\n pub fn new(\n note: Note,\n storage_slot: Field,\n note_hash_counter: u32,\n context: &mut PrivateContext,\n ) -> Self {\n Self { content: NoteEmissionContent { note, storage_slot, note_hash_counter }, context }\n }\n\n /// Emits a note that can be delivered either via private logs or offchain messages, with configurable encryption and\n /// tagging constraints.\n ///\n /// # Arguments\n /// * `self` - The note emission to emit\n /// * `recipient` - The address that should receive this note\n /// * `delivery_mode` - Controls encryption, tagging, and delivery constraints. Must be a compile-time constant.\n /// See `MessageDeliveryEnum` for details on the available modes.\n pub fn emit(self, recipient: AztecAddress, delivery_mode: u8) {\n // This function relies on `delivery_mode` being a constant in order to reduce circuit constraints when unconstrained\n // usage is requested. If `delivery_mode` were a runtime value then performance would suffer.\n assert_constant(delivery_mode);\n\n // The following maps out the 3 dimensions across which we configure message delivery.\n let constrained_encryption = delivery_mode == MessageDelivery.CONSTRAINED_ONCHAIN;\n let emit_as_offchain_message = delivery_mode == MessageDelivery.UNCONSTRAINED_OFFCHAIN;\n // TODO(#14565): Add constrained tagging\n let _constrained_tagging = delivery_mode == MessageDelivery.CONSTRAINED_ONCHAIN;\n\n let ciphertext = remove_constraints_if(\n !constrained_encryption,\n || AES128::encrypt(\n private_note_to_message_plaintext(self.content.note, self.content.storage_slot),\n recipient,\n ),\n );\n\n if emit_as_offchain_message {\n emit_offchain_message(ciphertext, recipient);\n } else {\n // Safety: Currently unsafe. See description of CONSTRAINED_ONCHAIN in MessageDeliveryEnum.\n // TODO(#14565): Implement proper constrained tag prefixing to make this truly CONSTRAINED_ONCHAIN\n let log_content = prefix_with_tag(ciphertext, recipient);\n\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = log_content.len();\n self.context.emit_raw_note_log(log_content, length, self.content.note_hash_counter);\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n pub content_option: Option>,\n\n // OuterNoteEmission is expected to be constructed when a note is created, which means that the `context` object\n // will be in scope. By storing a reference to it inside this object we remove the need for its methods to receive\n // it, resulting in a cleaner end-user API.\n context: &mut PrivateContext,\n}\n\nimpl OuterNoteEmission\nwhere\n Note: NoteType + Packable,\n{\n pub fn new(\n content_option: Option>,\n context: &mut PrivateContext,\n ) -> Self {\n Self { content_option, context }\n }\n\n pub fn emit(self, recipient: AztecAddress, delivery_mode: u8) {\n if self.content_option.is_some() {\n NoteEmission { content: self.content_option.unwrap_unchecked(), context: self.context }\n .emit(recipient, delivery_mode);\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" + }, + "146": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { view_note::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PreprocessorArgs) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PreprocessorArgs,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; M];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\npub unconstrained fn view_note(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\")\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" + }, + "149": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", + "source": "use protocol_types::traits::{Deserialize, Packable, Serialize};\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Deserialize, Eq, Serialize, Packable)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" + }, + "152": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", + "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullification(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullification_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullification`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullification_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullification =\n compute_note_hash_for_nullification(retrieved_note, storage_slot);\n let inner_nullifier =\n retrieved_note.note.compute_nullifier(context, note_hash_for_nullification);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" + }, + "156": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(privateCallPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" + }, + "157": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", + "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle(contract_address, slot, ::N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(utilityStoreCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(utilityLoadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(utilityDeleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(utilityCopyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n });\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n });\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n });\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n copy(contract_address, SLOT, SLOT, 1);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n });\n }\n}\n" + }, + "158": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", + "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(privateNotifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(privateNotifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(privateNotifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" + }, + "159": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", + "source": "use crate::context::utility_context::UtilityContext;\n\n#[oracle(utilityGetUtilityContext)]\nunconstrained fn get_utility_context_oracle() -> UtilityContext {}\n\n/// Returns a utility context built from the global variables of anchor block and the contract address of the function\n/// being executed.\npub unconstrained fn get_utility_context() -> UtilityContext {\n get_utility_context_oracle()\n}\n" + }, + "16": { + "path": "std/embedded_curve_ops.nr", + "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars, true)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n let mut result = if double_predicate {\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n embedded_curve_add_unsafe(point1, point1)\n } else {\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n // therefore we only want to do this if we need the result, otherwise it needs to be eliminated as a dead instruction, lest we want the circuit to fail.\n embedded_curve_add_unsafe(point1_1, point2_1)\n };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n _predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2, true)[0]\n}\n" + }, + "160": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", + "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(privateStoreInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(privateLoadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" + }, + "161": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", + "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(utilityGetContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" + }, + "165": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", + "source": "use protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\nuse protocol_types::traits::{Deserialize, Serialize};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(utilityGetPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" + }, + "166": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", + "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(utilityGetKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" + }, + "167": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(utilityGetPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" + }, + "169": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", + "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(utilityFetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(utilityValidateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(utilityBulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" + }, + "17": { + "path": "std/field/bn254.nr", + "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n\n #[test]\n fn check_decompose_edge_cases() {\n assert_eq(decompose(0), (0, 0));\n assert_eq(decompose(TWO_POW_128 - 1), (TWO_POW_128 - 1, 0));\n assert_eq(decompose(TWO_POW_128 + 1), (1, 1));\n assert_eq(decompose(TWO_POW_128 * 2), (0, 2));\n assert_eq(decompose(TWO_POW_128 * 2 + 0x1234567890), (0x1234567890, 2));\n }\n\n #[test]\n fn check_decompose_large_values() {\n let large_field = 0xffffffffffffffff;\n let (lo, hi) = decompose(large_field);\n assert_eq(large_field, lo + TWO_POW_128 * hi);\n\n let large_value = large_field - TWO_POW_128;\n let (lo2, hi2) = decompose(large_value);\n assert_eq(large_value, lo2 + TWO_POW_128 * hi2);\n }\n\n #[test]\n fn check_lt_comprehensive() {\n assert(lt(0, 1));\n assert(!lt(1, 0));\n assert(!lt(0, 0));\n assert(!lt(42, 42));\n\n assert(lt(TWO_POW_128 - 1, TWO_POW_128));\n assert(!lt(TWO_POW_128, TWO_POW_128 - 1));\n }\n}\n" + }, + "171": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", + "source": "use crate::note::{note_interface::NoteType, retrieved_note::RetrievedNote};\n\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(privateNotifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(privateNotifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(privateNotifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(utilityGetNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to as Packable>::N. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; as Packable>::N], MaxNotes>\nwhere\n // TODO(https://github.com/noir-lang/noir/issues/9399): `Note: Packable` should work here.\n RetrievedNote: Packable,\n{}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MaxNotes]\nwhere\n Note: NoteType + Packable,\n{\n let packed_retrieved_notes: BoundedVec<[Field; as Packable>::N], MaxNotes>\n = get_notes_oracle::(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MaxNotes,\n as Packable>::N,\n );\n\n let mut notes = BoundedVec::<_, MaxNotes>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = RetrievedNote::unpack(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MaxNotes];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(utilityCheckNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n// TODO: Oracles below are generic private log oracles and are not specific to notes. Move them somewhere else.\n\n/// Returns the next app tag for a given sender and recipient pair.\n///\n/// This also notifies the simulator that a tag has been used in a note, and to therefore increment the\n/// associated index so that future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub unconstrained fn get_next_app_tag_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> Field {\n get_next_app_tag_as_sender_oracle(sender, recipient)\n}\n\n#[oracle(privateGetNextAppTagAsSender)]\nunconstrained fn get_next_app_tag_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> Field {}\n\n/// Gets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// The value persists through nested calls, meaning all calls down the stack will use the same\n/// 'senderForTags' value (unless it is replaced).\npub unconstrained fn get_sender_for_tags() -> Option {\n get_sender_for_tags_oracle()\n}\n\n#[oracle(privateGetSenderForTags)]\nunconstrained fn get_sender_for_tags_oracle() -> Option {}\n\n/// Sets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// Account contracts typically set this value before calling other contracts. The value persists\n/// through nested calls, meaning all calls down the stack will use the same 'senderForTags'\n/// value (unless it is replaced by another call to this setter).\npub unconstrained fn set_sender_for_tags(sender_for_tags: AztecAddress) {\n set_sender_for_tags_oracle(sender_for_tags);\n}\n\n#[oracle(privateSetSenderForTags)]\nunconstrained fn set_sender_for_tags_oracle(_sender_for_tags: AztecAddress) {}\n" + }, + "173": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", + "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(utilityGetRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" + }, + "174": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", + "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(utilityGetSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" + }, + "175": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", + "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(utilityStorageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" + }, + "176": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/oracle/version.nr", + "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called and\n/// if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 3;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(utilityAssertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. TXE is using version '3', but got a request for '318183437'.\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n" + }, + "179": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/state_vars/delayed_public_mutable.nr", + "source": "use dep::protocol_types::{\n delayed_public_mutable::{\n delayed_public_mutable_values::{unpack_delay_change, unpack_value_change},\n DelayedPublicMutableValues,\n ScheduledDelayChange,\n ScheduledValueChange,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::HasStorageSlot,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct DelayedPublicMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M + 1` storage\n// slots to this state variable.\nimpl HasStorageSlot for DelayedPublicMutable\nwhere\n DelayedPublicMutableValues: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// DelayedPublicMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. DelayedPublicMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to InitialDelay, but can be changed by calling\n// `schedule_delay_change`.\nimpl DelayedPublicMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(self, new_value: T) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::::N>(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`DelayedPublicMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private delayed public mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(DelayedPublicMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, anchor_timestamp) = self.anchor_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the anchor block's timestamp as this\n // one also takes into consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by\n // scheduling immediately after the anchor block's timestamp, i.e. at timestamp `x + 1`. But if there was\n // a delay change scheduled for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value\n // change was scheduled at timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier\n // than what we'd expect if we only considered the current delay.\n let effective_minimum_delay = delay_change.get_effective_minimum_delay_at(anchor_timestamp);\n let time_horizon = value_change.get_time_horizon(anchor_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the time horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(time_horizon);\n\n value_change.get_current_at(anchor_timestamp)\n }\n\n fn anchor_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_anchor_block_header();\n let address = self.context.this_address();\n\n let anchor_timestamp = header.global_variables.timestamp;\n\n let values: DelayedPublicMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, anchor_timestamp)\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let dpmv: DelayedPublicMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n dpmv.svc.get_current_at(current_timestamp)\n }\n}\n" + }, + "18": { + "path": "std/field/mod.nr", + "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime, static_assert};\n use super::{\n field_less_than, modulus_be_bits, modulus_be_bytes, modulus_le_bits, modulus_le_bytes,\n };\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // Updated test to account for Brillig restriction that radix must be greater than 2\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_brillig_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 1;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n\n #[test]\n unconstrained fn test_large_field_values_unconstrained() {\n let large_field = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_field.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_field.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_field);\n\n let radix_bytes: [u8; 8] = large_field.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_field);\n }\n\n #[test]\n fn test_large_field_values() {\n let large_val = 0xffffffffffffffff;\n\n let bits: [u1; 64] = large_val.to_le_bits();\n assert_eq(bits[0], 1);\n\n let bytes: [u8; 8] = large_val.to_le_bytes();\n assert_eq(Field::from_le_bytes::<8>(bytes), large_val);\n\n let radix_bytes: [u8; 8] = large_val.to_le_radix(256);\n assert_eq(Field::from_le_bytes::<8>(radix_bytes), large_val);\n }\n\n #[test]\n fn test_decomposition_edge_cases() {\n let zero_bits: [u1; 8] = 0.to_le_bits();\n assert_eq(zero_bits, [0; 8]);\n\n let zero_bytes: [u8; 8] = 0.to_le_bytes();\n assert_eq(zero_bytes, [0; 8]);\n\n let one_bits: [u1; 8] = 1.to_le_bits();\n let expected: [u1; 8] = [1, 0, 0, 0, 0, 0, 0, 0];\n assert_eq(one_bits, expected);\n\n let pow2_bits: [u1; 8] = 4.to_le_bits();\n let expected: [u1; 8] = [0, 0, 1, 0, 0, 0, 0, 0];\n assert_eq(pow2_bits, expected);\n }\n\n #[test]\n fn test_pow_32() {\n assert_eq(2.pow_32(3), 8);\n assert_eq(3.pow_32(2), 9);\n assert_eq(5.pow_32(0), 1);\n assert_eq(7.pow_32(1), 7);\n\n assert_eq(2.pow_32(10), 1024);\n\n assert_eq(0.pow_32(5), 0);\n assert_eq(0.pow_32(0), 1);\n\n assert_eq(1.pow_32(100), 1);\n }\n\n #[test]\n fn test_sgn0() {\n assert_eq(0.sgn0(), 0);\n assert_eq(2.sgn0(), 0);\n assert_eq(4.sgn0(), 0);\n assert_eq(100.sgn0(), 0);\n\n assert_eq(1.sgn0(), 1);\n assert_eq(3.sgn0(), 1);\n assert_eq(5.sgn0(), 1);\n assert_eq(101.sgn0(), 1);\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 8 limbs\")]\n fn test_bit_decomposition_overflow() {\n // 8 bits can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u1; 8] = large_val.to_le_bits();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 4 limbs\")]\n fn test_byte_decomposition_overflow() {\n // 4 bytes can't represent large field values\n let large_val = 0x1000000000000000;\n let _: [u8; 4] = large_val.to_le_bytes();\n }\n\n #[test]\n fn test_to_from_be_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 BE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_minus_1_bytes[32 - 1] > 0);\n p_minus_1_bytes[32 - 1] -= 1;\n\n let p_minus_1 = Field::from_be_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_be_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 BE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_be_bytes().as_array();\n assert(p_plus_1_bytes[32 - 1] < 255);\n p_plus_1_bytes[32 - 1] += 1;\n\n let p_plus_1 = Field::from_be_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 BE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_be_bytes();\n assert_eq(p_plus_1_converted_bytes[32 - 1], 1);\n p_plus_1_converted_bytes[32 - 1] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_be_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_be_bytes().len(), 32);\n let p = Field::from_be_bytes::<32>(modulus_be_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 BE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_be_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n #[test]\n fn test_to_from_le_bytes_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this byte produces the expected 32 LE bytes for (modulus - 1)\n let mut p_minus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_minus_1_bytes[0] > 0);\n p_minus_1_bytes[0] -= 1;\n\n let p_minus_1 = Field::from_le_bytes::<32>(p_minus_1_bytes);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 32 BE bytes produces the same bytes\n let p_minus_1_converted_bytes: [u8; 32] = p_minus_1.to_le_bytes();\n assert_eq(p_minus_1_converted_bytes, p_minus_1_bytes);\n\n // checking that incrementing this byte produces 32 LE bytes for (modulus + 1)\n let mut p_plus_1_bytes: [u8; 32] = modulus_le_bytes().as_array();\n assert(p_plus_1_bytes[0] < 255);\n p_plus_1_bytes[0] += 1;\n\n let p_plus_1 = Field::from_le_bytes::<32>(p_plus_1_bytes);\n assert_eq(p_plus_1, 1);\n\n // checking that converting p_plus_1 to 32 LE bytes produces the same\n // byte set to 1 as p_plus_1_bytes and otherwise zeroes\n let mut p_plus_1_converted_bytes: [u8; 32] = p_plus_1.to_le_bytes();\n assert_eq(p_plus_1_converted_bytes[0], 1);\n p_plus_1_converted_bytes[0] = 0;\n assert_eq(p_plus_1_converted_bytes, [0; 32]);\n\n // checking that Field::from_le_bytes::<32> on the Field modulus produces 0\n assert_eq(modulus_le_bytes().len(), 32);\n let p = Field::from_le_bytes::<32>(modulus_le_bytes().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 32 LE bytes produces 32 zeroes\n let p_bytes: [u8; 32] = 0.to_le_bytes();\n assert_eq(p_bytes, [0; 32]);\n }\n }\n\n /// Convert a little endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_le_bits(bits: [u1; N]) -> Field {\n static_assert(\n N <= modulus_le_bits().len(),\n \"N must be less than or equal to modulus_le_bits().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n /// Convert a big endian bit array to a field element.\n /// If the provided bit array overflows the field modulus then the Field will silently wrap around.\n fn from_be_bits(bits: [u1; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bits[N - 1 - i] as Field) * v;\n v = v * 2;\n }\n result\n }\n\n #[test]\n fn test_to_from_be_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 BE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_minus_1_bits[254 - 1] > 0);\n p_minus_1_bits[254 - 1] -= 1;\n\n let p_minus_1 = from_be_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_be_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 BE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_be_bits().as_array();\n assert(p_plus_4_bits[254 - 3] < 1);\n p_plus_4_bits[254 - 3] += 1;\n\n let p_plus_4 = from_be_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 BE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_be_bits();\n assert_eq(p_plus_4_converted_bits[254 - 3], 1);\n p_plus_4_converted_bits[254 - 3] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_be_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_be_bits().len(), 254);\n let p = from_be_bits::<254>(modulus_be_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 BE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_be_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n\n #[test]\n fn test_to_from_le_bits_bn254_edge_cases() {\n if crate::compat::is_bn254() {\n // checking that decrementing this bit produces the expected 254 LE bits for (modulus - 1)\n let mut p_minus_1_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_minus_1_bits[0] > 0);\n p_minus_1_bits[0] -= 1;\n\n let p_minus_1 = from_le_bits::<254>(p_minus_1_bits);\n assert_eq(p_minus_1 + 1, 0);\n\n // checking that converting (modulus - 1) from and then to 254 BE bits produces the same bits\n let p_minus_1_converted_bits: [u1; 254] = p_minus_1.to_le_bits();\n assert_eq(p_minus_1_converted_bits, p_minus_1_bits);\n\n // checking that incrementing this bit produces 254 LE bits for (modulus + 4)\n let mut p_plus_4_bits: [u1; 254] = modulus_le_bits().as_array();\n assert(p_plus_4_bits[2] < 1);\n p_plus_4_bits[2] += 1;\n\n let p_plus_4 = from_le_bits::<254>(p_plus_4_bits);\n assert_eq(p_plus_4, 4);\n\n // checking that converting p_plus_4 to 254 LE bits produces the same\n // bit set to 1 as p_plus_4_bits and otherwise zeroes\n let mut p_plus_4_converted_bits: [u1; 254] = p_plus_4.to_le_bits();\n assert_eq(p_plus_4_converted_bits[2], 1);\n p_plus_4_converted_bits[2] = 0;\n assert_eq(p_plus_4_converted_bits, [0; 254]);\n\n // checking that Field::from_le_bits::<254> on the Field modulus produces 0\n assert_eq(modulus_le_bits().len(), 254);\n let p = from_le_bits::<254>(modulus_le_bits().as_array());\n assert_eq(p, 0);\n\n // checking that converting 0 to 254 LE bytes produces 254 zeroes\n let p_bits: [u1; 254] = 0.to_le_bits();\n assert_eq(p_bits, [0; 254]);\n }\n }\n}\n" + }, + "180": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", + "source": "use crate::state_vars::storage::HasStorageSlot;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n/// Map\n///\n/// A key-value storage container that maps keys to state variables, similar\n/// to Solidity mappings.\n///\n/// `Map` enables you to associate keys (like addresses or other identifiers)\n/// with state variables in your Aztec smart contract. This is conceptually\n/// similar to Solidity's `mapping(K => V)` syntax, where you can store and\n/// retrieve values by their associated keys.\n///\n/// You can declare a state variable contained within a Map in your contract's\n/// #[storage] struct.\n///\n/// For example, you might use\n/// `Map, Context>` to track\n/// token balances for different users, similar to how you'd use\n/// `mapping(address => uint256)` in Solidity.\n///\n/// > Aside: the verbose `Context` in the declaration is a consequence of\n/// > leveraging Noir's regular syntax for generics to ensure that certain\n/// > state variable methods can only be called in some contexts (private,\n/// > public, utility).\n///\n/// The methods of Map are:\n/// - `at` (access state variable for a given key)\n/// (see the method's own doc comments for more info).\n///\n/// ## Generic Parameters\n/// - `K`: The key type (must implement `ToField` trait for hashing)\n/// - `V`: The value type:\n/// - any Aztec state variable:\n/// - `PublicMutable`\n/// - `PublicImmutable`\n/// - `PrivateMutable`\n/// - `PrivateImmutable`\n/// - `PrivateSet`\n/// - `DelayedPublicMutable`\n/// - `Map`\n/// - `Context`: The execution context (handles private/public function\n/// contexts)\n///\n/// ## Usage\n/// Maps are typically declared in your contract's #[storage] struct and\n/// accessed\n/// using the `at(key)` method to get the state variable for a specific key.\n/// The resulting state variable can then be read from or written to using its\n/// own methods.\n///\n/// ## Advanced\n/// Internally, `Map` uses a single base storage slot to represent the\n/// mapping\n/// itself, similar to Solidity's approach. Individual key-value pairs are\n/// stored at derived storage slots computed by hashing the base storage\n/// slot\n/// with the key using Poseidon2. This ensures:\n/// - No storage slot collisions between different keys\n/// - Uniform distribution of storage slots across the storage space\n/// - Compatibility with Aztec's storage tree structure\n/// - Gas-efficient storage access patterns similar to Solidity mappings\n///\n/// The storage slot derivation uses `derive_storage_slot_in_map(base_slot,\n/// key)` which computes `poseidon2_hash([base_slot, key.to_field()])`,\n/// ensuring cryptographically secure slot separation.\n///\n/// docs:start:map\npub struct Map {\n pub context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n\n// Map reserves a single storage slot regardless of what it stores because\n// nothing is stored at said slot: it is only used to derive the storage slots\n// of nested state variables, which is expected to never result in collisions\n// or slots being close to one another due to these being hashes. This mirrors\n// the strategy adopted by Solidity mappings.\nimpl HasStorageSlot<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n /// Initializes a new Map state variable.\n ///\n /// This function is usually automatically called within the #[storage]\n /// macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`.\n /// The Context determines which methods of this struct will\n /// be made available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this Map within the contract.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart\n /// contract dev shouldn't have to worry about this, as\n /// it's managed behind the scenes.\n /// * `state_var_constructor` - A function that creates the value type (V)\n /// given a context and storage slot. This is\n /// typically the constructor of the state\n /// variable type being stored in the Map.\n ///\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n\n /// Returns the state variable associated with the given key.\n ///\n /// This is equivalent to accessing `mapping[key]` in Solidity. It returns\n /// the state variable instance for the specified key, which can then be\n /// used to read or write the value at that key.\n ///\n /// Unlike Solidity mappings which return the value directly, this returns\n /// the state variable wrapper (like PrivateMutable, PublicMutable, etc.)\n /// that you then call methods on to interact with the actual value.\n ///\n /// # Arguments\n ///\n /// * `key` - The key to look up in the map. Must implement the ToField\n /// trait (which most basic Noir & Aztec types do).\n ///\n /// # Returns\n ///\n /// * `V` - The state variable instance for this key. You can then call\n /// methods like `.read()`, `.write()`, `.get_note()`, etc. on this\n /// depending on the specific state variable type.\n ///\n /// # Example\n ///\n /// ```noir\n /// // Get a user's balance (assuming PrivateMutable)\n /// let user_balance = storage.balances.at(user_address);\n /// let current_note = user_balance.get_note();\n ///\n /// // Update the balance\n /// user_balance.replace(new_note);\n /// ```\n ///\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n}\n" + }, + "182": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", + "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::HasStorageSlot;\n\n/// PrivateImmutable\n///\n/// PrivateImmutable is a private state variable type for values that are set once\n/// and remain permanently unchanged.\n///\n/// You can declare a state variable of type PrivateImmutable within your contract's\n/// #[storage] struct:\n///\n/// E.g.:\n/// `your_variable: PrivateImmutable`\n///\n/// The value is represented as a single note that persists for the lifetime of\n/// the state variable. Once initialized, this note is never nullified or replaced\n/// through the state variable interface - it can only be read.\n///\n/// The PrivateImmutable type facilitates: inserting the permanent note during\n/// initialization, and reading that note.\n///\n/// The methods of PrivateImmutable are:\n/// - `initialize`\n/// - `get_note`\n/// (see the methods' own doc comments for more info).\n///\n/// ## Example.\n///\n/// A contract's configuration parameters can be represented as a PrivateImmutable.\n/// Once set during contract deployment or initial setup, these parameters remain\n/// constant for the lifetime of the contract.\n///\n/// ## Privacy\n///\n/// PrivateImmutable has the same privacy properties as PrivateMutable (see\n/// PrivateMutable documentation), including the same privacy considerations\n/// regarding the initialization nullifier potentially leaking information about\n/// which storage slot was initialized.\n///\n/// # Generic Parameters:\n///\n/// * `Note` - A single note of this type will represent the PrivateImmutable's\n/// value at the given storage_slot.\n/// * `Context` - The execution context (PrivateContext or UtilityContext).\n///\n/// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl HasStorageSlot<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a new PrivateImmutable state variable.\n ///\n /// This function is usually automatically called within the #[storage] macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`. The\n /// Context determines which methods of this struct will be made\n /// available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this state variable within the\n /// contract. The permanent note for this PrivateImmutable\n /// state variable will have this `storage_slot`.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart contract\n /// dev shouldn't have to worry about this, as it's managed\n /// behind the scenes.\n ///\n /// docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n\n /// Computes the nullifier that will be created when this PrivateImmutable is\n /// initialized.\n ///\n /// This function is primarily used internally by the `initialize` method, but\n /// may also be useful for contracts that need to check if a PrivateImmutable\n /// has been initialized.\n ///\n /// **IMPORTANT PRIVACY CONSIDERATION:**\n /// This computation has the same privacy implications as PrivateMutable's\n /// initialization nullifier (see PrivateMutable documentation for detailed\n /// explanation). The initialization nullifier can leak information about which\n /// storage slot was initialized.\n ///\n /// See https://github.com/AztecProtocol/aztec-packages/issues/15568 for ideas to\n /// improve this privacy footgun in future.\n ///\n /// # Returns\n ///\n /// * `Field` - The nullifier that will be emitted when this PrivateImmutable is\n /// initialized.\n ///\n /// # Advanced\n ///\n /// The computation uses the Poseidon2 hash function with a specific generator\n /// index to hash the storage slot, creating a deterministic nullifier based on\n /// the storage location.\n ///\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a PrivateImmutable state variable instance with a permanent note.\n ///\n /// This function inserts the single, permanent note for this state variable. It can\n /// only be called once per PrivateImmutable. Subsequent calls will fail because\n /// the initialization nullifier will already exist.\n ///\n /// Unlike PrivateMutable, this note will never be nullified or replaced through\n /// the state variable interface - it persists for the lifetime of the state variable.\n ///\n /// # Arguments\n ///\n /// * `note` - The permanent note to store in this PrivateImmutable. This note\n /// contains the unchanging value of the state variable.\n ///\n /// # Returns\n ///\n /// * `NoteEmission` - A type-safe wrapper that requires you to decide\n /// whether to encrypt and send the note to someone.\n /// You can call `.emit()` on it to encrypt and log\n /// the note, or `.discard()` to skip emission.\n /// See NoteEmission for more details.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Creates and emits an initialization nullifier to mark this storage slot\n /// as initialized. This prevents double-initialization.\n /// - Inserts the provided note into the protocol's Note Hash Tree.\n /// - Returns a NoteEmission type that allows the caller to decide how to encrypt\n /// and deliver the note to its intended recipient.\n ///\n /// The initialization nullifier is deterministically computed from the storage\n /// slot and can leak privacy information (see `compute_initialization_nullifier`\n /// documentation).\n ///\n /// docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n\n /// Reads the permanent note of a PrivateImmutable state variable instance.\n ///\n /// If this PrivateImmutable state variable has not yet been initialized,\n /// no note will exist: the call will fail and the transaction will not\n /// be provable.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Retrieves the note from the PXE via an oracle call\n /// - Validates that the note exists and belongs to this contract address and\n /// storage slot by pushing a read request to the context\n /// - Returns the note content directly without nullification\n ///\n /// Since the note is immutable, there's no risk of reading stale data or\n /// race conditions - the note never changes after initialization.\n ///\n /// docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n /// Checks whether this PrivateImmutable has been initialized.\n ///\n /// # Returns\n ///\n /// * `bool` - `true` if the PrivateImmutable has been initialized (the initialization\n /// nullifier exists), `false` otherwise.\n ///\n /// docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n\n /// Returns the permanent note in this PrivateImmutable without consuming it.\n ///\n /// This function is only available in a UtilityContext (unconstrained environment)\n /// and is typically used for offchain queries, view functions, or testing.\n ///\n /// Unlike the constrained `get_note()`, this function does not push read requests\n /// or perform validation. It simply reads the note from the PXE's database.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::::N>::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n}\n" + }, + "19": { + "path": "std/hash/mod.nr", + "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{\n if crate::runtime::is_unconstrained() {\n // Temporary measure while Barretenberg is main proving system.\n // Please open an issue if you're working on another proving system and running into problems due to this.\n crate::static_assert(\n N <= 1024,\n \"Barretenberg cannot prove blake3 hashes with inputs larger than 1024 bytes\",\n );\n }\n __blake3(input)\n}\n\n#[foreign(blake3)]\nfn __blake3(input: [u8; N]) -> [u8; 32] {}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars, true)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn poseidon2_permutation(input: [Field; N], state_len: u32) -> [Field; N] {\n assert_eq(input.len(), state_len);\n poseidon2_permutation_internal(input)\n}\n\n#[foreign(poseidon2_permutation)]\nfn poseidon2_permutation_internal(input: [Field; N]) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n type H = H;\n\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u8 as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u16 as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u32 as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u64 as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n" + }, + "210": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", + "source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" + }, + "213": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", + "source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" + }, + "214": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", + "source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" + }, + "216": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", + "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" + }, + "217": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", + "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" + }, + "220": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", + "source": "use protocol_types::{point::Point, utils::field::sqrt};\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there\n/// is no corresponding y value in the field that satisfies the curve equation), it may not be\n/// possible to reconstruct a `Point`. `Option::none()` is returned in such cases.\npub fn point_from_x_coord(x: Field) -> Option {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n sqrt(rhs).map(|y| Point { x, y, is_infinite: false })\n}\n\n/// Returns a `Point` in the Grumpkin curve given its x coordinate and sign for the y coordinate.\n///\n/// Because not all values in the field are valid x coordinates of points in the curve (i.e. there\n/// is no corresponding y value in the field that satisfies the curve equation), it may not be\n/// possible to reconstruct a `Point`. `Option::none()` is returned in such cases.\n///\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Option {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n\n sqrt(rhs).map(|y| {\n // If there is a square root, we need to ensure it has the correct \"sign\"\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n Point { x, y: final_y, is_infinite: false }\n })\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord, point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n use dep::protocol_types::utils::field::pow;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign).unwrap();\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2).unwrap();\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_valid() {\n // x = 8 is a known quadratic residue - should give a valid point\n let result = point_from_x_coord(Field::from(8));\n assert(result.is_some());\n\n let point = result.unwrap();\n assert_eq(point.x, Field::from(8));\n // Check curve equation y^2 = x^3 - 17\n assert_eq(pow(point.y, 2), pow(point.x, 3) - 17);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_invalid() {\n // x = 3 is a non-residue for this curve - should give None\n let x = Field::from(3);\n let maybe_point = point_from_x_coord(x);\n assert(maybe_point.is_none());\n }\n\n}\n" + }, + "221": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", + "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" + }, + "222": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/remove_constraints.nr", + "source": "/// Calls a function and returns its return value, but removes any constraints associated with calling the function,\n/// behaving as if the function was unconstrained.\npub unconstrained fn remove_constraints(f: fn[Env]() -> T) -> T {\n f()\n}\n\n/// Calls a function and returns its return value, removing any constraints associated with calling the function if\n/// `condition` is true, behaving as if the function was unconstrained.\n///\n/// Requires `condition` to be a compile time constant.\npub fn remove_constraints_if(condition: bool, f: fn[Env]() -> T) -> T {\n // If `condition` is not a compile-time constant, then the compiler won't optimize away the branch not taken in the\n // if statement below, and we may end up with constraints for `f` regardless of the runtime value of `condition`.\n assert_constant(condition);\n\n if condition {\n // Safety: the purpose of this function is to execute `f` with no constraints when `condition` is true.\n unsafe {\n remove_constraints(f)\n }\n } else {\n f()\n }\n}\n\nmod test {\n use super::remove_constraints;\n\n fn return_unit() -> () {\n ()\n }\n\n fn return_field() -> Field {\n 5\n }\n\n #[test]\n fn returns_unit() {\n let expected = return_unit();\n // Safety: this is a test\n let actual = unsafe { remove_constraints(|| return_unit()) };\n assert_eq(actual, expected);\n }\n\n #[test]\n fn returns_original_value() {\n let expected = return_field();\n // Safety: this is a test\n let actual = unsafe { remove_constraints(|| return_field()) };\n assert_eq(actual, expected);\n }\n\n #[test]\n unconstrained fn returns_unit_unconstrained() {\n let expected = return_unit();\n let actual = remove_constraints(|| return_unit());\n assert_eq(actual, expected);\n }\n\n #[test]\n unconstrained fn returns_original_value_unconstrained() {\n let expected = return_field();\n let actual = remove_constraints(|| return_field());\n assert_eq(actual, expected);\n }\n}\n" + }, + "224": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", + "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `M` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `M`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; M],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + M as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\n// Note: I don't derive Packable on `WithHash` because `derive_serialize` function does not support setting \"N = M\"\n// as I do here 3 lines below. This could be worked around by placing the \"where\" clause directly on the `WithHash`\n// struct, but Jake mentioned that the syntax is not expected to be supported at least until Noir 1.0.\n// Relevant discussion on Slack:\n// https://aztecprotocol.slack.com/archives/C04QF64EDNV/p1752593876160699?thread_ts=1752589887.955379&cid=C04QF64EDNV\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n let N: u32 = M + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n result[i] = self.packed[i];\n }\n result[M] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n let mut value_packed = [0; M];\n for i in 0..M {\n value_packed[i] = packed[i];\n }\n let hash = packed[M];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::test::OracleMock;\n\n global STORAGE_SLOT: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.anchor_block_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n\n assert_eq(result, std::mem::zeroed());\n });\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n env.public_context(|context| { context.storage_write(STORAGE_SLOT, value_with_hash); });\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.anchor_block_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n assert_eq(result, value);\n });\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn bad_hint_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let block_header = context.anchor_block_header;\n let address = context.this_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n let _ = OracleMock::mock(\"utilityStorageRead\")\n .with_params((\n address.to_field(), STORAGE_SLOT, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should fail because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n STORAGE_SLOT,\n );\n });\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn bad_hint_initialized_value() {\n let env = TestEnvironment::new();\n\n env.public_context(|context| {\n // Write the value and hash separately so that the hash is wrong\n let value = MockStruct { a: 5, b: 3 };\n context.storage_write(STORAGE_SLOT, value);\n\n let incorrect_hash = 13;\n let hash_storage_slot = STORAGE_SLOT + (value.pack().len() as Field);\n context.storage_write(hash_storage_slot, [incorrect_hash]);\n });\n\n env.private_context(|context| {\n let _ = WithHash::::historical_public_storage_read(\n context.anchor_block_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n });\n }\n}\n" + }, + "231": { + "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", + "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" + }, + "253": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", + "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\nuse std::meta::derive;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct FunctionSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n pub inner: u32,\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" + }, + "294": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", + "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n /// Returns an address's `AddressPoint`, which can be used to create shared secrets with the owner\n /// of the address. If the address is invalid (i.e. it is not a properly derived Aztec address), then this\n /// returns `Option::none()`, and no shared secrets can be created.\n pub fn to_address_point(self) -> Option {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // An invalid AztecAddress is one for which no y coordinate satisfies the curve equation, which we'll\n // identify by proving that the square root of y_squared does not exist.\n let mut y_opt = sqrt(y_squared);\n if y_opt.is_none() {\n Option::none()\n } else {\n let mut y = y_opt.unwrap();\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n Option::some(\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } },\n )\n }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n\n#[test]\nfn to_address_point_valid() {\n // x = 8 where x^3 - 17 = 512 - 17 = 495, which is a residue in this field\n let address = AztecAddress { inner: 8 };\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_some());\n\n let point = maybe_point.unwrap().inner;\n // check that x is preserved\n assert_eq(point.x, Field::from(8));\n\n // check that the curve equation holds: y^2 == x^3 - 17\n assert_eq(pow(point.y, 2), pow(point.x, 3) - 17);\n}\n\n#[test]\nunconstrained fn to_address_point_invalid() {\n // x = 3 where x^3 - 17 = 27 - 17 = 10, which is a non-residue in this field\n let address = AztecAddress { inner: 3 }; //\n let maybe_point = address.to_address_point();\n assert(maybe_point.is_none());\n}\n" + }, + "3": { + "path": "std/array/mod.nr", + "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" + }, + "307": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", + "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Deserialize, Empty, Hash, Serialize},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: Field,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: Field) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" + }, + "309": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", + "source": "// TODO: Expose other wrapped functions than debug (info, warn)\n// ['silent', 'fatal', 'error', 'warn', 'info', 'verbose', 'debug', 'trace']\n\npub global SILENT_LOG_LEVEL: u8 = 0;\npub global FATAL_LOG_LEVEL: u8 = 1;\npub global ERROR_LOG_LEVEL: u8 = 2;\npub global WARN_LOG_LEVEL: u8 = 3;\npub global INFO_LOG_LEVEL: u8 = 4;\npub global VERBOSE_LOG_LEVEL: u8 = 5;\npub global DEBUG_LOG_LEVEL: u8 = 6;\npub global TRACE_LOG_LEVEL: u8 = 7;\n\n/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Same as debug_log, but allows to customize the log level.\n/// Consider changing just to 'log'\npub fn debug_log_with_level(log_level: u8, msg: str) {\n debug_log_format_with_level(log_level, msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(DEBUG_LOG_LEVEL, msg, args) };\n}\n\n/// Same as debug_log_format, but allows to customize the log level.\n/// Consider changing just to 'log_format'\npub fn debug_log_format_with_level(\n log_level: u8,\n msg: str,\n args: [Field; N],\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_array_oracle_wrapper(log_level, msg, args) };\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` slice.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole slice: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format_slice(log_level: u8, msg: str, args: [Field]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_slice_oracle_wrapper(log_level, msg, args) };\n}\n\n// We provide two versions of the debug log oracle: one that takes args as a slice and another one that takes args as an array.\n// We do this since conversion from array to slice generates overhead in public functions, since opcodes need to be emitted for the conversion.\n// By exposing the two flavors, we avoid conversions since the AVM is able to handle both arrays an slices in this oracle.\n\nunconstrained fn debug_log_slice_oracle_wrapper(\n log_level: u8,\n msg: str,\n args: [Field],\n) {\n debug_log_slice_oracle(log_level, msg, args);\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_slice_oracle(log_level: u8, msg: str, args: [Field]) {}\n\nunconstrained fn debug_log_array_oracle_wrapper(\n log_level: u8,\n msg: str,\n args: [Field; N],\n) {\n debug_log_array_oracle(log_level, msg, N, args);\n}\n\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_array_oracle(\n log_level: u8,\n msg: str,\n length: u32,\n args: [Field; N],\n) {}\n" + }, + "311": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr", + "source": "use crate::{\n delayed_public_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n hash::poseidon2_hash,\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// DelayedPublicMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct DelayedPublicMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl DelayedPublicMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n DelayedPublicMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * M + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, M + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n let N: u32 = 2 * ::N + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result = [0; Self::N];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..::N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + ::N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" + }, + "314": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_delay_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp. It only returns a meaningful value when called in private with historical timestamps.\n /// This function can be used alongside `ScheduledValueChange.get_time_horizon` to properly constrain\n /// the `include_by_timestamp` transaction property when reading delayed mutable state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" + }, + "316": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change.nr", + "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'time horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the anchor block's timestamp). Reading in private is only safe\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the time horizon (see\n /// `get_time_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private where the proof is constructed against an anchor block, since\n /// due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a anchor block's timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the time horizon\n /// computed using the same anchor timestamp.\n pub fn get_time_horizon(self, anchor_timestamp: u64, minimum_delay: u64) -> u64 {\n // The time horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the time horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the time horizon.\n if anchor_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the anchor timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the anchor timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `anchor_timestamp + 1 +\n // minimum_delay`. Our time horizon is simply the previous timestamp to that one.\n //\n // timestamp of anchor\n // change timestamp time horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n anchor_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the time horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // anchor\n // timestamp time horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the anchor timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // anchor time horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because anchor_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n anchor_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" + }, + "319": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", + "source": "mod poseidon2_chunks;\n\nuse crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_log::{PrivateLog, PrivateLogData},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n side_effect::{Counted, Scoped},\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\n\npub use poseidon2_chunks::poseidon2_absorb_in_chunks_existing_sponge;\nuse poseidon2_chunks::poseidon2_absorb_in_chunks;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: Scoped>) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.innermost())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: Scoped>) -> Field {\n let value = nullifier.innermost().value;\n // Q: shouldn't we be checking whether the _whole_ nullifier is empty?\n // A: We don't have to. The init and inner circuits add contract address to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n value // Return `value` instead of 0 because an already-siloed nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, value)\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped>) -> PrivateLog {\n let log = private_log.innermost().log;\n if private_log.contract_address.is_zero() {\n log\n } else {\n let mut fields = log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n/// Computes a Poseidon2 hash over a dynamic-length subarray of the given input.\n/// Only the first `in_len` fields of `input` are absorbed; any remaining fields are ignored.\n/// The caller is responsible for ensuring that the input is padded with zeros if required.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_in_chunks(input, in_len);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_in_chunks(input, in_len);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" + }, + "328": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", + "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_tree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n/// These values are precomputed and we run tests to ensure that they are correct.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_tree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_tree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_tree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_tree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_tree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_tree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_tree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_tree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_tree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_tree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_tree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_tree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" + }, + "332": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", + "source": "use utils::derive_serialization_quotes;\n\npub mod utils;\n\n/// Generates the generic parameter declarations for a struct's trait implementation.\n///\n/// This function takes a struct type definition and generates the generic parameter declarations\n/// that go after the `impl` keyword. For example, given a struct with generics `N: u32` and `T`,\n/// it generates ``.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate generic declarations for\n///\n/// # Returns\n/// A quoted code block containing the generic parameter declarations, or an empty quote if the struct\n/// has no generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// This function generates:\n/// ```\n/// \n/// ```\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\n/// Generates the `where` clause for a trait implementation that constrains non-numeric generic type parameters.\n///\n/// This function takes a struct type definition and a trait name, and generates a `where` clause that\n/// requires all non-numeric generic type parameters to implement the specified trait.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the where clause for\n/// - `trait_name`: The name of the trait that non-numeric generic parameters must implement\n///\n/// # Returns\n/// A quoted code block containing the where clause, or an empty quote if the struct has no non-numeric\n/// generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// And trait name \"Serialize\", this function generates:\n/// ```\n/// where T: Serialize\n/// ```\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl Serialize for Log {\n/// let N: u32 = <[Field; N] as Serialize>::N + ::N;\n///\n/// #[inline_always]\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut serialized_params = [0; _];\n/// let mut offset = 0;\n///\n/// let serialized_member = Serialize::serialize(self.fields);\n/// let serialized_member_len = <[Field; N] as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// serialized_params[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// let serialized_member = Serialize::serialize(self.length);\n/// let serialized_member_len = ::N;\n/// for i in 0..serialized_member_len {\n/// serialized_params[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// serialized_params\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n\n // We care only about the name and type so we drop the last item of the tuple\n let params = nested_struct.0.fields(nested_struct.1).map(|(name, typ, _)| (name, typ));\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n let (function_body, params_len_quote, serialized_params_name) =\n derive_serialization_quotes(params, true);\n\n quote {\n impl$generics_declarations $crate::traits::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $params_len_quote;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n $function_body\n\n $serialized_params_name\n }\n }\n }\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = ::N + ::N;\n///\n/// fn deserialize(serialized: [Field; Self::N]) -> Self {\n/// let mut offset = 0;\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let x = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let y = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Deserialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as Deserialize>::N];\n for i in 0..<$param_type as Deserialize>::N {\n member_fields[i] = serialized[i + offset];\n }\n let $param_name = <$param_type as Deserialize>::deserialize(member_fields);\n offset += <$param_type as Deserialize>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Deserialize::deserialize(serialized) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Packable` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Packable` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Packable for MyStruct {\n/// let N: u32 = 2;\n///\n/// fn pack(self) -> [Field; 2] {\n/// let mut result: [Field; 2] = [0_Field; 2];\n/// let mut offset: u32 = 0_u32;\n/// let packed_member: [Field; 1] = self.x.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// let packed_member: [Field; 1] = self.y.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// result\n/// }\n///\n/// fn unpack(packed: [Field; 2]) -> Self {\n/// let mut offset: u32 = 0_u32;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let x: AztecAddress = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let y: Field = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// Self { x: x, y: y }\n/// }\n/// }\n/// ```\npub comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Packable` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_packable_clause = get_where_trait_clause(s, quote {Packable});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Packable>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the packed member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let pack_function_body = if params.len() > 1 {\n // For multiple struct members, generate packing code that:\n // 1. Packs each member\n // 2. Copies the packed fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let packing_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let packed_member = $crate::traits::Packable::pack(self.$param_name);\n let packed_member_len = <$param_type as $crate::traits::Packable>::N;\n for i in 0..packed_member_len {\n result[i + offset] = packed_member[i];\n }\n offset += packed_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; Self::N];\n let mut offset = 0;\n\n $packing_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Packable::pack(self.$param_name)\n }\n };\n\n // For structs containing a single member, we can enhance performance by directly unpacking the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let unpack_function_body = if params.len() > 1 {\n // For multiple struct members, generate unpacking code that:\n // 1. Unpacks each member\n // 2. Copies packed fields into member array at correct offset\n // 3. Updates offset for next member\n let unpacking_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as $crate::traits::Packable>::N];\n for i in 0..<$param_type as $crate::traits::Packable>::N {\n member_fields[i] = packed[i + offset];\n }\n let $param_name = <$param_type as $crate::traits::Packable>::unpack(member_fields);\n offset += <$param_type as $crate::traits::Packable>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n $unpacking_of_struct_members\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Packable::unpack(packed) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Packable for $typ\n $where_packable_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n $pack_function_body\n }\n\n #[inline_always]\n fn unpack(packed: [Field; Self::N]) -> Self {\n $unpack_function_body\n }\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Packable, Serialize};\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Smol {\n a: Field,\n b: Field,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct HasArray {\n a: [Field; 2],\n b: bool,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n }\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct HasArrayWithGenerics {\n pub fields: [T; N],\n pub length: u32,\n }\n\n #[test]\n fn serde_on_smol() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n }\n\n #[test]\n fn serde_on_has_array() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n }\n\n #[test]\n fn serde_on_fancier() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n }\n\n #[test]\n fn serde_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let serialized = struct_with_array_of_generics.serialize();\n assert(serialized == [1, 2, 3, 3], serialized);\n let deserialized = HasArrayWithGenerics::deserialize(serialized);\n assert(deserialized == struct_with_array_of_generics);\n }\n\n #[test]\n fn packable_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let packed = struct_with_array_of_generics.pack();\n assert(packed == [1, 2, 3, 3], packed);\n\n let unpacked = HasArrayWithGenerics::unpack(packed);\n assert(unpacked == struct_with_array_of_generics);\n }\n\n}\n" + }, + "333": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/utils.nr", + "source": "/// Generates serialization code for a list of parameters and the total length of the serialized array\n///\n/// # Parameters\n/// - `params`: A list of (name, type) tuples to serialize\n/// - `use_self_prefix`: If true, parameters are accessed as `self.$param_name` (for struct members).\n/// If false, parameters are accessed directly as `$param_name` (for function parameters).\n///\n/// # Returns\n/// A tuple containing:\n/// - Quoted code that serializes the parameters into an array named `serialized_params`\n/// - Quoted code that evaluates to the total length of the serialized array\n/// - Quoted code containing the name of the serialized array\npub comptime fn derive_serialization_quotes(\n params: [(Quoted, Type)],\n use_self_prefix: bool,\n) -> (Quoted, Quoted, Quoted) {\n let prefix_quote = if use_self_prefix {\n quote { self. }\n } else {\n quote {}\n };\n\n let params_len_quote = get_params_len_quote(params);\n let serialized_params_name = quote { serialized_params };\n\n let body = if params.len() == 0 {\n quote {\n let $serialized_params_name: [Field; 0] = [];\n }\n } else if params.len() == 1 {\n // When we have only a single parameter on the input, we can enhance performance by directly returning\n // the serialized member, bypassing the need for loop-based array construction. While this optimization yields\n // significant benefits in Brillig where the loops are expected to not be optimized, it is not relevant in ACIR\n // where the loops are expected to be optimized away.\n\n let param_name = params[0].0;\n quote {\n let $serialized_params_name = $crate::traits::Serialize::serialize($prefix_quote$param_name);\n }\n } else {\n // For multiple struct members, generate serialization code that:\n // 1. Serializes each member\n // 2. Copies the serialized fields into the serialize array at the correct offset\n // 3. Updates the offset for the next member\n let serialization_of_struct_members = params\n .map(|(param_name, param_type): (Quoted, Type)| {\n quote {\n let serialized_member = $crate::traits::Serialize::serialize($prefix_quote$param_name);\n let serialized_member_len = <$param_type as $crate::traits::Serialize>::N;\n for i in 0..serialized_member_len {\n $serialized_params_name[i + offset] = serialized_member[i];\n }\n offset += serialized_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut $serialized_params_name = [0; $params_len_quote];\n let mut offset = 0;\n\n $serialization_of_struct_members\n }\n };\n\n (body, params_len_quote, serialized_params_name)\n}\n\n/// Generates a quoted expression that computes the total serialized length of function parameters.\n///\n/// # Parameters\n/// * `params` - An array of tuples where each tuple contains a quoted parameter name and its Type. The type needs\n/// to implement the Serialize trait.\n///\n/// # Returns\n/// A quoted expression that evaluates to:\n/// * `0` if there are no parameters\n/// * `(::N + ::N + ...)` for one or more parameters\npub comptime fn get_params_len_quote(params: [(Quoted, Type)]) -> Quoted {\n if params.len() == 0 {\n quote { 0 }\n } else {\n let params_quote_without_parentheses = params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::traits::Serialize>::N\n }\n })\n .join(quote {+});\n quote { ($params_quote_without_parentheses) }\n }\n}\n" + }, + "334": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", + "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn serialize(self: Self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n let N: u32 = POINT_LENGTH;\n\n fn pack(self) -> [Field; Self::N] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n Self::deserialize(packed)\n }\n}\n" + }, + "335": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", + "source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" + }, + "342": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", + "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::{default::Default, meta::derive};\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nmod test {\n use crate::{\n point::POINT_LENGTH,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Serialize},\n };\n use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\n #[test]\n unconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n }\n\n #[test]\n unconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash =\n 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n }\n\n #[test]\n unconstrained fn serde() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n // We use the PUBLIC_KEYS_LENGTH constant to ensure that there is a match between the derived trait\n let serialized: [Field; POINT_LENGTH * 4] = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys, deserialized);\n }\n}\n" + }, + "347": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", + "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" + }, + "363": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", + "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty(self, msg: str) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty(self, msg: str) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl Empty for Option\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; Self::N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let bytes = self.as_bytes();\n let mut fields = [0; Self::N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n/// Implementation of Deserialize for BoundedVec.\n///\n/// This implementation deserializes a BoundedVec from an array of Fields. The array contains:\n/// 1. The serialized items, each taking up T::N Fields\n/// 2. The length of the BoundedVec as the last Field\n///\n/// # Type Parameters\n/// * `T` - The type of items stored in the BoundedVec, must implement Deserialize\n/// * `M` - The maximum length of the BoundedVec\n///\n/// # Fields Array Layout\n/// [item1_field1, item1_field2, ..., item2_field1, item2_field2, ..., length]\n/// Where:\n/// - itemN_fieldM: The M-th Field of the N-th item (T::N Fields per item)\n/// - length: The number of items in the BoundedVec (1 Field)\n///\n/// Total length N = T::N * M + 1, where:\n/// - T::N is the number of Fields needed to deserialize one item\n/// - M is the maximum length of the BoundedVec\n/// - +1 is for storing the length\n///\n/// # Note\n/// Not deriving this because it's not supported to call derive_deserialize on a \"remote\" struct (and it will never\n/// be supported).\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[::N * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; ::N];\n for j in 0..::N {\n nested_fields[j] = fields[i * ::N + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(_fields: [Field; Self::N]) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M + 1; // +1 for the length of the BoundedVec\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut fields = [0; Self::N];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..::N {\n fields[i * ::N + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[::N * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// let N: u32 = M;\n///\n/// #[inline_always]\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// str::::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" + }, + "365": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", + "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * ::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..::N {\n result[i * ::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" + }, + "366": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", + "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal U1_SERIALIZED_LEN: u32 = 1;\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; _] = std::mem::zeroed();\n for i in 0..M {\n let serialized_t = self[i].serialize();\n for j in 0..::N {\n result[i * ::N + j] = serialized_t[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..::N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n if fields[0] == 1 {\n let mut value_fields = [0; ::N];\n for i in 0..::N {\n value_fields[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_fields))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" + }, + "383": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", + "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod assert_trailing_zeros;\npub mod find_index;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped,\n assert_array_appended_reversed_to_empty_dest, assert_array_appended_reversed_up_to_some_length,\n assert_array_appended_to_empty_dest, assert_array_appended_to_empty_dest_and_scoped,\n};\npub use assert_array_prepended::{assert_array_prepended, assert_array_prepended_up_to_some_length};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, check_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use assert_trailing_zeros::assert_trailing_zeros;\npub use find_index::{find_first_index, find_last_index};\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use get_sorted_tuple::{get_sorted_tuple, SortedTuple};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Deserialize, Empty, Serialize};\nuse super::for_loop::{for_i_in_0_, for_i_only_in_0_};\n\n//**********************************************************************************\n// ARRAY\n//**********************************************************************************\n\n// TODO: Consider making this a part of the noir stdlib.\n/// Helper fn to create a subarray from a given array.\npub fn subarray(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n if find(array[i]) {\n index = Option::some(i);\n break;\n }\n }\n index\n}\n\n// Helper function to find the index of the first element (starting from the back) of an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint_in_reverse(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n let j = N - i - 1;\n if find(array[j]) {\n index = Option::some(j);\n break;\n }\n }\n index\n}\n\n//**********************************************************************************\n// FREE ARRAY FUNCTIONS (to deprecate or make into methods of array wrappers)\n//**********************************************************************************\n\n/// Deprecated.\n///\n/// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n/// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n/// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if array[i].is_empty() {\n seen_empty = true;\n } else {\n assert_eq(seen_empty, false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n/// Deprecated.\n///\n/// Helper function to count the number of non-empty elements in a validated array.\n/// Important: Only use it for validated arrays where validate_array(array) returns true,\n/// which ensures that:\n/// 1. All elements before the first empty element are non-empty\n/// 2. All elements after and including the first empty element are empty\n/// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let maybe_length = unsafe { find_index_hint(array, |elem: T| elem.is_empty()) };\n\n let mut length = N;\n\n if maybe_length.is_some() {\n length = maybe_length.unwrap_unchecked();\n\n array[length].assert_empty(\"Expected array empty\");\n }\n\n if length != 0 {\n assert(!array[length - 1].is_empty());\n }\n\n length\n}\n\n// Returns an array length defined by fully trimming _all_ \"empty\" items\n// from the RHS.\npub unconstrained fn trimmed_array_length_hint(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let maybe_index_of_last_nonempty =\n find_index_hint_in_reverse(array, |elem: T| !elem.is_empty());\n let length: u32 = if maybe_index_of_last_nonempty.is_some() {\n 1 + maybe_index_of_last_nonempty.unwrap_unchecked()\n } else {\n 0\n };\n length\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n/// Helper function to convert a validated array to BoundedVec.\n/// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n//**********************************************************************************\n// ARRAY WRAPPERS\n//**********************************************************************************\n\n/*\n *\n *\n * \n * |-----------------------------------------|------------------------------| \n * | LHS | RHS |\n * |-----------------------------------------|------------------------------|\n * ClaimedLengthArray | Interspersed 0s possible. | Unvalidated. |\n * | Possibly not fully trimmed. | Nonempty elements possible. |\n * |-----------------------------------------|------------------------------|\n * EmptyRHSArray | Interspersed 0s possible. | All 0s (validated). |\n * | Possibly not fully trimmed. | |\n * |-----------------------------------------|------------------------------|\n * TrimmedArray | Interspersed 0s possible. | All 0s (validated) |\n * | Last lhs element validated as nonempty. | |\n * | (I.e. fully trimmed) | |\n * |-----------------------------------------|------------------------------|\n * DenseTrimmedArray | Dense (validated). | All 0s (validated) |\n * |-----------------------------------------|------------------------------|\n *\n *\n * | What guarantees do we have? |\n * |--------|--------|--------------------------------| \n * | Dense? | RHS | Length vs Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n * ClaimedLengthArray | ? | ? | ? |\n * | | | |\n * |--------|--------|--------------------------------|\n * EmptyRHSArray | ? | All 0s | Length >= Fully Trimmed Length |\n * | | | |\n * |--------|--------|--------------------------------|\n * TrimmedArray | ? | All 0s | Length == Fully Trimmed Length |\n * | | | |\n * | | | |\n * |--------|--------|--------------------------------|\n * DenseTrimmedArray | Yes | All 0s | Length == Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n *\n *\n * An ClaimedLengthArray is distinct from a regular array [T; N], because it carries a length.\n * \n */\n\n/// ClaimedLengthArray - An array interpreted by Kernel circuits.\n/// Its `length` is merely a claim that must eventually be validated.\n/// Validation must include:\n/// - Asserting all items to the LHS of the length are nonempty (dense).\n/// - Asserting all items to the RHS of the length are empty.\n#[derive(Deserialize, Serialize)]\npub struct ClaimedLengthArray {\n pub array: [T; N],\n pub length: u32,\n}\n\nimpl ClaimedLengthArray\nwhere\n T: Empty,\n{\n // No constructor. Append to an empty one.\n\n // For constrained append functions, see the dedicated file: assert_array_appended.nr\n\n pub fn push(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub fn assert_dense_trimmed(self) {\n for_i_in_0_(\n self.length,\n self.array.len(),\n |i| {\n assert(!self.array[i].is_empty(), \"LHS of input array is not dense\")\n // Requires Noir #9002:\n // self.array[i].assert_not_empty(\"LHS of input array is not dense\"); // LHS of input array is not dense.\n },\n |i| self.array[i].assert_empty(\"RHS of input array is not empty\"),\n false,\n );\n }\n\n pub fn assert_empty(self, msg: str) {\n for i in 0..N {\n self.array[i].assert_empty(msg);\n }\n assert_eq(self.length, 0);\n }\n\n pub unconstrained fn push_hint(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let mut next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub unconstrained fn pop_hint(&mut self) -> T {\n assert(self.length != 0, \"Array empty\");\n\n let mut top_index = self.length - 1;\n let popped_item = self.array[top_index];\n self.array[top_index] = T::empty();\n self.length -= 1;\n popped_item\n }\n\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(self.length, self.array.len(), |i| f(self.array[i]), false);\n }\n\n // E.g.\n // dest.for_each_i(|source_item, i| { assert_eq(dest.array[i], source_item, \"bad copy\"); })\n pub fn for_each_i(self, f: fn[Env](T, u32) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(\n self.length,\n self.array.len(),\n |i| f(self.array[i], i),\n false,\n );\n }\n\n pub fn from_bounded_vec(vec: BoundedVec) -> Self {\n Self { array: vec.storage(), length: vec.len() }\n }\n}\n\n// TODO: compiler bug. No idea why this is needed, if we have #[derive(Eq)] above the struct definition.\nimpl Eq for ClaimedLengthArray\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.array == other.array) & (self.length == other.length)\n }\n}\n\nimpl Empty for ClaimedLengthArray\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { array: [T::empty(); N], length: 0 }\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.unwrap_unchecked(), 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.is_none(), true);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" + }, + "384": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", + "source": "global KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\npub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimized to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n/// Returns Option::some(sqrt) if there is a square root, and Option::none() if there isn't.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\nunconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n\n#[test]\nunconstrained fn sqrt_valid_test() {\n let x = 16; // examples: 16, 9, 25, 81\n let result = sqrt(x);\n assert(result.is_some());\n assert_eq(result.unwrap() * result.unwrap(), x);\n}\n\n#[test]\nunconstrained fn sqrt_invalid_test() {\n let x = KNOWN_NON_RESIDUE; // has no square root in the field\n let result = sqrt(x);\n assert(result.is_none());\n}\n" + }, + "388": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", + "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n" + }, + "404": { + "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.2.1/src/sha256.nr", + "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks::(message_size, h, msg_block)\n }\n}\n\npub(crate) unconstrained fn __sha_var(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, message_size, msg)\n}\n\n// Helper function to finalize the message block with padding and length\npub(crate) unconstrained fn finalize_last_sha256_block(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n (new_msg_block, modulo)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n __sha_var(msg, message_size, INITIAL_STATE)\n}\n\npub(crate) fn process_full_blocks(\n msg: [u8; N],\n message_size: u32,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [h; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n // verify the 0 padding is correct for the last block\n let final_block = blocks[first_partially_filled_block_index];\n verify_msg_block_zeros(final_block, message_size % BLOCK_SIZE, INT_BLOCK_SIZE);\n (states[first_partially_filled_block_index], final_block)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) {\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = msg_item << 8;\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n }\n }\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, 0);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], 0);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = msg_item << 8;\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u32) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = (item << 8) + b1 as u32;\n item = (item << 8) + b2 as u32;\n item = (item << 8) + b3 as u32;\n item\n}\n\nglobal BIT_SHIFT_TABLE: [u32; 4] = [1, TWO_POW_8, TWO_POW_16, TWO_POW_24];\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item * BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\n#[inline_always]\nfn rshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n if shifts >= 4 {\n 0\n } else {\n item >> (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item / BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n msg_block[INT_SIZE_PTR] = (len_bytes[0] as u32) << 24\n | (len_bytes[1] as u32) << 16\n | (len_bytes[2] as u32) << 8\n | (len_bytes[3] as u32);\n\n msg_block[INT_SIZE_PTR + 1] = (len_bytes[4] as u32) << 24\n | (len_bytes[5] as u32) << 16\n | (len_bytes[6] as u32) << 8\n | (len_bytes[7] as u32);\n\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n std::static_assert(\n INT_SIZE_PTR + 2 == INT_BLOCK_SIZE,\n \"INT_SIZE_PTR + 2 must equal INT_BLOCK_SIZE\",\n );\n let reconstructed_len_hi = msg_block[INT_SIZE_PTR] as Field;\n let reconstructed_len_lo = msg_block[INT_SIZE_PTR + 1] as Field;\n\n let reconstructed_len: Field =\n reconstructed_len_hi * TWO_POW_32 as Field + reconstructed_len_lo;\n let len = 8 * (message_size as Field);\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let mut msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n // Safety: separate verification function\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (mut h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks::(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" + }, + "42": { + "path": "std/option.nr", + "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" + }, + "425": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", + "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[derive(Deserialize, Eq, Serialize, Packable)]\n#[custom_note]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullification: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullification, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullification: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullification, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n pub fn get_owner(self) -> AztecAddress {\n self.owner\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` so that they can discover the\n /// note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content =\n UintPartialNotePrivateLogContent { owner, randomness, public_log_tag: commitment };\n\n let encrypted_log = note::compute_partial_note_private_content_log(\n private_log_content,\n storage_slot,\n recipient,\n );\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n self.pack().concat([storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct UintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for UintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_anchor_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n note_completion_log.concat(padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, UintNote, UintPartialNotePrivateContent, UintPartialNotePrivateLogContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{address::AztecAddress, traits::{Deserialize, FromField, Packable}},\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content =\n UintPartialNotePrivateLogContent { owner, randomness, public_log_tag: commitment };\n // The following is a misuse of the `deserialize` function, but this is just a test and it's better than\n // letting devs manually construct it when they shouldn't be able to.\n let partial_note = PartialUintNote::deserialize([commitment]);\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(private_log_without_public_tag.concat(public_log_without_tag), note.pack());\n }\n}\n" + }, + "43": { + "path": "std/panic.nr", + "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" + }, + "5": { + "path": "std/cmp.nr", + "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n if result {\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let self_len = self.len();\n let other_len = other.len();\n let min_len = if self_len < other_len {\n self_len\n } else {\n other_len\n };\n\n let mut result = Ordering::equal();\n for i in 0..min_len {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n\n if result != Ordering::equal() {\n result\n } else {\n self_len.cmp(other_len)\n }\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use super::{Eq, max, min, Ord};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n\n #[test]\n fn correctly_handles_unequal_length_slices() {\n let slice_1 = &[0, 1, 2, 3];\n let slice_2 = &[0, 1, 2];\n assert(!slice_1.eq(slice_2));\n }\n\n #[test]\n fn lexicographic_ordering_for_slices() {\n assert(&[2_u32].cmp(&[1_u32, 1_u32, 1_u32]) == super::Ordering::greater());\n assert(&[1_u32, 2_u32].cmp(&[1_u32, 2_u32, 3_u32]) == super::Ordering::less());\n }\n}\n" + }, + "50": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", + "source": "pub fn bytes_to_u128_limbs(bytes: [u8; 32]) -> (u128, u128) {\n let mut high: u128 = 0;\n let mut low: u128 = 0;\n for i in 0..16 {\n high = (high << 8) + (bytes[i] as u128);\n }\n for i in 16..32 {\n low = (low << 8) + (bytes[i] as u128);\n }\n (high, low)\n}\n\npub fn u128_limbs_to_bytes(high: u128, low: u128) -> [u8; 32] {\n let mut bytes: [u8; 32] = [0; 32];\n\n let mut temp = high;\n for i in 0..16 {\n bytes[15 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n temp = low;\n for i in 0..16 {\n bytes[31 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n bytes\n}\n" + }, + "51": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", + "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use std::meta::derive;\n\n use aztec::macros::{\n functions::{external, initializer, internal, view},\n notes::note,\n storage::storage,\n };\n\n use dep::aztec::{\n messages::message_delivery::MessageDelivery,\n protocol_types::{address::AztecAddress, traits::{Deserialize, Packable, Serialize}},\n state_vars::{DelayedPublicMutable, map::Map, private_immutable::PrivateImmutable},\n };\n use dep::sha256;\n use dep::token::Token;\n\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n\n #[derive(Packable)]\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[external(\"public\")]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[external(\"private\")]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as external(\"public\").\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private {\n owner: context.msg_sender().expect(f\"Sender must not be none!\"),\n randomness: randomness,\n };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(\n context.msg_sender().expect(f\"Sender must not be none!\"),\n MessageDelivery.CONSTRAINED_ONCHAIN,\n );\n\n Token::at(token)\n .transfer_to_public(\n context.msg_sender().expect(f\"Sender must not be none!\"),\n context.this_address(),\n amount,\n randomness,\n )\n .call(&mut context);\n }\n\n #[internal]\n #[external(\"public\")]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n #[external(\"private\")]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(\n htlc_private.owner == context.msg_sender().expect(f\"Sender must not be none!\"),\n \"NoAllowance\",\n );\n\n // Safety: The contract intentionally exposes these parameters as external(\"public\").\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[external(\"public\")]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[external(\"private\")]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as external(\"public\").\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[external(\"public\")]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[external(\"private\")]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as external(\"public\").\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private {\n owner: context.msg_sender().expect(f\"Sender must not be none!\"),\n randomness: randomness,\n };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(\n context.msg_sender().expect(f\"Sender must not be none!\"),\n MessageDelivery.CONSTRAINED_ONCHAIN,\n );\n\n Token::at(token)\n .transfer_to_public(\n context.msg_sender().expect(f\"Sender must not be none!\"),\n context.this_address(),\n amount,\n randomness,\n )\n .call(&mut context);\n }\n\n #[internal]\n #[external(\"public\")]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[external(\"private\")]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as external(\"public\").\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_public.src_receiver)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender().expect(\n f\"Sender must not be none!\",\n ))\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[external(\"public\")]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This external(\"utility\") function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[external(\"utility\")]\n unconstrained fn is_contract_initialized(id: Field) -> bool {\n storage.contracts_private.at(id).is_initialized()\n }\n\n #[view]\n #[external(\"public\")]\n fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" + }, + "52": { + "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", + "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::protocol_types::address::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenCommitted {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable for TokenLockAdded {\n let N: u32 = 5;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable for TokenRefunded {\n let N: u32 = 2;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable for TokenRedeemed {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenLockedFirst {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable for TokenLockedSecond {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" + }, + "6": { + "path": "std/collections/bounded_vec.nr", + "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_slice() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec = BoundedVec::new();\n let mut vec2: BoundedVec = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_slice out of bounds\")]\n fn extend_slice_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n let other: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_slice(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n" + }, + "62": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", + "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n\n global SLOT: Field = 1230;\n\n #[test]\n unconstrained fn empty_array() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n });\n }\n\n #[test]\n unconstrained fn array_push() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n });\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n });\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all_no_copy() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We test that the utilityCopyCapsule was never called, which is the expensive operation we want to avoid.\n let mock = std::test::OracleMock::mock(\"utilityCopyCapsule\");\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(mock.times_called(), 0);\n });\n }\n}\n" + }, + "63": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", + "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n /// Makes the call to this private function.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (see https://github.com/AztecProtocol/aztec-packages/pull/16433)\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n\n /// Makes a _read-only_ call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// See `call` for more general info on private function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n /// Makes a read-only call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the call to this public function.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[external(\"public\")] function as `context`, through the\n /// #[external(\"public\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Makes a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[external(\"public\")] function as `context`, through the\n /// #[external(\"public\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a call to this public function, to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn enqueue(self, context: &mut PrivateContext) {\n self.enqueue_impl(context, false, false)\n }\n\n /// Enqueues a call to this public function, to be executed later.\n ///\n /// As per `enqueue`, but hides this calling contract's address from the\n /// target public function.\n /// This means the origin of the call (msg_sender) will not be publicly\n /// visible to any blockchain observers, nor to the target public function.\n /// When the target public function reads `context.msg_sender()` it will\n /// receive an `Option::none`.\n ///\n /// NOTES:\n /// - Not all public functions will accept a msg_sender of \"none\". Many\n /// public functions will require that msg_sender is \"some\" and will\n /// revert otherwise. Therefore, if using `enqueue_incognito`, you must\n /// understand whether the function you're calling will accept a\n /// msg_sender of \"none\".\n /// Lots of public bookkeeping patterns rely on knowing which address made\n /// the call, so as to ascribe state against the caller's address.\n /// (There are patterns whereby bookkeeping could instead be done in\n /// private-land).\n /// - If you are enqueueing a call to an _internal_ public function (i.e.\n /// a public function that will only accept calls from other functions\n /// of its own contract), then by definition a call to it cannot possibly\n /// be \"incognito\": the msg_sender must be its own address, and indeed the\n /// called public function will assert this. Tl;dr this is not usable for\n /// enqueued internal public calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n /// Advanced:\n /// - The kernel circuits will permit _any_ private function to set the\n /// msg_sender field of any enqueued public function call to\n /// NULL_MSG_SENDER_CONTRACT_ADDRESS.\n /// - When the called public function calls `PublicContext::msg_sender()`,\n /// aztec-nr will translate NULL_MSG_SENDER_CONTRACT_ADDRESS into\n /// `Option::none` for familiarity to devs.\n ///\n pub fn enqueue_incognito(self, context: &mut PrivateContext) {\n self.enqueue_impl(context, false, true)\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n self.enqueue_impl(context, true, false)\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// As per `enqueue_view`, but hides this calling contract's address from\n /// the target public function.\n ///\n /// See `enqueue_incognito` for more details relating to hiding msg_sender.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn enqueue_view_incognito(self, context: &mut PrivateContext) {\n self.enqueue_impl(context, true, true)\n }\n\n fn enqueue_impl(\n self,\n context: &mut PrivateContext,\n is_static_call: bool,\n hide_msg_sender: bool,\n ) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n is_static_call,\n hide_msg_sender,\n )\n }\n\n /// Enqueues a call to this public function, and designates it to be the\n /// teardown function for this tx. Only one teardown function call can be\n /// made by a tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a hefty function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n /// See `enqueue` for more information about enqueuing public function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n self.set_as_teardown_impl(context, false);\n }\n\n /// Enqueues a call to this public function, and designates it to be the teardown\n /// function for this tx. Only one teardown function call can be made by a\n /// tx.\n ///\n /// As per `set_as_teardown`, but hides this calling contract's address from\n /// the target public function.\n ///\n /// See `enqueue_incognito` for more details relating to hiding msg_sender.\n ///\n pub fn set_as_teardown_incognito(self, context: &mut PrivateContext) {\n self.set_as_teardown_impl(context, true);\n }\n\n fn set_as_teardown_impl(self, context: &mut PrivateContext, hide_msg_sender: bool) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n hide_msg_sender,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[external(\"public\")] function as `context`, through the\n /// #[external(\"public\")] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[external(\"private\")] function as `context`, through the\n /// #[external(\"private\")] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n false,\n )\n }\n\n pub fn enqueue_view_incognito(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n" + }, + "70": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", + "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n logs::notify_created_contract_class_log,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, MAX_CONTRACT_CLASS_LOGS_PER_CALL,\n MAX_ENQUEUED_CALLS_PER_CALL, MAX_INCLUDE_BY_TIMESTAMP_DURATION,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n NULL_MSG_SENDER_CONTRACT_ADDRESS, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::poseidon2_hash,\n messaging::l2_to_l1_message::L2ToL1Message,\n side_effect::Counted,\n traits::{Empty, Hash, ToField},\n utils::arrays::{ClaimedLengthArray, trimmed_array_length_hint},\n};\n\n/// # PrivateContext\n///\n/// The **main interface** between an #[external(\"private\")] function and the Aztec blockchain.\n///\n/// An instance of the PrivateContext is initialized automatically at the outset\n/// of every private function, within the #[external(\"private\")] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it is always be available within\n/// the body of every #[external(\"private\")] function in your smart contract.\n///\n/// > For those used to \"vanilla\" Noir, it might be jarring to have access to\n/// > `context` without seeing a declaration `let context = PrivateContext::new(...)`\n/// > within the body of your function. This is just a consequence of using\n/// > macros to tidy-up verbose boilerplate. You can use `nargo expand` to\n/// > expand all macros, if you dare.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PrivateContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// > Advanced users might occasionally wish to push data to the context\n/// > directly for lower-level control. If you find yourself doing this, please\n/// > open an issue on GitHub to describe your use case: it might be that\n/// > new functionality should be added to aztec-nr.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a private function:\n/// - Data relating to how this private function was called.\n/// - msg_sender\n/// - this_address - (the contract address of the private function being\n/// executed)\n/// - See `CallContext` for more data.\n/// - Data relating to the transaction in which this private function is\n/// being executed.\n/// - chain_id\n/// - version\n/// - gas_settings\n/// - Provides state access:\n/// - Access to the \"Anchor block\" header.\n/// Recall, a private function cannot read from the \"current\" block header,\n/// but must read from some historical block header, because as soon as\n/// private function execution begins (asynchronously, on a user's device),\n/// the public state of the chain (the \"current state\") will have progressed\n/// forward. We call this reference the \"Anchor block\".\n/// See `BlockHeader`.\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to functions of other smart contracts:\n/// - Private function calls\n/// - Enqueueing of public function call requests\n/// (Since public functions are executed at a later time, by a block\n/// proposer, we say they are \"enqueued\").\n/// - Writes data to the blockchain:\n/// - New notes\n/// - New nullifiers\n/// - Private logs (for sending encrypted note contents or encrypted events)\n/// - New L2->L1 messages.\n/// - Provides args to the private function (handled by the #[external(\"private\")] macro).\n/// - Returns the return values of this private function (handled by the\n/// #[external(\"private\")] macro).\n/// - Makes Key Validation Requests.\n/// - Private functions are not allowed to see master secret keys, because we\n/// do not trust them. They are instead given \"app-siloed\" secret keys with\n/// a claim that they relate to a master public key. They can then request\n/// validation of this claim, by making a \"key validation request\" to the\n/// protocol's kernel circuits (which _are_ allowed to see certain master\n/// secret keys).\n///\n/// ## Advanced Responsibilities\n///\n/// - Ultimately, the PrivateContext is responsible for constructing the\n/// PrivateCircuitPublicInputs of the private function being executed.\n/// All private functions on Aztec must have public inputs which adhere\n/// to the rigid layout of the PrivateCircuitPublicInputs, in order to be\n/// compatible with the protocol's kernel circuits.\n/// A well-known misnomer:\n/// - \"public inputs\" contain both inputs and outputs of this function.\n/// - By \"outputs\" we mean a lot more side-effects than just the\n/// \"return values\" of the function.\n/// - Most of the so-called \"public inputs\" are kept _private_, and never leak\n/// to the outside world, because they are 'swallowed' by the protocol's\n/// kernel circuits before the tx is sent to the network. Only the\n/// following are exposed to the outside world:\n/// - New note_hashes\n/// - New nullifiers\n/// - New private logs\n/// - New L2->L1 messages\n/// - New enqueued public function call requests\n/// All the above-listed arrays of side-effects can be padded by the\n/// user's wallet (through instructions to the kernel circuits, via the\n/// PXE) to obscure their true lengths.\n///\n/// ## Syntax Justification\n///\n/// Both user-defined functions _and_ most functions in aztec-nr need access to\n/// the PrivateContext instance to read/write data. This is why you'll see the\n/// arguably-ugly pervasiveness of the \"context\" throughout your smart contract\n/// and the aztec-nr library.\n/// For example, `&mut context` is prevalent. In some languages, you can access\n/// and mutate a global variable (such as a PrivateContext instance) from a\n/// function without polluting the function's parameters. With Noir, a function\n/// must explicitly pass control of a mutable variable to another function, by\n/// reference. Since many functions in aztec-nr need to be able to push new data\n/// to the PrivateContext, they need to be handed a mutable reference _to_ the\n/// context as a parameter.\n/// For example, `Context` is prevalent as a generic parameter, to give better\n/// type safety at compile time. Many `aztec-nr` functions don't make sense if\n/// they're called in a particular runtime (private, public or utility), and so\n/// are intentionally only implemented over certain\n/// [Private|Public|Utility]Context structs. This gives smart contract\n/// developers a much faster feedback loop if they're making a mistake, as an\n/// error will be thrown by the LSP or when they compile their contract.\n///\n#[derive(Eq)]\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: u64,\n\n pub note_hash_read_requests: BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub anchor_block_header: BlockHeader,\n\n pub private_logs: BoundedVec, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let max_allowed_include_by_timestamp = inputs.anchor_block_header.global_variables.timestamp\n + MAX_INCLUDE_BY_TIMESTAMP_DURATION;\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: max_allowed_include_by_timestamp,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n anchor_block_header: inputs.anchor_block_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"null\" for the first\n /// function call of every transaction.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// # Returns\n /// * `Option` - The address of the smart contract that called\n /// this function (be it an app contract or a user's account contract).\n /// Returns `Option::none` for the first function call of\n /// the tx. No other _private_ function calls in the tx will have a `none`\n /// msg_sender, but _public_ function calls might (see the PublicContext).\n ///\n pub fn msg_sender(self) -> Option {\n let maybe_msg_sender = self.inputs.call_context.msg_sender;\n if maybe_msg_sender == NULL_MSG_SENDER_CONTRACT_ADDRESS {\n Option::none()\n } else {\n Option::some(maybe_msg_sender)\n }\n }\n\n /// \"Unsafe\" versus calling `context.msg_sender()`, because it doesn't\n /// translate `NULL_MSG_SENDER_CONTRACT_ADDRESS` as\n /// `Option::none`.\n /// Used by some internal aztecnr functions.\n pub fn msg_sender_unsafe(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n /// Returns the contract address of the current function being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n /// Returns the gas settings for the current transaction.\n ///\n /// This provides information about gas limits and pricing for the\n /// transaction, similar to `tx.gasprice` and gas limits in Ethereum.\n /// However, Aztec has a more sophisticated gas model with separate\n /// accounting for L2 computation and data availability (DA) costs.\n ///\n /// # Returns\n /// * `GasSettings` - Struct containing gas limits and fee information\n ///\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n /// Returns the function selector of the currently executing function.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to access this.\n ///\n /// This is similar to `msg.sig` in Solidity, which returns the first 4\n /// bytes of the function signature. In Aztec, the selector uniquely\n /// identifies which function within the contract is being called.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// Only #[external(\"private\")] functions have a function selector as a protocol-\n /// enshrined concept. The function selectors of private functions are\n /// baked into the preimage of the contract address, and are used by the\n /// protocol's kernel circuits to identify each private function and ensure\n /// the correct one is being executed.\n ///\n /// Used internally for function dispatch and call verification.\n ///\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: You shouldn't need to call this. The #[external(\"private\")]\n /// macro calls this, and it makes the arguments neatly available to the\n /// body of your private function.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n /// # Advanced\n /// * Arguments are hashed to reduce proof size and verification time\n /// * Enables efficient argument passing in recursive function calls\n /// * The hash can be used to retrieve the original arguments from the PXE.\n ///\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n /// Pushes a new note_hash to the Aztec blockchain's global Note Hash Tree\n /// (a state tree).\n ///\n /// A note_hash is a commitment to a piece of private state.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note hashes.\n ///\n /// # Arguments\n /// * `note_hash` - The new note_hash.\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// note_hash into the protocol's \"note hash tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `note_hash` with the contract address of this function,\n /// to yield a `siloed_note_hash`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure uniqueness of the `siloed_note_hash`, to prevent Faerie-Gold\n /// attacks, by hashing the `siloed_note_hash` with a unique value, to\n /// yield a `unique_siloed_note_hash` (see the protocol spec for more).\n ///\n /// In addition to calling this function, aztec-nr provides the contents\n /// of the newly-created note to the PXE, via the `notify_created_note`\n /// oracle.\n ///\n /// > Advanced users might occasionally wish to push data to the context\n /// > directly for lower-level control. If you find yourself doing this,\n /// > please open an issue on GitHub to describe your use case: it might be\n /// > that new functionality should be added to aztec-nr.\n ///\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(Counted::new(note_hash, self.next_counter()));\n }\n\n /// Pushes a new nullifier to the Aztec blockchain's global Nullifier Tree\n /// (a state tree).\n ///\n /// See also: `push_nullifier_for_note_hash`.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// A nullifier can only be emitted once. Duplicate nullifier insertions are\n /// rejected by the protocol.\n ///\n /// Generally, a nullifier is emitted to prevent an action from happening\n /// more than once, in such a way that the action cannot be linked (by an\n /// observer of the blockchain) to any earlier transactions.\n ///\n /// I.e. a nullifier is a random-looking, but deterministic record of a\n /// private, one-time action, which does not leak what action has been\n /// taken, and which preserves the property of \"tx unlinkability\".\n ///\n /// Usually, a nullifier will be emitted to \"spend\" a note (a piece of\n /// private state), without revealing which specific note is being spent.\n ///\n /// (Important: in such cases, use the below `push_nullifier_for_note_hash`).\n ///\n /// Sometimes, a nullifier might be emitted completely unrelated to any\n /// notes. Examples include initialization of a new contract; initialization\n /// of a PrivateMutable, or signalling in Semaphore-like applications.\n /// This `push_nullifier` function serves such use cases.\n ///\n /// # Arguments\n /// * `nullifier`\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// nullifier into the protocol's \"nullifier tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `nullifier` with the contract address of this function,\n /// to yield a `siloed_nullifier`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure the `siloed_nullifier` is unique (the nullifier tree is an\n /// indexed merkle tree which supports efficient non-membership proofs).\n ///\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: 0 }.count(self.next_counter()));\n }\n\n /// Pushes a nullifier that corresponds to a specific note hash.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// This is a specialized version of `push_nullifier` that links a nullifier\n /// to the specific note hash it's nullifying. This is the most common\n /// usage pattern for nullifiers.\n /// See `push_nullifier` for more explanation on nullifiers.\n ///\n /// # Arguments\n /// * `nullifier`\n /// * `nullified_note_hash` - The note hash of the note being nullified\n ///\n /// # Advanced\n /// Important: usage of this function doesn't mean that the world will _see_\n /// that this nullifier relates to the given nullified_note_hash (as that\n /// would violate \"tx unlinkability\"); it simply informs the user's PXE\n /// about the relationship (via `notify_nullified_note`). The PXE can then\n /// use this information to feed hints to the kernel circuits for\n /// \"squashing\" purposes: If a note is nullified during the same tx which\n /// created it, we can \"squash\" (delete) the note and nullifier (and any\n /// private logs associated with the note), to save on data emission costs.\n ///\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash }.count(\n nullifier_counter,\n ));\n }\n\n /// Returns the anchor block header - the historical block header that this\n /// private function is reading from.\n ///\n /// A private function CANNOT read from the \"current\" block header,\n /// but must read from some older block header, because as soon as\n /// private function execution begins (asynchronously, on a user's device),\n /// the public state of the chain (the \"current state\") will have progressed\n /// forward.\n ///\n /// # Returns\n /// * `BlockHeader` - The anchor block header.\n ///\n /// # Advanced\n /// * All private functions of a tx read from the same anchor block header.\n /// * The protocol asserts that the `include_by_timestamp` of every tx\n /// is at most 24 hours beyond the timestamp of the tx's chosen anchor\n /// block header. This enables the network's nodes to safely prune old txs\n /// from the mempool. Therefore, the chosen block header _must_ be one\n /// from within the last 24 hours.\n ///\n pub fn get_anchor_block_header(self) -> BlockHeader {\n self.anchor_block_header\n }\n\n /// Returns the header of any historical block at or before the anchor\n /// block.\n ///\n /// This enables private contracts to access information from even older\n /// blocks than the anchor block header.\n ///\n /// Useful for time-based contract logic that needs to compare against\n /// multiple historical points.\n ///\n /// # Arguments\n /// * `block_number` - The block number to retrieve (must be <= anchor\n /// block number)\n ///\n /// # Returns\n /// * `BlockHeader` - The header of the requested historical block\n ///\n /// # Advanced\n /// This function uses an oracle to fetch block header data from the user's\n /// PXE. Depending on how much blockchain data the user's PXE has been set\n /// up to store, this might require a query from the PXE to another Aztec\n /// node to get the data.\n /// > This is generally true of all oracle getters (see `../oracle`).\n ///\n /// Each block header gets hashed and stored as a leaf in the protocol's\n /// Archive Tree. In fact, the i-th block header gets stored at the i-th\n /// leaf index of the Archive Tree. Behind the scenes, this\n /// `get_block_header_at` function will add Archive Tree merkle-membership\n /// constraints (~3k) to your smart contract function's circuit, to prove\n /// existence of the block header in the Archive Tree.\n ///\n /// Note: we don't do any caching, so avoid making duplicate calls for the\n /// same block header, because each call will add duplicate constraints.\n ///\n /// Calling this function is more expensive (constraint-wise) than getting\n /// the anchor block header (via `get_block_header`). This is because the\n /// anchor block's merkle membership proof is handled by Aztec's protocol\n /// circuits, and is only performed once for the entire tx because all\n /// private functions of a tx share a common anchor block header. Therefore,\n /// the cost (constraint-wise) of calling `get_block_header` is effectively\n /// free.\n ///\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n /// Sets the hash of the return values for this private function.\n ///\n /// Very low-level function: this is called by the #[external(\"private\")] macro.\n ///\n /// # Arguments\n /// * `serialized_return_values` - The serialized return values as a field array\n ///\n pub fn set_return_hash(&mut self, serialized_return_values: [Field; N]) {\n let return_hash = hash_args_array(serialized_return_values);\n self.return_hash = return_hash;\n execution_cache::store(serialized_return_values, return_hash);\n }\n\n /// Builds the PrivateCircuitPublicInputs for this private function, to\n /// ensure compatibility with the protocol's kernel circuits.\n ///\n /// Very low-level function: This function is automatically called by the\n /// #[external(\"private\")] macro.\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.note_hash_read_requests,\n ),\n nullifier_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.nullifier_read_requests,\n ),\n key_validation_requests_and_generators: ClaimedLengthArray::from_bounded_vec(\n self.key_validation_requests_and_generators,\n ),\n note_hashes: ClaimedLengthArray::from_bounded_vec(self.note_hashes),\n nullifiers: ClaimedLengthArray::from_bounded_vec(self.nullifiers),\n private_call_requests: ClaimedLengthArray::from_bounded_vec(self.private_call_requests),\n public_call_requests: ClaimedLengthArray::from_bounded_vec(self.public_call_requests),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: ClaimedLengthArray::from_bounded_vec(self.l2_to_l1_msgs),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: ClaimedLengthArray::from_bounded_vec(self.private_logs),\n contract_class_logs_hashes: ClaimedLengthArray::from_bounded_vec(\n self.contract_class_logs_hashes,\n ),\n anchor_block_header: self.anchor_block_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n /// Designates this contract as the fee payer for the transaction.\n ///\n /// Unlike Ethereum, where the transaction sender always pays fees, Aztec\n /// allows any contract to voluntarily pay transaction fees. This enables\n /// patterns like sponsored transactions or fee abstraction where users\n /// don't need to hold fee-juice themselves. (Fee juice is a fee-paying\n /// asset for Aztec).\n ///\n /// Only one contract per transaction can declare itself as the fee payer,\n /// and it must have sufficient fee-juice balance (>= the gas limits\n /// specified in the TxContext) by the time we reach the public setup phase\n /// of the tx.\n ///\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n /// Declares the end of the \"setup phase\" of this tx.\n ///\n /// Only one function per tx can declare the end of the setup phase.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase enables such a payment to\n /// be made, because the setup phase _cannot revert_: a reverting function\n /// within the setup phase would result in an invalid block which cannot\n /// be proven. Any side-effects generated during that phase are guaranteed\n /// to be inserted into Aztec's state trees (except for squashed notes &\n /// nullifiers, of course).\n ///\n /// Even though the end of the setup phase is declared within a private\n /// function, you might have noticed that _public_ functions can also\n /// execute within the setup phase. This is because any public function\n /// calls which were enqueued _within the setup phase_ by a private\n /// function are considered part of the setup phase.\n ///\n /// # Advanced\n /// * Sets the minimum revertible side effect counter of this tx to be the\n /// PrivateContext's _current_ side effect counter.\n ///\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n /// Sets a deadline (an \"include-by timestamp\") for when this transaction\n /// must be included in a block.\n ///\n /// Other functions in this tx might call this setter with differing\n /// values for the include-by timestamp. To ensure that all functions'\n /// deadlines are met, the _minimum_ of all these include-by timestamps will\n /// be exposed when this tx is submitted to the network.\n ///\n /// If the transaction is not included in a block by its include-by\n /// timestamp, it becomes invalid and it will never be included.\n ///\n /// This expiry timestamp is publicly visible. See the \"Advanced\" section\n /// for privacy concerns.\n ///\n /// # Arguments\n /// * `include_by_timestamp` - Unix timestamp (seconds) deadline for inclusion.\n /// The include-by timestamp of this tx will be\n /// _at most_ the timestamp specified.\n ///\n /// # Advanced\n /// * If multiple functions set differing `include_by_timestamp`s, the\n /// kernel circuits will set it to be the _minimum_ of the two. This\n /// ensures the tx expiry requirements of all functions in the tx are met.\n /// * Rollup circuits will reject expired txs.\n /// * The protocol enforces that all transactions must be included within\n /// 24 hours of their chosen anchor block's timestamp, to enable safe\n /// mempool pruning.\n /// * The DelayedPublicMutable design makes heavy use of this functionality,\n /// to enable private functions to read public state.\n /// * A sophisticated Wallet should cleverly set an include-by timestamp\n /// to improve the privacy of the user and the network as a whole.\n /// For example, if a contract interaction sets include-by to some\n /// publicly-known value (e.g. the time when a contract upgrades), then\n /// the wallet might wish to set an even lower one to avoid revealing that\n /// this tx is interacting with said contract.\n /// Ideally, all wallets should standardise on an approach in order to\n /// provide users with a large anonymity set -- although the exact apprach\n /// will need to be discussed. Wallets that deviate from a standard might\n /// accidentally reveal which wallet each transaction originates from.\n ///\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp = std::cmp::min(self.include_by_timestamp, include_by_timestamp);\n }\n\n /// Makes a request to the protocol's kernel circuit to ensure a note_hash\n /// actually exists.\n ///\n /// \"Read requests\" are used to prove that a note hash exists without\n /// revealing which specific note was read.\n ///\n /// This can be used to prove existence of both settled notes (created in\n /// prior transactions) and transient notes (created in the current\n /// transaction).\n /// If you need to prove existence of a settled note _at a specific block\n /// number_, use `note_inclusion::prove_note_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note_hash read\n /// requests.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to read and verify\n ///\n /// # Advanced\n /// In \"traditional\" circuits for non-Aztec privacy applications, the merkle\n /// membership proofs to check existence of a note are performed _within_\n /// the application circuit.\n ///\n /// All Aztec private functions have access to the following constraint\n /// optimisation:\n /// In cases where the note being read was created earlier in the same tx,\n /// the note wouldn't yet exist in the Note Hash Tree, so a hard-coded\n /// merkle membership check which then gets ignored would be a waste of\n /// constraints.\n /// Instead, we can send read requests for all notes to the protocol's\n /// kernel circuits, where we can conditionally assess which notes actually\n /// need merkle membership proofs, and select an appropriately-sized\n /// kernel circuit.\n ///\n /// For \"settled notes\" (which already existed in the Note Hash Tree of the\n /// anchor block (i.e. before the tx began)), the kernel does a merkle\n /// membership check.\n ///\n /// For \"pending notes\" (which were created earlier in _this_ tx), the\n /// kernel will check that the note existed _before_ this read request was\n /// made, by checking the side-effect counters of the note_hash and this\n /// read request.\n ///\n /// This approach improves latency between writes and reads:\n /// a function can read a note which was created earlier in the tx (rather\n /// than performing the read in a later tx, after waiting for the earlier tx\n /// to be included, to ensure the note is included in the tree).\n ///\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = Counted::new(note_hash, self.next_counter());\n self.note_hash_read_requests.push(side_effect);\n }\n\n /// Requests to read a specific nullifier from the nullifier tree.\n ///\n /// Nullifier read requests are used to prove that a nullifier exists without\n /// revealing which specific nullifier preimage was read.\n ///\n /// This can be used to prove existence of both settled nullifiers (created in\n /// prior transactions) and transient nullifiers (created in the current\n /// transaction).\n /// If you need to prove existence of a settled nullifier _at a specific block\n /// number_, use `nullifier_inclusion::prove_nullifier_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifier read\n /// requests.\n ///\n /// # Arguments\n /// * `nullifier` - The nullifier to read and verify\n ///\n /// # Advanced\n /// This approach improves latency between writes and reads:\n /// a function can read a nullifier which was created earlier in the tx\n /// (rather than performing the read in a later tx, after waiting for the\n /// earlier tx to be included, to ensure the note is included in the tree).\n ///\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = Counted::new(nullifier, self.next_counter());\n self.nullifier_read_requests.push(request);\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// Advanced function: Only needed if you're designing your own notes and/or\n /// nullifiers.\n ///\n /// Contracts are not allowed to compute nullifiers for other contracts, as\n /// that would let them read parts of their private state. Because of this,\n /// a contract is only given an \"app-siloed secret key\", which is\n /// constructed by hashing the user's master nullifier secret key with the\n /// contract's address.\n /// However, because contracts cannot be trusted with a user's master\n /// nullifier secret key (because we don't know which contracts are honest\n /// or malicious), the PXE refuses to provide any master secret keys to\n /// any app smart contract function. This means app functions are unable to\n /// prove that the derivation of an app-siloed nullifier secret key has been\n /// computed correctly. Instead, an app function can request to the kernel\n /// (via `request_nsk_app`) that it validates the siloed derivation, since\n /// the kernel has been vetted to not leak any master secret keys.\n ///\n /// A common nullification scheme is to inject a nullifier secret key into\n /// the preimage of a nullifier, to make the nullifier deterministic but\n /// random-looking. This function enables that flow.\n ///\n /// # Arguments\n /// * `npk_m_hash` - A hash of the master nullifier public key of the user\n /// whose PXE is executing this function.\n ///\n /// # Returns\n /// * The app-siloed nullifier secret key that corresponds to the given\n /// `npk_m_hash`.\n ///\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// See `request_nsk_app` and `request_sk_app` for more info.\n ///\n /// The intention of the \"outgoing\" keypair is to provide a second secret\n /// key for all of a user's outgoing activity (i.e. for notes that a user\n /// creates, as opposed to notes that a user receives from others). The\n /// separation of incoming and outgoing data was a distinction made by\n /// zcash, with the intention of enabling a user to optionally share with a\n /// 3rd party a controlled view of only incoming or outgoing notes.\n /// Similar functionality of sharing select data can be achieved with\n /// offchain zero-knowledge proofs. It is up to an app developer whether\n /// they choose to make use of a user's outgoing keypair within their\n /// application logic, or instead simply use the same keypair (the address\n /// keypair (which is effectively the same as the \"incooming\" keypair)) for\n /// all incoming & outgoing messages to a user.\n ///\n /// Currently, all of the exposed encryption functions in aztec-nr ignore\n /// the outgoing viewing keys, and instead encrypt all note logs and event\n /// logs to a user's address public key.\n ///\n /// # Arguments\n /// * `ovpk_m_hash` - Hash of the outgoing viewing public key master\n ///\n /// # Returns\n /// * The application-specific outgoing viewing secret key\n ///\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n /// Pushes a Key Validation Request to the kernel.\n ///\n /// Private functions are not allowed to see a user's master secret keys,\n /// because we do not trust them. They are instead given \"app-siloed\" secret\n /// keys with a claim that they relate to a master public key.\n /// They can then request validation of this claim, by making a \"key\n /// validation request\" to the protocol's kernel circuits (which _are_\n /// allowed to see certain master secret keys).\n ///\n /// When a Key Validation Request tuple of (sk_app, Pk_m, app_address) is\n /// submitted to the kernel, it will perform the following derivations\n /// to validate the relationship between the claimed sk_app and the user's\n /// Pk_m:\n ///\n /// (sk_m) ----> * G ----> Pk_m\n /// | |\n /// v We use the kernel to prove this\n /// h(sk_m, app_address) | sk_app-Pk_m relationship, because app\n /// | circuits must not be trusted to see sk_m.\n /// v |\n /// sk_app - - - - - - - - -\n ///\n /// The function is named \"request_\" instead of \"get_\" to remind the user\n /// that a Key Validation Request will be emitted to the kernel.\n ///\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element).\n /// This content has a very specific layout.\n /// docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2).\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree;\n /// messages never technically get deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target L2 contract. The message will need to be manually\n /// consumed by the target contract through a separate Aztec transaction.\n /// The message will not be available for consumption immediately. Messages\n /// get copied over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// Validates message existence in the L1-to-L2 message tree and nullifies\n /// the message to prevent double-consumption.\n ///\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let nullifier = process_l1_to_l2_message(\n self.anchor_block_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n\n /// Emits a private log (an array of Fields) that will be published to an\n /// Ethereum blob.\n ///\n /// Private logs are intended for the broadcasting of ciphertexts: that is,\n /// encrypted events or encrypted note contents.\n /// Since the data in the logs is meant to be _encrypted_, private_logs are\n /// broadcast to publicly-visible Ethereum blobs.\n /// The intended recipients of such encrypted messages can then discover and\n /// decrypt these encrypted logs using their viewing secret key.\n /// (See `../messages/discovery` for more details).\n ///\n /// Important note: This function DOES NOT _do_ any encryption of the input\n /// `log` fields. This function blindly publishes whatever input `log` data\n /// is fed into it, so the caller of this function should have already\n /// performed the encryption, and the `log` should be the result of that\n /// encryption.\n ///\n /// The protocol does not dictate what encryption scheme should be used:\n /// a smart contract developer can choose whatever encryption scheme they\n /// like.\n /// Aztec-nr includes some off-the-shelf encryption libraries that\n /// developers might wish to use, for convenience. These libraries not only\n /// encrypt a plaintext (to produce a ciphertext); they also prepend the\n /// ciphertext with a `tag` and `ephemeral public key` for easier message\n /// discovery. This is a very dense topic, and we will be writing more\n /// libraries and docs soon.\n ///\n /// > Currently, AES128 CBC encryption is the main scheme included in\n /// > aztec.nr.\n /// > We are currently making significant changes to the interfaces of the\n /// > encryption library.\n ///\n /// In some niche use cases, an app might be tempted to publish\n /// _un-encrypted_ data via a private log, because _public logs_ are not\n /// available to private functions. Be warned that emitting public data via\n /// private logs is strongly discouraged, and is considered a \"privacy\n /// anti-pattern\", because it reveals identifiable information about _which_\n /// function has been executed. A tx which leaks such information does not\n /// contribute to the privacy set of the network.\n ///\n /// * Unlike `emit_raw_note_log`, this log is not tied to any specific note\n ///\n /// # Arguments\n /// * `log` - The log data that will be publicly broadcast (so make sure\n /// it's already been encrypted before you call this function).\n /// Private logs are bounded in size (PRIVATE_LOG_SIZE_IN_FIELDS), to\n /// encourage all logs from all smart contracts look identical.\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields). Although the input log has a max size of\n /// PRIVATE_LOG_SIZE_IN_FIELDS, the latter values of the array might all\n /// be 0's for small logs. This `length` should reflect the trimmed length\n /// of the array. The protocol's kernel circuits can then append random\n /// fields as \"padding\" after the `length`, so that the logs of this\n /// smart contract look indistinguishable from (the same length as) the\n /// logs of all other applications. It's up to wallets how much padding\n /// to apply, so ideally all wallets should agree on standards for this.\n ///\n /// # Advanced\n ///\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0 }\n .count(counter);\n self.private_logs.push(private_log);\n }\n\n // TODO: rename.\n /// Emits a private log that is explicitly tied to a newly-emitted note_hash,\n /// to convey to the kernel: \"this log relates to this note\".\n ///\n /// This linkage is important in case the note gets squashed (due to being\n /// read later in this same tx), since we can then squash the log as well.\n ///\n /// See `emit_private_log` for more info about private log emission.\n ///\n /// # Arguments\n /// * `log` - The log data as an array of Field elements\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields).\n /// * `note_hash_counter` - The side-effect counter that was assigned to the\n /// new note_hash when it was pushed to this\n // `PrivateContext`.\n ///\n /// Important: If your application logic requires the log to always be\n /// emitted regardless of note squashing, consider using `emit_private_log`\n /// instead, or emitting additional events.\n ///\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter };\n self.private_logs.push(private_log.count(counter));\n }\n\n pub fn emit_contract_class_log(&mut self, log: [Field; N]) {\n let contract_address = self.this_address();\n let counter = self.next_counter();\n\n let log_to_emit: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS] =\n log.concat([0; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - N]);\n // Note: the length is not always N, it is the number of fields we want to broadcast, omitting trailing zeros to save blob space.\n // Safety: The below length is constrained in the base rollup, which will make sure that all the fields beyond length are zero.\n // However, it won't be able to check that we didn't add extra padding (trailing zeroes)\n let length = unsafe { trimmed_array_length_hint(log_to_emit) };\n // We hash the entire padded log to ensure a user cannot pass a shorter length and so emit incorrect shorter bytecode.\n let log_hash = poseidon2_hash(log_to_emit);\n // Safety: the below only exists to broadcast the raw log, so we can provide it to the base rollup later to be constrained.\n unsafe {\n notify_created_contract_class_log(contract_address, log_to_emit, length, counter);\n }\n\n self.contract_class_logs_hashes.push(LogHash { value: log_hash, length: length }.count(\n counter,\n ));\n }\n\n /// Calls a private function on another contract (or the same contract).\n ///\n /// Very low-level function.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (feature not built yet - see github).\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n /// Makes a read-only call to a private function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L2 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// See `call_private_function` for more general info on private function\n /// calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n /// Calls a private function that takes no arguments.\n ///\n /// This is a convenience function for calling private functions that don't\n /// require any input parameters. It's equivalent to `call_private_function`\n /// but slightly more efficient to use when no arguments are needed.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n /// Makes a read-only call to a private function which takes no arguments.\n ///\n /// This combines the optimisation of `call_private_function_no_args` with\n /// the safety of `static_call_private_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n /// Low-level private function call.\n ///\n /// This is the underlying implementation used by all other private function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args_hash` - Pre-computed hash of the function arguments\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values\n ///\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1; // TODO: call `next_counter` instead, for consistency\n ReturnsHash::new(returns_hash)\n }\n\n /// Enqueues a call to a public function to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n hide_msg_sender: bool,\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(\n contract_address,\n calldata_hash,\n false,\n hide_msg_sender,\n )\n }\n\n /// Enqueues a read-only call to a public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See also `call_public_function` for more important information about\n /// making private -> public function calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n hide_msg_sender: bool,\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(\n contract_address,\n calldata_hash,\n true,\n hide_msg_sender,\n )\n }\n\n /// Enqueues a call to a public function that takes no arguments.\n ///\n /// This is an optimisation for calling public functions that don't\n /// take any input parameters. It's otherwise equivalent to\n /// `call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n hide_msg_sender: bool,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(\n contract_address,\n calldata_hash,\n false,\n hide_msg_sender,\n )\n }\n\n /// Enqueues a read-only call to a public function with no arguments.\n ///\n /// This combines the optimisation of `call_public_function_no_args` with\n /// the safety of `static_call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n hide_msg_sender: bool,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(\n contract_address,\n calldata_hash,\n true,\n hide_msg_sender,\n )\n }\n\n /// Low-level public function call.\n ///\n /// This is the underlying implementation used by all other public function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// Advanced function: Most developers should use `call_public_function`\n /// or `static_call_public_function` instead. This function is exposed for\n /// performance optimization and advanced use cases.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n hide_msg_sender: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let msg_sender = if hide_msg_sender {\n NULL_MSG_SENDER_CONTRACT_ADDRESS\n } else {\n self.this_address()\n };\n\n let call_request =\n PublicCallRequest { msg_sender, contract_address, is_static_call, calldata_hash };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n /// Enqueues a public function call, and designates it to be the teardown\n /// function for this tx. Only one teardown function call can be made by a\n /// tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a hefty function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the teardown\n /// function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - An array of fields to pass to the function.\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n hide_msg_sender: bool,\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(\n contract_address,\n calldata_hash,\n false,\n hide_msg_sender,\n )\n }\n\n /// Low-level function to set the public teardown function.\n ///\n /// This is the underlying implementation for setting the teardown function\n /// call that will execute at the end of the transaction. Instead of taking\n /// raw arguments, it accepts a hash of the arguments.\n ///\n /// Advanced function: Most developers should use\n /// `set_public_teardown_function` instead.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the teardown\n /// function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n /// * `hide_msg_sender` - the called function will see a \"null\" value for\n /// `msg_sender` if set to `true`\n ///\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n hide_msg_sender: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let msg_sender = if hide_msg_sender {\n NULL_MSG_SENDER_CONTRACT_ADDRESS\n } else {\n self.this_address()\n };\n\n self.public_teardown_call_request =\n PublicCallRequest { msg_sender, contract_address, is_static_call, calldata_hash };\n }\n\n /// Increments the side-effect counter.\n ///\n /// Very low-level function.\n ///\n /// # Advanced\n ///\n /// Every side-effect of a private function is given a \"side-effect counter\",\n /// based on when it is created. This PrivateContext is in charge of\n /// assigning the counters.\n ///\n /// The reason we have side-effect counters is complicated. Consider this\n /// illustrative pseudocode of inter-contract function calls:\n /// ```\n /// contract A {\n /// let x = 5; // pseudocode for storage var x.\n /// fn a1 {\n /// read x; // value: 5, counter: 1.\n /// x = x + 1;\n /// write x; // value: 6, counter: 2.\n ///\n /// B.b(); // start_counter: 2, end_counter: 4\n ///\n /// read x; // value: 36, counter: 5.\n /// x = x + 1;\n /// write x; // value: 37, counter: 6.\n /// }\n ///\n /// fn a2 {\n /// read x; // value: 6, counter: 3.\n /// x = x * x;\n /// write x; // value: 36, counter: 4.\n /// }\n /// }\n ///\n /// contract B {\n /// fn b() {\n /// A.a2();\n /// }\n /// }\n /// ```\n ///\n /// Suppose a1 is the first function called. The comments show the execution\n /// counter of each side-effect, and what the new value of `x` is.\n ///\n /// These (private) functions are processed by Aztec's kernel circuits in an\n /// order that is different from execution order:\n /// All of A.a1 is proven before B.b is proven, before A.a2 is proven.\n /// So when we're in the 2nd execution frame of A.a1 (after the call to\n /// B.b), the circuit needs to justify why x went from being `6` to `36`.\n /// But the circuit doesn't know why, and given the order of proving, the\n /// kernel hasn't _seen_ a value of 36 get written yet.\n /// The kernel needs to track big arrays of all side-effects of all\n /// private functions in a tx. Then, as it recurses and processes B.b(), it\n /// will eventually see a value of 36 get written.\n ///\n /// Suppose side-effect counters weren't exposed:\n /// The kernel would only see this ordering (in order of proof verification):\n /// [ A.a1.read, A.a1.write, A.a1.read, A.a1.write, A.a2.read, A.a2.write ]\n /// [ 5, 6, 36, 37, 6, 36 ]\n /// The kernel wouldn't know _when_ B.b() was called within A.a1(), because\n /// it can't see what's going on within an app circuit. So the kernel\n /// wouldn't know that the ordering of reads and writes should actually be:\n /// [ A.a1.read, A.a1.write, A.a2.read, A.a2.write, A.a1.read, A.a1.write ]\n /// [ 5, 6, 6, 36, 36, 37 ]\n ///\n /// And so, we introduced side-effect counters: every private function must\n /// assign side-effect counters alongside every side-effect that it emits,\n /// and also expose to the kernel the counters that it started and ended\n /// with.\n /// This gives the kernel enough information to arrange all side-effects in\n /// the correct order.\n /// It can then catch (for example) if a function tries to read state\n /// before it has been written (e.g. if A.a2() maliciously tried to read\n /// a value of x=37) (e.g. if A.a1() maliciously tried to read x=6).\n ///\n /// If a malicious app contract _lies_ and does not count correctly:\n /// - It cannot lie about its start and end counters because the kernel\n /// will catch this.\n /// - It _could_ lie about its intermediate counters:\n /// - 1. It could not increment its side-effects correctly\n /// - 2. It could label its side-effects with counters outside of its\n /// start and end counters' range.\n /// The kernel will catch 2.\n /// The kernel will not catch 1., but this would only cause corruption\n /// to the private state of the malicious contract, and not any other\n /// contracts (because a contract can only modify its own state). If\n /// a \"good\" contract is given _read access_ to a maliciously-counting\n /// contract (via an external getter function, or by reading historic\n /// state from the archive tree directly), and they then make state\n /// changes to their _own_ state accordingly, that could be dangerous.\n /// Developers should be mindful not to trust the claimed innards of\n /// external contracts unless they have audited/vetted the contracts\n /// including vetting the side-effect counter incrementation.\n /// This is a similar paradigm to Ethereum smart contract development:\n /// you must vet external contracts that your contract relies upon, and\n /// you must not make any presumptions about their claimed behaviour.\n /// (Hopefully if a contract imports a version of aztec-nr, we will get\n /// contract verification tooling that can validate the authenticity\n /// of the imported aztec-nr package, and hence infer that the side-\n /// effect counting will be correct, without having to re-audit such logic\n /// for every contract).\n ///\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: 0,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n anchor_block_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" + }, + "71": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", + "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::{MAX_U32_VALUE, NULL_MSG_SENDER_CONTRACT_ADDRESS};\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\n/// # PublicContext\n///\n/// The **main interface** between an #[external(\"public\")] function and the Aztec blockchain.\n///\n/// An instance of the PublicContext is initialized automatically at the outset\n/// of every public function, within the #[external(\"public\")] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it will always be available\n/// within the body of every #[external(\"public\")] function in your smart contract.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PublicContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a public function:\n/// - Data relating to how this public function was called:\n/// - msg_sender, this_address\n/// - Data relating to the current blockchain state:\n/// - timestamp, block_number, chain_id, version\n/// - Gas and fee information\n/// - Provides state access:\n/// - Read/write public storage (key-value mapping)\n/// - Check existence of notes and nullifiers\n/// (Some patterns use notes & nullifiers to store public (not private)\n/// information)\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to other public smart contract functions:\n/// - Writes data to the blockchain:\n/// - Updates to public state variables\n/// - New public logs (for events)\n/// - New L2->L1 messages\n/// - New notes & nullifiers\n/// (E.g. pushing public info to notes/nullifiers, or for completing\n/// \"partial notes\")\n///\n/// ## Key Differences from Private Execution\n///\n/// Unlike private functions -- which are executed on the user's device and which\n/// can only reference historic state -- public functions are executed by a block\n/// proposer and are executed \"live\" on the _current_ tip of the chain.\n/// This means public functions can:\n/// - Read and write _current_ public state\n/// - Immediately see the effects of earlier transactions in the same block\n///\n/// Also, public functions are executed within a zkVM (the \"AVM\"), so that they\n/// can _revert_ whilst still ensuring payment to the proposer and prover.\n/// (Private functions cannot revert: they either succeed, or they cannot be\n/// included).\n///\n/// ## Optimising Public Functions\n///\n/// Using the AVM to execute public functions means they compile down to \"AVM\n/// bytecode\" instead of the ACIR that private functions (standalone circuits)\n/// compile to. Therefore the approach to optimising a public function is\n/// fundamentally different from optimising a public function.\n///\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl Eq for PublicContext {\n fn eq(self, other: Self) -> bool {\n (self.args_hash == other.args_hash)\n // Can't compare the function compute_args_hash\n }\n}\n\nimpl PublicContext {\n /// Creates a new PublicContext instance.\n ///\n /// Low-level function: This is called automatically by the #[external(\"public\")]\n /// macro, so you shouldn't need to be called directly by smart contract\n /// developers.\n ///\n /// # Arguments\n /// * `compute_args_hash` - Function to compute the args_hash\n ///\n /// # Returns\n /// * A new PublicContext instance\n ///\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n /// Emits a _public_ log that will be visible onchain to everyone.\n ///\n /// # Arguments\n /// * `log` - The data to log, must implement Serialize trait\n ///\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n /// Checks if a given note hash exists in the note hash tree at a particular\n /// leaf_index.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to check for existence\n /// * `leaf_index` - The index where the note hash should be located\n ///\n /// # Returns\n /// * `bool` - True if the note hash exists at the specified index\n ///\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message\n /// tree at a particular leaf index.\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// This function should be called before attempting to consume an L1-to-L2\n /// message.\n ///\n /// # Arguments\n /// * `msg_hash` - Hash of the L1-to-L2 message to check\n /// * `msg_leaf_index` - The index where the message should be located\n ///\n /// # Returns\n /// * `bool` - True if the message exists at the specified index\n ///\n /// # Advanced\n /// * Uses the AVM l1_to_l2_msg_exists opcode for tree lookup\n /// * Messages are copied from L1 Inbox to L2 by block proposers\n ///\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n // TODO(alvaro): Make l1l2msg leaf index a u64 upstream\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1\n }\n\n /// Checks if a specific nullifier has been emitted by a given contract.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. An example is to check\n /// whether a contract has been published: we emit a nullifier that is\n /// deterministic, but whose preimage is _not_ private. This is more\n /// efficient than using mutable storage, and can be done directly\n /// from a private function.\n ///\n /// Nullifiers can be tested for non-existence in public, which is not the\n /// case in private. Because private functions do not have access to\n /// the tip of the blockchain (but only the anchor block they are built\n /// at) they can only prove nullifier non-existence in the past. But between\n /// an anchor block and the block in which a tx is included, the nullifier\n /// might have been inserted into the nullifier tree by some other\n /// transaction.\n /// Public functions _do_ have access to the tip of the state, and so\n /// this pattern is safe.\n ///\n /// # Arguments\n /// * `unsiloed_nullifier` - The raw nullifier value (before siloing with\n /// the contract address that emitted it).\n /// * `address` - The claimed contract address that emitted the nullifier\n ///\n /// # Returns\n /// * `bool` - True if the nullifier has been emitted by the specified contract\n ///\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2) -- effectively\n /// marking it as \"read\".\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree,\n /// using the `l1_to_l2_msg_exists` method. Messages never technically get\n /// deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1. It will not be available for consumption immediately. Messages\n /// get copied-over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// * Validates message existence in the L1-to-L2 message tree\n /// * Prevents double-consumption by emitting a nullifier\n /// * Message hash is computed from all parameters + chain context\n /// * Will revert if message doesn't exist or was already consumed\n ///\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element)\n ///\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n /// Calls a public function on another contract.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Arguments to pass to the function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Makes a read-only call to a public function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Useful for querying data from other contracts safely.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Array of arguments to pass to the called function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Adds a new note hash to the Aztec blockchain's global Note Hash Tree.\n ///\n /// Notes are ordinarily constructed and emitted by _private_ functions, to\n /// ensure that both the content of the note, and the contract that emitted\n /// the note, stay private.\n ///\n /// There are however some useful patterns whereby a note needs to contain\n /// _public_ data. The ability to push a new note_hash from a _public_\n /// function means that notes can be injected with public data immediately\n /// -- as soon as the public value is known. The slower alternative would\n /// be to submit a follow-up transaction so that a private function can\n /// inject the data. Both are possible on Aztec.\n ///\n /// Search \"Partial Note\" for a very common pattern which enables a note\n /// to be \"partially\" populated with some data in a _private_ function, and\n /// then later \"completed\" with some data in a public function.\n ///\n /// # Arguments\n /// * `note_hash` - The hash of the note to add to the tree\n ///\n /// # Advanced\n /// * The note hash will be siloed with the contract address by the protocol\n ///\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n\n /// Adds a new nullifier to the Aztec blockchain's global Nullifier Tree.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. Hence why you're seeing this\n /// function within the PublicContext.\n /// An example is to check whether a contract has been published: we emit\n /// a nullifier that is deterministic, but whose preimage is _not_ private.\n ///\n /// # Arguments\n /// * `nullifier` - A unique field element that represents the consumed\n /// state\n ///\n /// # Advanced\n /// * Nullifier is immediately added to the global nullifier tree\n /// * Emitted nullifiers are immediately visible to all\n /// subsequent transactions in the same block\n /// * Automatically siloed with the contract address by the protocol\n /// * Used for preventing double-spending and ensuring one-time actions\n ///\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n /// Returns the address of the current contract being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: If the calling function is a _private_ function, then\n /// it had the option of hiding its address when enqueuing this public\n /// function call. In such cases, this `context.msg_sender()` method will\n /// return `Option::none`.\n /// If the calling function is a _public_ function, it will always return\n /// an `Option::some` (i.e. a non-null value).\n ///\n /// # Returns\n /// * `Option` - The address of the smart contract that called\n /// this function (be it an app contract or a user's account contract).\n ///\n /// # Advanced\n /// * Value is provided by the AVM sender opcode\n /// * In nested calls, this is the immediate caller, not the original\n /// transaction sender\n ///\n pub fn msg_sender(_self: Self) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let maybe_msg_sender = unsafe { sender() };\n if maybe_msg_sender == NULL_MSG_SENDER_CONTRACT_ADDRESS {\n Option::none()\n } else {\n Option::some(maybe_msg_sender)\n }\n }\n\n /// \"Unsafe\" versus calling `context.msg_sender()`, because it doesn't\n /// translate `NULL_MSG_SENDER_CONTRACT_ADDRESS` as\n /// `Option::none`.\n /// Used by some internal aztecnr functions.\n pub fn msg_sender_unsafe(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n\n /// Returns the function selector of the currently-executing function.\n ///\n /// This is similar to `msg.sig` in Solidity, returning the first 4\n /// bytes of the function signature.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// * Extracted from the first element of calldata\n /// * Used internally for function dispatch in the AVM\n ///\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: The #[external(\"public\")] macro uses this internally.\n /// Smart contract developers typically won't need to access this\n /// directly as arguments are automatically made available.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n\n /// Returns the \"transaction fee\" for the current transaction.\n /// This is the final tx fee that will be deducted from the fee_payer's\n /// \"fee-juice\" balance (in the protocol's Base Rollup circuit).\n ///\n /// # Returns\n /// * `Field` - The actual, final cost of the transaction, taking into account:\n /// the actual gas used during the setup and app-logic phases,\n /// and the fixed amount of gas that's been allocated by the user\n /// for the teardown phase.\n /// I.e. effectiveL2FeePerGas * l2GasUsed + effectiveDAFeePerGas * daGasUsed\n ///\n /// This will return `0` during the \"setup\" and \"app-logic\" phases of\n /// tx execution (because the final tx fee is not known at that time).\n /// This will only return a nonzero value during the \"teardown\" phase of\n /// execution, where the final tx fee can actually be computed.\n ///\n /// Regardless of _when_ this function is called during the teardown phase,\n /// it will always return the same final tx fee value. The teardown phase\n /// does not consume a variable amount of gas: it always consumes a\n /// pre-allocated amount of gas, as specified by the user when they generate\n /// their tx.\n ///\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n /// Returns the current block number.\n ///\n /// This is similar to `block.number` in Solidity.\n ///\n /// Note: the current block number is only available within a public function\n /// (as opposed to a private function).\n ///\n /// Note: the time intervals between blocks should not be relied upon as\n /// being consistent:\n /// - Timestamps of blocks fall within a range, rather than at exact regular\n /// intervals.\n /// - Slots can be missed.\n /// - Protocol upgrades can completely change the intervals between blocks\n /// (and indeed the current roadmap plans to reduce the time between\n /// blocks, eventually).\n /// Use `context.timestamp()` for more-reliable time-based logic.\n ///\n /// # Returns\n /// * `u32` - The current block number\n ///\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n\n /// Returns the timestamp of the current block.\n ///\n /// This is similar to `block.timestamp` in Solidity.\n ///\n /// All functions of all transactions in a block share the exact same\n /// timestamp (even though technically each transaction is executed\n /// one-after-the-other).\n ///\n /// Important note: Timestamps of Aztec blocks are not at reliably-fixed\n /// intervals. The proposer of the block has some flexibility to choose a\n /// timestamp which is in a valid _range_: Obviously the timestamp of this\n /// block must be strictly greater than that of the previous block, and must\n /// must be less than the timestamp of whichever ethereum block the aztec\n /// block is proposed to. Furthermore, if the timestamp is not deemed close\n /// enough to the actual current time, the committee of validators will not\n /// attest to the block.\n ///\n /// # Returns\n /// * `u64` - Unix timestamp in seconds\n ///\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n\n /// Returns the fee per unit of L2 gas for this transaction (aka the \"L2 gas\n /// price\"), as chosen by the user.\n ///\n /// L2 gas covers the cost of executing public functions and handling\n /// side-effects within the AVM.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of L2 gas\n ///\n /// Wallet developers should be mindful that the choice of gas price (which\n /// is publicly visible) can leak information about the user, e.g.:\n /// - which wallet software the user is using;\n /// - the amount of time which has elapsed from the time the user's wallet\n /// chose a gas price (at the going rate), to the time of tx submission.\n /// This can give clues about the proving time, and hence the nature of\n /// the tx.\n /// - the urgency of the transaction (which is kind of unavoidable, if the\n /// tx is indeed urgent).\n /// - the wealth of the user.\n /// - the exact user (if the gas price is explicitly chosen by the user to\n /// be some unique number like 0.123456789, or their favourite number).\n /// Wallet devs might wish to consider fuzzing the choice of gas price.\n ///\n pub fn base_fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_l2_gas()\n }\n }\n\n /// Returns the fee per unit of DA (Data Availability) gas (aka the \"DA gas\n /// price\").\n ///\n /// DA gas covers the cost of making transaction data available on L1.\n ///\n /// See the warning in `fee_pre_l2_gas` for how gas prices can be leaky.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of DA gas\n ///\n pub fn base_fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_da_gas()\n }\n }\n\n /// Returns the remaining L2 gas available for this transaction.\n ///\n /// Different AVM opcodes consume different amounts of gas.\n ///\n /// # Returns\n /// * `u32` - Remaining L2 gas units\n ///\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n\n /// Returns the remaining DA (Data Availability) gas available for this\n /// transaction.\n ///\n /// DA gas is consumed when emitting data that needs to be made available\n /// on L1, such as public logs or state updates.\n /// All of the side-effects from the private part of the tx also consume\n /// DA gas before execution of any public functions even begins.\n ///\n /// # Returns\n /// * `u32` - Remaining DA gas units\n ///\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n\n /// Checks if the current execution is within a staticcall context, where\n /// no state changes or logs are allowed to be emitted (by this function\n /// or any nested function calls).\n ///\n /// # Returns\n /// * `bool` - True if in staticcall context, false otherwise\n ///\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n /// Reads raw field values from public storage.\n /// Reads N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to read from\n ///\n /// # Returns\n /// * `[Field; N]` - Array of N field values from consecutive storage slots\n ///\n /// # Generic Parameters\n /// * `N` - the number of consecutive slots to return, starting from the\n /// `storage_slot`.\n ///\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n /// Reads a typed value from public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to read from\n ///\n /// # Returns\n /// * `T` - The deserialized value from storage\n ///\n /// # Generic Parameters\n /// * `T` - The type that the caller expects to read from the `storage_slot`.\n ///\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n /// Writes raw field values to public storage.\n /// Writes to N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// Public storage writes take effect immediately.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to write to\n /// * `values` - Array of N Fields to write to storage\n ///\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n /// Writes a typed value to public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to write to\n /// * `value` - The typed value to write to storage\n ///\n /// # Generic Parameters\n /// * `T` - The type to write to storage.\n ///\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn base_fee_per_l2_gas() -> u128 {\n base_fee_per_l2_gas_opcode()\n}\nunconstrained fn base_fee_per_da_gas() -> u128 {\n base_fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> u1 {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\n\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeBaseFeePerL2Gas)]\nunconstrained fn base_fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeBaseFeePerDaGas)]\nunconstrained fn base_fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> u1 {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" + }, + "72": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", + "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\n/// A hash that represents a private contract function call's return value. Call `get_preimage` to get the underlying\n/// value.\n///\n/// The kernels don't process the actual return values but instead their hashes, so it is up to contracts to populate\n/// oracles with the preimages of these hashes on return to make them available to their callers.\n///\n/// Public calls don't utilize this mechanism since the AVM does process the full return values.\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n /// Fetches the underlying return value from an oracle, constraining that it corresponds to the return data hash.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it. If `T`\n // is `()`, then `preimage` must be an array of length 0 (since that is `()`'s deserialization length).\n // `hash_args_array` handles empty arrays following the protocol rules (i.e. an empty args array is signaled\n // with a zero hash), correctly constraining `self.hash`.\n let preimage = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage), \"Preimage mismatch\");\n\n Deserialize::deserialize(preimage)\n }\n}\n\nmod test {\n use crate::{\n hash::hash_args_array,\n oracle::execution_cache,\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use super::ReturnsHash;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn retrieves_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test]\n unconstrained fn retrieves_empty_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = ();\n let serialized = [];\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test(should_fail_with = \"Preimage mismatch\")]\n unconstrained fn rejects_bad_preimage() {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let mut bad_serialized = serialized;\n bad_serialized[0] += 1;\n\n let hash = hash_args_array(serialized);\n\n let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns(bad_serialized);\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n }\n\n // This test passes due to a Noir bug.\n // #[test(should_fail_with=\"Preimage mismatch\")]\n // unconstrained fn rejects_bad_empty_preimage() {\n // let value = ();\n // let serialized = [];\n\n // let hash = hash_args_array(serialized);\n\n // let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns([1]);\n // assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n // }\n}\n" + }, + "73": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", + "source": "use crate::oracle::{execution::get_utility_context, storage::storage_read};\nuse protocol_types::{address::AztecAddress, traits::Packable};\n\n// If you'll modify this struct don't forget to update utility_context.ts as well.\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n get_utility_context()\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n // We get a context with default contract address, and then we construct the final context with the provided\n // contract address.\n let default_context = get_utility_context();\n\n Self {\n block_number: default_context.block_number,\n timestamp: default_context.timestamp,\n contract_address,\n version: default_context.version,\n chain_id: default_context.chain_id,\n }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n // We get a context with default contract address and block number, and then we construct the final context\n // with the provided contract address and block number.\n let default_context = get_utility_context();\n\n Self {\n block_number,\n timestamp: default_context.timestamp,\n contract_address,\n version: default_context.version,\n chain_id: default_context.chain_id,\n }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" + }, + "76": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", + "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n inner: u32,\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" + }, + "78": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/hash.nr", + "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::ToField,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n\n // `fields_to_hash` is the number of fields from the start of `packed_public_bytecode` that should be included in\n // the hash. Fields after this length are ignored.\n // +1 to account for the separator.\n let num_fields_to_hash = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, num_fields_to_hash)\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = [0; 100];\n for i in 0..100 {\n input[i] = i as Field;\n }\n let hash = hash_args_array(input);\n dep::std::println(hash);\n // Used in yarn-project/stdlib test snapshots:\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_calldata_hash() {\n let mut input = [0; 100];\n for i in 0..input.len() {\n input[i] = i as Field;\n }\n let hash = hash_calldata_array(input);\n dep::std::println(hash);\n let hash_check = hash_calldata(input.as_slice());\n assert(hash == hash_check);\n // Used in cpp vm2 tests:\n assert(hash == 0x191383c9f8964afd3ea8879a03b7dda65d6724773966d18dcf80e452736fc1f3);\n}\n\n#[test]\nunconstrained fn public_bytecode_commitment() {\n let mut input = [0; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS];\n let len = 99;\n for i in 1..len + 1 {\n input[i] = i as Field;\n }\n input[0] = (len as Field) * 31;\n let hash = compute_public_bytecode_commitment(input);\n dep::std::println(hash);\n // Used in cpp vm2 tests:\n assert(hash == 0x16d621c3387156ef53754679e7b2c9be8f0bceeb44aa59a74991df3b0b42a0bf);\n}\n" + }, + "90": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", + "source": "use dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress,\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" + }, + "93": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", + "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ECDH shared secret using the public key corresponding to an AztecAddress:\n///\n/// # Formula\n/// `[ephemeral_secret] * recipient_address_public_key = shared_secret`\n///\n/// # Usage\n/// The intention is that the _creator_ of a shared secret calls this function,\n/// providing the address of their intended recipient.\n///\n/// # Note\n/// The function returns `Option` because the recipient address might be invalid\n/// (i.e., not correspond to a point on the curve). Callers must handle the `None` case.\n/// This is unlike `derive_ecdh_shared_secret`, which always returns a `Point` because it\n/// operates on guaranteed-valid inputs.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Option {\n recipient_address.to_address_point().map(|addr_point| {\n derive_ecdh_shared_secret(ephemeral_secret, addr_point.inner)\n })\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().unwrap().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().unwrap().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret.unwrap(), shared_secret_alt);\n}\n" + }, + "94": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", + "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" + }, + "95": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", + "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n\nmod test {\n use super::get_public_keys;\n\n use crate::test::helpers::test_environment::TestEnvironment;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n global KEY_ORACLE_RESPONSE_LENGTH: u32 = 13; // 12 fields for the keys, one field for the partial address\n\n #[test(should_fail_with = \"Invalid public keys hint for address\")]\n unconstrained fn get_public_keys_fails_with_bad_hint() {\n let mut env = TestEnvironment::new();\n let account = env.create_light_account();\n\n // Instead of querying for some unknown account, which would result in the oracle erroring out, we mock a bad oracle\n // response to check that the circuit properly checks the address derivation.\n let mut random_keys_and_partial_address = [0; KEY_ORACLE_RESPONSE_LENGTH];\n // We use randomly generated points on the curve, and a random partial address to ensure that\n // this combination does not derive the address and we should see the assertion fail.\n // npk_m\n random_keys_and_partial_address[0] =\n 0x292364b852c6c6f01472951e76a39cbcf074591fd0e063a81965e7b51ad868a5;\n random_keys_and_partial_address[1] =\n 0x0a687b46cdc9238f1c311f126aaaa4acbd7a737bff2efd7aeabdb8d805843a27;\n random_keys_and_partial_address[2] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ivpk_m\n random_keys_and_partial_address[3] =\n 0x173c5229a00c5425255680dd6edc27e278c48883991f348fe6985de43b4ec25f;\n random_keys_and_partial_address[4] =\n 0x1698608e23b5f6c2f43c49a559108bb64e2247b8fc2da842296a416817f40b7f;\n random_keys_and_partial_address[5] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ovpk_m\n random_keys_and_partial_address[6] =\n 0x1bad2f7d1ad960a1bd0fe4d2c8d17f5ab4a86ef8b103e0a9e7f67ec0d3b4795e;\n random_keys_and_partial_address[7] =\n 0x206db87110abbecc9fbaef2c865189d94ef2c106202f734ee4eba9257fd28bf1;\n random_keys_and_partial_address[8] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // tpk_m\n random_keys_and_partial_address[9] =\n 0x05e3bd9cfe6b47daa139613619cf7d7fd8bb0112b6f2908caa6d9b536ed948ed;\n random_keys_and_partial_address[10] =\n 0x051066f877c9df47552d02e7dc32127ff4edefc8498e813bca1cbd3f5d1be429;\n random_keys_and_partial_address[11] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // partial address\n random_keys_and_partial_address[12] =\n 0x236703e2cb00a182e024e98e9f759231b556d25ff19f98896cebb69e9e678cc9;\n\n let _ = OracleMock::mock(\"utilityGetPublicKeysAndPartialAddress\").returns(\n random_keys_and_partial_address.serialize(),\n );\n let _ = get_public_keys(account);\n }\n}\n" + }, + "99": { + "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v3.0.0-devnet.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", + "source": "use crate::macros::{\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::NOTES,\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[external(...)], #[contract_library_method], or #[test] are not allowed in contracts.\n check_each_fn_macroified(m);\n\n // We generate `_compute_note_hash_and_nullifier`, `sync_private_state` and `process_message`\n // functions only if they are not already implemented. If they are implemented we just insert empty\n // quotes.\n let contract_library_method_compute_note_hash_and_nullifier = if !m.functions().any(|f| {\n f.name() == quote { _compute_note_hash_and_nullifier }\n }) {\n generate_contract_library_method_compute_note_hash_and_nullifier()\n } else {\n quote {}\n };\n let sync_private_state = if !m.functions().any(|f| f.name() == quote { sync_private_state }) {\n generate_sync_private_state()\n } else {\n quote {}\n };\n let process_message = if !m.functions().any(|f| f.name() == quote { process_message }) {\n generate_process_message()\n } else {\n quote {}\n };\n let public_dispatch = generate_public_dispatch(m);\n\n quote {\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n if NOTES.len() > 0 {\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..NOTES.len() {\n let typ = NOTES.get(i);\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret its raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = <$typ as $crate::protocol_types::traits::Packable>::N;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullification = aztec::note::utils::compute_note_hash_for_nullification(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullification);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_message` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `external` function on the next line instead of directly doing\n // `#[aztec::macros::functions::external(\"utility\")]` in the returned quote because the latter would result in\n // the function attribute having the full path in the ABI. This is undesirable because we use the information in\n // the ABI only to determine whether a function is `external(\"private\")`, `external(\"public\")`, or `external(\"utility\")`.\n let external = crate::macros::functions::external;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[external(\"utility\")] macro - we don't\n // need to do anything extra.\n quote {\n #[$external(\"utility\")]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `external` function on the next line instead of directly doing\n // `#[aztec::macros::functions::external(\"utility\")]` in the returned quote because the latter would result in\n // the function attribute having the full path in the ABI. This is undesirable because we use the information in\n // the ABI only to determine whether a function is `external(\"private\")`, `external(\"public\")`, or `external(\"utility\")`.\n let external = crate::macros::functions::external;\n\n quote {\n #[$external(\"utility\")]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::process_message_ciphertext(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" + } + }, "functions": [ { - "name": "add_lock_private_user", - "is_unconstrained": false, - "custom_attributes": [ - "private" - ], "abi": { + "error_types": { + "10791800398362570014": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "11021520179822076911": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "12469291177396340830": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "12913276134398371456": { + "error_kind": "string", + "string": "push out of bounds" + }, + "13450089406971132036": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 144 + }, + "13455385521185560676": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "14067204867181196045": { + "error_kind": "fmtstring", + "item_types": [], + "length": 75 + }, + "14576755381182599325": { + "error_kind": "fmtstring", + "item_types": [], + "length": 24 + }, + "14990209321349310352": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "15764276373176857197": { + "error_kind": "string", + "string": "Stack too deep" + }, + "16431471497789672479": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "16792019527863081935": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 77 + }, + "17154023812102399658": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 128 + }, + "17803644318014042523": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + } + ], + "length": 58 + }, + "1998584279744703196": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3080037330898348111": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 132 + }, + "344423948968719440": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ], + "length": 98 + }, + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "4261968856572588300": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "4440399188109668273": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "7564993426627941149": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 48 + }, + "7864183510978589985": { + "error_kind": "fmtstring", + "item_types": [], + "length": 20 + }, + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 61 + }, + "8992688621799713766": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9039158960469613821": { + "error_kind": "string", + "string": "NoAllowance" + }, + "9460929337190338452": { + "error_kind": "string", + "string": "Note contract address mismatch." + }, + "9791669845391776238": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "9885968605480832328": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 + }, + "992401946138144806": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" + } + }, "parameters": [ { "name": "inputs", "type": { - "kind": "struct", - "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -35,14 +605,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -50,14 +620,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -67,7 +637,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -76,20 +648,18 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -99,53 +669,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -156,25 +695,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -185,19 +720,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -208,19 +741,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -231,25 +762,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -288,8 +827,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -297,14 +834,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -312,14 +849,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -337,10 +874,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -355,14 +896,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -379,14 +920,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -404,14 +941,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -429,14 +966,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -454,14 +991,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -479,13 +1016,19 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } }, { @@ -496,7 +1039,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, @@ -537,20 +1082,14 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -558,14 +1097,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -573,14 +1112,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -590,7 +1129,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -599,7 +1140,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -639,8 +1182,6 @@ { "name": "note_hash_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -648,11 +1189,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -665,7 +1204,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -677,14 +1218,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifier_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -692,11 +1233,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -709,7 +1248,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -721,14 +1262,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -736,20 +1277,14 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { "name": "request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { "name": "pk_m", "type": { - "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", "fields": [ { "name": "x", @@ -769,7 +1304,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint" } }, { @@ -778,7 +1315,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest" } }, { @@ -787,7 +1326,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator" } } }, @@ -799,14 +1340,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "note_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -814,11 +1355,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -831,7 +1370,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -843,14 +1384,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifiers", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -858,13 +1399,26 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier" } }, { @@ -874,14 +1428,10 @@ "sign": "unsigned", "width": 32 } - }, - { - "name": "note_hash", - "type": { - "kind": "field" - } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -893,35 +1443,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 5, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -929,14 +1473,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -944,14 +1488,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -961,7 +1505,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -970,7 +1516,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -1001,7 +1549,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest" } } }, @@ -1013,35 +1563,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 16, + "length": 32, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -1049,14 +1593,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -1064,7 +1608,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -1079,7 +1625,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { @@ -1090,7 +1638,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -1102,20 +1652,18 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_teardown_call_request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -1123,14 +1671,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -1138,7 +1686,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -1153,35 +1703,29 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { "name": "l2_to_l1_msgs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 2, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -1189,7 +1733,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { @@ -1198,7 +1744,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } }, { @@ -1209,7 +1757,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -1221,14 +1771,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_logs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -1236,42 +1786,49 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "log", + "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log" } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData" } }, { @@ -1282,7 +1839,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -1294,14 +1853,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -1309,14 +1868,10 @@ "kind": "array", "length": 1, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", "fields": [ { "name": "value", @@ -1332,7 +1887,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash" } }, { @@ -1343,7 +1900,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -1355,7 +1914,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { @@ -1375,16 +1936,12 @@ } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -1394,53 +1951,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -1451,25 +1977,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -1480,19 +2002,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -1503,19 +2023,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -1526,25 +2044,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -1583,8 +2109,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -1592,14 +2116,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -1607,14 +2131,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -1632,10 +2156,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -1650,14 +2178,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -1674,14 +2202,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -1699,14 +2223,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -1724,14 +2248,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -1749,14 +2273,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -1774,320 +2298,333 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "databus" - }, + } + }, + "bytecode": "H4sIAAAAAAAA/+x9B5xVxfX/PPbtsgsLK2BBQV0EC2ChiQULCKKoFEFKJCo1iCAoxZLmW8DeY0kvmmJ69Zdiuqmmd2O6SfzHdJNoqib/Gbmz+93vnjtv7n3zZp/uu5/PsI87M+d75pwzZ2bOnTu3oHZfeyV/V65Zc8HGzas3XHDJlvWXrdy29oLtW9duubOo1DeLuwsUdGpI/vbTqZ3u2b/4e4hQbphO0+ne3jqV6N4+wr2RAr39hXsHCPcOFO61CxijhHsHCfdGC/fGCBiHCOUOFe4dlsglEbf7KiR/25O/E9bM2/LoxDeN/eiCUz/c0bHsvMMmP376lR+75PaZjz51xxM6/+aGrrJlrsMrwbmlPE4j0m5VXQ0uJHyavwerLuEVErq23K3692063a7TKxq6E28gfstchUMzlL21wV8Od/jLu9uVlf/DMpS9LQP/d2bgX9LjHYke70z+3p78fQXo8S79+26dXqnTq0iP/ZK/7cqPhWHKv22v9m1b4ewSdlBTb7qqjM8xyp/P1/jroIB8SvWy8vmaDLby2px82npF1TVw9KiQke+Cf9muyzBgvFI/iWJGBg5RORiAq92rVKEbr69LOs/reSg2GVfQPVOomchl9TrYSJd1/Pl//yu8LoMlvT6D13muK+0NidDfyEp7g6C0N0ZW2hsyKO2NvaS0NzTEV9qbEqHfw0p7k6C0ewIozVcRRmlvyqC0e/qQ0u5NhP5mVtq9gtLeHFlp92ZQ2pt7SWn39oLS3pII/a2stLcISntrAKXdm0Fpb8mgtLf2IaW9LRH6fay0twlKuy+y0t6WQWn39ZLS3tYLSnt7IvR3sNLeLijtHQGU9rYMSnt7BqW9ow8p7Z2J0N/FSnunoLR3RVbaOzMo7V29pLR39oLS3p0I/T2stHcLSntPAKW9M4PS3p1Bae/pQ0p7byL097HS3iso7X2RlfbeDEp7Xy8p7b29oLT3J0L/ACvt/YLSPhBAae/NoLT3Z1DaB/qQ0j6YCP1DrLQPCkr7UGSlfTCD0j7US0r7YC8o7f5E6P/HSrtfUNr/BVDaBzMo7f4MSvu/PqS0DydC/wgr7cOC0j4SWWkfzqC0j/SS0j7cC0r7aCL0j7HSPioo7WMBlPbhDEr7aAalfawPKe2BROgfZ6U9ICjt45GV9kAGpX28l5T2QC8o7ROJ0D/JSvuEoLRPBlDaAxmU9okMSvtkH1LapxKhf5qV9ilBaZ+OrLRPZVDap3tJaZ/qBaV9JhH6Z1lpnxGU9tkASvtUBqV9JoPSPtuHlPZgIvTPsdIeFJT2uchKezCD0j7XS0p7sBeU9vlE6F9gpX1eUNoXAijtwQxK+3wGpX2hDynti4nQv8RK+6KgtC9FVtoXMyjtS72ktC/2gtK+nAj9IVbalwWlPRRAaV/MoLQvZ1DaQ31IaV9JhP5VVtpXBKV9NbLSvpJBaV/tJaV9pReU9rVE6F9npX1NUNrXAyjtKxmU9rUMSvt6H1LaNxKhf5OV9g1Bad+MrLRvZFDaN3tJad/oBaV9KxH6t1lp3xKU9u0ASvtGBqV9K4PSvt2HlPadROjfZaV9R1DadyMr7TsZlPbdXlLad3pBad9LhP59Vtr3BKV9P4DSvpNBad/LoLTv9yGl/SAR+sOstB8ISns4stJ+kEFpD/eS0n7QC0r7YSL0R1hpPxSU9kgApf0gg9J+mEFpj/SS0jK8Oyle7V6luivtR4nQf8xK+5GgtB8HUBo2spzSfpRBaT/uQ0r7SSL0n7LSfiIo7aeRlfaTDEr7aS8p7Se94B5/lgj956y0nwlK+3kApf0kg3v8WQal/bwPKe0XidAfZaX9QlDao5GV9osMSnu0l5T2i15Q2i8Tof+KlfZLQWm/CqC0X2RQ2i8zKO1XfUhpv06E/hgr7deC0h6LrLRfZ1DaY72ktF/3gtL+XyL037DS/p+gtN8EUNqvMyjt/2VQ2m/6kNIeT4T+W1ba44LSfhtZaY9nUNpve0lpj/eC0n6XCP33rLTfCUr7fQClPZ5Bab/LoLTf9yGl/SER+h9ZaX8QlPbHyEr7Qwal/bGXlPaHXlDanxKh/5mV9idBaX8OoLQ/ZFDanzIo7c99SGlPJEL/CyvtCUFpf4mstCcyKO0vvaS0J3pBaX9NhP43VtpfBaX9LYDSnsigtL9mUNrf+pDSnkyE/hQr7UlBaU9FVtqTGZT2VC8p7cleUNrfE6H/g5X2d0Fp/wigtCczKO3vGZT2jz6ktH8mQv8XK+2fgtL+FVlp/8ygtH/1ktL+2QtK+3ci9P+w0v4tKO0/AZT2zwxK+3cGpf2nDynt6UToz7DSnhaU9kxkpT2dQWnP9JLSnu4Fpf03Efr/WGn/FZT2vwBKezqD0v6bQWn/60NKs2cVF+wZtVZBJoOVZgrFVJrhwafsEwlvnjwEVZoqxldav0RpDay0foLSGgIozVcRRmn9MiitoQ8prZgorZGVVhSU1hhZacUMSmvsJaUVe0FpTYnS+rPSmgSl9Q+gtGIGpTVlUFr/PqS05kRpLay0ZkFpLZGV1pxBaS29pLTmXlDagERpA1lpAwSlDQygtOYMShuQQWkD+5DSWhOlDWKltQpKGxRZaa0ZlDaol5TW2gtKG5worY2VNlhQWlsApbVmUNrgDEpr60NK2yNR2hBW2h6C0oZEVtoeGZQ2pJeUtkcvKG1oorRhrLShgtKGBVDaHhmUNjSD0ob1IaXtmShtL1banoLS9oqstD0zKG2vXlLanr2gtL0Tpe3DSttbUNo+AZS2Zwal7Z1BafvkFB4rqRzOcH+cQiU4+0Zqz37lcfohbf6cm5GH+Xtw8v99k/8burbcCP1jpE7763RAcr9JkYCAJvJf5iqMyCAnxDuwWAFgZ2XlL2hTpZ+K3+hG+N2e8D0q+XtQ8nd08ncMe4HRQo/vR8yWDTAr/4YdFMnqDy6PU0TaaVbfnvwdZXsBWP0h+sehOh2m09hid+JZvWYGhRcOyeA1x2XsPSyHcUm7D03+Hpb8HQtyGK9/HK7TETodGbj3j/YfTf6LeEfl7f0G0FTO0gkM+FEZFDghgwLztmFCMVunMW2YEKlzTvTHKVaCM6k8TgPSZuOfmMjQpvHJ/yeB8U/WP6bodLROU4tddZHPMlfN6+sYf5wGSY7HJG0bk/ydLMjxWP3jOJ2O12kaOVPui+Wa99oMj7RPyNBvceC09UI6uyxlEe/EvM7OVs4q4BMzCO2kKjs7889Jxez1TsrQeWpBySdXouSTcwjo5EiKyzrdxLLlMNojecjp/jjjK8GZ4Ynz55NWPlkJzinlccYgbfb40xN7m0GLx1PA48/UP2bpdKpOsyucPmc4B6UwM4Ndn5bTfrLyn+HEpMKsDPyfHon/DGerFU7NwP+cCpcvpyX2d3ryd07ydzbY4Rn6x5k6naXT3ArtMMNpjoUzMshhXiQ9Zjj3tXBmBv7nR+I/wwnRhbMy8L+gQjucl9jd/OTvguTvXLDDs/WPhTot0umcCu0ww5n0hbMzyGFxJD1m+HpFYWEG/pdE4j/Dd24KizLwv7RCO1yc2N2S5O/S5O85YIfL9I8X6HSuTssrtMMMX9YqLMsghxdG0mOGb/AVXpCB//Mi8Z/ha52FczPwf36FdvjCxO7OS/6en/xdDnZ4gf6xQqeVOq2q0A4zfB+4cEEGOayOpMcMXxIvrMjA/5pI/N+Tgf+VGfhfW6Edrk7sbk3yd23ydxXY4Yv0j3U6XajT+grt8PUZ5PCiDHK4KJIeMzyELazLwP+GSPxn2K5RuDAD/xsrtMOLErvbkPzdmPxdD3Z4sf6xSafNOl1SoR1m2CBWuDiDHC6NpMcMW0kLmzLwvyUS/xk2nRc2Z+B/a4V2eGlid1uSv1uTv5eAHW7TP7brdJlOl1dohxlecylsyyCHKyLpMcMLcYXtGfi/MhL/GV6dLVyWgf8XV2iHVyR2d2Xy98XJ38vBDl+if7xUp5fp9PIK7TDDy/qFl2SQw1WR9JjhWI/CSzPwX4rEf4YDgAovy8B/R4V2eFVid6Xkb0fy9+Vghzv0j5067dLp6grtMMORY4UdGeRwTSQ9ZjicsLAzA//XRuI/wzGmhV0Z+L+uQju8JrG7a5O/1yV/rwY7vF7/uEGnG3W6qUI7zHBwcuH6DHK4OZIeMxyxXrghA/+3ROL/sAxlb8zA/60V2uHNid3dkvy9Nfl7E9jhbfrH7Tq9Qqc7kvsNCrbaCFe78rpGG6zRFdDA56KFDPVM8YNVdt1nxcjyPYe8GN+PgPHtCBhfj4DxUASML0TA+GwEjE9GwPhYBIz/i4DxgQgY74mA8Y4IGG+NgHFPBIzXR8DI85JMVoxhETDaImAMjIDRPwJGQwSM/0Ww3f9EwPhHBIy/RcD4cwSM30fA+E0EjF9FwPh5BIwfR8DIsO6sCOe2nOvozivrjvUTMiyS78zwUMI03L4SYOsVIfWokJHvgqpthWTFOSESToMKbGAhd6WPVfmYq+aLmeNUHJ76KX+exqs4PGUwlsLhKgxP5XCOUP7839UQp1MdqeLgHKXi4ExQcXQ5Ufnr8tUZdZmVF/MOY5b3T01Z825eVpxJyh9jfDGOHiZn4Om1kfrUFBUH52gVB2eqioNzjIqDc6yKg3OcioNzvIqDM03FwTlBxcE5UcXBOUnFwTlZxcGZruLgzFBxcE5RcXBmqjg4s1QcnFNVHJzZKg7OaSoOzukqDs4cFQfnDBUH50wVB+csFQdnroqDM0/FwZmv4uAsUHFwzlZxcBYq/zUMXtWMHS1S+dqedf12jvLn/zWR1m+LVRycJSoOzlIVB2eZioPzAhUH51wVB2e5ioPzQhUH5zwVB+d8FQfnAhUHZ4WKg7NSxcFZpeLgrFZxcNaoODhrVRycF6k4OOtUHJwLVRyc9SoOzkUqDs4GFQdno4qDc7GKg7NJxcHZrOLgXKLi4Fyq4uBsUXFwtqp867esONtUnPZsV3FwLlNxcC5XcXCuUHFwrlRxcF6s4uC8RMXBeamKg/MyFQfn5SoOzlUqDk5JxcHpUHFwdqg4ODtVHJxdKg7O1SoOzjUqDs61Kg7OdSoOzvUqDs4NKg7OjSoOzk0qDs7NKg7OLSoOzq0qDs5tKg7O7SoOzitUHJw7VBycO1UcnLtUHJy7VRycV6o4OK9ScXBereLgvEbFwXmtioPzOhUH5/UqDs4bVBycN6o4OG9ScXDuUXFw7lVxcN6s4uC8RcXBeauKg/M2FQfnPhUH5+0qDs47VBycd6o4OO9ScXDereLgvEfFwXmvioPzPhUH5/0qDs4HVBycD6o4OB9ScXDuV3Fw/k/FwfmwioPzERUH56MqDs7HVBycB1QcnI+rODifUHFwPqni4HxKxcH5tIqD8xkVB+ezKg7OgyoOzudUHJzPqzg4X1BxcL6o4uB8ScXB+bKKg/OQioPzFRUH56sqDs7XVBycr6s4ON9QcXC+qeLgfEvFwfm2ioPzHRUH57sqDs73VByc76s4OD9QcXAeVnFwfqji4Dyi4uD8SMXB+bGKg/MTFQfnpyoOzs9UHJyfqzg4v1BxcB5VcXB+qeLg/ErFwfm1ioPzmIqD8/9UHJzfqDg4j6s4OL9VcXB+p+Lg/F7FwfmDioPzRxUH508qDs6fVRycJ1QcnL+oODh/VXFw/qbi4Dyp4uA8peLg/F3FwfmHioPzTxUH518qDs6/VRyc/6g4OE+rODjPqDg4/1VxcP6n4uCYCp5lqWI2nEIknH6RcBoi4RQj4TRGwmmKhNM/Ek5zJJyWSDgDIuEMjITTGglnUCScwZFw2iLh7BEJZ0gknKGRcIZFwtkzEs5ekXD2joSzTySc4ZFw9o2Es18knBGRcEZGwtk/Es4BkXAOjITTHglnVCScgyLhjI6EMyYSzsGRcA6JhHNoJJzDIuGMjYQzLhLO+Eg4h0fCOSISzpGRcI6KhDMhEs7ESDiTIuFMjoQzJRLO0ZFwpkbCOSYSzrGRcI6LhHN8JJxpkXBOiIRzYiSckyLhnBwJZ3oknBmRcE6JhDMzEs6sSDinRsKZHQnntEg4p0fCmRMJ54xIOGdGwjkrEs7cSDjzIuHMj4SzIBLO2ZFwFkbCWRQJ55xIOIsj4SyJhLM0J041vy+1rAZ5ekEknrJ8m/zcQDyVw1le8Of/tkjfdn5hBp5OKMbpS+dF6rPnR8K5IBLOikg4KyPhrIqEszoSzppIOGsj4bwoEs66SDgXRsJZHwnnokg4GyLhbIyEc3EknE2RcDZHwrkkEs6lkXC2RMLZGglnWySc7ZFwLouEc3kknCsi4VwZCefFkXBeEgnnpZFwXhYJ5+WRcK6KhFOKhNMRCWdHJJydkXB2RcK5OhLONZFwro2Ec10knOsj4dwQCefGSDg3RcK5ORLOLZFwbo2Ec1sknNsj4bwiEs4dkXDujIRzVyScuyPhvDISzqsi4bw6Es5rIuG8NhLO6yLhvD4Szhsi4bwxEs6bIuHcEwnn3kg4b46E85ZIOG+NhPO2SDj3RcJ5eyScd0TCeWcknHdFwnl3JJz3RMJ5bySc90XCeX8knA9EwvlgJJwPRcK5PxLO/0XC+XAknI9EwvloJJyPRcJ5IBLOxyPhfCISzicj4XwqEs6nI+F8JhLOZyPhPBgJ53ORcD4fCecLkXC+GAnnS5FwvhwJ56FIOF+JhPPVSDhfi4Tz9Ug434iE881ION+KhPPtSDjfiYTz3Ug434uE8/1IOD+IhPNwJJwfRsJ5JBLOjyLh/DgSzk8i4fw0Es7PIuH8PBLOLyLhPBoJ55eRcH4VCefXkXAei4Tz/yLh/CYSzuORcH4bCed3kXB+HwnnD5Fw/hgJ50+RcP4cCeeJSDh/iYTz10g4f4uE82QknKci4fw9Es4/IuH8E3DKvYtfCc6/IrXn35Fw/hMJ5+lIOM9EwvlvJJz/RcIxh194lqWK2XAKkXD6RcJpiIRTjITTGAmnKRJO/0g4zZFwWiLhDIiEMzASTmsknEGRcAZHwmmLhLNHJJwhkXCGRsIZFglnz0g4e0XC2TsSzj6RcIZHwtk3Es5+kXBGRMIZGQln/0g4B0TCOTASTnsknFGRcA6KhDM6Es6YSDgHR8I5JBLOoZFwDouEMzYSzrhIOOMj4RweCeeISDhHRsI5KhLOhEg4EyPhTIqEMzkSzpRIOEdHwpkaCeeYSDjHRsI5LhLO8ZFwpkXCOSESzomRcE6KhHNyJJzpkXBmRMI5JRLOzEg4syLhnBoJZ3YknNMi4ZweCWdOJJwzIuGcGQnnrEg4cyPhzIuEMz8SzoJIOGdHwlkYCWdRJJxzIuEsjoSzJBLO0kg4yyLhvCASzrmRcJZHwnlhJJzzIuGcHwnngkg4KyLhrIyEsyoSzupIOGsi4ayNhPOiSDjrIuFcGAlnfSSciyLhbIiEszESzsWRcDZFwtkcCeeSSDiXRsLZEglnayScbZFwtkfCuSwSzuWRcK6IhHNlJJwXR8J5SSScl0bCeVkknJdHwrkqEk4pEk5HJJwdkXB2RsLZFQnn6kg410TCuTYSznWRcK6PhHNDJJwbI+HcFAnn5kg4t0TCuTUSzm2RcG6PhPOKSDh3RMK5MxLOXZFw7o6E88pIOK+KhPPqSDiviYTz2kg4r4uE8/pIOG+IhPPGSDhvioRzTySceyPhvDkSzlsi4bw1Es7bIuHcFwnn7ZFw3hEJ552RcN4VCefdkXDeEwnnvZFw3hcJ5/2RcD4QCeeDkXA+FAnn/kg4/xcJ58ORcD4SCeejkXA+FgnngUg4H4+E84lIOJ+MhPOpSDifjoTzmUg4n42E82AknM9Fwvl8JJwvRML5YiScL0XC+XIknIci4XwlEs5XI+F8LRLO1yPhfCMSzjcj4XwrEs63I+F8JxLOdyPhfC8Szvcj4fwgEs7DkXB+GAnnkUg4P4qE8+NIOD+JhPPTSDg/i4Tz80g4v4iE82gknF9GwvlVJJxfR8J5LBLO/4uE85tIOI9HwvltJJzfRcL5fSScP0TC+WMknD9FwvlzJJwnIuH8JRLOXyPh/C0SzpORcJ6KhPP3SDj/iITzz0g4/4qE8+9IOP+JhPN0JJxnIuH8NxLO/yLhqIY4OIVIOP0i4TREwilGwmmMhNMUCad/JJzmSDgtkXAGRMIZGAmnNRLOoEg4gyPhtEXC2SMSzpBIOEMj4QyLhLNnJJy9IuHsHQlnn0g4wyPh7BsJZ79IOCMi4YyMhLN/JJwDIuEcGAmnPRLOqEg4B0XCGR0JZ0wknIMj4RwSCefQSDiHRcIZGwlnXCSc8ZFwDo+Ec0QknCMj4RwVCWdCJJyJkXAmRcKZHAlnSiScoyPhTI2Ec0wknGMj4RwXCef4SDjTIuGcEAnnxEg4J0XCOTkSzvRIODMi4ZwSCWdmJJxZkXBOjYQzOxLOaZFwTo+EMycSzhmRcM6MhHNWJJy5kXDmRcKZHwlnQSScsyPhLIyEsygSzjmRcBZHwlkSCWdpJJxlkXBeEAnn3Eg4yyPhvDASznmRcM6PhHNBJJwVkXBWRsJZFQlndSScNZFw1kbCeVEknHWRcC6MhLM+Es5FOXH6Ec6ENfO2PDrxTWM/uuDUD3d0LDvvsMmPn37lxy65feajT93xhM4fo/x52hCIp3I4Gxv8+b+zGEdOReXP/8WRdNeo/HnaFImnJuXP0+ZIPPVX/jxdEomnZuXP06WReGpR/jxticTTAOXP09ZIPA1U/jxti8RTq/LnaXskngYpf54ui8TTYOXP0+WReGpT/jxdEYmnPZQ/T1dG4mmI8ufpxZF4Gqr8eXpJJJ6GKX+eXhqJpz2VP08vi8TTXsqfp5dH4mlv5c/TVZF42kf581SKxNNw5c9TRySe9lX+PO2IxNN+yp+nnZF4GqH8edoViaeRyp+nqyPxtL/y5+maSDwdoPx5ujYSTwcqf56ui8RTu/Ln6fpIPI1S/jzdEImng5Q/TzdG4mm08ufppgw8NajdcUATSzbXWJ3G6TRep8N1OkKnI3U6yvCo00SdJuk0WacpOh2t01SdjtHpWJ2O0+l4nabpdIJOJ+p0kk4n6zRdpxk6naLTTJ1m6XSqTrN1Ok2n03Wao9MZOp2p01k6zdVpnk7zdVqg09k6LdRpkU7n6LRYpyU6LdVpmU4v0OlcnZbr9EKdztPpfJ0u0GmFTit1WqXTatNmndbq9CKd1ul0oU7rdbpIpw06bdTpYp026bRZp0t0ulSnLTpt1WmbTtt1ukyny3W6QqcrdXqxTi/R6aU6vUynl+t0lU4lnTp02qHTTp126XS1TtfodK1O1+l0vU436HSjTjfpdLNOt+h0q0636XS7Tq/Q6Q6d7tTpLp3u1umVOr1Kp1fr9BqdXqvT63R6vU5v0OmNOr1Jp3t0ulenN+v0Fp3eqtPbdLpPp7fr9A6d3qnTu3R6t07v0em9Or1Pp/fr9AGdPqjTh3S6X6f/0+nDOn1Ep4/q9DGdHtDp4zp9QqdP6vQpnT6t02d0+qxOD+r0OZ0+r9MXdPqiTl/S6cs6PaTTV3T6qk5f0+nrOn1Dp2/q9C2dvq3Td3T6rk7f0+n7Ov1Ap4d1+qFOj+j0I51+rNNPdPqpTj/T6ec6/UKnR3X6pU6/0unXOj2m0//T6Tc6Pa7Tb3X6nU6/1+kPOv1Rpz/p9GedTD/8i05/1elvOj2p01M6/V2nf+j0T53+pdO/dfqPTk/r9IxO/9XpfzqZjlbQqZ9ODToVdWrUqUmn/jo169Si0wCdBurUqtMgnQbr1KbTHjoN0WmoTsN02lOnvXTaW6d9dBqu07467afTCJ1G6rS/TgfodKBO7TqN0ukgnUbrNEang3U6RKdDdTpMp7E6jdNpvE6H63SETkfqdJROE3SaqNMknSbrNEWno3WaqtMxOh2r03E6Ha/TNJ1O0OlEnU7S6WSdpus0Q6dTdJqp0yydTtVptk6n6XS6TnN0OkOnM3U6S6e5Os3Tab5OC3Q6W6eFOi3S6RydFuu0RKelOi3T6QU6navTcp1eqNN5Op2v0wU6rdBppU6rdFqt0xqd1ur0Ip3W6XShTut1ukinDTpt1OlinTbptFmnS3S6VKctOm3VaZtO23W6TKfLdbpCpyt1erFOL9HppTq9TKeX63SVTiWdOnTaodNOnXbpdLVO1+h0rU7X6XS9TjfodKNON+l0s0636HSrTrfpdLtOr9DpDp3u1Okune7W6ZU6vUqnV+v0Gp1eq9PrdHq9Tm/Q6Y06vUmne3S6V6c36/QWnd6q09t0uk+nt+v0Dp3eqdO7dHq3Tu/R6b06vU+n9+v0AZ0+qNOHdLpfp//T6cM6fUSnj+r0MZ0e0OnjOn1Cp0/q9CmdPq3TZ3T6rE4P6vQ5nT6v0xd0+qJOX9Lpyzo9pNNXdPqqTl/T6es6fUOnb+r0LZ2+rdN3dPquTt/T6fs6/UCnh3X6oU6P6PQjnX6s0090+qlOP9Pp5zr9QqdHdfqlTr/S6dc6PabT/9PpNzo9rtNvdfqdTr/X6Q86/VGnP+n0Z52e0OkvOv1Vp7/p9KROT+n0d53+odM/dfqXTv/W6T86Pa3TMzr9V6f/6WQG/YJO/XRq0KmoU6NOTTr116lZpxadBug0UKdWnQbpNFinNp320GmITkN1GqbTnjrtpdPeOu2j03Cd9tVpP51G6DRSp/11OkCnA82ZOTqN0ukgnUbrNEang3U6RKdDdTpMp7E6jdNpvE6H63SETkfqdJROE3SaqNMknSbrNEWno3WaqtMxOh2r03E6Ha/TNJ1O0OlEnU7S6WSdpus0Q6dTdJqp0yydTtVptk6n6XS6TnN0OkOnM3U6S6e5Os3Tab5OC3Q6W6eFOi3S6RydFuu0RKelOi3T6QU6navTcp1eqNN5Op2v0wU6rdBppU6rdFqt0xqd1ur0Ip3W6XShTut1ukinDTpt1OlinTbptFmnS3S6VKctOm3VaZtO23W6TKfLdbpCpyt1Mt+pN9+QN993N99eN99FN98sN98TN9/6Nt/hNt/INt+vNt+WNt99Nt9kNt9LNt8yNt8ZNt8ANt/nNd/ONd+1Nd+cNd+DNd9qNd9RNd84Nd8fNd8GNd/tNN/UNN+7NN+iNN+JNN9wNN9XNN8+NN8lNN8MNN/zM9/aM9/BM9+oM9+PM992M99dM99EM98rM98SM9/5Mt/gMt/HMt+uMt+VMt98Mt9jMt9KMt8xMt8YMt//Md/mMd/NMd+0Md+bMd+CMd9pMd9QMd83Md8eMd8FMd/sMN/TMN+6MN+hMN+IMN9vMN9WMN89MN8kMN8LMGf5m3P2zRn45nx6c3a8OdfdnLluzkM3Z5Wbc8TNGd/m/G1zNrY5t9qcKW3OezZnMZtzks0ZxuZ8YXP2rzmX15yZa86zNWfNmnNgzRmt5vxUc7apOXfUnAlqzus0Z2macy7NGZTmfEhzdqM5V9GceWjOIzRnBZpz/MwZe+b8O3M2nTk3zpzpZs5bM2ehmXPKzBli5nwvc/aWORfLnFllJtvmrCdzDpM5I8mcX2TOFjLn/pgzecx5OeYsG3POjDkDxpzPYs5OMeeamDNHzHkg5qwOc46GOePCnD9hzoYw5zaYMxXMeQfmLAJzToB5h9+8X2/efTfvpT/7zrhO5l1r8x60eUfZvD9s3u01792ad2LN+6rmXVLznqd5B9O8H2neXTTvFZp3/sz7eOZdOfMem3nHzLz/Zd7NMu9NmXeazPtG5l0g856OeYfGvN9i3j0x74WYdzbM+xTmXQfzHoJ5R8Ds3zd7682+d7Mn3ewXN3u5zT5rswfa7E82e4fNvl6z59bshzV7Vc0+UrPH0+y/NHsjzb5Fs6fQ7Pcze/HMPjmzh83sLzN7v8y+LLNnyuxnMnuNzD4gs0fHrHnM3haz78TsCTH7NcxeCrPPwewrMM/8zXNz85zaPBc2z2HNc0/znNE81zPP0cxzK/OcyDyXMc9BzHMHE+c3cXUTxzZxYxOnNXFRE4c0cT8TZzNxLRNHMnEbEycxcQkTBzDrbrPONetKs44zZmPWZPZKhpFn123m+b953m6eb5vnyeb5rXleap5PmueB5vmbed5lni+Z5znm+Yl5XmGeD5h4vIl/m3izie+aeKqJX5p4oYnPmXiYiT+ZeI+Jr9h4xii1e308Wu3ep3GwTofodKhOh6meVwv83i/5e9u6L371yd/3/xaWG+nIO8CRZ+a35lozfPKOh0d9/AHMa0/y7pw/d8yIf525E/OOKqTTnJLkvX6PQx96qOXMr+yr0q925XUtqqDu2grqbqqg7poK6lbC85YK6rZ73+x5XVxB3e0V1N1aQd1tFdRt977Z86rErjZXULe32ruqgrqV9IV275s9r97SUSW4lchqVAV1n72OTvz+M6/b88dH3njpyzDvwpTxon/y1459K7duXbtl2wWrN198ycpt61dtXHvB5i0rV+s/l63dsnX95k0XXL5l5SWXrN2yd1K+OfnbL/lrYBr8+S40Q73s9Uuzmplgpvrq2foFlRd/d/vtnCZP/SbLCNRHXixdo6eB8HsQ4efkf1al/A918Gx1MxPKtyuvq8HMAU0790humLaPSX5v37Z+4/ptV8541lRndlrq/GcNdcluO2WCBfr/zJT7A4DvIpTxl8kVsyzNhuRvI/zGq0h/bZm9kr8tgG//+uyZ/dEXnvrB/WdMungI1TeX1c0AwFmzfuvqzbp/X7Bp7eUXXLx269aV69ZunbVwd2Yvd/DzKuzg51Vo4IVmqJOjfmcHfyHUZ17M1aq6dySs0z/Jt78PSX5X2PnPq9XOb+vOkuo+ufXht3315g99/u3b7nvr3UN+NOjVAw8fcNXVV/95xJ9GvuaJq99s654KPBWUN3aTrT9bwj7pIw3nXviBf28eeNrO913+o0fmbR80cuWDB1731nO/cPuBv73gGlv3NKnu4ze99qq2973iTe3jv/5U02m3/uGCv81pPPZHX3/pvp/b8fRvn7jD1j1dqvudc5/+6f1td7z4ips/9pJjDxu28t13PPyX333pq+9t+9uj77n04aNt3TnQ5jx99Ayon2Fzfqeuz8xXvxP/rHz1+9n6c6F+hvbvYevPg5vt9kfHW97+0xk3f33Cr54ecMPclbuumHzjd5f+8cXD7zv4sYveM/LdQ2zd+VLdX26befu2fS6e+sfmb9488Z4R+//8yfvu/83fr1x77B9+8/iHR/3N1l0g1S1z2bpnJ38z2nmnzBfmq98pc4wMtCd/h0869LhLXvWtPX9y2EE/nv6Zdx95575PjjnhJx89/Z4n/v3QP4H3cwA7g746sRfnq1+09Zfkq9/pn5ZC/Qyy66y/DG62u+t0Dgu27gv869qr0dY9V6g77oSWJ956w8uvVr+47/e3/H3cJ6YfMeSAGUOO/N5rfzBi05bl+z5h6y4HhjLIbKSd0D15dlc7eOzJIMMF0ricof5aW7+Yr/4WW78xX/0X2fpN+epvtvX756t/sa3fnK/+elu/JV/9Tbb+gHz119n6A/PVb7f1W/PV32rrD8pXf6WtPzhf/TW2flu++qtt/T3y1b/M1h+Sr/6Vdr47FG5aJ2dpD4P7GXzN/jgftVcD3UP6LcRL1vlTgehZPG6f9XW27XsKvLQJeewj9xRw9hRwJFoNAWkVA9JqDEirqUbb2D8greaAtFoC0hoQkNbAgLRCyj5kH2qtUVqDAtIKaRMhZR/SvgYHpBWyb4e0ibaAtEL66D0C0qrV8dHOs+zcAecahZS/FofvWZwWomXb3668roKrXcMEvGYly7tdeQImaS8BT5pn2fJ7e/Jn/IG18eQhw6y1q7avO2vzOkVXkf5/agqLI1V39vd0sMZ0C5T4PtNuEMriNRDwkubNXrtt9YXnrFy3bu0a3cgeT/KZ0qyU+9Yo9xLqWqXvTZy2K6+rn49RI/0W4iWvUUtGg+1Do7HGl0j1rM0r18xcecnW7RvX9kPSqvsSg6WCVPGepNMCcKYc5WbR/+cI9ZRAG21pH8iTJGFpDlY927RPSj3usnyvn1B+b6K1t1DP8t7gqI80sB5bjMuqfazStsNcbSq9/T5L4Zy9Z8+8vafSpbBL1ubiIWGffHjDXDaKNC0/VtbDhTxLy+6Xa0qhZesWqfxrkr9tVM5cCwhjuMAv3rPyMcviu4h3lC3bSSVyRHqWL7yH9FtURXZZcOkN28d2Mjwf3lAfuSM/Vtb7CnmWlt0P2pRCy9YtUvn7kr9tVM5cbCf7CvziPbSTe4l3lC3bSU45zvC1E0u/RVVklwWX3rB9bCf75sOb7iN35MfKej8hz9Iakfy/KYWWrVuk8vcnf9uonLnYTvYT+MV7aCfvS343p/DbrryujZKsM9S/vFn1lF2G+tts/RH56l9o64/MV/8ltv7++epPsPUPyFf/Zdb2DoSb3M/b4X6Wx3W+/bw9+d1CvOTt5+2Ex+3jEPoogZc2IY+XhKMEnFECjkSrGJBWU0BabQFpNQSk1VqjtJoD0moJSGtAQFoDA9IaHpBWSLuvVXntG5BWSFvdLyCtEQFphZR9yDYOCkirVm11ZEBa+wekZedGdrxvh3qF5G+zUC/r2hDpWT7xHtJvIV4y4hVccmmHe7ymOSgf3pAC1Uc8pGn5sbIeLeRZWnYvflMKLVu3SOUbEoG2UTlz8ZpmtMAv3sM1zX+T34MFfjm+k9UesT7LCOuxPVaiL6Rn+cR7SL9FVWT/BZd9SHKx7RudD28PH/0iP1bWY4Q8S+vg5P9NKbRs3SKVH0b2OAZ4YnscI/CL99AeBxe6846yZTvJKcdTfe3E0m9RFdllwaU3bB/byZh8eLN85I78WFkfLORZWvbViaYUWrZukcq3k50cDDyxnRws8Iv30E5GJHSbU/htV34X9xFLA2mjXPz1UPiLr51Z+i2qIr0XXHKU+ptt3yG58ApPsG0gHtK0/FhZHyrkWVqHJf9vSqFl6xap/JFkZ4jBtmHzkF+8h3Y2lvwRypbtJJ8cnz0Wqxs9yxfeQ/otqhK77LITSW9Sf7PtOzQf3gwfuSM/VtaHCXmWlj0boymFlq1bpPLTyE7w7Ar2R4cJ/OI9tJOp5I+QX3O1K6+rIMk6Q/0eskMalvZYuJ9Bj//ztVNLv0X11GMeOx1LeGl6sG0fJ/DSJuShjDEPccYJOHVadVp1WnVadVp1WnVaz21ah9RpPS9o9QX7qvehuh7rfqLeH5+rtOr2VbfVvmir9flEXV71NtZl/1ylVbfVuk30RXnV7auux75Iq96H6jbRF2Vf96v1PlSXV51WOVr1tVW9jXUfXbfV5yqtun3V+arTqvfHmG2s06r7nPo4VG9jvY11n1OXV12Pdft67tKqxzrqbaz7nLqfqNOq2329D9VlX+9DdVq1bKv1+UTdJuqyr8s+Jq36OFSXV70P1WmVo1XrNmHPhcUzw/h7LtL5XGMdOFjflmsV6hWSv80CfwanXXld3ueWWfotqmebM+AVXPKX5GLbPl7gpU3IYz2PF3DGCzh1WpXTOrRGadXb+PyQV1/gq07r+dEf636iTqtuq3V/H5Ovuh7rbazbV33seK7yVbeJurzq9lXXY51WvQ/VbaJvyr7uV+t9qC6vOq1ytOprq3ob6z66bqvPVVp1+6rzVadV748x21inVfc59XGo3sZ6G+s+py6vuh7r9vXcpVWPddTbWPc5dT9Rp1W3+3ofqsu+3ofqtGrZVuvzibpN1GVfl31MWvVxqC6veh+q0ypHq24TdVp1WnVadVp1WnVadVrPd1r23DI8M2ws4WQ9Hw3r23LS2WQmtSuv65xmoQ0Z6l9g6x+er/6ltv4R+epfYc8uOxJuFpK/lvZRcL/Bn/bEAtFTSX28h/RbiJeMeJ3nth1FeNw+axe27RMEXtqEPLaRCQLOBAFHojUiIK2GgLQGBqTVFpDW8IC0BgWk1RyQVv+AtELaxOCAtMYHpNUakNbhAWkVA9LaLyCtkH17ZEBaIX1hyP7YEpBWSD0eEJBWSJsIKfuQfTtkG0PaRFNAWrXqJ0Ly1RfmTPUxrfdkH7I/NgakFbKNR9QoXyHnEyHbaMdaaS1sUrvyurbzWtPSQNoT4X6Gde9JBaKnlLzOtvRblOwP25XX1bnOnkh4aXK1bZ8k8NIm5PE6e5KAM0nAkWiNCEirISCtgTXaxuaAtFoC0tovIK2Qsh8ZkFZdj9loHRCQVkibGByQVlNAWiH9V2tAWiFlH9JWQ8q+Vv1XSFsNaV/9A9IKqceQ9hWyD4W0r2JAWoNqtI21OpcL2caQ84la1WOtzuWOCEirVuc5IeeY9fnE86MPhfQTIfkKaV+HB6R1VEBaIWUfcg5gx1obBzoc6hWSvxXGwEYViJ7lE+8h/RbVU5ehYmDYPisX275J+fDaffSA/FhZTxbyLK0pyf+bUmjZukUqPy1xZG0CxmjCsHnIL96z8jHx8qkJ3cECv9znJLlPFOi2CfVZRliP7TGnvhp87dHSb1EV2X/BZR+SXCT7sHUlvbL8ffXqosVxYZtvrmahXgZ5FH3lb+m3qIr0XXDJRfKTtu1TBF7aKM9cC6Ac5zUI9/pFpsX6Mle7cl5WHT1kYXlDukfD/Qx6afS1A0u/RfXUSx47OJrw0mRq2z5V4KWN8szFupsq4EwVcJ4rtNCG2EfZfHNVaBdD8tpFTn/ktAvJb9r2Tc2Ht4ePHpAfK+tjhDxL69jk/00ptGzdIpW/mOYLiMHzBZuH/OI9nC9cSPMF5Hcy0ZXkfrRAVxqvbLnnG06rUI/7V0778/a7ln6Lqqg/F1z2LslFsndbV7JTlr+vnT4XaVn7m+rAyerfsf7UOk5wnEkV4kzyxJlSIc4UAadVqMd+CO3U3y8UfuHrhyz9FlWR3yu4+qEkF9u+Y3PhFX7OYzPiIU3Lj5X1cUKepXV88v+mFFq2bpHK30vjPGLwOG/zkF+8h+P862mcR355XZrV/2F9lhHWY3vMpy/V5muPln6LqsT+u+xRsg9JLrZ9x+XDG+yjX+THyvp4Ic/Smpb8vymFlq1bpPIfJHs8Hnji9crxAr94D+3xPQnd5hR+25XXNU+SdYb6jzarnrLLUH+irT8tX/032fon5Ks/1tY/MV/9j9r6J+Wrf6qtf3K++h+29afnq99h68/IV3+ZrX9Kvvrn2foz89U/zNafla/+ZFv/1Hz1H7f1Z+erf7qtf1q++h+z9U/PV/8SW39Ovvq32/pn5Ks/09Y/M1/9p2z9s/LVv8PWn5uv/hO2/nyon+WZiq1/dr76DZbfBXhT4MnSt2PdPChfSPlraXGexWohWhl5L7h4R/54voTjJrYxjdaCjLSahbw8Opmv0tuF9FsdvEh87g+/K23z4IC0jg1IqxiQ1nEBaR0fkNa0gLROCEjrxIC0+gWkdVJAWicHpDW9RmnNCEjrlIC0ZgakNSsgrVMD0podkNaQgLROC0jr9IC05gSkdUZAWiHHjjMD0jorIK25AWmNrkFa5rLz3wrjHXMqjFccX2G8Ym6F8YpFFcYbZlQYbzitwnjBrArjBWfZufYsuFlI/kqxgAzz/nkFoqeUvH6y9FuIl4x4neunUwmP28fPG2cLvLQJedxHZgs4swUciVZLQFp7BKQ1KCCt4QFpNQekNTggrYEBafUPSKshIK3WGqUV0lYHBKQVUvbTAtIKaash++N+NdrGkP3xqIC0QvahWpX9iIC0QvqJkGNtSD8RUvYh5VWr9hVybhJSjyFl3xf8xMiAtE4ISOukgLROrFFaJwekNT0grZCyH1+jfM0ISKtfQFohbeLYgLROCUgrpB5D8hXSVmvVF44LSCukrYbUY0i+alVeIW11ZkBaIW01pP86ICCtkPOvxoC0QsYUQs7JQ64VQsYe7fzexrFnQL1C8rfCGP7gAtGzfOI9pN9CvGTEc8bwsX28N3p2PrxBPnpAfqysTxPyLC377LYphZatW6TyX04CTm1Uzly8N/o0gV+8h3ujP9e/O+8oW7aTnHIc6Wsnln6LqsguCy69Yfv4Wc9pAi9tQh7PiX3lLdEqBqTVFJBWW0BaDQFptdYoreaAtFoC0hoQkNbAgLROD0grZB8Kqcc9AtIaFJDWfgFphezbIe0rZB8K6Vf7guz7B6QV0kdbX2jfS8T5zDDCyTr3xvq2XIXvuyys8H2XJRW+rzK/wvdNZtt51Vlws5D8ld4lyTDH6ygQPaXkOaWl30K8ZMTrnFPOJTxuH88p5wu8tAl5vH9ovoAzX8CRaLUEpLVHQFqDAtIaHpBWc0BagwPSGhiQ1ukBaRUD0gop+1q11f0C0moISCukfYX0OU0BafUF2fev0Ta21iitkH17QEBaIWU/LSCtkLZaq3OAkLTq43Y2WvVxu/fsqz5u957s6+N27/XtWh23Q8qrVm31qIC0QsorpM8JKfsRAWmF7EMhx+2GgLRqdb5aq/YVcu4bUo8hZd8X/MTIgLT6BaQ1OyCtkHHy0wLSOjkgrXEBaZ0UkNb4gLSODUhrTkBafUH2JwSkdWJAWtMD0goprzMC0gppqyH7UK3afa22sS/4wpB81ceO58fYcWZAWiHnciHlNTMgrVMC0go51oa0iZDyqtWx44CAtEKu+RoD0gr5TCdkHCBkfCLk/hx+xwb3hhWSvxWeeTyoQPQsn3gP6bcQLxnxCi65YPusXCo8/7e1QPURTzrj18r6bCHP0lqY/L8phZatW6TyI5OHYW1UTqme79icLfCL96x8TP/cp6U77yhbtpOcchzjayd8HnVOu3SeRy31H0lvtm6bkMfxJ195S7SKAWk1BaTVFpBWQ0BarTVKqzkgrZaAtAYEpDUwIK3TA9IaFJBWyP64X0BaIe0rpLyGB6QV0r5C9qGQfjWkTYT0q7Xat0P2x5B9aI+AtEL2x75gX/0D0go5B+B3uHC+zO9wZT0DG+unfW/E5purwu/R3F4gepZPvIf0W1TPNueZs0vyl+Ri275Q4KVNyON43kIBZ6GAI9FqCUhrj4C0BgWkNTwgreaAtAYHpDUwIK3TA9IqBqQVUva1aqv7BaTVEJBWSPsK6XOaAtLqC7LvX6NtbK1RWiH79oCAtELKflpAWiFttVbnACFp1eq4HVL2IecAIX10yPlErdpqfdzuPb9an5Nno1Wfk/eefdXnhb1nX7U6Lwwpr1q11aMC0gopr5A+J6TsRwSkFbIPhRw7atVH1+qYFrKNIee+IfUYUvZ9wU+MDEirX0BaJwekNTsgrXEBaYV8PhRSXjMD0hofkNaxAWnNCUgrpE2cFJBWSNmH7Nsh+2PIPnRaQFoh+2NfsK8TAtI6MSCt6QFphZTXGQFphfSFIX10rdp9rbaxL4y1Ifmqz02eH2PHmQFphZxPhJRXyDn5KQFphRxrQ9pESHnV6thxQEBaIWMKjQFphXxuFTLOFDL+FXJ/Ib+DiXtbC8nfZiXLpl15Xa0Fomf5xHtIv4V4yYhXcMlF2idt27coH97AAtVHPKRp+bGyPkfIs7QWJ/9vSqFl6xap/OuSh05tVM5c/A7mOQK/eM/Kx/TPVw7ozjvKlu0kpxw/62snln6LqsguCy69Sf3Htu+cfHif8ZE78mPxFufDa7C6WirQtrwsS/7flMKLrVuk8u8je1gi1GmjPHOxDWJeg3CvXy/RWirQQjlanZi+8dZEFpL9m9SuvK5J7BcsDaSd0xaW+vYtS79FVWTrBfZjFi/Nx0h2ZOu2CXkcL8ure/N7vxql1RCQVv+AtE4PSCukvJoD0moJSGtAQFoDa7SNTTXKV1tAWiH7Y0g9Dg5IK2Qfag1IK6QeQ9rqHgFphbSvYkBaQwLSCmn3tepzQrZxZEBa+wekdUBAWiHlFXJuEtK+anVeGNLua3UuNyggreEBafWFuVyt2n3IuUl9TMtGq1bncrXqC0PO5UL6wpB6DCmvWp1/HR+QVq3OvxoD0grZt0P2oZDyCjkOhexDtSr7kP4rZFyuVmNDIe0r5Ny3VueYtTp2LApIy44drUTb5purwudN+xeInuUT7yH9FtWznaGeN2H78j5v6ge/a8kfhuxHtRorD+nDQtKqP2/KRitkbC5kHwqpx5DPA0LOdWo1DhPSvkLyVavPdWo1RhFSjyH3KoT093x2Ks6N+OxUaR6y2IGD9W25VqFeIfnbrGQ7a1de19UFomf5xHtIv0X1bHOe+Zkkf0ku0t41W7dNyON9+K79W4gj0WoJSGuPgLQGBaQ1PCCt5oC0BgekNTAgrdMD0ioGpBVS9rVqq/sFpNUQkFZI+wrJV0g9huQrpF8NaRMh9dg/IK2Qsm+tUVoh/cSAgLRCyn5aQFohbbVW5xMhadXnAL03dtTnAL3HV30O0Ht6rM8Bes9P1OocIKS8atVWjwpIK6S8atVPjAhIK2QfqtWxo1bnvrVqXyHn0SH1GFL2fcFPjAxIq19AWrMD0goZvz8tIK2TA9IaF5DWSQFpja9RvkLqMSRfxwakFdImQurxhIC0TgxIa3pAWiHldUZAWnMC0qpVW633x95rY63aV30cqts90zozIK2Qc8yQepwZkNYpAWmFHLdD2kRIedVqfzwgIK2Qa9HGgLRCPrcKGZ8IGTcJuZ/Jxjrs/kNcy08inH4CTj8HDta3ec1CvXbldU2z+/fGwc0C0UV/3OBPu1ggekp1178i+i3ES0a8zr2LxxEet8/KybZ9msBLm5CHesQ8xJkm4LQJeQuqQKs5hc925XUtlvSdof4GlqelgbzhejWDbof72pKl36J66i+PLZ1AeGl6sW0/UeClTchjHZ0o4Jwo4Ei0WgLSOq5G+WoKSGvfgLRCtnFgQFr9A9JqDUhrQEBaIeW1X0BaQwLSOj0grYaAtELKvjkgrcE12saRAWntH5CWXb/EmqtKOFMqxJki4LQK9QrJ3wrnIocXiJ7lE+8h/RbVs82h5iKSXLLORTh2Uyvj9FEBaYUcp2vVx+wRkNaggLSGB6TVF8aKWp03h+SrLSCtkPOakHPdkDbRGJBWSJsoBqQVUl4h/VetrjNC6jEkX7U6doTUY0jZh+zbfWnNUmvyqtVxO2TfrsZYa9cruL4pJH+bU3hoV16X91rN0m8hXjLiFVxywfbxWm26wEubkHcK/MY8xJku4Ei0mgPSag1Iqy0graaAtPYISKshIK1ijfI1OCCtgQFpjQxIa/+AtA4ISCukvFoC0grZH/cLSCuk3Yf0hSH12BiQVkifE9Im+gekFVL2g2qUr9MD0gppEyHnJiHH7ZB6rFX/FdK+QvbHWvXRIWmFtK8BAWlZ2dvnd7gem0s4WdeEWP/EyDjS+tKkduV1reL1m6WBtGfC/QxrydUFoqdU9z6giH6LkvXWrryuzrXrTMJLsxPb9tkCL21CHu/hnS3gzBZwJFpHBKR1ekBaDQFptQWktV+NtnFwQFoDA9IKaRODAtIKaRPHBaTVF2yiJSCtpoC0arVvh5R9SHk11mgbhwekFVKPIe1+QEBaIe1+REBaIW1iZEBaIW2iPv96fvjokGPt+IC0+oIvPCAgrZA+58SAtI4KSCtkHwopr5BjWlNAWrUqr5BjWq2urULKPmQfCimvkD66PnY8P8aOkGurpoC0igFp1WMKvdeHQso+ZBuHBKRVq+uhkLJvDkirVuOFIec5dT+RjVbI+UTdT/Se7GvVT9j5F5+ZYa525XUV7PPTk/Am0Z0J9zM8y20sED2luutYEf0W4iUjnvPZMbYv77PjUM+qzLWgxmnZvQ+o+xmEI8l5pgMH68904EyvEGe6J85JFeKc5IkzqUKcSQJOs1CvXTkvu/zoYfeWNtLFcwyr0ect/RYljwPtyuvq7POnEV6azdu2zxF4aaM8c3HfmiPgzBFwniu0esN2JZzZFeJIPrxVqBfIzqfltfOcY6nTziW5ZLFz85vPX6jEngYFpNUckNbwgLQaAtIaHJDWwIC09gtIqykgrZBtbKvRNvYPSOv0gLSOCkgrpH2F7I8h7SukLwzJV0tAWiHtvi/YxIiAtELaV2uNtjGk7BsD0gpp98WAtOp+4vnhJ0K2cUhAWiHnE7Uq+5EBadX7UDZa42u0jX2hD4WUfci1e8g1Mp83im3meNd4AWe8Awfrj3fgTKkQZ4onzowKcWZ44jzf5PZcbk+zkvtyu/K6XizFRjPUP4Jjj5YG8rYE7meIg55VIHpKdfd/iui3KNlftiuvqzPuuoTw0vyNbftSgZc2IS/kd2CaAtIK+X3ThoC0BgakVavfVK7V73+HbGNIvkJ+LyqkrRYD0grZt0PKvqVG21j3X88P/xWyjSFl3xaQVki7PyogrZB9u1b7Y0gfXatjbUg9hvxGXV8Yh/pCG0PyFdKv1uq4HfIbwSH5CimvIwLSCvntz5Bzk1od0+r9sffaWKvjdl9Yp4W0iRMD0qpVuz89IK1ajXXsEZBWNXy09EyA30vI+kwA67uePcypEGeOJ06sZymzK8SZ7YkTSz/PN7nVnxHW2xOzPXMrxJnriVO3g3p76u3JtzfBXO3K65pin60fATcLRBefp2d4zj+4QPSU6j7fU0S/hXjJiNe5r+BYwuP28b6CJQIvbUIe6hHzEGeJgNMm5C2o06rTqtMKQuv5Nk/J4c9tiKzTp6EPZH+ec5+Y93vovE8s5/jh3CeG7WN/vlTgheMF5mJbzBt7qFVavWG79TlcvT1pOEdUiHOEJ04suR1bIc6xAo6H7+/3zWHnb296y3mrjzh00Kl/GT70zp0nf/7mHScfejjPZy1tpMuxV6KddhV9fb+l30K85PX9ku+T5ge27csEXtqEPD53aJmAs0zAkWiND0jr0OR33b/V29Pb7VlSIc4ST5y6HdROe5zjz5NbH37bV2/+0Offvu2+t9495EeDXj3w8AFXXX31n0f8aeRrnrj6LRWOMUtt/WX56g+z9V+Qr/5QW//cfPWH2PrL89WfZeu/MF/9Gbb+ebnqFzp1fz7cbfeq29X2CzqpZeJ9uq2/Il/9A239lfnq/9fWX5WrfuEJW391rvrqGVt/Ddxstz9O+kjDuRd+4N+bB562832X/+iRedsHjVz54IHXvfXcL9x+4G8vuNbWXZsPu9XWf1G++gNt/XX56o+w9S+Em+1eVVU/W3c9YPfzr99s61+Ur/5UW39DvvrH2PoboX4G2bXb+hfnq9/Z/k256hd+butvRqaSv2N+8ED/f7zz1uIHf/jE5sufGnfHV067+VPvOuEVXz/ipNKiX939p7m27iW5sNUgW/9SAbsM352+bkvnnWzPNmz9rRL24ze99qq2973iTe3jv/5U02m3/uGCv81pPPZHX3/pvp/b8fRvn7jT1t0m1XVfRVt3u1T3O+c+/dP72+548RU3f+wlxx42bOW773j4L7/70lff2/a3R99z6cOdtnpZUjxjm/e09S/PV7/R1r8iX/0mW//KfPX72/ovzle/xdZ/Sb76A2z9l8LNdq+qqs3WfZlQd9hE9fCBPz/6yvF7T908/7JdPz/nPS/f881jf9M2/E/bT7jsXz/ZbOu+XKhb5jranO3z6WTDl52DXpVkmt97wW+TSsn/TT07B90Tyti6RSr/hqO66n0uwbNr+qHAUCH5a9s0DO5n0MW+BaKnlBzPsPRbiJeMeJ3xjGGEx+3jeMZeAi9tQh6frbKXgLOXgCPROiAgrYEBaZ0ekFZDQFotAWkNDkiruUbbOCAgrVq1r0EBaRUD0tovIK2Q9hVSXsMD0gppXyH7UFNAWiFtIqRfte8VtQr1CslfOw84kHhoV15XvwLRs3ziPaTfouQ2tyuvq3MecCDhpcnF2J+dH2zftn7j+m1XnrV55ZqZKy/Zun3j2n5IWnWfDbFUkCreK6jurce8BrrH5WbT/+cI9ZRAuwHojYI8SRKWpp19YptGpdRDWSjhXj+h/IFE60ChnuW9wVHfXK0CD71tsTlnyk6LxfbxzHWUwEubkMcrCMljSDPkrHwNVF1vpSU9adbaVdvXnbV5naKrSP8/NYXF4VRuTgprBYFugRLfH073GpS7q7oWSz4mYy52xrjY2ZNw6s647oyfG864QajHFjNYuM9bCLNOZeYKeBLO2RXinC3gNAv12u2Pjre8/aczbv76hF89PeCGuSt3XTH5xu8u/eOLh9938GMXvWfku4eaEMwhQ7rzi/IfSvxavWPIR9JXkcr/7siueuMSPNPD9knykx52yvaNGxau3bZl/drL1mpfjQHXThEpYgmvefT/+UI96fIZw3M6Hm9HZ+mHGsMl00obK/0dHRsESgWp4r1KHN18+n8eR1du1sCOzuWcUCtDBVx7r59Kd0SSE+NYo8uRmas+NO++sltsXx6afSzWd2hOs9i0oZnrNap0Cy9S2dOSIaNCy+52AjXzWB8Ddl/1MeC5MgY0CPXYYlxW7WOVth3malPp7W9WPeXRbn/8ctvM27ftc/HUPzZ/8+aJ94zY/+dP3nf/b/5+5dpj//Cbxz886skKe9eSCr3CYuOJltMkeBTQ4sXdQcn/05572rpFKr9ySFe9C2ASfHCSn/S8JSs3rl+zctvaUzddun3t9rVr5m3etnbrjE1rTr1s7aZtmafEp9H/TxfqSdcAoHck0G+gRpqLYyETkv83AQ6WYQHZ8msToZiPd/07WepIRmf5aaX6Nt9c1igmEu/tyuvydtmWfgvxktdlTyQ8bl8+l43mzFJBqnivt132ZMiTJMEuG9s0OaUeWy7f6yeUn0i0Jgr12GVL9ZEG1mOL4V6EbuZIAZt70WXQi545Ox33SNVTDtyThgp4ttdNprLmsr3uaGpTu/K6lvr2Oku/hXjJ2+uOJjxuX75eh5aCKEuIqi2DZfFaApyplHKS9vYS6vFlJVYknm+FwapEgyO2q534kawd7/FkAuvbchLOPhXi7CPgWEs+CPIOpbzRjrwxkNdOeYdBHsfTxwKfCyhvnOrZZps33kHzcIGm0d2RQ7vqmHQWlJMsnb0qPg/Buvj/RqGsfemqSGXvBbu6k+wKe3G76s735DJ8u+xqskrH2adCnH0EHKsTtF+2naOFttq8qZDHej4GeGHbmSa0y+ad4KA5S6Bp9HPw0O7lWP/msh5/HtzPMnn39fiWfgvxktfjzyM8bp/Vs23f/Hx4iwtUH/GQpuXHynqBkGdpLUr+35RCy9YtUvn3Jf2tjcop1fNF9AUCv3jPysfYyTuHdOcdZVtI+Wvp8j3uX9h2qx+Lg/5mT+Dn/iHd24J+qkGoaxeO7KsehqcWHyFfhfVZd1I/ydv+s4Q2DlY9ZbM3/E6z73kOnL0d7amWPvcmnMlCW5/dJEz6nA95DUJd+1JYkcp/BvT5RdKn1BclOber7rxklXO7gFNtObcTzoKAOOg3MAhi0mKixXK2erJyXgR5i6kevmiI5XDVtRjuSy+TS/QtjXI2+PAQuW1pNmixilT+rWCDP8ppg3wYDuoA/QXygXLA8i9QcruaUsqntetRWHWqhd1p4pxC0gX7X1v+10CzYaHMJ7brVLjHW4cke1gstEuS6VJVHhvlPCcFu0m5bbFI5X8vyFQaFxYT70j7YOJlURneuX9jfVuuVahXqR+ReC7XJ5/M2Cfty7Zsu7dAn/wH9UmXjSDPvI7IKud9BJxqy5nXCEsD4mCf4XFhOdFiOVs9WTnjS+LLqR6+AM0vkzdQHSyPNCT6vuNC81C5bWk2aLGKVH4r2ODAod3bL40rkg0upTyUKY8L5fzhC6m85btJucfbIpUfmrRFGhek/op2w+OCLb8X0ORxQTqQxTUuSLYoHSwjyXQ50TpVoIVy5nFBkim2/1Rqvy0/UpCpNC7Y+lI84hDKw3jEfMrDeATPWY+BPFc8gmMjGI9gfzcL8tBGOB5xkKM9oyGP430Ytzua8jBuN5XyxkLeMZSHcbtplIdxuxMo73DImwVttXE7fog4Mblf4fMtcStEWlyUy+FfpfzGA9RVgXAmBsRBWrMJZ3JAHPTJ3J6pAo7VF/aXajyPtPRbVM++mydOdgzhcfvyPRlBb8NSQap4DyXNeTGeR06DPEkSHDnHNk1LqYeyUMI9+zwSy1u6DaonDj93a3DURxpYjy2mQPfTnkdaGkUqfwaMVk00WktYKA8eMS3vaTsLmAdbfh7wYHcWMM1iSrumptBcObRLHmcPlWkqgabUrmnULubhGOLBll8szAQaqAzzI90z/8dnvdNS+JP0xLziKJfWHtaTLb/coaejBR6wT84pwwOXmZbCwwUCD4J3m7n5kisT76bokt79wf+z5Pm57dECnbTLSsNYobVIfp7Bnkq6xxZg65qW2/VO56tUG9duW5vSdvbchRTMfkq+fMbQnM+avMdQftZU6RgqxYilMdS2XYoDtgl5vKY7yxPH6HRY8jvR6aJtm7ekqdR3cC0IbHF9VYaW/X8VHznmNoNYjxyzTaXQOFkqSBXvuSRfTtsh9rdLD0PPEmhKwe/5KfXKObl+Qvl5RGueUM/y3uCojzSwHlsM95C0qRRPOWz5l8HQZLd2cR37/zXwe1Ty2/WgqcIH3UN8e5Wl36Iq6sUFly1JD+Cy9Sp2rRZlD6Jqy2BZvPYAzlRKOcly5wr1+LISYyu5HSam11AoEa2TX0ZEHlzDh/QyIodKcFNj2tYXc3HIyGd7i5R3gtAuKZzEW19OFWgauX3XY+uLj8Wbi0OO0tYKtFj2ftLWDktrURla5xAt6VGepbW4DK0lREt6hMVhSKkehlDnevCA91wv3tpyrUK9vDprc/Ds2q5lbOheWhQuhTxptLATL34M+EJ4NPBW6s8YLubHgMgz9/Wscj5bwKm2nLkfLwuIgyF+fjwlPSJCOVs9WTlLj5dsvfMhjx8tSY+wzhewJfqWRjkb/PBQuW1pNmixilR+BtjgxxxjissGl1EeypTHW+kxjqSDAvGd9igl7bHbZxyPp6T+inzNJZq2/Occj6ekx03SbMVli8uFdkkyPY9oSbNVbA8HUCSZYr+ZR+235b/i+XiKHyXhnCHL4ynfR1D8mAnnDDx/kR5B8ZyBbeS79MjGtucH9MgmZzhBfGRjaQ1WPWWIj7kwT6kufUqvFrUJ9Sc4cMZViDNOwGkV6tl2VyhH7/W/pR/q1S5pfi3JheecWFfqRxxMHZ38f3kS4zG2+RjNZ0chg8lfK1d8VJehnVN95WrptxAveeV6EOFx+1iuowVe2oS8M+E35iHOaAFHotUUkNZRAWm1BKQ1OCCtgTXaxpB6DNnGthptY/+AtE4PSGt4QFoNAWntF5BWc0BaIW0iZH8M2YdC2kRIeQ0ISKs1IK2Qsm8MSCuk7IsBaYWUV0hfOCggrZDyqlVfGFJeIX1OX5gzhbSJhoC0Qsp+34C0Qtp9SNmPCEgrpOxDtjGknwg5Bwgpr5EBadlvkdgY00GQN4FwpDX/QQ4crH+QB61RAi1XG9OO6Al0CrVlkfeKzklhrSDQLVDi+0fTvQahLNLGY7OquF1nUoHoKdXddSuiH3u7TtZdW2fAb8xDnPkCjkSrKSCt/gFpnR6Q1vCAtBoC0tovIK3mgLRC2kRLQFoDA9IKaRMh5TUgIK2Q8moMSCukvI4KSCukrQ4OSKsv6LEYkFZIeYUchwYFpBVSXrU6DoWUV0h/H9K+QvqckP0xpE2EnDOFlP2+AWmFtPuQsh8RkFZI2YdsY0g/Uavzr5EBaXGYBNfVHCbJejoV1p/nQUtaD7vaWOUwiWVxIpWbk8JaQaBboMT3+WX1cmES3pXz1WRXjg2L5NxVJO4G411aGA7C3W6Yp5RfpA7rj3bgjKkQZ4yA0yrUs+2uUI6DUH7IJ95D+i2qZ5vzhJekXXKSXGz7coazWguqZ1dtEGjyzjuXW7H9pymFFu8MteV/lth+m+rpUvjNBl/XZZZEjwzrzru0a9BHz0hXcok+9pgXB+2JD3pE2XI/dulVwsH6aS+Q4o5n3Gk9i8qjniWah0I+lv99oi8TcmxJdgiX28n+x2HleZ0q8MpvR42GnexPJDQlOVu9S3ZwFuWNFnAlmuwbs+pujMCDixbq6zAqb3XRlFLe0mPd/Rt0xzvm8QAbyX7OSuEB7Qd5SLOf/+awH/sfF69Y9zDC7iwP9tOQ0JTehHDZD+/mRfuxMpLGVt5pnXVsxfquMZwPzJZ4d41jrt3ekowknIUV4iwUcKo9PiwknFkBcaS3GKUlwDnwG/MsDt9jHKzvOoR0XIU44wScBgFnPNDgR222jLnsPAnnERnmSUUfvSD9FuIlI17nPFB6G1RaCvJhkFi3Tcjj5VvWAymR1uiAtI4hWpLdnCPQyiqvKiwrl1C5JSmsNQh0C5T4/hK6l7astLSlLpl2FIRSfl1SOucvVteXcCZViDPJE2dKhThTPHGmV4gz3RPnpApxTuqj7Yllb7MrxJndR9szs0KcmZ44zze/U29PbbdnToU4czxxYvnRWO15vvm3+jjXHafWxrm6f+t77anikWnej54s/dhHplUYUul89OT6lhjyI4U4ULYm5f0+zWuTmBmHJJTyO1RLCm+YEPDdFAJGftnusz71x/q2nIQzpUKcKZ449fbU2xOzPUdUiHOEJ868CnHmeeLE0s+xFeIcW2Ptqfefenti+oPnWz9dUiHOEk+cev+ptydme+p23R2nL9iB9J0uux3i2W0+e8mYuM0H69rtBbxV8RP7QL29urdxNNTnx9NZt+RgfdeWHN4qg23gLWfjBZoFykP+xjv4w/rjU+ohP+bib5vZMuaqcLuu9+GNvF338Hx4zu262D7epjFN4KVNyEMZpuH0E3AKRKscXwG3Q1gWx1O5tI8aFQS6BUp8fzzdS9sOYf9vTR/VzKaPYnGJSjL9wyPjMC38OJXk+opU/md77/5r3NeBifvyOVOVP/TUrryuyb7d0tIPdaaqZP6uM1VnCby0CXmnwG/MQ5xZAo5EqzkgrdaAtNoC0moKSGuPgLQaAtIq1ihfgwPSGhiQ1siAtPYPSOuAgLRCyqslIK2Q/XG/gLRC2n1IXxhSj40BaYXUYzEgrZDyOj0grUEBaYWUV8g+FHI+EVJewwPSqvvV3vOrIWW/b0BaIe0+pOxHBKQVUvYh2xjSTwwISKtW56vHB6TFBz7gGn004Ujr4WkOHKxvy7UK9QrJ32Yl+5525XU1FIie5RPvIf0W1bPNeeIEkvwluUhvv9u6bUIeh++ybjlDWkcTLSlUK8U2ClS/XBsDhgIti5Oo3DkprPUT6BYo8f1JdC8tFGhpS1HwE1L4VsovCo71xztwplaIM9UTZ0yFOFjfhTOuQpxxnjiuF47ZxWV9Edj1FAVxZlSIM0PAaRBw8EV9flJifuPTrPfQ06zJkNcg1OWX1m35x/fqqvd+x9Osg1T3vIMgbyLxjE98eHgYC/er8XTH0m8hXvIOD2MJj9uHrnNo8rv8R4S5l6JUkCreK6ienq0AnOG90fT/g6henk9zj4M8SRL8cVps07iUeigLJdzrJ5QfS7TGCvUs7w2O+kgD67HFFOh+2qe5LY0ilX8w6VXmSIqmhV3l07BQHvzgzPJu9zhzGebBlv8i8PDvs2WaxZR2cW8eR/9HT3BcCv6Pwct8ZS8ZXwn43D4cHZpS+B1LPNjy3wAZ2PMYpOfVyI90D2WAddP+j2VHUVvw/5ItHknlDy/Tdta/Lf99h/7HCDxYvsw1pwwPXGZUCg+PCDwIXnPm5kuuTLymoovnhuzlWEusiTECnbTLSsNYrLVelg73Dsax/5cswLTcjuedU+2Na7etTWk7jwijUzD7KflqVTJv5mpWFY2V3mOzpd+iZMtrV15Xgb2nxeP28dJtrMBLm5CX1kvL4RidJucPWZ0u2rZ5S5pKfQdtyVlwfUV1C8I9c+GnGexAjatLXg5JK0e851oO2XISztQKcaZ64oypEGeMJ864CnHGeeKMrhBntIDDtNKWEBckv4tU/t/g2Pmr1ri8Z5rm4o2aUjRmtNAeW77c2WYsS4wWneWBjbL0eXnZxet8obwUTRos8Dc/I68+Zz2F5NX1Fe4qvCDpPeRY+rFfkMy2HESLZakgVbxXUN1bj3k8svB+vNPo/3mWg9Krm/MEmtL23wUp9diy+V4/ofx8ojVfqGd5b3DURxpYjy1Gqmf+v1Wo4+oBPhZsLp7ELAhIa5FAy/bMxXA/Q0/Zy7dnWvotxEvenrmY8Lh93PalAi9tQh7H8ZcKOEsFHInWMQFpTQtEy1wL6rTqtOq06rSe47SkZ6eLKA/HT7v6kFYHvELN+vwc609z4MyoEGeGgON6Ts9/LQ7fYxyJZ9seHLtZbllPBMX6i6g9kyEPH4Yt3lvGxJUs1rWhmCKV/ya8G7Fs7/Q2opxtu5jnZsCweRnmNYPNarqVTrDGOQ7vJZX6D87hLkl+S3MJ12tIlkY5HawiHUyDPEkHlp8ilf8o6GAt6QDrs/+Q+o2ExzbSlFJ+GvFny1+U8ISPEST+5qXgoTxQzpel4G0CvAawB9tORdgV2t1ekt1hf2W78513+9opv3uDdsoRm8kCLbQDjtjY+k1K1oGlV6TyVwo697Vz1qst/1JPvQbyJ6JeUVasVymyJo1DLjtAfVmZtKmeOk+LRCIt1LWPXicL9Fmv1zr0Km2oQD5Zr7b8DZ56tbKshl5RVj56xfKsV2n8Rr1ambSpnuPkWKIl+WhXhFXSK+qAfbQtf5dDr1KU2+WHbflX1YAfRln56FV6EuCrV/bDqNdTKc+1VzGWj36LoHOe87NfSONPkluFD/f4WfT8FDb2FOorqluge3um0LJ0zD0Mq7LIbXPTPvjCIrfl3yWIXOqmyI/komx7KnzV2PuhAL9qPDkfnvNVY8mlZn3VOOuwWAVTNddpKWwUhPqKaBWEe5gnmSo+H7SmKm2HxBH6PbR1EU3I5xBHaeZvy9sZaNrsgg+WtOU/6RiFXLNgc7G3XiaUx5kxb5PFNiyjPKw3LwUHR0f0/Dw62vKf9xwdLXY1RkeUEY+OyyGvQSjP8j5PKL8cynBU6TzI4y6NMl5GOOVcB9u/ZKfS6luajU9V6e0ttypj+0KbWEp50mpOsgVbrhqREmwP24KrL5mLZeOyHZRNmypvJ9gvlxKOyy+Zy2ULGF2w0bBmoI047crrOtTiSE+fLe2hcD+DzlYjT/aShmpLv4V4yTtUDyU8bh8P1cMEXtqEvJPhN+YhzjABR6I1MCCt0wPSGhSQVjEgrf0C0moOSCukvIYHpBXSvloC0moKSCukTTQEpFUISKs1IK2QNtEWkFZIm+gfkFZIvxqyb4e01Vr1qyFtIqT/CtmHQtpESHkNCEgrpLwGB6QV0lZD8lUft3tPXiHnqyF9dMg5wFEBaYX0X7VqEyH9RK2OQyHXMCHbOCQgrbpffX74r5B6PDEgrZDyqlWfU6vzwsaAtEL2x5BjbUg91up89bQa5SukXx0RkFZIP1GrPjokXyFlX6t+IuScvC+sa0OO23vUKF8h17Uh9RiyP4Zcw4SM+4akFdImuA8Vkv+jrRwKvw+BfCxvP5TTLPCY4dntGvsslo9/QdqNOWkXiJ5S3flURL9VwLN8taTktSv3df0HPvfas/740G8LVN/ywvd4f0KTUF56pm1lhc9BMshqlbSHw2LbPLSRRspDuVgezN9RC7vz15STPx/5If02oTzvFfPVxRDV059aOdl9MUib35JyfQgZcaS3pBY4cMZViDNOwGFaaR/Q4vNCbPkvJH5BOi9kkcDfOIE/W9719gnyI8mG32xC7ELKX4vD91huyMNUwlkcEAf3Wp1FOEsD4khvsUv77irFwX1V/Dbj8oA4uEdrNOGcFxAH9wVOIJzzA+KcD2VmQT3z/xWQJ32MbaXAh/XFq+B+Bl9c9GkH0m8hXjLide7vWkV43D7e37Va4KVNyLsQfmMe4qwWcCRahwektSL5PVj11DV/zHGFgLPCgTPJE2dKhThTBJxWoV6lfWQFlJlEOKsC4mCfmUI4qwPioB3sSTjrAuKsgzKHEs58gQczH3hmn677Jq2HvAaqay77Jn6Ryr/tiK56NoBhbXAlYCOPWB/nYyuFdjBeY4Jh/d9FUCeDP+r2fEoRrXKy6z+8e1tWQp6P7Gz560F2A0h22K4VqnveBshbRXkbIW815W2CPKSBeQragPfY5rC+Ldcq1OPxajPcz6CvRp++gfRbVM825xmvNhMett1cvHa7NB9e0eJtEfAkPeyhZJkivqVl+5jkZy+iPPSNmygP/dlGysP+fQj8RpppbeKTyFZAfbZv5G8R5eGcfjHl4Tyc34fAuTO/i4Nt5vmtbXMj0TEXr8XQZhpUT7mwDLD/c1/dWIbWOUQL62+kNmykNqwQ2lDFfu09D43Rr6V+Ztt+qcBLm5CHesM8xLlUwJFobQhIy9q/HYOs7Z4+avdfo/+pw7toYTvZvs1vPkjclj1xeFed45LfvK7G8V2aD7HdbRDyDP3PJUHowUJ70U/kkR3Wt+UkHzSdcCRft8qBM93Bs/0/HvyOMZBzIB/Ln0dzpJxj0jorfxyTuN9vz0nbt99b+q0CnuWrRcjziesWv/Tmzz5w0ZMLClTf8sL3OLZ1lVB+ulDeyqoE9SuN61psKa67nfIwtlpKfktx3aty8ucjP6TfJpSfCeWy6EKidU4gWtjfQtBampOWjV1vgfrsk5DPTYQjxWwXOXjG+rZcyBisNO86iXjOetoc1l9KeYsEHNsenLfgGu/C4TI/uMbDOQSv8Wz5qaO66m2gNZ7vXJbjRFn1OckTZ3aFOLMFnGrH7jlOtDkgDtrGbMK5NCAOjs8cJ9oSEAf9B8+/lgo8GJstUT/YDnlSv+R5pi3/cHtXvZ2OfoA8Yn0c31YJ7WC862gOlHNsE+NEOPa6ZHcDyW4V5EmyYx9iyz/Q3lXvZpIdYnPfRjltpjwcl3gsQVnxnFSa8+A91zya5Yb1rHwrnCt5x4lKye8WVZF9dK4nS4SHbTcXzwU78uF1xol2CHiSHjBOVAJMxLe0OE6EfpbHVPSNPK9Df7ad8rB/c5xoaZk2cYxE4s/2HRvXeHP77r+m77yZ1qOIZ3/z8wbze4XqovE26n8oB553STEGvOead20mfkKMa9I6meddWdfJWP9Sytss4Nj2YJwafeYHhsv8oM/EGBb7TFv+9vaueveTziQ5S/rkeVdWfU7yxJldIc5sAafa8yGed1VrPsTzrmrNh3jetT0gDo61PO9K6wcPUT+4CvKkfsDzLlt+UntXva85+gHyiPVx3rVJaAfjfZvmXSWoU+m8q5T8Lie775LsNkGejw+x5fdq76r3gww+BOcSPLcqQd4WyuuAPKSBeQragPfY5rC+Ldcq1LPytfraAferMe+y9FtUzzbnmXf5zoNs+3bmw+ucd+0S8CQ94LwLZYr4lhbPu6Q5heQbOygP/VmJ8rB/87xrc5k28bxLsn2mhXuNpXkWPzf4Mzw3+CPN07CfY1/evm/3ctIYZHWAsqnG8ymOReeMuXfatfQcWJqHueLiku63wW/MQxzfeObqgLSsXiUb43lY1r0KkzxxplSIM0XAcT079bEtCUeSTbXnR7xPqlrzI56HXRUQB8dEnoelxYEH79t1H/2qbxy4lPz/wwfu/mvqDUloSusxHvdLQE8J5Q9Nwds7wagw3iDOwyytcrIbTrKT1nIu2dnyrwbZjXDIjvt2CfJcc63tlIfjNdLAPAVtwHtsc1jflmsV6vF4lXOe4j0Ps/RbVM825xmvdhIett1cPA/blQ+vcx52tYAn6QHnYdLcC2nxPAz9LMc20DfuoDz0Zx2Uh/2b52GXlmmTax52aQot33mYLT+Z/EbOeZPoNyyt+nzNb75mrplQjvOyzrFWBaRVn6914fC9+nwtDE6e+drCQPO142HOsTjCfO3cGpivvTDQfG1/kN0FJDsptiHJledrJcjj+RrKisdBm6eUX9xMiq/0lbiZNF49l+JmUlxK8o0dlIf+rER5rvlaiLiZb4yLMdPmdQsp35Z/8b5dNK+guBnyhfvB7eE59fnacz++ZvUqvdfA87XVAs5qB84kgWcJZ0qFOFMEnGq/t8fztY0BcbDP83zt+facM23O8Wryb9JzTtecw5b/1AFd9V7nmK/5POd0zdds+XtovlaCOqGfc6bJ7s2B5mv3gOze5pAd920cG9m/lCCv/pyz/pzzWeLJX8nPcnwNfWMH5eV9zrmxTJt4vob8bUyh5TsPs+U/RX4j5zxG9BuWlrS/je1/Yz5c7/mapd9CvOS1f0l30vsA0vt6/K4qzvNmQjnOc80LpfXiqoC02NcibZ6vZX3nbJLAs4QzpUKcKQJOtc9z4PlateaFPF+r1ryQ52vV2mfnO1/7Kc05tkCez5zDlj8F5hy/cMSIOJ7D77Rz+UNT8B4jv5vzvUXR7/I7imnvA/wmZS3v+z6ALX8wyO53JDvE5r6NcmL/gmMqz+VQVrzfJ+uaFOunvdtp881V4fsb3vM1S196lzTPeCW9JyHt4a1w/dA5X+sQ8CQ94HwNZVqC35YWz9fQz/L7AOgbec8/+jOOnWD/9jk3AtvE8zXJ9qUYF77LxzEuaVxqFtqYQUeDfW3Q0m9RPeWdxwal+Io0XptzYQ9OfiefIz5t7bYF21dtXL/6zLVXbp2xac2ClVu2rV+5ccaaNVvWbt2KTCMQHuSK+XhxGfv7IuE+0ih36EWWyfvmMrT4AA2szw7w0jK0lhAtaXDj/zeqnnzagw/6edDBjpbG12LiS3r44nLyaJyXEy2snxZwSaN1BdGSXiDn/zeqnnyyvFx00hwo8nUl8VWCvA6itaMMrYuJFtbfQbR2lqH1YqIlLcL5/42qJ58sLxcdk3aV4eslxJcUELC0ri5D60VES9q8Y2ldU4bWWqKF9bEu/r9R9eST5eWiY9K1Zfi6hPi6BvKupTysN49wsi7SsH6sRdo8wrk2IM61UGZPqGf+fx3koW9tFe5ZDDv4Xw/3qxEwsfRbiJeMeJ2D//WEx+3jgMkNAi9tQh6Oq5iHODcIOBKtjQFpXUftSVuEnbxfd8zVkOezCOtcOMEi7JSEpjT3uJbaKM1jVgt4BWpXk1Ae6RWp/GkJT88e5J1EI6U+sjGFFxwzzeUKdDSrnv2rGn3E0m9RPe0nTx+5jvC4fdxHrhd4aRPyOGgh9cXrBRyJ1paAtPihaVofWRKoj/xj/656L6jBPnJ+gD6CcyifPpLzwZN3H+EHT5X2EWku6+oj1wm8tAl5Jfid1hevE3AkWh0Bafn2kYsD9ZFfQB+5pIp9pJT837eP2PLbA/QRnDf79JES3K9GHyklv0P1kRLhlesjHQIvbULeTviNeYjTIeBItHYFpOXbR3YF6iMPQR+5tgb7yE0Z+4jEezXWXlL86gj4nSYjyXbbhPr8YHWVgFPORu7eT+ZHshHz267f+cH6R8BGXu2wEdcDz1gPVo+tEOdYASf2g9VqPfA8lnBKAXFKUIYfrHYExEFf6XvQ2nupH+yAPKkf2HhRkcovg37wAUc/QB6xPj5YXS20g/E+nGBUuPFIfLBqaZWT3UcDjTPTQHYfz+BDcE7PPh7lUaI8HJM57ivFV/Ee2xzWt+VahXpWvlZfGLfMoC/vB6uWfovq2eY8cy3fFz9t+67Nh9f5YFVaS0h6wAerKFPEt7RcD1ZXUx76xl2UV4K8nZTXAXn8YHV1mTbxszSJP9cGm97aZLY6H55zkxm2j+fxJYEXSTcvhd+YhzglAUeitSogLfuMob7JrOe9WpgL8SazUkCcEpSptbnQnzLMhczF47kt/5ORXfX+EmEu9PcamAv9M9Bc6NMgu//U50Ku6zkzF7omH17nXEh6hp1lLiQ9034+zIUaBP6wHPY9KZ6khHsFBx5j9BPqvoz4xjyOe2WNAS0R+K1iXLfBt3+Vkt+1HtdFG8A8xOkQcCRaPnOeCjcwes/HLf1qbmBcAvfYv5Xy4TW49LDRgbcjH14/i7dTwJPmusafNqmeOizBb7QJae8W6iutzyN2lv2UpTK0XPspS0Srowwt3k+J9W1djs/PSD4UZfzwxBHdy9i9gEdDmcnJb+5TKIdn95JQOdeB9qifavQ9Sz/UgfaSHtIOmO+v3DZSgt9p+0ylQ7N8bNZ1QLzET1adSpvKTbmZjnKXCuUkLPN/3PfMh3LZsrMTGkbOhy/s3kbE3Qy/Mc9c0tyfx5XNAi8SzqQKcSZ54kypEGeKgNMq1Cuk/LU4fI9xJNm44mN5cdCeOTZwUUActEmODVQr1sGxgVUCD6bPnDei6z73Ndd4wS+9r4D17Qr6kCD2Ax7r8GA9JZQ/NAVvbYIR42C9NNmtI9lJL6C5ZGfLzwTZXeSQHfdt1wuuKI+LKE/6WE2B8hS0wfUCmnQYRF95Ac11wFMpH17UF9Cksc7nBTT0Z/wCGvZvn9iA7wtotq55uSrZKgwvV5259solKzeuX7Ny2/rNmxauvXT72q3bikCZ0bEVSsme2EoE6fBVoP/3o7yllL9AKIeXazQN8UlspKeU3HMs/VBHDUhvdLmOGpA+yygdVfFy+I15iLNFwJFobQpIy9pN/SjPnvcYx3WU5+aAODiK8kzv+fbpwbTZyhtotiI9yXDNVmz5X8PK/h6arSA277RfDfSUUP7QFLy30UwPR59KZ3qWVrmnQG8n2eHK1ecpkC3/JZDdu0h2iM19G+XE/gVHav48DsoKaWCegjbgPdcTW5abtFqqcNeC90yPdy3ktA/nrgUpiljh0RedMz1pZinpAWd6KFPpTVzXUZ6uTw9eRHnSCkPyQT5HDWCbshw1sFjAsXnrII8/kbtBaDN+5t6Wmw/lFhONlZC3jvLWQ94GoL/w4O5tw37D/Rr7LvdrtGPu16j/tLfL03Y6WrpFKv8N8E2Pkr+TbBTn0/2Ih5JQHlcnvJKVjox10VrlwO4Qypcc2NKRd8yLUul9rRWwbJ6VTXPyF8e8LD7QRChbF3bhIA/PFgC6aXqSVo0uWUl6kp6UlSgPfcwqypOOqZF8DPsf6RgdyT4lf4PjsfU35aLQPM5fVIYuy1MaO6Qx2BVRl/o/+w3s/+w3fD9FzH6jlPwfbVU6Mp6fBv2Z5mdoI5XOzzqIRxzfJPtOO860ESJsf03xbY0ZaT4FTxEaoI8q1d0XWD1W6AuKki/A/s6+oAR5DUL5rH6T+y3qZjXR8o30cD9rEsojvSKVV4lepTeF0B/xJ5WliHTWOY/tD0buoxM+eD5sfuM6ov/I7u2W3s5Bn8O2Z8sfAvY8IPkd0m/wEbPS0bSuMcf1CXOs39c+Ye7a/dCRDy/KJ8xj+zWUk49fw/LWt0g72bg/S0f1Sz4i7ZPsEp70FB59hMtHSjtGyj1hfwPFEbB/cf+Xjh6U+rjPZ3Z53JB8GI/ZWP4I8GHTSTaSLbvmsTuF8rhrh5+Aoa3v9KC10YEt7abd6cCWdtMyL0ql90mpL1rZVGO90YEFgG6anrC8j6wkPbVReZRN1r7bQXnS54akvltSXW2enjJuYzuk+IY0H8Axvz+N3dV+2ps2dksxYKTLc98zoO+eR7Ipqa7L9aSU/QeWL0EZXjNJ63UXrc0ObJf9StglyMO6jM182npS37WyqUbfDbk+kGRVgjK85sd+zX3Q98kz90/fJ8847rJ9bhba4Tvu4g4P3v0hPTN02Z600wL7MduetNNC6v+u2Br7DbRR9hslyGO/YfWJtorlOVZgy29IdFHhjl8xVrCDeCwBD5J9p32qrgN826YU39aYkealsE51xQqsHqsxpy5BAfYFHZDXIJTP6je536Ju0j6tirSkXajcz5qUHLPkT7Xa8i91xArQH5WId/RHrp0wrk9uYKzgjRQrkD4nZMrtJNuT4vroc9j2bPl7wZ6voflGCL/BccsS5PFptTZPKbedtQn1bTnJnq0fqHAt7R0rsPRbVM8254kVdBAett1cgd6U6IwVSGuckoCHsQKUqfRGhCtWUE2/5noeUk6uvHbHNnJ/Rh/BfgB9RInyLnLgSbEw9BEuH+k7Z8EdvedRrAD7l+u5GPf/EuS51tY8b9gBvEhzHkuX3wR+B/iwT5BsJFt2zWPLrdc59imt1120XHGKq4XyuxzYyBfWZey0Pin1RSubaqw3cF7AfdEVozGXj6wkPbVReZRN1r67g/JwfC9RHtp2h+pq8ydSxm1sB47b3HfT4oc7aexGvnmtgLaQ961x7Mco37R9BTgOYPkvQt99hGQjnS7usgnpjWl8C5p9WNrJMWm0VjuwpZNrrnVgI19Yl7GZT1tP6rtWNtXou9jfuO9KesLyPrKS9NRG5VE2Wd9gv5rySpDHscMOyNsFbX7EI0bvu68AY/R8ioTkC122V27MYtuTxiyp/7PfwP7PfgNttER5qNsO4p1PJuDyHCuw5X9DsYKcp2GLsYLriMdrgAfJvnltZcs/A77tdym+rTEjzT96xgqsHqsxp8b+zr7A5YPNldVvcr+VTjwu0P+RFsqUYwVWRk1CeaRXpPL/dMQK0B9dQ7z7nqjB84wOyMNYwYjkBL1W1bPvYqzgf2R76NPYX5iLbc+WPwBO7OuX/A7pNzooD/0Az62lMUeyM+lZEY6hXM/6gQpPtPOOFVj6Lapnm/PECnxPjQnxFQGTpBPyJT1grEA6pQ9puWIF1fRrKCcfv4blee2ObeT+jD6C/QD6CPYfJQdeB9TDubj1ES4f6TtnwfX5n+iUKuxf3P+xj3P/R3svUR7KENuHdiP5MB6zsfzB4MOOJdlItuyax94glMcvQOyk9qCt3+BBa5cD+0ah/A0ObOQL6zJ2Wp+U+qKVTTXWGzgv4L4o6Un64oBLVpKe2qg8yiZr3+UvlpQgj/t1B+RdC21m+3TN883FfXenwCvOB55rsYJToO8uJtlI/tkVK8i6Xkcfdp0HLdd6zWW/EjbyhXUZm/m09WopViDpyeVjJVlJempTPfs198GYsQK2z1Cxgo8+z2MFPmM+2iqW51iBLb860UWFX5cTYwXXE48Yz/BZ19vyV4Jve1GKb/ONFdjy6xM6vRkrwP7OvsDlg82V1W9yv0Xd9FasYBvowBUr4Lhm6FjBKz1jBS9JmXNkjRW8Buz55RFiBegHOFYgjTmSnUmxAhxDuZ71AxWupb1jBfxFvpyxCecX+Vyxgkq+ymmStMaR9ICxAmktgrRqMVZQTq68dnd9xc13vcH+o+TA64B6OBd/ZZViBe8NFCtAey9RnusLddcDL9KcB8dsLH8P+LD7STaSLbvmsSHW6y5arljBTUL5Gx3YyBfWZey0Phk7VoDzAu6LrhiNuXxkJempjcqjbLL2Xf4CcAnyuF93QB7GwO6vUqyA5wPSuw2STygQv1h+NdzLuneU1yclyNtBeVhvVQoO+gTUSdoXnz7tOae22BXa++Bq76Mptx7kd2fQd5coD2WM7yPx2IDvuNyd4QuDJdWTV2mdzLbXlFLe0itS+W8Ic3aXPbve/8pqz9iGSu25BGXWUltt+e/HtedBvW3PpeS3ZM8cE5LsuaB6+rBK4jm7atD+H+tD9v+HGrd/aS3hsv9yMZJS8luKkfSG/V+cwf6vc2BK9m/blmb/GE/E8k877F+Sr8v+yz0jdNn/DZSH9Val4KD9o97Z/m35hgO62uqyf4tdDftHGbH9u9ZN5sq61uFnAjh/d9k/P68NZf9LKvzCssv+bVvT7N/S43j5MLAJtn+pD26Ge5U+68I2XE95WG9VCk7afJ7t35bfz9P+LXY17D/k+rVcnIHn89g3XPbPzzlC2f/JZP/4jjvHhrYINFzvsbvOrrDtKAEvUh+xdItU/vADoA0HdKfZobquBuLdXNVY87poufrnTqH8Dgc28oV1GZv5tPWq+P5XY7Xfa5VkJempjcqjbKS+5XrHvUR50nvsrrMrJPuU3nH37bv4jvtv9u1Od3sZuixP13mEiCX1/6soD+ux3/B9V439BuqW/QY+71NCeX4WbcvPTXRRza9Wsn3js+gS0OBnd7b8avBtC1J8W2NGmos8x9lAZ9UUq31WTTm/WUp+S76Az0iSzoYowT2OqVoZNSl5rcvnstjy5wvzOskfdRDv6I/43f2NAq7kj/BZdEfCB7+ja37js+i1ZHt5z2LcBfZ8YfI7pN/g87DQDyANtimXnbUJ9W05yZ6tH6jwHXDvZ9GWfovq2eYMeAVX/5Pe063Qb3Y+i5bihJIe8Fk0ylR6XuJ6Fl1Nv+Y6x6ecXPnZMLaR+zP6CPYD6CPYf7jO30MfUYI2dFDfL3d+Ds9ZNgvtMHR/msxZpD7O/b8Eedz/0d553oAy5HnDTuBFmvNYuryP6EbwYW8g2Ui2XIJ7PHZdLZTHODifH4S2frUHLdf79a53RSVs6b0d5kWp9D4p9cVS8rsa6w2cF3BfLPdM1kdWkp7aqDzKJmvf3Ul50nvsUt/F+PsbUsZtbId0zoY0H8Axfy2N3a4z73zPoOEzFbBf8/k00jMG9DOWLs/53w599+MkG2keWcn5FLxmkvbvumi5zuIr5zcYW/IbzItS6WPr8/l8Cl7zow/kvSLYP13nSHGMQTo7RTo7qUN1tZntUzpbxnfcxbNl3kyxgpJAt5JzINn2pHlzyHHddRYL+w2eH3J5jhXY8g9RrABtJIOti7ECHsd3Ag+SffPaypb/Ofi2r6X4tsaMNL/pGSsoJb+rMacOOY6X85vcb1E3vH6UxlKUKccKSsn/m5Qcp+Dzl235HzliBXnnC1L8TvJHGCt4hmIFJSiHsYJHA8Wp1IFd9X5N8w3Ezus3XHNrpME25bIzaW8gjqFcz/oB61fQFqsRK7D0W1TPNueJFfiu3Sv0m52xAmkeLukBYwUoU8TH95LNFduvoZx8/BqW57U7tjFPPEDyH1sceOgjcC7+jMd6w3fOguuNV1OsAPsX93/s4673ZHneIK3neNxI29OEYzaW7w8+bL8Du9MMfaZWidojvX/qotXhwC73jm6JsOtnanUvL+nJ50wt377LMQYc37lfo23j/nK2zw6hHSW4x323JPCK8wEpVrBJdc9DGj7xAKnP8zxNmvtuFnjlue8Y6LvHkGxCx/l81usuWq71Wrk4H2PX43zdy0t68onzbYI81/exXf2zg/LQtnHcZfsMFSt4IcUKOgS6Ltsrt5+Gba8ktE/q/+w3ssYDJFtnv2H1ibaK5TlWYMufmujCzj9zniMlxgquIR4xniHZd9o7wcvBt52e4tuyvmd8ZkIn0v7tzO+CunywubL6Te630hhfoP8jLZRp2rtaTUqOWVp6vGZeAjpwfWeP45rojzgGIp3tLvkjjBVcmfDBax3zG2MF55HtSXF9W/fZ9lG7bfmXgj2vSH6H9Bu8x0mKGbnGHMnOpOe8OIZyPesHKlxLe8cKLP0W1bPNeWIFUv+T1jsV+s3OWIHv+XsYK5DWIkjLFSvoAP6xbAi/5noeUk6uvHbHNpYoD32E6xkG+w/XWf3oI3AufiX1/ZLq2Q7fOUsJ6C6kWAH2L+7/WeMB0tqa5w3SebIdUAbHbCy/E3zY3SQbyZZd89hy6/UOao+0XnfRquS9J8bOcqaW1CereN5EY7XP3C13ppaVlc+ZWr59l8+8k+IBUt/FGNjdKeM2tqMD7nHf7RB4xfnAcy1W8Cboux+qxwp6YDOf9VhB97yYsYIPVSlWMLweK8gcK/jscyBW8DD4ts8HihV8qR4r6MwrEa2SQKsasYLv1Eis4CnPWMEjgWIF/wR7/kk9VuC66rECwqvHCnonVvBUlWIFg5+jsYL/gQ8b2t6dZj1WkN4n67GCbH03RKyA7TNUrOARGruxTa49yPyOYAnyKn0HAfdkWLo8/xjZ3lXvqPbuNLGfNhDv5sr6DoJr/+MuD1qbHNjl4hSuvVccG+C5S197B4HPAnG9g4Bj2SbKk94DquQdBLbPTUI7pHcKW1XP/rAJ6H53eHe6JYGuy/Y6hPIlKOM6d4THFKzHfgP7P/uN2O8gnNi++28tv4OwqH33X6Pj6e0yzazvIMxM6NTfQei9dxDmte/+K8UK0B9xnAP9UQfl5XkH4dL23b/LvYOwuL3rPvs09hfmSnsHYVt7V71lye+QfqP+DkL9HYRniSd/n6/vIEjP0CQfwf4jzzsI1ke4fKTvnAXfQXgombNIfdz1ri/3/6xxBB43sr6D8JL2rnq3tHenWX8HIb1P1t9ByNZ3Q7yDwPbZIbSjBPd830Hg+YD0zFPyCQXiF8u71iflzlPj9YnveWqbU3DQJ2DbFid/i1T+1e27/0Y6A6wx61k5JcjziYO47ARlIs2N+Gwd6R00aWzAZ98foLGhAOXYlgqqJ68FoW1tKfUlWqiXQ+H3IZCP5R9o3/3Xzk9Qnhn0OrcV6iiggbRz2sxcbKu9pPkkzp0kPHO1CHlFD14+d+xnzrz3P5MHFai+5YXvsV02CuXnCOWtrJqI93bldZ0p9V2LbfO47ZiH/c/yYPrsqIXd+WvMyZ+P/JB+m1B+AZTLooshqrstoL3b/roK8hZRnusczKxxZfZX6LfxbE9eh9vyn23vqve99u40pbg6jltsm9J6EuetPufNumitcmCXi1v7fPuSeVECn7Ze7LGtAwsA3TQ9YXkfWUl6ktZhPO9aBHmrKM93nsdrOymuLNnnKqEdvmfdrgK6N1DsWJpruWyvJJTHfsy2J+1pkfo/+40S5FUaV+Z+hraK5Tl2bMv/sn333wpjPGLsmJ8j7QAeJPtO3ZfTvvuv0fFj7TLNrHt9Hk/olJvnBnqOVKz2c6RyfpP7rSueIK1pUKY877QyalLyXgU+n92W/1v77r9S7Bj9Ece9pT0bkj/is/ewz2DseO9Ru3/z+sP8xtjxv9tVt3aXIE9ai7Dt2fL7juqq90xCM6Tf4NgR+gGkwTblsrM2oT6OoVzP+oEKz4L1jh1b+i2qZ5vzxI6l/leCezw/z+k3O2PHvvvaMHaMMpXiyK7YcTX9WgkK+Pg1LM+xXGwj92f0ESXKQx/B/uNSBx76iA5og/URLh/pO2fZDnRLFB8oQTnu/9jHK40r87gh+TAes7F8O/iwySQbyZY74F7WPdKufbPXeNAqObDLxa0ZW4pbMy9KpffJKu75bKz2XnZJVpKe2qg8yiZr3+U9Lr77WHZCm9k+S6pnO6TztqX5QAno8nxgqUBX2ntaUD39kE/sWDpfG+XBPgFjFzwnwHqLUnCkGIS5OHZsy5+UyLncnNpiV8PeUUZs75LPdn3zp1ysntfX0jnlkr1bTGkP8lLg/UIaG9YJ9AuUh7yuE9rWJtS35SSc6RXiTBdwmBauBxcBLZ4/2/IXJnZm50EbgG4G+1nH8rc0kPalOWkXiJ5S8rzV0m9V6f25RcjziVEXv/Tmzz5w0ZMLXP7G9d6d5G+mC+WtrLBvZJDVKtf3pqQY9aWUh/3c8iDFqLfk5M9HfkhfmmfOhHJZdCHRWhKIluT7K6G1NCctG4dHP7iBaEljK8byrEwGC+1amlKPy6XF3BFHor+JeF0k8LpIaLe0596WaxXqFVL+Why+53qWcRLxLMVgVzl4xvquse4kas9iyMPYyuWjZH5QJ4uBHx4bbPnLj+iq9+JR6e3ntRXyPEl15yWrPid54syuEGe2gBPSbiR9TiKcdQFxcH4wm3A2BMRB37In4WwOiIP+7FDCSesHt47quo/+Mq0f8Fzclh8O/eAVjn7A+0YuBXpKKH9oCt4rE4wKx1rxOQLPl9Nk9+pAPuQ/h3fVe10GH4JjIc+pUR4bKA/nTfwtImnNIj27dcW/W4V6Vr5WX7h2qUZ81tJvUT3bnCc+K63NpLmFbV8pH15nfLZDwJP0gPFZKW6AtGwf83kGi76R46Doz1x7lg6B34iR1iYbrxjs4K9VoMW2hbxnlT3Ss3ziPaTfonr20Ty2Ja1xpbkQj01YV9LNcfAb8xBng4Aj0VoUkBY/1+6NudCUCnGmCDjPl7nQFMLpK3Ohb47quo/+3Xc8t+VfB+P5dxKa1ZwLPZxg9OZc6BGSXd650FUgu5+Q7BCb+7YrvohzFJ4Loaw4xinFo6T4rRTjZLlhPR6vcs5NvOdCln6Lqsg+OscraY4ojVcVzvU650IlAU/SA86FpO8FIi3XXGgx5aFv5PkO+jPe2+2aCy0u0ybXXIjXYBuT/18Ifeevo3b/bhXw7PjLcynze4XqovEU9T9sK8egss4HsP4G4ifEeGN5xn3yHIPaKPC80cEz1uf35DcIODxOs89UB8n8oM/EMZ59pi2/BPTecFB6+9n3Ic8878qqz0meOLMrxJkt4FR7nsLzrk0BcbAfcAyqWvMhnnddGhBH+r57uX4wnPqB9DwY+0Ha8+B/jO+qN8LRDzjmsQXoKaH8oSl47QlGheO4OO/iWEqa7A4K5EN+BLI7OIMPwbkEn1Pl+74C7xGSYi3SO1eu9/eld7usfCuM0XjPu0rJ7xbVs8155l0lwsO2m4vnXR358DrnXTsEPEkPOO8qASbi474uc0l+lsdU9I2u97g5PoX9m+ddG8u0ieddEn+tAi22LeS9GjEoS79F9eyjeWyr3Hk6HIPaLPAi6YZjUJsFnM0CjkRrQ0BaHIPC5688F5KeBS914EzyxJlSIc4UAadVqFdI+Wtx+B7jSLKp9pyLY1DVmnP1VgwqbTxfRuO5FINyjee2/EtgPF/uGM99YlCuuZAtv4LmQtWMQaXJblWgudD5ILu1Dtlx3/aNM7nmSfXncc7ref08Dv2sK77A8x30Z1mex20o0yaeCyF/G1JoFeGeFHMqUvmXJ/3L9LWXJr+lfo77VIuju5erz8O615V0vw1+Yx7i+M6dVgekVZ+HdeHwvSzzsGrNj3ge9nyLSUnPI42Peb1HTAr9J88lbPn/jeuq96YIMam3RoxJpcnuPo95mEt2tvwvQXbvzDAPq8ekuvjEe0i/HpNKj0m55mG1EJOS+GNavvMwW/5B8hs5502i37C06vM1v/mauWZCOc7LOsdaFZBWfb7WhcP36vO1MDh55muPBpqv7YQ5x68jzNd+WwPztd8Hmq+9CGT3J5Kda/8nyonnaziP4vmadI5lgfKU8oubYf2+FjeTxqvnatxsA+Whb+Q5GfqztHcpze9qxM18Y1yMmTavW0j5tnzL6C6a/SluhnytA+xb6/G15018jffCIm2er60WcFY7cCYJPEs4UyrEmSLgtAr1Cil/LQ7fYxxJNtxPQ+C49to/355zps05DiP/Jj3ndM05bPn+MOcYn9Cs5nPOCQlGjOecabKbRLLLO1/73diuekc7ZMd92/e9w/pzzvpzzmeJJ38lP8vxNdd7h3mfc64r0yaeryF/rjNk7D3XPMyWn0t+I+c8RvQbvC8N+WH7j/1u5OJ8eM53I7F9PF/bKPDCazxzzYRynOeaF0rrxVUBabGvRdo8X5Pep13lwJkk8CzhTKkQZ4qA0yrUK6T8tTh8z/W+Fc/XqjUv5PlateaFPF/bGBBHmueUm3NspDnHJsjzmXPY8jfCnGMzzTmkvbaMh/O1DUI7GG8b+V0cJyr1u5YW+12W3WUpa3nfdyNt+U0guytJdojNfRvlxP4Fx1Sey4Xce4v1WW7SWqTC89C852uWfouqyD46xyvpDCrpfaYK1w+d8zVp3izpAedr0hliSIvna+hn+d1I9I2bKQ/9GcdOsH/7nBOBbeL5mmT7UozLlpNiXNK41Cy0MYOOBvvaoKUf6jwJKb4ijdcDdTo4+b192/qN67ddedrabQu2r9q4fvWZa6/cOmPTmgUrt2xbv3LjjDVrtqzduhWZRqBBcB/z8eIy9vdFwn2kUe5wjCyT9w1laJ1DtLA+O8CNZWjxAXHS4Mb/b1Q9+bQfm+nnQQc7Whpfi4kv6eGLy8mjcV5OtLB+WsAljdYVRAvr88NFDBYxnywvF500B4p8XUl8SQ7T0rqqDK2LiVbaS+omlcrQejHRkhbh/P9G1ZNPlpeLjkkdZfh6CfFVgrwOorWjDK0XES2sv4No7SxDay3RwvpYF//fqHryyfJy0TFpVxm+LiG+dkLeLsrDevMIJ+siDevHWqTNI5xdAXHw8PM9oZ75/9WQh761VbhnMezgj4ezVyNgYum3EC8Z8ToHf+lAemkCatt+rcBLm5CH4yrmIc61Ao5Ea11AWldTe9IWYd8Y3R1zNeT5LMJs+aWwCPs2LcJQRruojdI8ZrWAV6B2NQnlkV6Ryv8g4am/+Yc+crNLqC/RxvHUFegI8SFrpGf5wXtIv0X1tJ88feRqwuP2cR+5RuClTcjjoIXUF68RcCRamwLSWk3tSesjjwXqI9Ohjzxeg33kjwH6CM6hfPpIJYcgIT3LD95D+qH6iDSXdfUR14c5MI831kt98WoBR6K1PSAt3z7ydKA+Mhb6yP+q2EesvH37SOdGxjG7/1bSR3De7NNHKgmGIT3LD95D+qH6iHRAnKuPbBd4aRPySvAb8xDH9XAcaXUEpOXbR4aN6Y6Zt48MhT6yd0KzlvrIiIx9ROK9GmsvKX51BPxOk5HrwypHCO2R1nhHUHvSbOTgMTI/ko2Y33b9zg/WFdjIYQ4bcT3wjPVg9dgKcY4VcGI/WK3WA89jCWdLQBwcV/jB6vaAOOgrDyWctH5wIvWDqyBP6gc2XlSk8vcc1lVvuqMfpMUs8cHqaqEdjHdqglHhxiPxwWop+V1OdqcFGmd2gezOyOBDcE7PPr4EefwxtA7I47ivzVPQBrzHNof1bblWoZ6Vr9UXxi0z6Mv7waql36J6tjnPXEuKFUsvflbzA6mSHvDBKsoU8S0t14PV1ZSHvrGD8qQPnUs+iB+sri7TJn6WJvHn2mDTW5vMVufDc24yw/bxPH6LwIukm5fCb8xDHNeB0iEPp5Y+VlnfZNbzXi3MhXiTWV+ZC70sw1zIXDye2/IHw3heijAXuroG5kLXBpoLNYPsbqjPhVzXc2YutDMfXudcSHqGLekhbS6E+JbW82Eu1CDwh+Ww70nxJCXcKzjwGKOfUPdlxDfmcdwrawxoicBvFeO6Db7967kS10UbwDzE8Y3F+sx5KtzA6D0ft/SruYFxCdxj/1aJfaXpYZ0DL+ezvH4WryTgSXNd40+bVE8dpu1Bk/Zuob7S+nze/ZRbytBy7afk54Dby9Di/ZRpG5cx71vJ/MX44c+M6V7G7gX8PJR5MPnNfQrl8OxeEionHX5S4YEe3n2PP+6Tc8O88+M+0guHxjb7K7eNoI7S9pluFtriY7PIk4/NZtWptKn82Q96OcptFMpJWOb/uO+ZP2hhy34fni8dvrB7GxGX9ybjPF+a+/O4skHgRcKZVCHOJE+cKRXiTBFwWoV6hZS/FofvMY4km+frC2gXBcRB2+fYwCqBB9Nn/kDrW+mld2m84Jfe33FoV70/0/oW+wHyiPV9X0Cz5Z+k2EDOA1O8DtZLk93fSXbSC2gu2dnyN4Hs/uWQnesdg9WU5/sCGu+ty/oCmnQYRF95Ac11wNNz4QU0aayr9AU07N8+sQHfF9BsXfNy1QHJ766Xq85ce+WSlRvXr1m5bf3mTQvXXrp97dZtRaAsjRzs4dkT49FQaVeB/t+P8hZT/gKhHF4+Rw3kPOLAe+Zr6Yc6akB6o8t11MAmgRfpqIqXw2/MQ5xNAo5Ea2lAWvyJivpRnuk4tfAJnGodAcAzvWodQeU70zvi4K776A99Zyu2/BEwW5mQ0JSiubzTfjXQU0L5Q1Pwjk4wKnwKLs70eBWb9hToGJIdrlx9ngLZ8nuA7I4n2SE2922UE/sXHKk3Ul5aBB3zlPKLUmP9LFFqnBFUY6Zn6YeKUl9EeNwveKaXc2bZOdOTZpaSHnCmhzKV3sR1HeXJRw2gb0w72gftTPJBPNNbWqZNrpkejzfzBRybtxLyFlHeeqHNpt8tdPS7mdSOrBGSmQKmhLMs+V2kNm4gX4d6y2BbJ7YSjqWBtHM+TTjRt1+mPUlBvqQnG0UPXv4xbPoRf33TX17L/tjyktZneSzC8jOF8hWOOce3AoYibJsnjYc2rxHyLA8majlqYXf+cj6JOt5HflLfxzz+FGXWHUdIa3FOWkNUd7uSxlD0I8uT3z7rrZx90Hu9ZemHWm9Jvte13pJk1ibk8VG8ywScZQKORGt+QFork9+Snnm9NV/Ame/AmSTwLOFMqRBnioDTKtQrpPy1OHyPcSTZVHtdx+utZQFx0A54vbU8IM5yKMPrrUUCD8Zv3+ixZlgEmGlrhg8c0lXvFsfcBXnE+ji+LBbawXh30Bwk59girrdw7HPJ7i6SHc7ffGRny98JsnuVQ3bct3FM4nEE5bGM8urrLW+83OutnCd5dK63pHhklvWWdFIUr7fQz/J6S/o8gOTPeM6F/ZvXW4vLtInXWxJ/9bmQ31zIXDOhHOdlnb+sCEjLNUepz4W649TnQvlw8syFvhpoLnQ0jOffiDAX+m4NzIW+H2guNBxk90OSHWJz3/aNS/NcCGXF63op/oL3XDuCWG78XNdcFcZtvOdCMd6Yk8arCud6nXMh6eROSQ84F0KZSvMi11xoEeWhb+T5DvqzVZTnmgstKtMm11wI6+L/G4WyC6C9WPbPB3fV2euQdKzziI8FkHc+5fn2T6SB8k176/0CaoMt//ekDSbWeNRCmWY/5X72JcU+bTuaAdfmZbDfzxq+Whd24aC9mAvjpmgvSrnnVLb8eUJ5tDmeG54HeSuIlmSPOL+w9ijJy/JYDXkhDz7ykvYL+MqL+z3KayXRkua/KEOXvCyP1ZAX8uAjLyyfVV5WBpK81hOtcmucOVTe0m5Ssk/gTxnb8kMTX2Zkw6fyuHz8AoE2+sYC0cB2HCa0o5XysO6zetlr9+9YcR6ea14EvLAtIN0ilT8Q5meTSDblTthm+5JiHBi3WETtwXF8owetxQ5sae/URgc28sV7ZHhvjjTfkPyAlU2FfqBR8gMYr2I/IOkJy/vIStKT9Myd98b5xpwuojzfmBOeJMX2KcWf0nw29wdcz3w/ZY8S0nXZnuvECcn2pBir1P/Zb2D/Z7+BNsp+A3XLfiPvTvjpiS6quROe7buoZPtO2+G+BHzbzBTf1piR5mwYjxqgjyolP2+v0BcUJV+A/Z19gcsHmyur3+R+i7rhZw3Sc3OUKc8JrIyahPJIj/fmne05J+Dd5b4xcNe6z/YHI/dtCR8cEzC/MZayjGxPOh0PfQ7bni1/OdjzclrjhfAbyylP2qPlGnMkO5N27/Nnk10ntufcd+4dS+F955We2O77nCfEJ5dN2izgSXrAWEq5tzetr4rt11BOPn5NetYk7SHk/ow+gv2A6/Pjyxx46CNwLr6N+r7kI33nLBi//irFUrF/cf/HPs79H+2d5w0oQ543bAJepDkPf+Lcln85+LDbSTaSLbvmsdIe1s1QZjW1B239Ug9a6xzY0tvylzqwkS8+AYrfOJf6pNQXrWyqsd7AeQH3RUlP0nsqLllJemqj8iibrH2X3xDD8Z37Ndo2vol6e8q4je2QYrzSfADH/GU0dj9XYgWvhb773nqsoAc281mPFXTPixkreG+VYgV31WMFmWMFn3gOxAq+A77t04FiBQ/WYwWdeb0VK/h6jcQKnvCMFXwvUKzgb2DPD9djBa6rHisgvHqsoHdiBU9UKVZw43M0VvBv8GGDDu1Osx4rSO+T9VhBtr4bIlbA9hkqVvA9Grt94wH8vv46gW+pz/N8ejPwwusbpFuk8vvAmQPjSDZS/0HZZO0//M6z1H9ctFxxiu1C+S0ObOQL60p9Gfm09ao4jop9F/sn912XzzSXj6wkPbVReZSN1D95TMZxaDPl4TjEfR5tG8ddtk9p3JX2Nknnd+C4y+d3+O6zLRCPWF5610vq/xdRnu+8nv0G2ij7DdQt+43OLw/CfSzPsQJb/tgko8ITV8VYwXbiEc+tkOyb11a2/DzwbdNSfFtjRponJXTKxQqsHqsxp8b+zr7A5YPNldVvcr91nawtxdhQphwrsDJqUu45BK+Z54AOOFaA/ojnGdJJk5I/4rmLdJ6SkfvG5D+81jG/MVawgGxPiuujz2Hbs+U3gz0vSn6H9BubKA/9AJ/MKY05kp21CfVxDOV61g9UeFKid6yAT7Gv9CRnqf9J650QJ1WbJH0xOO3kaEmm0knmrlhBNf2a63lIObny2h3byP3Z9QwDfQT7j40OPGl9hz7C5SNXCXSlc3FWA90jKFbgigdgH+f+j/bO8waUIc8btgMv0pwHx2wsfxn4sOtJNpItu+axJaG864s4aOslD1quOEWHUL7kwJa+ksO8KJXeJ6W+aGVTjfUGzgu4L0p6kr6g4ZKVpKc2Ko+yydp3t1Meju/cr9G2t0Cbr08Zt7EdUrxSmg/gmL+Axu5qn+KcNnZLZzsiXZ773gF9920kG8k/o7/MOu/kNZO0XnfRcj0fc9mvhI18YV3GZj5tPanvWtlUo++GXB9IspL01KZ69mvug74nSnP/xH7EMUDprEPJPsvte3GNu/hcmU91d+27MBfL0xVnlWxvo9A+qf+7YmvsN9BG2W+gbtlv8EnhXJ5jBbb8/RQryPklHzFWwF+vw3iGZN+8trLlvwK+7SMpvq0xI80HPGMFVo/VmFNjf2df4PLB5srqN7nfom589oJJX5fhftak5Jgl7nnB8l9wxAoWQ32Oa6I/4hiIFKOX/BHGCh6nWAH2XYwVfC3l+RnaHvoctj1b/vdgz9+k+UYIv8FxSylm5BpzXF/NlZ4LSPZs/UCFa2nvWIGl36J6tjlPrGA74WHbzcWxgpx+szNWUBLwJD1grABlKn3pzBUrqKZfcz0PKSdXXrtjG7k/o49gP4A+gv2Hax+DFAtDH+Hykb5zFnzm+Qf6agz2L+7/rufd0he4pbU1zxukLwpLa64ilf8r+LDGw7rTLKmuy2ce2yGUL0EZjn1K63UXLVecYodQvsOBXYI8rMvYaX1S6otWNtVYb+C8gPtiCfIahPI+sipBGZ7/74C8Dsrz7btXUR6O79yv0ba3Q5vZPsvtp+C+mxY//BqN3cg3rxVCfA0a+zHKN21fgaVbpPJt8EXrg0g2O1XX5WMTu4TyO6EM+zC0iV0etFY7sK8Wyu9yYCNfWJexmU9bT+q7VjbV6LvY37jvSnrC8j6ykvTURuVRNjZPintL/XMH5fl+mbpDdbWZ7VOK0S+Ge659BRij56/DlwS6LtvrEMqXoAzbnjRmSf2f/Qb2f/YbaKPsN1C37DesPtFWsTzHCmz5CYku7PwTbSSDrYuxgquJx53Ag2TfvLay5WeDb5uc4tsaM9KcmtApFysoJb+rMafG/s6+wOWDzZXVb3K/Rd1wTEeKO6BMOVZQSv7fJJRHekUqPwN0wLEC9Ec7iXf0Rx2UJ8WOJX+EsYI1CR+tqmffxVjB6WR76NPYX5iLbc+WXwf2fGbyO6Tf2E556AeQBtuUy86kZ0U4hnI96wesX0FbrEaswNJvUT3bnCdWIPW/DrjHsYKcfrMzVnCNgCfpAWMFKFPEt7RcsYIS8I9lQ/g1lJOPX8PyvHbHNnJ/Rh/BfgB9BPuPLQ489BE4F19DfV/ykb5zFlyfv4xiBdi/uP9jH+f+j/bO8waUIc8brgZepDkPjtlYfhP4sA6SjWTLrnnstUL5a6BMidqDtn6tB60OB/Z1QvlrHdjIF9Zl7LQ+KfVFK5tqrDdwXsB9UdITlveRlaSnNiqPssnad6+mPBzfuV+jbe+CNnekjNvYjhLc475bEnjF+cBzLVZwI/TdN5BsJP/sihVkXa+jD7vag5ZrveayXwkb+cK6jM182nq1FCuQ9OTysZKsJD21qZ79mvtgzFjBG6oUKzjteR4r8Bnz0VaxPMcKbPl3U6wAbSSDrYuxgmuIR4xn+KzrbfkHwbe9L8W3+cYKbPkP1kCsAPs7+wKXDzZXVr/J/RZ101uxgk96xgo4rhk6VvALz1jB5wPFCn4F9vylCLEC9ANIg23KZWdSrADHUK5n/UCFa2nvWIGl36J6tjlPrEDqfx1wj2MFOf1mZ6xAWuNIesBYgbQWQVq1GCsoJ1deu0sxzazrDfYfeWIFv6hSrODEQLECtHeeN6AMed5wDfAizXlwzMbyvwMf9gzJRrJl1zw2xHrdRavDgX29UP46BzbyhXUZO61Pxo4V4LyA+6IrRmMuH1lJemqj8iibrH33GsrD8Z37Ndo2xsCeqVKsgOcD6wS6kk8oEL9Y3rU+Kbd3lNcn0lxI2mu0KgUn7b2kS5LfvNeoeezuv+Xm1Ba7QnsfXO19NC47QZlIcyPe84IyxveReGxYB7wfTGMDxqJ4T4a0P1RaJ7PtpX2jhPeT2fL7gI7VQpkm8oB9olJ7xjZUas/YN9ZSW235A+La86Detme2WbRnjglJ9lxQPX1YJfGcYTVo/0f2Ifs/usbtX1pLuOy/XIyE7R/nb71h/0+P3v3bx/6vdmBK9m/blmb/GE/E8qc67F+Sr8v+yz0jdNn/tZSH9Val4KD9o97Z/m35szzt32JXw/5RRmz/rnWTubKudfiZAM7fXfbPz2tD2f9jGezfNfeW7N+2Nc3+LT2Ol7/QYf9SH3S9x5j1WRe24RrKw3qrUnDS5vNs/7b8ak/7t9jVsP+Q69dycQaez2PfcNk/P+cIZf/fIPvHd9w5NrRJoCG9q8JxI+n9P9sO6Z1N6X2AIpXfPrar3nVju9OU5ki4p78aa14XLVf/LAnlr3JgI19Yl7GZT1uviu9/NVb7vdaSUF7SUxuVR9lIfcv1jnva+2Jom66zKyT7lN5x9+27+I77ZaO7091chi7Ls9wZrnwGzSahfVL/d50JwX7D91019ht8BhKXPxTysfzdiS7s840S1Mlg6+Kz6BLxuB14kOybn93Z8u8G3/bqFN/WmJHm6zzH2UBn1RSrfVZNSSiPfpP7bQny+Iwk6WwI6fkN97MmJa91+VwWW/4+YV4n+aPtxDv6oyxnbmCfwWfRX0n44Hd0zW98Fv1esr28ZzF+Hez5A8nvkH6Dz8NCP8BnTUtjjmRnbUJ9HEO5nvUDFb4D7v0s2tJvUT3bnOdZtO/5dBX6zc5n0R0CnqQHfBYtvUOLtFzPoqvp11zn+JSTKz8bxjZyf0YfwX4AfQT7D9c77ugjcC7+Fer75c7P4TmL9I0nQ3cjrTewf3H/l84GlPo4zxtc55mUgBdpzoNjNpb/Hviw35BsJFt2zWN3COU7oAyfH1SCvB0etFzv1+8Uyu9wYCNfWJex0/qk1BetbKqx3ihhAaCbpics7yMrSU9tVB5lk7XvligPx3fu12jbGH//Tcq4je2QztmQ5gM45r+Xxm7XmXe+Z1fxmQrYr/l8GukZA/qZtPMp/gJ9tziuO82S6rp8+o/LhpCfvOdTuM7iK+c3GLsEedxXO+j/fe18Cl7zow/soDzsn3zuDPZPjjFIZ6dIZyfhmo7tUzpbxnfcxbNlJlGsIPQ5kK7zanmvaIhx3XUWC/sNq0+0VSzPsQJbfmiiCzv/RBvJYOtirIDH8RLwINk3r61s+cMSHo2O90rxbY0ZaQ5P6JSLFQQax4vVHsfL+U3ut6gbn28VoUw5VmBl1KTkOAWfv2zLjwYdcKwg73xBit9J/ghjBbMTPjiea35jrGAc2V7eONUcsOcjkt8h/YZrbs37Vm2eUm47k/YG2nKSPVs/YP0K2mI1YgWWfovq2eY8sYIOwsO2m4tjBTn9ZmesQJqHlwQ8jBWgTBHf0nLFCqrp11wx0HJy5bU7tjFPPEDyH5sceOgjcC4+m/q+5CN95yy43jiMYgXYv7j/+74ny/MGlCHPG6T3ZKV3EYtUfgH4sNUkG8mWKzlTi/fhS++fumi5YuzSXgPXOwDIF9Zl7LQ++Xw+U4vn/7iXgveY+/ZdjjHg+F6iPLTtDtXV5tUp4za2Q3oWIs0HcMwfR2M3xgr4uxdZ4wFSn+d5Wgl4kWIFaXG+i6Hvlkg2Vm5KhYnz+azXXbRc67VycT7GRr7qcT5ZTz5xPvzuBccKfPsn93m0bRx3S1WKFfz+oO50JZ/gsr1y+2nY9nzfIWG/kTUeINk6+w2rT7RVLM+xAlv+FooVoI1ksHUxVrCTeOwAHiT7Tnsn+C3g225P8W1Z3zO+0zNWEGj/duZ3QV0+2FxZ/WYp+S35gi1ES4qxleBe2rtaTUqOWaa9L/BGR6wA/VEH8Y7+iGMgmwVcyR9hrOBBihVg38VYwdvI9qS4Pvoctj1b/gtgz++g+UYIv8F7nNAP8L4/tCmXnUnPeW05yZ6tH6hwLe0dK7D0W1TPNueJFUj9T1rvVOg3O2MF0hpH0gPGCqS1CNJyxQqq6ddcz0PKyZXX7tKZL5KPcD3DYP+x2YGHPqIEbXiQ+r7kI33nLLhf4dFkziL1ce7/JcjziQdIa2ueN+wEXqQ5j6VbpPJfAx/2c5KNZMsluJd1vc7PYaT1uotWJe89uc4LKXemltQnq3jeRGO1z9wtd6YWz/9dZ2r59t2dlCfFA6S+izGwn6eM29gOKV4pzQdwzH/bczRW8Fvou0/XYwU9sJlPW68eK+jZd6sdK3i6SrGC++qxgsyxggHjd/+t5VhBe8Kj0fGg8TLNrLGCPRI69VhB78UKRoAOejNWcFLCR7lYwUFke3ljBTPAng9OftdjBeJVjxUQXj1W0DuxgpOo74eKFbz+ORorOB182HKSTT1WkN4n67GCbH03RKxgecq4je3IEys4iMZuV6wAeXOtIyp9BwH3ZKS9g7AW+u4VJJuS6roaiHdzZX0HwbX/scODViXvILj2XtXfQZD15PMOgitWgONciHcQ2D6lWIH0TmGr6tkfMFawimIFod9BcJ074noHgf2GK/4Q+x2EayhWkHNOX9V3EF4Hvu36FN+W9R2EmzxjBfV3EHrKNNQ7CK/0jBWUiHcpdl7JOwgPUKwg7R2EN5Dt5X0H4ZNgz/fQfCOE36i/g1B/B+FZ4snf5+s7COgj2A+gjyhRXp53EB6gvi/5SN85C76DsIxiBb6xQtfzuhjvIHwefNjDJBvJluvvIOy+6u8gZOu7Id5BeDhl3MZ25HkH4Q2OWEGl8YC8+wqk9zN57vso9N0nU569KRVmX4HPet1Fq5J9BYyNfNX3Fch68tlXID2rr9a+gierFCs4qMr7Clxnkrj2FVQaD6jmvoJ+h+/+W8v7CoYnPBodNx4u08y6r6A5oVPfV9B7+wqGgQ44VoD+qIN4D72vYGrCR7l9BfuR7eXdV3Ac2PP+ye+QfqO+r6C+r+BZ4snf5+u+At9nGOw/8uwrmEp9X/KRvnMW3Fcw3LGvoNJ4QDX3FUwHH7aIZFPfV5DeJ+v7CrL13RD7ChaljNvYjjz7Cng+4LuOKRC/WB7jmCx/yee4zkyU5kKufQ6Mgz4B27Y4+cvPfs73nFNX81k8yojtvVyMKOt6kNfJ0vMayd4tZrn1rKKxoQDl2JZsHvJaENrWllJfooV6ORR+HwL5WP4qWkuiPDPodW4r1FFAA2nntJm52FZ7SfNJnDtJeOZqEfKKHrx87tjPnHnvfyYPKlB9ywvfY7tsFMrPEcpbWTUR7+3K6zpT6rsW2+Zx2zEP+5/lwfTZUQu789eYkz8f+SH9NqH8AiiXRRdDVHdbQHu3/XUV5C2iPN+zbnkOmHWf2WIok7bP7BqYy72axrSS6rp4zFEq+z6zxdSerPvMVjmwy8WtGbsEefV9ZrKefPaZLYK8VZTnOutWGhPL7TNj+1wltGMx3HN9F2cV0H1kVHe60lzLZXvl9pmx7fnuM2O/4XtmpWvtGGqf2X003ueM8VR1n9knwbe9M8W3Zd1n9h7PeW59n1lPmYbaZ/ZRR+wY/VGJeHeddSudKVlun9mPKXacts/s02R7efeZ/Qzs+UGKHYfwG/V9ZvV9Zs8ST/4+X/eZoY/IctbtBgde2j6zH1Pfl3yk75wF95l9c9Tu31If5/7ve9at69yGUPvMHgMf9k+SjWTL9X1mu6/6PrNsfde1x6VEeWn7zP6ZMm5jO/LsM/s0jd3PlVhBvyO66u11RHeaJdV11WMF3evVYwU9+261YwVsn6FiBa8e1Z1uPVbQ9TstVjA60UUtxwqOA992SIpvyxorGJvQqccKei9WMAV00JuxgqUJH+ViBdPI9vLGCs4Fez4p+V2PFYhXPVZAePVYQe/ECpZS3w8VK7h11O7fz7VYwUrwYdtINvVYQXqfrMcKsvXdELGCbSnjNrYjT6xgWs51TEH19EM++8w2C+VRHrw+QTnynADrLUrBQZ+AbeN9Zrb8VZ5zaotdDXtHGbG9l/t2ctZ9fbxOls4vkezdYpZbz14+avdvq7OVUG6F6p63XqBh8y6CvNWUt0Hg2bZ/I/Bi2z8fyli6RSp/G4wNb6Y+gvbdQLyby8fmcR/qfGoPvhe62YPWSge2y14kbOk8DOZFCXzaelJfsbKpRl/BvaPcVyQ9ud7Rc+2ZRVlJe4J5T+YKyFtJeRiP5X2eqyHvIspD294AbWb7XCm0Yz7c47FhvsCrodt/eHe6Fwl0XbYnjQ3Yj9n21gvtk/r/CsrD/s9+A22U/Qbqlv2G1SfaKpbnWJQt/wGKRaGNZLB1MRbFMY5NwINk37x2t+W/BL7t/hTf1piR5kc8x02rx2qs2bC/sy9w+WBzZfWb3G9RN+uJ1nqBFsqU51RWRk1CeaRXpPIPOmJRK6D+JuId/RGfF79awJX8EcaiHqNYFPZdjEU9RLaHPo39hbnY9mz5x8Gev0axqBB+g9ep6Af4/QZpzJHsTFoL4BjK9awfsH4FbbEasShLv0X1bHOeWJRr3m8ujkXl9JudsShp3ivpAWNRKFPEx+eV5ort11BOPn7NNzbE/XkF5LEfQB/B/mO1Ay/t/ZPHqO9LPtJ3zrIe6D6zz+7fUh9fobrnYR/n/o/2zvMGlCHPGzAuJs15cMzG8n8GH9bvyO40Q59LeRG1R3oG6KK1wYFd7r0mxpbOuWBelErvk1JftLKpxnoD5wXcF11rbXP5yErSk/QOGMebVkCeq++6vsvO/VqKvUj26Zrnm4v77kUCrzgfsLYxC8pNUN3z5kHeaNWdn/kCP1h+KpW37+k0pZS39IpUfmAiB5xvDaYy5veYFDzkD+/xHAHrL0ihhf4G23duCu9DgHc7X7c0Fwn8jRH4s+UXC+UxVmT5kWSzWMnYafGatdQeW34foT2Sb7A2VaFvGCT5BpQb+waXjMzFMl0qlEdZcSwCz0dbQHkTIG8R5WHfmUc8zBJ4mAr3uF+j3dm6z8ohmfRb/Z8F5WqxX4/17NcnpOAhf65+jfWz9usXpfB+VMZ+fYLAXy3166M9+7W1qXq/Lt+vzxJ48O3Xtq6Rwx+Hdad7HuRJNss6tuVnOWz2fIFXlCHLd4VQ/nwowzZ7HuStoDysx8+lVkDeMuJhZfJ/lAOW575ry58FcjjKYeuWrwptvVWy9ZVQgG1dejaI5VkXq4XyOBddkfyW5qLnEa3zBFor4B7H0KyMmpSsA0uvSOWXCr7f8of9dCXxviwj7779DfvUh4fu/m1tEH3DWYS5zIHJdU1anvy/KaW8pVek8isFebGvw36AfM0lmrb8Goc/WK56tmse3GMblGS/XGiXJNPzKA91bG1B6p+2XDXGImw/909XW83FspF8K9qu1X+b6ukPl1Ie9o3lhCONeb72jzZ079DudJdDnqU7Geq+MPnNNnuZw74kGeIYn1WGlp/Bqqdszqc8rMf7piTZ85iHcsDyF6jucrDlX+453li+KrTnGZI9r4ACbM8rIU/y+awL1/iEMpHiImyzkp9BXfN4Y2XUpGQdWHo897neMd7gXHsF8b40I++TBd5bVc8+g32qmcYb7OM83ix1YHJd9JFNKeUtvSKVv8Mx3iwG3nmuaH4fSDRt+bsd/kAaR0+Fe2yDkuyXCe2SZLqc8pB3awtS/7TlKuyfp0j9E9vP/dPVVnNlHYut/ttUT3/I7wFh3+D5t7Qm87V/tKEnh8h008abFyS/2b7e7rAvqd9gnINlKNkj2gmPN2hfrrnOPMpDmXJsQhp3sTzHHG3593uON4HseWhvz5+sTKT5E/tDyWZR1zzeWBk1KVkHvL/Rlv+4Y7zBOMFy4n1BRt7z9LeHk/5mbRDjQzzeLHBgcl30F2njjaXH8acvOMab+cA7x/uk8caW/3LGGJ1rvCkXo7P8SDLlmAbybm1B6p+2XIX9c1hvx9p4vEF/yHE47Bu811iKS/vaP9rQ52i84Tgd0kK7cNkj9pu9kt9sjz922KOrn5mLZS7ZL9qV5UeyR17zIO8uewwU+10i2SO2n+3R1VZzZe2rVp/Smtpljzw+S/Fd9CFsj2hHGN+9f0j3cvgMsJD8tXtnDoP7GWTer0D0LM94D+m3EC8Z8Tr3Ix1GeNw+q7uBOiXLILV92/qN67ddedbmlWtmrrxk6/aNa/shadXziRVKBanivYLq3nrMa6B7XG42/X+OUE8JtBuA3ljIkyRhadpeiW0am1IPZaGEe/2E8ocRrcOEepb3Bkd9pIH12GIKdB+95oECdpHK/xu85jNnp+MeqHrK4UD6/xoBr4q9bkjf6HV7EFVbBsvitQdwplLKSRqdK9Tjy0qsSDz3P2r3X2N9xeS31fwoqGv319q8g4A2PiueRjRGEw/SX+Qd7/H4FcJT8PNJcy2hemOh3lwPHsYKPLcJ9W25VqFeXtm0OXi2OOhNcP/znkepbm0bB3mSJ+Lnp7b8tWBD+yS/rSyxx1oeJTmfrbrzklXOZws41Zbz2YQzLiDOOCizJ/w26XCixXK2erJyHg95h1O9IyEPy+EodzjcP1LAluhbGuVs8LCj5Lal2aDFKlL5jWCD48kGpdGUR1+l3DbPdtmUUn4M8WfLT0h4ktbxBwptRr74OaUtPxloNqTQVMrtK13tQps6MKVdxwjtkvaA2PrS2HII5R0EedaH49hSJBonJfebVU99ZJgliO88pfGN5Szu6Hy43msQS79F9ZRhntnQaMLj9uWbDaH0WSpIFe8VVPfWY165Ncg8+n+eNYjkBUYJNK1Hkeb1XI97Id/rJ5QfTbSkHsTeWaqPNLAeW4xUz/x/L6GOTw/IOT9v8O0Bln6oHlBO79ZWbdsPE3hpE/LYrqV1x2ECjkTrIKJ1kCfPptcmG+Rsr120bfOWtUm3VXSVW3SMTmGjn1BfOWhhnYLAPputueakYKcNwpZekcovFwYrV31z+Zg9qqgajt/SD2X2vibEizis6xrkC6qnDiOZqrnmpbAhjSiqDC37f2kuOZTqxTLjixxzrqFC/WfP/KPYfrl5Nq/1bPnNjjmntDZwvbcxQSiP6xHLz2DiAesOFurxOhP3KY8jHiaqnnLA8rxX1pa/HOTgepZs+arGXtmJUICfDeAzkgahPOviaKE8PieyMmmj8qwX/D/SQl1zP7AyalKyDiy9IpXf4egHuE6fSLyPy8i71IeldS32qcNoDYqYPJSOd2BKNmtx0vxG2hr5JscaVIr9IF+8BrXlb3X4A1ecwlxsg5L/OFxolyTTIykPYxIYD7K0mWY19spi+7l/utpqrry+Uno3YxzlYd9g+x8n4PjaP9oQxxavg3KW7lUCXVv++uT/1sa5jK1bpPL3gj3+++zu7cZVzXXUjuuBl0Ly107vbiDe25XX5T29s/RbiJeMeJ3TuxsIj9uXb12Pb/+yVJAq3iuo7q3HvHKzuFn0/zzr+hshT5IEr+uxTTem1GPL5Xv9hPI3EK0bhHqW9wZHfaSB9dhiuBehV79OwOZe9CHoRfxsEXGvUz3lwD1pvIBne92NVNZcttfdRG1qV17XMt9eZ+m3EC95e91NhMfty9fr0FIQZSlRtWWwLF5LgTOVUk7SnlSPLyuxIvH8NYjJf5LmQ2ixexM/yIPLf7UJ9W05CWefCnH2EXCsJZcgj5+VdqiebbV5OyBvT8rbCbwsoLxdQrts3tUOmtc4aF4r5BndnT2hezn0RoWUv+ZqEO6xTG8QeLW6Qw/Aa22pt93kwMH6tlyrUK/S9kg88xwD2/rsvlOaK90MedJowO/C2fI/Pbur3o+ov90M9S2Pkpy5L2aV894CTrXlzH3qloA4t0AZfg57G9FiOfN+91sh7zaqdzvkYTmcEdwG928XsCX6lkY5G/z9UXLb0mzQYhWp/INgg3/KaYO3UB7qgMdDywfKAcvzuxmWz6aU8mntesoRa7hBqC/xzpH8Wxy8m4ttEevbctW2+YMIJ81+/kv2cyvkSfbD76PZ8u8C+ykk446VJc7QqtF+V7/GmRyvGqR+x7KU6mEfPdiDh9sEntuE+rZcq1CvUtuQeC5nG20TVLe23Q55km3we7O2/J1gG0PJNtB/Wh4lOfMcMKuc9xFwqi1nnt+9IiDOK6AMj293Ei2Ws9WTlfMdkHcn1bsL8rAcjm93wv27BGyJvu/4NnqC3LY0G7RYRSp/JdjgIWSDWN9lg6+gPJQp+l7WtUsHBeK7KaX8K6hdtvwRSVuk2LDUX9Fu2Jfb8hOAJseGLS62S1otu2zxDqFdkkzvVOWxUc5zUrCblNz+NFs5xiFTW78xpT0sU1v+eIdMJRm5ZCr1sTuFdg0W2nwX0ZIibShnH5li+2+k9tvyMwSZSvOWG4l3nDvwHFKah2F5fr9d6mPS3IT72GkO3m8Q6kuxBd4r1wF5N1MexhZ4LbYT8m6lPIwtcJwDYws8/l0DebdT3rWQh7ZvYwtFaus5yf0KY/Dinr4biLcSlC+k/FXKbzwtQZkC4VQrbsI4NwbEQVo2Ii+t2XjrR9a4AdZ3rQ07KsTpEHCYFvpknBPZ/lSk8i+Cfj2JfPLNAn8dcG+Oo63cn5GW1ZntH+j7qvGMytJvIV4y4hVcPhfbx1uQbhV4aRPy0nSKOAcKOFn5GpjgmyuJ4s9au2r7urM2r1N0Fen/p6awOILKzUlhrSDQLVDi+yPoXoNQFmnH6nq9idNeIU67gFPtUGc74aQtd0q03CkXUuYjM2z5dbDc2elY7qR1O7Q16z7NxbZt8dIe9+9I4e86cL32cX+B6mCbz3XwfDNgMK75fWgKDzfTVCWnKxanKhwKRX5KlFeCPNQN5inVJQu8xzZ3vYDDtNKGSStXntLdmXGYdD2oLwHezZSHQxPLQcKR3LskBxfOqApxRgk4rmE/ry+ReJaWEuhL7iFfcgvkSVMa3ipmyy8GX/IWhy9BHvn/kl9OGyfTfMlNKfy9w+FLeGqI7ZR4xiUg40q+xJZ/L/kSfhTUrvwuyZfwownkZwzxn3UsxPqxxsIxhFPtx35SuJ/9i/Q46lYHjvRIrVx//MQEGVPqjzyuYfn9oT9+2mNs93lUV23fy7R8xyBb/ksBx6CbPPgrqp59yvweDW1Oo6WEe7Z8CfJKVPYWKnuzo2ya3zK/7XFh1e5fxyW/pf7FL1Vl7V9Y37d//SBj/1qZ/Ob+1Qz96xHqX/g4gOXKjwCw7HFU9nZoty/dRqprrgVU9jaiizbJxwxaurMmdtH/BW0Zup3oS3/N5WM7GNpn28EQ9Vj4jXkWh++5XvW35bgvsO08PkHGRNvBumw7tvxRIMvfT0hvI4dZQ8jZ3r8D7jMuP4K8k8piKJ/DxHdQXelvOR7bBJw7ie5dDv75Mf3tQr1qP269k3DuDIiDtM4lnDTbfYZs9y7Ik2zXBrqKVL4ItmvfvZG2w7DtdkAeb6GUwn+G/oUTu/N8N5Szclou1LXlX0nlkYa5eG3xquT/aWsLW7dI5VsSPnFtYdt2l4Bn2jYwpW2oD3wM90rCtuXHgj4Gkz5QXlYfg1VP2XAfeBXwwmWPS5HB3sDHsInpWNwvpDYaGsMnppc7TijHNPoJMrA0JL9g6w0W8Ljv3k0Ydzkw7hTqSRjsj1FmrwJ8axuvLpP/KqFtSrjXTyh/d0p7lYD9yjJ07xLoSP79lZT3CiGPfRe2V9qKJflE9HvP0NiLtpLWJyS7utvB+6uI97sF3u9y8C7JD/2Ha95g/+8z1heE/1v+VsM99rHSo34sY+vyo/6jBZ/JNNO2pKxMoXks0OTtE5LNSEdO+egJ+Rms0vu5xDv6Er7nmssogQf0hZLNps3jWB4SD9L2G8lv8vYbaR7u2zdxPv14H11jnDVRxsy6xvjbgq568z18RS2vMThmXgtrjJuJTn2NoW2RbDfvGuPLYLtrcq4xeCtVuTWGzbPy7SfU49cHLN7NMPfdQPQ6AAvtxlx8tDJuNVRCm/i5gi2/Gca9o5Nxb7BQfwLhdQAv0rMetokJAl9p7ZTGMJbbDQnfzapnX8zwPGSGy/4t7bty0vbpP1Kfl9YPLUJe0YOXTf9YOXll04sf4n5leeF7PnOZCUJ5KyteN7crr+vEVsBQhG3z0Lbvojw8RsHyYGx61MLu/N2dkz8f+SH9NiHvQvidRRcSrVsD0ro5J60hqruNYj+U/D3HbqQ4s9Hju8hvdwCNI4nXDoFXlx/C+ln8ED+3sWXfTn6IX69rV17XFNf8xNK+MydtXz+UNidAvlqEPB8/dOHTMy55cOF39y+onv62QbjnsyX9SKF8hf18guSH2NegH7qT8tAPWR4kP5RzTJngIz+kL8WS2A/56kKidWtAWjfnpGX9kOvZAvohnt9Jr9iiH+LnWR+EOdt7KNbYAbTY30nzN55jSnm3CTQN9mdT5p9NyV/8hAc/D5TW6Pb/eA9tHevcBPlY/gGQzUeIP3yWje1E/iR94R6bT0xML3e7oxzqhfUvPQd3zf199cJjxedprOC9kO3K7xoC9RTRMtuP7Wvvyfbj09ZuW3Thyi1r1yxau3rL2m0NQAm5Y0r2/7bVWI8vywnvPL6W/s871m6l/98m0CmHKe0wORx+M67PDpPDBZ57E2dihTgTBRzJKxVS/locvufaRTiRcEqQhyv/79LKX9pFWALMc5K/7JWfmtdV7weOGSTLGXshHmzIfcFntxvWv6mOExzn6ApxjhZwWpXs96S/FofvuXYjHk3twT7Ccsvar7H+zZFxyvXrv0yUMX37tS3/dujXTzr69U0ebeyAe1l27d1ShtY5RAvr807IWxw8Szh4z2VnLhyf9rhwerM9lpa0ww91sMTBF69SbitDazHRkg7ykGyQee4og+Pa/djhwLm1QpxbPXFitef6CnGu98SZXCHOZAGnVahXSPlrcfie6021yYRTgjz0t/tN6rqPdprmb+cmf/lAo7vB3+6f0JR2pz7f5Vytp8Z88F5JyDOyH0v6lJ7mlgCT9WnLvxz0ebiHPiXZpO2KRFyXrqWDcwoCLdfObZYDlpfGlCpGVL0/U8hPb3I+pep8Odp1+I258CVka0tJFGDG2q0TJx07S4cArrxkW1p0dQ8EVd2frGN5Rf/neoa3IpXpEDDMxfZzO5Vjvdv7TN+Hp3Jly+VLvu6OlHYq5efrsH5HCq20t1msfjjSdFLSz6W3WaQ5mXQgi2s+ID2Rx3INQhsGpNS7WMn84Rt1cxxttuVPdbT51jJt5vm7NHdk38TlGoQ2NKueNoA0JBlPVd15z2pPWN+Wq/bYOZVwSpCHY9rZNKZJb9Bg3U3Jb36DZgOMaefQmCbNBavdfp6/Ssdrb4IyaWubYgpN3r1hy5+XtL3Cp49iRJmfoJQE/k37LiCdSm3HuqxTW/480OkqD526+od0WLPLF9zsKC+tFaUYk2veaPXDO2Tblc9V+IWPjSL9FuIloz10zjekA9GwfXnnG5buz6FByH+5+QbXc803uGxa3+M5wG10v9x8Q+IprWwl843bU9qplN/4gPVtOWufOT8w0W55uQn4kHYwp73520/17FtS+Q7ij+lznMvWLyp5HN4T8rH8ZTCXONaxK+6YFP6U8tMF1rflqj1WHUM41wfEkU6dkeKr8+A35lmcNB/bJtR3PS+4vUKc2wUcX1vfmPwuNye6jsZPV5wccTlOPgjGzxtp/ETerS244nDSuMvtz/qRBFe/9u2nUnx9FtHK+mwD67ve1pd4Tzv55500L+N1QrvyuhZIu0Ns/6twzrfAp48jfWnXg+WrRcjz2RX225YTvvL7D732mwWqb3nhez6xo1lC+crmX2puK2AowpZ2hd1GebgrzPIg7QrLOV+b6yM/pN8m5OHbQFl00SbkzclJy+7kktbYveWT0mIvHclvnju83xGHkHwTjj9zHG29mepJJ6qYi32OudqVfP2PLkvPyr+/gHULtduW/Qi0exp9Q/cWgVfrIxocGEq4V1DpsmGMfkLdzao7b7d68CbFg5DG9Sl8GhrSM0S226ynl9wk8CPhzKgQZ4aA4xqT+K/F4Xuu55EzCKcEeThveijD8y7z+5LkNz/v+s/crnpfo3kT1udnrrx7D32CudgH2vppJwSwP7Hlvw39it927RDafAnQTLMz37eEbPkfRIgzcZuKqqdvNdcZSm5TWryYZSDZyZ6O8tLzphLcY5/tOlTftu0nR3fx8NNJ2dp/ZgrNH0/povmLjDTPSqH5l0ldNH/l6BvTVHe8EtCWZMb9H+vbcq1CPWs3zaqn7WawQ+/DjS39FtWzzXniaR2ElyYX2/YdAi9tQp7PPo1pAk6BaJXjK+DhxpbFfajcnBTWCgLdAiW+vw/dk0JySNuY+UuSZxnWzHdBmUVEfxfQaBDusZljfVtOwhlWIc4wAcdFa5FAy5a/Wig/TCgf0DQsiyOhDHtpZo3pljMNpp1mGvZqIEzzm88fZdUwj4MFGiWV3qYG4R6ruiRgSTiLK8RZLODwLGGfZAtNs4CfwVtea70ffpKSPX/OSPW1vp6fP2+BeJavFiHPJ+ox7lMvu3fa6AvnF6i+5YXvcZeUVpGLhfIVRp92SVEP3P1rLikyJkU9LA9S1CPnJwN2+cgP6UtRao56ZI0gSOeAZqVlox74mRRXXy4RTrV8RjVwXLSkSIgtb2XTpOQnReyTbPlRiU/CT+s0qHR5K+FeP9XTH/EnPJHWpBTeJWxL31xtQn1broo+sTGrT2xRPducZzYs9Q9JLtJ7erYu71A31wIol+YvXU8Eap0W2mar6mm/hZS/FofvsZxDPBFknYWgdUsAWlKUbBz8xjxLi++xXrD+rZR3tYAjjUPXUB7KbQ7l4Xh+KLUL+2RJdW9XVj9UEviT3qfFqNxpk2XMtDOS+WmmLb8NohlnTE5vo89OKiyfFuGaT3PXau6kSpPd2RlkZ64l1BZbfinI7hyH7HjslyLh0k5xftNMen++QHlKuXcQSZFgn/PFKnyy5z32hd5ZJUUVJR9T4flGRYsnnaUg6WEPJctUOuvM9jHJ17E/Q1/HTyFxXOM3DbB/HwK/0/wZtokjsxJ/sfymhDO3Qpy5Ao5rnuhj6xKOxHM5X7aVfJn0NBXrrk1+c3T6VPBll5Evw/rII//fZ31h8dKeztyUwt9LYH3BT2ekNq918IwYSvXsNzx22fIlGrtyrqfFsYvf9pXekq4Q1zsab+m3EC95fXC5p/EY2hya/E5Cm2dtXrlm5spLtm7fuJZPrkzb41ggqnivoLq3HvMa6N4OKnc6/X+OUE8JtDHiKb0T4tqXID2rl1bl1wu4/Gxeeu/atcfB8t7gqI800vaLNKTUM//fLtRx9QAfCzZXNVY0VdwjNsy3Z1r6LcRL3p4p7ReSZkc8M8S60h5OfJiEeYjjmp0irV2BaJlrQZ1WnVadVp1WL9By7SnjVZi5+F1J9IMdxF/WB9dY3/WAfEaFODMEnFahXt4xuc3BsxRtYblljUBifd6nV4I8XKF9dbKMmbZ/jldotvxUWKF9Y3J3npEvXJFKq2HUg6XBdZuBB5uXYX4x2KzSWhd24bBc8YklziUsP6w3u9dO2k/dQXloC746eoR01AF5PnscbfkDQUc/oVU01vfZRyThcT9sSinfQfzZ8o8KT+kk/m5KwUuLKrwgBe8xwGsAe7DtVIRdod0Nk+wO/QzbnRQJkvyZy19g32JbRBvmJ7MlgRbaAUdObP0mJevA0itS+ScEnfvaOevVlv+bp16tLKuhV5QV61V66o3lWa+SHUhP6KVI3U6itVOgVYJ7rNdyfdnS4771X4debX3UK/LJeu3Em9JF06VXK8tq6LUEBViv0vwDy/tsqsPxwcpEiqxfS3noE0uE0yHgoB346Bz1k+a/B4F+rM6lCH6HB38luIcROLvpMInALdq2ecvaJASn6HKFzMz/b05hY6hQX1HdAt0bSnkl4sPcc20SsthNSg5ZWXrs6vYURO5yv+by2VKN6q5GENfSD7Wlupxb41CRq5u5ljK9YKrmOj2FjYJQXxGtgnDPXNI2Z6TLs0CXd5NEJe3VwvKWHj+3HiOYNNNEHqQVkS0vzdylZ3xS+/mER6zn8zYJmhGPaLb8eM8RLdDKRxzRUEY8okmRBdebuNLzbCla2kblUfbSiJb2dhDilOAefyOuJOBIK6tyJ4L6vHmMvJaS39Jq/3bKw3quVbAtV41VMLaHbcGlW3Olne6C5VHfpeR3G5VHOUkumU9zkFY9JbjnsgWMdnw15Vk10u0Q6Nry0okNOITzqtyWnyP4AEvzljJt81kBSm/dSk/w+A1SrIf7CixtReUqtMdBIaMy5sraV9n/oJ3x3nEcCziKg2MIPvvfGnkPFo/f0smhyCt/Y82WPx+iRpdO6U5T6uMuHUj7j6STDwernv7iTg9a1ziwpVMz73RgI19p3zpVAp/47SuLZfOsbCrsK41SX0H/zH3F5YvN5SMrSU9tVB5lk3U/2P9v713g7aqqe+G1cx7kwOFsENSqrYIP+FSsbYzIS02MBCJEQorURy3yOGoUASGIqLQJghYEAkl4JpC9c5IQBBLAPrW29Spt/amt1XvVev3u1Vs/b63V+7PX6rV69XORNc757//+z7Hmep1zgnv9fnB21hxzjDHHHGPMMcd8LP5GbOx+MPzeC+unihfXwzseG9YLXnFPprLPdUkvzaJZe6yP+1aRhythjFgUiIlDdn1JAOf7nHEnb0yNibPVyobyfRxnq6yk8n3sF5W/Vn6E/aL6ZibCh76Z+cFMfhVvEZb7rULfRB5OdOzFe4AN/m7w3dcv1jhHCuK8MXLOUpOvG27a1+WNSbxPFfsmtN8Qcam9qGxno4meLxk+Xm27w8m0ob9ln4r+ln3qjYKud9YglfvHMj44Xkt/4wrWNtI9NV9Gn8O6Z/B/Afq8Pftdp9/gW4bUN2jZfpLE1zO1Ksjf8uZvr6VPxT3f0Xva+ZuOJffQu7eFqpxBRb85vaddxSqqHw5JtEzV9xLNV822X/NyMXly5fNB2Ea2Z/QR7AdiYjJFLxSTfayhmOwUisnQvtj+0cbZ/tXNoWoOwHHDZuBFxTx864vBPwo+7CskG6XLXo5FfZdZfR94IunX9dsicHm5vtsF/G0ObeQL6zLtkE16t+81MZ/CuIBt0ZtLpk+MrFQ/tQkeZVPUdnkehuM72zXq9iZo81cC4za2A8dttt0NgleMB0w33g9wZyS9NNXSDr7jcRbrG5yic1hFOocJOh6uMwQug1drKw1fr2IsPgtg0veHO6wx3hb9x+8Z95CAxUd107oA30kS101YP9RN5sLT5yyAuYH4wjT0KsJVdPMh1uelsOn2ZBeELRT0C7i3Td7xcMNd8hj/phbhSxIdZoaOpiFf6kqB4QhePrr7zIO/+J+Om74KJPYIncGrVP8qAV/xKpWb1RDG16XgEMZp99irVEpeAXFzjPwQv0qH81UqRY8zYtlZJXHZVSo4VPJG4qZ9DE9dRzJbxhTebPNiw/GBghfPj62Dd7zxG3lnGV/jtKuov1wXSefMinTOFHSa3hR+JtFZD2WYRnnyi5Oetl0LZSr1++bs9zDBfxounnxq9lttgUAe1fiDY2T6sL3yplCGuSHA3zNAP/k4rWrzmx2eMYWWJP1+gdO709tQaOwt6VNlepevFWvgOp/onVhzdZ1PseO0vD0ZpYJY8V0r6W09lg3RO95wtZz+XeY4rfrMxAcETu9KczX6FrmkCvGqTQnXEu/eaI841KKe4VD10n9fIOrUeVHBbB3NNcvEyW0BS4n+bKThHyNeylqmtzkkfbjt6hMPKpnNs6qynwxIf99SI64ba8KVPqsGuAa4BrjmHS41A72JynA84M/Do+9aT/wVnXlhfS/xuLIinZWCzrioV3bsazs8q42DLLeiFxpifb5oZh2U4Uzo7S/WNENHxXgmZPAfhZnQRS/u5Rn5wpmfmnViPxgOrtvEBkmUKy9SqM2j2G+T2W/viI7Shdg+upL6aD2UqT7io8UGPwV99D6arWJ93pRv9ZMcemyHscdWDX49zFa9Y6sfCNBTs/f0WRmgdy3Qm4Vjq4cqvUM/E3MMTvkzz1+oMzhqIYuPwXlHH9cJOijvmGNw6BMMHx+Du0XoA49FrBsh/pTcaj4Gd12AjUNE/YTqtujdIQFchid9h9PXmGNw6qQru4g7hMi9LkufwTG4/e4Y3PIAGy1RPyFcLfEuffKOwfGo4olYiUp5EYTnHL3B7xYq7XlY7+PVKhJQuXnvGKCKej4QoKMOdqcPj2gGvzdyRKspkpIjGsqIR7TYzInB522HZlPzjqGomU2sGcYeg+NITenLeqe9nnyUfsUeO/Ki6sfLsaN12e+YY0c4HG0gOiqKWgfvPF3A2dPbA2tMiBd1IbRGiz4Ah/BLst+83vI54QMM53U5bYvxdyrr7V0lrq4LxvVAw804K+rjuNJHbH/MLM/7bEyerbL/QT3jbaQ4FnAYmac33jZPXON7Ms34kM7JRLPoZ1tOFvwrOodVpHOYoOPhOlng8vq74a1ixuLTACZ9f7jDGuNt0X/8nnEPCVh8VDddE+A7SeK6SamzorOuIp11kXROr0jndEGHt4IMZaFvxeXm98csmJU8WfD+FuF7jG96h/jHBT3jS51yiNli9r32ax698Ae7Ptyi+sYLv4s5DX+6gK94KmKdGpr4RCoOTRupDIcX40FtMSt5KmVdjPwQf1uU8RazoidxsGxFSVy2xcw7Xd+0z+AtZgszW1ZbzObCf62sSGeloKNColbgr9Hhd0xH8Zy3FeuwY5OetqmpL9bl5LbBfxu+O/0kJw0RChtwrMSFLtZroxf7ZQODfxroFG/FukG0edLh+SagwXTT30cHeDiCxqiSGy/kViyefiI/64l/taFHfSlALWzd4NBZXZHOakGnzs0wbYdnb9wvSwd9qtmcOuXJU8+iJ++x/gaHzjUV6Vwj6Ki0EE6Z1IlAk1nFeGo4pl8Q/xjxUpCe+7UjteBvbd8keFGnGzkVomKtTYKOwnV1jbhibio6S+AqKq8ap3rG4tkEd3aAtSGBt0X/8fuz6V1oqme4lUmuD/CdJHEmifVn2/Tz1s1XHKtphtbNzW3w1K7zkpl6pzvfM485jObtmMf63s58HgIxs8ZZN3UleIvKkD/vRIlasRgSdJT7vQHesft9vH7oaDzp7ROsq4bomEswFgg6Rfmq0c0Zi88nuNCdbi2BN8/NPZ/ehdyc/Xu2VF/ROakinZMi6cxWe26oSOcGQcfDdZLANVDvHtyqm9YH+E6SuG7C+rOtdmoEwaSEedF1UI6j/BU0yqvPBGJdHuUN/iPHztR7D/zmPQ2I6/qktwzl+CHi//3JzMMjIJ8HOyKJeqJHQMM/RryUHQFjd6YVO5vEUwaUCmLFd56lDNG7dfTv9VSvzNkktTr3foFTxXHXBuqhLBLxboGAv4ZwXSPqGe9DTn3EgfVYY1r0Hq3tDwRt3nt5I6TDRmmVWtFCeeTtL2QY5mF6f6GTkrsG6qh2sTXzjQDr4ffxAfq7wMvceqymnwj63D70nqMBfq8hHgz+TpABb/hTnj8JvEMZYN3QvxH296kt+G+li39A8B/MaTv3v8F3nP6/WvBgfKXPihweGOb3AzzsEDwIr7ns4kuuDOz141hjHf2be4l74mqBJ/SYNFKNNe1l6bB1MB37t9KAtOU2tk+HbhdOrg3tc+QRYV2A5oJEP+OJ5i195mrr6tXl6LlbV7F9Zbeuhqw0j07Fravr6N/rA2yoQT+hui3xLn1Sdf7LbMv1XK5fXFORjkoSMa5QWHxO9nuY4P8cHBRvJ7sB+GCc6cPJTm/7rOFB+LwtVixLtR3So42yZId+c0FevRwz0lfJ0Y0FeT1rlnm9QfA6Lmiz6yy5rhLtOudqXaXYtIY3G6NUECu+ayW9rccy9pA8VTiF/l1mWhN7R6a6+3FToB5rNr9bIOA3Eq7Q/dNDAXqqR7Eea4yql/77MlHHs4AYDU6f0EpdHbg2C1xmmXhnYgFLeWKsZRr+MeKlrGXG3hNpbb9N8NIWZZxyUHd33iboKFy31Ijrxppwpc+qAa4BrgGuAa79HJc65MV38+L4eXb2d7auWlB0llaks1TQGRf1WoG/RoffMR3Fs7rrmuWmvvmw2aGD9TdTe3CXY89lfS/RNHEmi3V5h6jB3wLbOJ76knAbUc7WLua5iW/GYYzDh5Py7ie3w2AqluDDRtjXeCe41wfPpj4o+42290AfHE19gPVx91fIbhQ91pHRAPyNxJ/BH5PxpK6gUN/88HQS5fyuAL3fAHregV2jXVHvntj0/ex5esrbX9Q994ZL7XJX301oUf3RRPdB6OTOiaLPY/Wc+9XgXxbZrzX5kycWvdJGZda8g+9KD7C/+CJj7PNQJhJxYV/H9Ku64pH7dYXTr2qTAPLJ/Wrwp0f2q8myiX71DrGqfvUOsarxG/vVZNJO+sfJ9xOuvP05Mf2KfcA+2uB/2+lXleX2/LDBv34e+GGUVUy/qpWA2H5lP4z9ylcB4VjHtjxbPvrNos/VTvGYQ8GhPWM1XgW0McDG4aJ+QnVb9O7wAC7Dk77DtCqL3Jo7mugUKIvc4N8hRK7MVO3VUofK5mq3b8mDuO5uX+VSi+72LTosNqCq6XNKgI2WqJ8QrpZ4h2V5103w1QXroD6O0FfQFjxUIZ4pKM+nIn+Dtwg0FF0YvmGC/31nFPKi4PRhb533BSg+G4ptuJ3KsN7NATo4OqLn59HR4D8QOToa7SZGR5QRj453QNmQgGd53yng7wAYzirdCWVs0ijj24lOnutg/Vd6qmbfKhpfn4TbmzcrY/1SXzdTXx/zMiUG10SmBNvDuuDZUvqwbDzdQdm0k3w9Qbvkr8J5fil9PF3A7MKTKWuirrxqURnS9C4GxvoGp+hcU5HONYIO44rdp2Lw9wkfZTjVKrC3P8L78i3yo2SDd0Qw7Vbgr9Hhd6H7FrCv6lw59iJqb1W5LB30M7cQnVtrpBPyWewbqtJRK8tq/KpKB/3TDUTnjhrpoK+7CerxmLgOcBgfdwk+bAqwBd4XGAuiz1sb/jHipSC96SnAFqLH7eMpwFbBS1uUvRV+YxnS2SroKFwfqBGX9e1E0t/Xi4iOiqXudOgsiqSzuCKdxYLOuKhX1UaUbIzOlhrpoM0sJjpba6SDenA40bm7Rjp3A8zRRGeD4CGNB75BcfA9UMZZrvSxFeBhgr9+5Uy9b1I8hb4CecT6GMveJdrB9L6d0TD/tw3qFPBH8t4Vw5Unu++Q7O6CshjZGfw7QHbfI9lhu9i2O1C2hcq6ULaVyrZDGeLAsgTagO9Y57C+wY2LejxeTcH7Av0V/eV4wz+W9Le5zHg1RfSw7eljcrH27ShHb/rL8TsFPdUPhyRapkjfcJmNKT+7jcrQN26nMvRnXSpD+z4KfiPOUJt4Byzyx/qN/G2kMrVzdoL+nf7eTGXqy94Tos0c31qbRwhP+vCunQ6UDSX9cmEZoP13CFc3B9dZhAvrd6kNXWrDnaINDdp1dBw6G3at7MzavkPw0hZl2G9YhnR2CDoKV6dGXKb/NgaZ7h6zdN/fx3byHDeDC9vJ+p3+5oOYBnvkcTN1fi37zfPq9DfHKRgPsd51RFmK/94T9/2eEO1FP1FGdljf4JQPWkJ0lK/b4tBZ4vBs/8aDs5gDOQvKEX5pJveKY9JbTP44JrHd7yqJO9buDf+4oGd8jYmy4Qhehv9m6hMffdsPVrWovvHC7zi3da+AXyLgTVa7oX4BWZ2ncsJG28owjt5FZZjXNR7U/an3luQvRn6Ivy3glwFckb5QuM6qCRfaWx24NpfEZfe67oT67JOQz+1Ep+hdtFg/dH+xlau/RoffLSCeUR4vI56L7obF+ryWsFHQsfZg3IJzvNOP0/zgHA9jCJ7jGfxTl87UO+O43vbHxrKcJyran4si6SyvSGe5oNN07p7zRFM10kHdWE50dtRIB8dnzhPtrJEO+g+OvzYLHlKdvYDsYBeUKbt8TfZ3mOA/tmSm3lscO0AesT6Ob1tEO5jehRQDlRzbZJ4Ix15PdheR7LZAmZId+xCDv2fJTL13kuyQNts2ymmKynBc4rEEZcUxqYp58J0XR7PcsJ7Jt2KsFJ0nMvxjSSX9mJ5P7iZ62Pb04VjwvnL0pvNEHxb0VD9gnghlivQNF+eJ0M/ymIq+keM69Ge7qAztm/NEm3Pa5J2U5r1F3ezfH1yy729qOx+k+SjS++2ktwz11nIiKY7ryf5QDhx3qRwDvvPirinip45xTc2TOe4qOk/G+juobErQsfZ0oQx95q3HaX7QZ3aBH/aZBn/5kpl6d1CfKTmr/uS4q2h/Loqks7wineWCTtPxEMddTcVDHHc1FQ9x3LWrRjo41nLc1RU8pDr7INnBvVCm7IDjLoN/0pKZeg85doA8Yn2Mu7aLdjC9P6K4q+Q4LuMuw5Unuz8h2W2HshgfYvA/fvlMvY8W8CEYS3BshfLYSWU4JiMOLEugDfiOdQ7rG9y4qGfytf76MLxvIu4y/GNJf5vLxF2xcZC17/5y9KbjrgcEPdUPGHehTJG+4eK4S8UUyjfeR2Xoz3ZTGdo3x11TOW3iuEvpPuMahncqzuJ1gy/CusE/UJzWBRpoy687vhdOjUHWByibov2O+JJE6zXnokvm3Kf1Wq0DqzjMy4urvl8Lv7EM6cTmM7fWiMv6VekYx2FF9yosiqSzuCKdxYKOt3Yao1uKjpJN0/ER75NqKj7iOOzeGungmMhxWCgP/G8US+yGspg8sMHfBbHEv1Msgb6Cx/3dgC8R8EcH6P0HxWElx1kZh3E8EZLdTyPmcp7sDP4qkN3PHdmxbcfGWruoDMdrxIFlCbQB37HOYX2DGxf1eLwqGadEx2GGfyzpb3OZ8ep+oodtTx+Owx4oR286DntQ0FP9gHGYir0QF8dh6Gc5t4G+8cNUhv6MYzS0b47DduS0yYvDdgRwxcZhBv/kLKaqGDdJv2G4BvFaXLyWPssAjsuKxlhbasQ1iNdm6PC7QbxWD50y8dqxx8+8xzGoaLz2dIg5js9wNhmvvYz87lzEa0tIdmXjtRbIbhnJTuU2lFw5XsM4iuM1lBWPg0XzZiq/8suSN1Pj1f6UN1N5KeUbOSZDf8Z5My9eqyNvFpvjYpqhuG41lRv87x4/g/N3KG+GfHWB9jcH+bXHTX7N+lWda+B4reh5x0WCZ0VncUU6iwWdps/tcbzWrZEO2jzHa4+3dc5QzHEV+Te1zunFHAa//WUz9dY58VrMOqcXrxn8tRSvNbnOGZLdB2uK164F2V3vyI5tG8fGLpUN1jn3PYN1znC8hn6W82tdKKtrndNwhtrE8Zo678i4YuMwg99OfqNkHCP9huHy7hdZKNrTRLxm+Ov6aoXqO++rFTsELzzHS59lAMdlXlyo5otVz5x5vhZxc7xW9MzZIsGzorO4Ip3Fgk7T9zlwvNZUXMjxWrdGOmibHK81tc8uNl77BMUcO6EsJuYw+KMg5viUkyPifA6faWf4owP0Pk1+t+S5Rel3+Yxi6DzAZwJz+djzAAY/BrL7O5Id0mbbRjmxf8ExtUtlKCve71N0Tor1Q2c7rTx9Kp7fiI7XDL86S1pmvFLnJNAuajobOh2vqbhZ9QPGayhTdTaA4zX0s3weAH0j7/nvQhnnTtC+Y+6NwDZxvKZ0X+W48Cwf57jUuLRQtLFAH03E6qDhH0v65V1GB1V+RY3X6TW4z8l+Z9fgnjK5dtXl51245vzTJq+8bOlFF6w699K1a869cOkFF1w6edllyDQSOhjeYzk+DGO/t4n3iKOb05giwftUDq6zCBfWZwe4IwcXfzpHDW7875Gkn0+7+GBBBB40tBBfryG+1OKL5+RROa8gXFg/lHAJ4Xo34VIHyPnfI0k/nywvD0/IgSJfVxJfocNU6X8fzsH1DsKlDmMZrvtzcL2HcKlJOP97JOnnk+Xl4Un/eyCHr/cSX6HNN+l/D+bgejPhUpt3DNeeHFyThAvrY13890jSzyfLy8OT/rc3h69LiK89ULaXyrDeSqJTdJKG9WdrkraS6Oytkc5egMFvBKT/fgjK0Ld6h6Vs8H8Y3jeRMDH8Y8RLQXrTg//DRI/bxwmTRwQvbVHGi1KPCDqPCDoKV7dGXA9Re0KTsGed0EtzK5TFTMIM/t9eOlPvqAynij32Uhu7SX8btwp6LWrXqIBHfMME//yMpwPS/9FnPvaK+go3jqdeomNh0m9fTdiI4R9L+vWnjI08RPS4fWwjDwte2qKMkxbKFh8WdBSunTXi4kXTkI2cUJON/FewkZfOQxt5RQ02gjFUjI2UXHiKthFeeKpqIyqW9WzkIcFLW5Txxnpliw8JOgrXfTXiirWRM2uykU+BjZzVoI2YvGNtxOBfV4ONYNwcYyNVkmGIz/jBd4i/LhtRl394NnKf4KUtynDOhGVIx1scR1wP1Igr1kbeWpONPAg28vZ5aCOXFLQRxXsTcy+Vv3oB/A7JSOluW9TvUtkWQSdPR95zguZH6Uj62+bvvLC+BXTkKkdHvAXP2VpYPa4ineMEndleWO3WSAf18ziis7tGOjiu8MLqfTXSQV8Ze9HaRrKDD0OZsgP+LLTBnwR2cKtjB6GcJS6sbhXtYHp3ZTQqbjySC6uGK092W2saZ54BsttWwIdgTN+lMpTHbirDMZnzviq/iu9Y57C+wY2LeiZf6y/MWzaxsGr4x5L+NpeJtWIPflr79pajN72wquYSqh9wYRVlivQNl7ewupXKulD2AJWhP7ufytC+eWF1a06beC1N8edtsJmrTWYlF2jdTWZqQzqPTVhX9c374DeWIR11WFrh2lIjLltjGGwy6383H2Ih3mT2yxILfaFALJQ+PJ4b/F+dNFPvv8xCLPTVeRALfa2mWGgKZPffB7GQ9+w3sdCecvSmYyG1hl0kFlJr2o+HWGhI8IdwaHsqn5SIdy2HHtNYIOpeRXxjGee9kI+YHNDZgt8G87pDsfa1v+R1eQ29Si42JuapuIExOh6fjQ2MZ8O7mjbRDnn90HXolVzLW2D0vL1dSC/1p6NJfx/mXeiNNLC/QjZfdj9l3uXn3n5KXge8LwcX76cMbVzGsuecuO9v6oefeGIvjO0FfArAPDn7zTaFcnhsLwnBeRfaV7nwHfElibY9w1/XhfaqH0IXzB+Q+DqCfRTaZ6ouzYrRWe+CeMVP0T5Vm8pTuKMduB0CTtFK/437nvkSe4N9XoYjlfMxq3vbiHSn4DeWpY+K/b3DGd5HEhdVpLMoks7iinQWCzre4cgYW1N0lGxm+wDathrpoE5ybqBbIx30EZwb2CJ4SG1m6Ykz79nWvPGCD72/Eua3r6QPCaIdII9YP/YAmsGvyGjMxsV6IdmdRrKbgrIY2Rn80SC7VzuyY9v2DriiPLZRmfpYTYvKEmiDdwBNXQbxy3IAzbvgaX84gKbGupgDaOjP+ABaF8picgOxB9Csbnq46unZ75nDVadNXnn2uReuueDctWsuvmj15Dsvn7xs7TBgViMHe/gu/dskgnj4adG/F1DZZipfJeDwiblqoOQVB9GRr+Gv66oBdaLLu2pgp+BFXVXxe/Aby5DOTkFH4dpeIy7Tm8FVnv3vilzlOVUjHRxFOdJr6goAjvSauoIqNtK7mqIVtZLhRSsG/7cws7+WohXv04NbAV8i4I8O0LueIj0cfapGeoYrbxXoBpIdzlxjVoEM/n6Q3QaSHdJm2/Y+Paiu/VGfveeVbhz/hsQ7b8WW5aZmSxV3LURHeoZ/LKmkH+6uBe/TgyUjy+lIT0WWqh8w0kOZqpO43lWe3qcHt1GZmmEoHxRz1QC2qchVA5sEHSu7G8o2Ulkn6W9zanf3UqZpA8BtIhx3QdndVHYPlHUA/7En97YN7YbtGm2X7Rr1mO0a+z90ujy009HwDhP8I+CbHiV/p3RU7eQxeJXBxtkJz2TVlbEeri0ObTVz2u3QVlfeMS9JEra1caBlZSabhdlfHPOK+MA0Qzm+eoYO8vAYAOAN9ZOaNXqyUv2kVsp4RQ59zBYqQx/Ds0n0Mex/1DU6Sj+Vv8Hx2PxNXhaax/ltOXhZnl0Br8ZgL6Ou7J/9Bto/+43YTxGz31BXrasr43k16IsUn5VcmXGvWmf9Hk60foeuM/02+LYvBXzbSEGc/wirCENgo0nS6wusHyv6gmHlC9De2Rd4Pjh9ivpNtltvBT4208N2NirgEd8wwX8T+oBPCqE/4k8qq4x00ZjH7CGV+wFZBpfj4fQ3ziO+Q7qHPk3FSax7Bn8gZIy/R/OIOvwGXzGrrqb1xhzvE+ZYH8dQrmd+oGJGdV59wrwL73geUWVFO/2vyU+Yz7ZfQznF+DWEN9+idrKxPaOPYD+APiL0SXZFT63Co4/wfKTaMZK3wn412T/aF9u/unpQ2TjHDer6aR43lA/jMRvhDwUf9mySjdJlL45VO39w1w6vgHmnghWurkP7AQF/v0Nb7aZlXpIkbJPKFk02Tcw3MC5gW1T9pHbaebJS/dQmeJRNUdvl665xfGe7VldhK/3sinao/IaKB7qA9zuzvNqLvgHbr3LAiJdj318H211KslH+Wa2Usv9AeHVCx5uve7imHNqe/irayBd/bpJzB2o1VtmuyaYJ261zfqBkpfpJnRpgG4xdeWb7jF15xnGX9XNKtCN23MUdHrz7Q60ZerqndlqgHbPuqZ0Wyv693Jr3yQn2G+o0HtsZ6irCc67A4M/I+qLijl+ZK+BTLpjPUPod+lTdJPi21QHfNlIQ52syPHm5AuvHJmJqtHf2BZ4PTp+ifpPtFvuGdxyp/QFqFyrb2Wiic5a4owzh3wR9wLkC9Eec14zdCeN9cgNzBe+nXAHaLuYK3kK6p/L66HNY9wz+A6DPb8t+1+k3ulSmckbemOOdrlXrAt7pzYpz6ehcAe8OL5mbcHeHq/lOHbeepf/Ffl4acwV5JyK8XEGTfs1bD8mTK8/dsY1sz+gj2A+oUyTsIxS9LtTDWPz9ZPt5t2J7MQvu6F1K8w20L29djO0f9d2bW2P7UG+UD+MxG+FvBB/WIdkoXfbi2Lz5Ouc+1Xzdw+XlKdQJ0wcc2sgX1mXaIZtUtmiyaWK+gXEB26KXo0mfGFmpfmoTPMqmqO3yDYs4vrNdd6EMc2CdwLiN7cBxm203lD98C43dTZ8a57n1g8CL2leA4wDCfxhs9+Mkmz3JzBOjE3sFPJ6CZh8WujkmhMvb06Burtnr0Ea+sC7TZj6tnrJdk00Ttov2xrar+gnhY2Sl+qlN8CiboifYH6Sy2BPsD0CbPx6Ro4/dV4A5er5FQvlCT/fyxizWPTVmKftnv4H2z34DdZT9BvYt+w2+mYDhOVdg8J+hXEHJ27BlruAh4nEP8KD0m+dWBv8N8G1/F/BtIwVx/kNkrsD6sYmYGu2dfYHng9OnqN9ku1U3Hrfo34gLZcq5ApPRqIBHfMME/zUnV4D+aA/x3oUy70YNjjPUrT6p3H9OuQK0XcwV/BPpHvo09hfpw7pn8Avgxr5vUbxRh9+4j8rQD3BsrcYcpWdqrQjHUK5nfqDijXbRuQLDP5b0t7lMriD21piKfnM6V6BuyFf9gLkCdUsf4vJyBU36NZRTjF9TN9e0k/42sj2jj2A/0IUy9h+7HXroIzAW/3nE2nlszILz8y/QLVVoX2z/aONs/6jvHDegDEO3zisfxmM2wo+BD/vVl/biVLrsxbHqCyr4BYj7qT2o649E4HrAof0RAf+IQxv5wrpMO2STyhZNNk3MNzAuYFtU/aS+OODJSvVTm+BRNkVtl79Yom6CVLa7F9rM+unF+enDtqu+AobxwP6WKzgKbPd4ko3yz16uoOh8HX3YQxG4vPmap7+KNvKFdZk282n15lOuQPWT52OVrFQ/tZN+u2YbnM1cAetnXbmCrY/zXEHMmI+6ivCcKzD4U7K+sPiz5NflZK7gYeIR8xkx83qDfyP4tlcFfFtsrsDgV2Z45jJXgPbOvsDzwelT1G+y3WLfzFWu4LXQB16ugPOaXSirI1fw3oyPvFzBOYGYo2iu4PdAn8/LfjeZK0A/wLkCNeYoPVO5AhxDuZ75gYpz6ehcAX+Rr2Ruwv0in5crqPJVzvQ/NcdR/YC5AjUXQVzzMVeQJ1eeu3tfcYudb7D/KJMreC/Zfl25go015QpQ3zlu8L5Q9zDwomIeHLMR/lrwYXeQbJQue3FsHfN1D5eXK/hDAf8RhzbyhXWZdsgmZztXgHEB26KXo0mfGFmpfmoTPMqmqO3yF4BxfGe7Rt3GHNgdDeUKOB7oCrzKJ7SIX4T35id5e0d5fqJiIbXXaEuADvoE7JNLst+812gqMqY22hX1faLpfTR580GTiYqNeM8LyhjPI/HY0AXe31PgC4Nqf6iaJ7PujQbgeT+ZwT8iYnZPn7vwrqo+q/1GZfUZbWOS2mrwfza7+nzwXOsz6yzqM+eElD63kn4fViWf89Z5qP+f/iXS/8/Pc/1XcwlP//NyJKz/6ovls6n/ZxbQ/4ccmkr/rW0h/cd8IsJ/3dF/Jd8uvCu6Rujp/yNUhvW2BOig/mO/s/4b/P+M1H+j3YT+o4xY/715U/oUnevwmgDG757+83ptXfp/QsUvLHv6b20N6b/h43z5jxz9VzY4Be+qrnVhGx6mMqy3JUAnFM+z/hv8zyL132g3of91zl/z8gwmE7XW7ek/r3PUpf/PIv2fAjjODe0UOLxz7N7dFdYOdWZTnQfgM5uHvAza8LJenCpGwj39Tcx5PVyefebdjcG01d0YzEsi+LR6DZ7/Gmn6XKuSleqnNsGjbJRtTVGZd16sC2XeXXl4Xoz1c0q0I9Z2pwDvZ47vxbsrBy/LU90N5d1Bs1O0T9m/dyeEd1aN/YY678d2hrqq1t54vvGbWV/Y+kYTX61k/ca1aNRvXrsz+FPAty0O+LaRgjhfkuHJG2druqtmuOm7avL8JtutOpvWon8jLrV+w3Y2mui5Lt/LYvCvgD7w1qL5Pg7vzo2uoKv8Ea5FT2Z88Bnd9DeuRa8g3St7F+NbQZ9Pz37X6Tf4Pix114E35ig9a4v6OIZyPfMDFc+AR69FG/6xpL/NZdaiY++nq+g3p9eiVZ5Q9QOuRasztIjLW4tu0q959/jkyZXXhrGNbM/oI9gPoI9g/9F16KGPwFh8kmw/7/4cjlmmRDtSvJ/IYhZl4959Tmz/6hy72jPHccP9wIuKeXDMRviLwYddTbJRuuzFsXnnzPn+IHXO3MPlna/fI+AfdGirczvMS5KEbVLZosmmifkGxgVsi3lrsjGyUv3UJniUTVHb5fXtLpR5d+Vh/v3qwLiN7VD3bKh4AMf8FTR2e3fexd5Bw3cqoF3z/TRqjQH9TOh+ihvAdreRbOq+n4LnTEXvp/Du4svzG0x7cD9FL7zqp5j7KdQ3XJR9co5B3Z1iZWrMUfqp7paJHXfxbpkPUq6g7nsgWfdU3FznuO7dxcJ+g+NDhudcgcE/SLkC1JGquQIex/HMjdJvnlsZ/CfBtz0U8G0jBXF+JDJXUNM4Ptz0OJ7nN9lusW94/qjGUpQp5wpMRqOJzlPw/csG/xdOrqBsvKDyd8ofYa7gG5QrQNvFXMGjNeWpvgn6/LcUb9ThN7zYmvetqjFH6ZnaG4hjKNczP2B+BXWxiVyB4R9L+ttcJlcQO3ev6DencwUqDlf9gLkClKm6v8fLFTTp17wcaJ5cee6ObSyTD1D+Y6dDD30ExuLfiJhvxMYsON+4inIFaF9s/7HnZDluUPM5HjdCe5pC52S/Az7sZyQbpctV7tTiffhF79Tycux5Z3S9e4YGd2rpflJnTniPeaztco4Bx3e2a9Rt3F/+s4i1c7UWouIBHPMfdXIF25PesqL5AGXzHKep2HdK8Mqx78KXz9R72st7cdad54uZr3u4vPlaXp6PaQ/yfL3wqp9i8nzboYxzBbH2yTaPuo3jLutnXbmCJZQrUD7B0728/TSse7FnSNhvFM0HKF1nv2H9ibqK8JwrMPjnZn1h8SfqSNVcwR7iEfMZSr9DZ4JfDr7tmIBvK3rO+IUZnlnav134LKjng9OnqN9ku1VjfIv+jbjUGTC2s9FE5yxD5wVOgD7wvrPHeU30R5wDUXe7K3+EuYI3ZnzwXCf9jbmCpaR7Kq+PPod1z+DfBPr8yux3nX6D9zipnJE35ig9U+u8OIZyPfMDFefS0bkCwz+W9Le5TK5A2Z+a71T0m9O5AjXHUf2AuQI1F0FcXq6gSb/mrYfkyZXn7urOF+UjvDUM9h/eXf3oIzAWfyPZvvKRsTEL7lc4lnIFaF9s/0XzAWpuzXHDHuBFxTw4ZiP8W8CHvYdko3TZi2Pz5uve/Z4xd2pVOffk3ReSd6eWskllizXdNzHS9J27eXdqcfzv3akVa7t8553KByjbxRzYewLjNrZD5StVPIBj/lIau/eXXME1YLu3D3IFfbSZz0GuoLdsNnMFtzeUK/jpcb14B7mCmd+hXMHO/SBX8DHwbbtryhXcP8gVTJfNVa7gj+dJruAfI3MFH68pV/A10Oe/GuQKvGeQKyB6g1zB3OQK/rGhXMG/ZTHL/pYr+CfwYT8c5Ar6aIdscpArKGa7deQKfthQruDjNHZjm3iuoO4daOIMQhdgQmcQkiUz9Q5b0ouz7jMIXWpP0TMI2x3aeXkKpj04g9AL793t551BwLFsO5Wpc0BVziCwfm4X7ejCO7bdruA1xfsnlCtQ47mne3lnEFj3Ys8gsN9Q9w7M1RmEI5fs+1sxpm/0DMJLluz7m/bxs5donEXPIByd4RmcQZi7MwiLluz7q3IF6I84z4H+qI4zCK9Zsu933hmE45f0trvsGYTXLpmpd1L2u06/MTiDMDiD8Bjy7O/j9QyCWkNTPqKOMwjmIzwf2RV4VcyCZxAepFyBtzah7h2YqzMI5yyZqXfpkl6cgzMIYZscnEEoZrt1nEFg/azrDALHA2rNsyvwtohfhPfmJ3n3qRkt01UVC02IelMBOugTsG2vyf7yPUxXLdn3d5buABspeleOmg96eZC8+SCvqaPv3kllKGOjqcYGXPu+lcaGFsCxLrWSfl5bom3tQH2FC/vlaPh9FJQj/D1L9v21+ATlWaBfV45DnQRwIO6SOrMS22qPiicxdlL00mdMlA1H8PLJ4/7qtO0/edHBLapvvPA71ssRAb9CwJusRon3I5Ko5zRlu0bbyrjtWIb2ZzykNnvk6l7+RkryFyM/xN8W8KsArkhfHJr06gLqu9kr3smzkcq8ezCL5pXZX6Hfxrs9eR5u8DuXzNT70yW9OFVeHcetJu6b9XBtcWjn5a1jvn3JvCSCT/z2idGysibHNm9eVfR+SyUr1U9qHsZx10Yo20JlsXEez+1UXlnp5xbRjti7brcA3osod6xiLU/3vNhC6Z7a06Lsn/1GnXlltjPUVYTn3LHB//WSfX8r5nhk7pjXkfA+3kL7cpbs+5v28aeXaJxF9/p8NsOTF+fWtI5UeD9G0XWkPL/JduvlE9ScRuV32M5GE71Xge9nN/gvL9n3V+WO0R9x3hv9Ec9Xdwi6yh9h7vg/luz7zfOP9Dfmjv/bkt52o09TcxHWPYP/v0tm6n0j+12n3+Dckbrz2BtzlJ61RX0cQ7me+QHzKyVzudG5Y8M/lvS3uUzuWNmf2ptf0W9O545j97Vh7ljtm0dcXu64Sb+Gcorxaypv007628j2jD6C/QD6CPYfOxx66CMwFjcf4fnI2JhlF+C9gPIDaF9s/3XmlXncUD6Mx2yEH146U+/JS3txKl324lgvh4n8eGdLPFzemZq8vDXTVnlr5iVJwjbZ4J7Pkab3sitZqX5qEzzKpqjt8h6X2H0suKeA9TMvh8i2e6/gVcUDmwXeKYG3lfT7oZjc8U4Bj/Jgn4C5C44JsN7GAB2Vg0gfzh0b/DMzOefF1Ea7CX1HGbG+K5+N8EVz9Ty/VveUK303mmoP8mbg/XQaG+4W+FtUhrzeLdrWFvUNTtFZUpHOEkGHceF8cCPg4vjZ4E/P9MzioA7gLaA/b2H5Gw7EvaMk7hbhSxIdtxr+8SRsz2OiLCZHPfw3U5/46Nt+sMrzN965O+Vvlgh4kxXaRgFZnad8BNrIY22Bsh1UhnZuPKgc9c6S/MXID/GrOHMZwBXpC4Xr7JpwKd9fBdfmkrgsD49+sEO41NiKuTyTyYRo1+ZAPYYL5dyRjsK/nXjdKHjdKNqt9twb3Lio1wr8NTr8zlvLeBnxrHKwWxyesb431r2M2rMJyjC38oalmh/sk03AD48NBv+GlTP1fndpuP08t0KeFyW9vBTtz0WRdJZXpLNc0KlTb1R/LiI6d9dIB+OD5USnUyOdDsAcTnSmaqSD/uxoohOyg8uWzrxHfxmyA47FDf6np8/Ue5djB8gj1sfxdotoB9N7b0aj4lgr1xE4Xg7J7qqafMh/B9mtK+BDcCzkmBrl0aEyjJsQB5YlSf8cJH288djgxkU9k6/1F85dmsjPGv6xpL/NZfKzam6mYgtr3+5y9Kbzs2ofkeoHzM+qvAHiMhuLWYNF38h50A6UeXuWjoLfSCPUJstXTDj8jQtcrFvIe1HZIz7jE98h/rGk30bL6Jaa46pYiMcmrKv65nj4jWVIpyPoKFwba8TF69pzEQstrkhnsaDzeImFFhOdTo10OgAz32KhjyydeY/+PXY8N/h1MJ7/cYazyVjoYxmNuYyFPk6yKxsLnQ+y+yuSHdJm2/byixijdKgMZcU5TpWPUvlbleNkuWE9Hq9KxibRsZDhH0sq6cf0eKViRDVeVYz1pmMhtX6i+gFjIfW9QMTlxUKbqAx9I8c7HSjjvd1eLLQpp01eLLQJ2pD+u5v9+3SwnS8t3fd7XND77aS3DPX2zmQGxz+S/XUAjnNQnaS/PfjOy0F1iB+sV3YcMJ67AMM5qG7Sz3PX4Rnrd6msI+jwOM0+85tLNT/oM3GMZ59p8CdAv/9P6jNsfyfpLUOeOe7qAN2Y/lwUSWd5RTrLBZ2m4xSOu7bXSAftgHNQTcVDHHftqJEOjrUcd4Xs4KdLZ96jHwzZQWg9+L+eNlPv544dcM5jJ+BLBPzRAXrDr9j3t+I4LuMuzqWEZDf6it62lPUhfwGyG8twxvgQjCX4nqrY8wqIA8uSRO+XYJ3D+nxOCuuZfCvmaKLjLsM/lvS3uUzcFRsHWfvuK0dvOu7K+068irtU3glxcdzVAZgulaFv9M5xc34K7ZvjLqMRahPHXR3B37jAxbqFvDeRgzL8Y0m/jZbRrbz7dDgHNSV4UX3DOagpQWdK0FG4OjXi4hwUrr9yLKTWgjc7dBZF0llckc5iQWdc1GsF/hodfsd0lGyajrk4B9VUzDVXOajQeH4SjecqB+WN5wZ/DoznL3fG85gcVFe0g+m9kmKhJnNQIdktrykWegXIboUjO7bt2DyTFycN1uPc53G9Hod+tktlHSjjeAf9WZH1OMMZahPHQshfJ4BrGN6pnNMwwZ+X2Vdqa2/Kfis7x32q/0xwXaDDej2Iw/b9Xgu/sQzpxMZOW2vENYjDZujwuyJxWFPxEcdhj7ecVEfwkPqY9RRLqJxUB2hyLGHw//SqmXrXOLFEXTmp62YxJ9WBMpTdhyLisA7QCsVhfw2yu6lAHDbISc3wie8Q/yAnFc5JeXHYfMhJKf4YV2wcZvC7yG+UjJuk3zBcg3gtLl5Ln2UAx2VFY6wtNeIaxGszdPjdIF6rh06ZeO3RmuK1t0DM8bezEK99bh7Ea39fU7z2KpDdF0h2SJttG+XE8RrGURyvqXssW1SWJHF5M6z/y5Y368K7/T1v1qEy9I0ck6E/47yZF691Er9NMXmz2BwX0wzFdaup3OC/C/m171DeDPm6G2hftqwXDvWD9X8Qr+37PV/za7wXFnFzvLZV0Nnq0FkkeFZ0Fleks1jQGRf1WoG/RoffMR0lm9nea/94W+fsCB5SHzO+bOY9+tvYmMPgv7Nipl47w9nkOufhGY3ZWOfsQBnK7kkkuy6UFYnX/g5k9xRHdmzbsecOB+ucg3XOx5Bnf5Wf7VKZd+6w7Drn3Tlt4ngN+fPukLF3Xhxm8L9JfgPtq6rfMFxqrz/r/2yfjdxUjp57NhLbx/FaV/DCc7z0WQZwXObFhWq+uKVGXOxrETfHa0Xv0FgkeFZ0Fleks1jQ8c7txuiWoqNk03RcyPFaU3Ehx2vdGumgvsXGa6so5tgOZTExh8FfDDHHb1HMgbSRR6yP8VpHtIPpvZb8Lo4TVf2u4co7G/l6kl0HypRPY9kZ/GqQ3RtJdkibbbsDZexfcEzlWA5lhTiwLEni5qRYn+Wm5iIV70OLjtcM/1hSST+mxyt1B1UH3nG8VnL+MB2vqbhZ9QPGa+oOMcTF8Rr6WT4bib5xisrQn3HupAtlMfdEYJs4XlO6r3JcBqdyXN59EtjGAn00EauDhr+u+yRUfkWN1wf94r/nZL8vX7vmwjVrrzxlcu2qy8+7cM35p01eednSiy5Yde6la9ece+HSCy64dPKyy5BpJHQwvMdyfBjGfm8T7xFH3uUYRYL3Tg6uswgX1u8Qrm4OLr4gDutjXfz3SNLPp31sZkEEHjS0EF+vIb7QELcTrikHV/r7CsKF9UMJlxCudxMurM+Li5gsYj5ZXh6ekANFvq4kvpTDNFz35uB6B+EKHVJP/9udg+s9hEtNwvnfI0k/nywvD0/63305fL2X+Aptvkn/+3AOrjcTLrV5x3Ddn4NrknCpD7vzv0eSfj5ZXh6e9L8Hcvi6hPhSl+yrSdpKolN0kob1Z2uStpLoPFAjHbz8/HCol/4bLw3vAA7vEJMN/nvgfRMJE8M/RrwUpDc9+KsL6TvwjhMmewUvbVHGi1J7BZ29go7CdXeNuB6k9oQmYY/QJGwrlMVMwgz+RJiE/RFNwlBGD1AbVRyzVdBrUbtGBTziGyb4j2Y8HZD+jz5y84Cor3DjeOolOur4kDXiM37wHeIfS/r1p4yNqA8RqEvFre17BC9tUdaF3yFb3CPoKFzba8TFi6YhG/l0TTbybLCRz85DG/mHGmwEY6gYG6lyCRLiM37wHeKvy0ZULOvZiPdhDizjjfXKFtUHpRWuXTXiirWRr9dkIweDjfxTgzZi8o61EYP/5xpsBOPmGBupkgxDfMYPvkP8ddnITqKXZyO7BC9tUcYfTSu6OI647qsRV6yN/KgmG/nhqTP1/mMe2sjPC9qI4r2JuZfKX70Afodk5H1Y5QWiPWqO9wJqT0hHxl6p+VE6kv62+TsvrH8TdGT8lb3tV3Key4XV4yrSOU7Qme2F1aYWPI8jOjtrpIPjCi+s7qqRDvrK2EtnjyQ7uBfKlB1YvmiY4K8FO3i2YwehnCUurG4V7WB6z81oVNx4JBdWDVee7J5Psis7zrwVZPfrBXwIxvTs49VH11Uek/O+Kr+qPmbYFvUNblzUM/laf5X8YGn0wqrhH0v621wm1oo9+NnkB1JVP+DCqvo4POLyFla3Uhn6Rv6YMvoz/pgh2jcvrG7NaROvpSn+vA02c7XJrOQCrbvJTG1I57EJ66q+eR/8xjKkow5LK1xVL6dGXLbGMNhk1v9uPsRCvMnslyUWOrdALJQ+PJ5P58BgPL9gFmKhNfMgFnp7TbHQv54yU++iQSzkPftNLHR/OXrTsZBawy4SC6k17cdDLDQk+EM4tD2VT0rEu5ZDj2ksEHWvIr6xjPNeRXNAZwt+G8zrDsXa1/6S1+U19Cq52CIfxCoZH0fH47OxgfFseFfTJtohrx/uduiVXMtbYPS8vV1IL/Wno0l/H4b2oKm9W9hfIZsvu59yZw4ubz8lrwPmfVSG91OGNi5j2R9m8Uvqh3e8shfG9gLuBphd2W+2KZTDY3tJCE5dflLxQo9o2+OP+5TcMO9+3EcdOEx184DE1xHsoy78Du0T3QV07V1IZ5GnGJ0t2qdqU3kK98cOXFfAKVrpv3HfM3/Qx2D/LMORyvmY1b1tRLod+I1l6aNif+9whsEpOosq0lkUSWdxRTqLBR3vcGSMrSk6SjaP1wNo22qkg7rPuYEtgofUZj5P89sulHnjBR96vxHmt1+k+W0HaCOPWD/2AJrBf4VyAyUvTIm6WC8ku6+S7DpQFiM7g78EZPf/OrJj2+5CWdkDaIgDyxJoA77zDj0a3C/LAbQuvNsfD6Cpsa7qATS075jcALbJO4BmddPDVU/Pfs8crjpt8sqzz71wzQXnrl1z8UWrJ995+eRla4cBM1PHViSJ9sSd7Dfi4adF/15AZZuofJWAwyfmqgG0uCYiX8Nf11UDXaLH7eNZ/3bBi7qq4vfgN5Yhne2CjsK1uUZcnez34CrP/ndMZz58AqdbIx20TY70ttdIB/UtNtI79OSZ9+gPY6MVgz8UopXDM5wqm4s8Yn2M9LzPMBv8UzIaFVfBZaTHs9jQKtDTSHZlP8P8g+Uz9Z5OskPabNsopw6VqWt/VGaIV7qLZqnVp6BjstQYETQR6Rn+urLU24ge2wVHeiUjy+lIT0WWqh8w0kOZIn2+fk35Wb5qoANloat9UM+UD+JIb3NOm7xIj8ebDYKOld0FZRup7B7R5tTujnXsbhm1o2iGZJmgqejcmv0epjaeQb4O+62Abr10nOgYDsRdcjXhpbF2GVpJQb7UysZwBC8/OmzJC/6t8/0t7I+Nl5DN8liE8MsEfMUx54RxoJEQbStT46GVjUCZ8ZBmLY9c3ctfyZWoE2Lkp2wfy/hTlEV3HKlrUIriOjTp1Ss1hqIfuS37HTPfKmmD0fMtw1/XfEv5Xm++pWTWFmVr4Tf7liHxboGDa0ONuGwMUP3M860Ngs4Gh84iwbOis7gincWCzrio1wr8NTr8juko2TQ9r+P51q010kE94PnWbTXSuQ1geL61UfCQ+u2LI+YMG4FmaM5wK8wZLnViF+QR6+P4skm0g+ldQTFIybFFzrd4t3NIdleS7DB+i5Gdwb8bZPc+R3Zs2zgm8TiC8riVygbzrWh6pedbnXL0pudbXUGvyHyrA78NF8+30M/yfEt9HkD5M4650L55vrUpp00831L8DWKhuFgofXieWCV+ubNGXF6MMoiFeukMYqFydMrEQntrioWeAuP5I7MQC/3JPIiF/qymWOinJ8/U+3OSHdJm247NS3MshLLieX3RT5WoleAGT8xFx0KzcWJOjVcVY73pWKgj6Kl+wFgIZariIi8W2khl6Bs53kF/toXKvFhoY06bvFgI6+K/RwTszdBehP0i2NmPTw7Tup34uBnK7qCyWPtEHCjf0Kn3c6gNBv/VjO801/jC1RrngsRf+1K5T2vHQqBrZQX09xMpX+OrZ+igvqQP5k1RX5LEj6kM/nYBjzrHseHtUMbxnNJHjC9MH5W8jMcm5IU8xMhL7ReIlRfbPcrrLsKl4l+UoScv47EJeSEPMfJC+KLyMhkoed1DuPLmOCsI3nCPJtonGL5hgv8h+AS+lcfz8TcL3OgbW4QD27FOtGOcyrBuinfFsft+z1aeh2PNbcAL6wLiHSb4IYhtn7S8F2cnmXli1re6Ar4DMBupPTiOdyNwbXJoq71TXYd2B8p4j0yX/q3iDeUHTDYV/cCI8gOYr2I/0IGyIQEfI6sOwLAteXvjYnNO26gsNueEN0mxfqr8U8hnsz3gfObPAnuUEK+ne96NE0r3VI5V2T/7DfV5UWVL7Dc6UMZ+w/qz6E74Z2d90eROeNbv4UTrd2iH+wng244O+LaRgjifl+FJbXQIbDRJ9Hp7RV8wrHxBBwDYF3ShbEjAF/WbbLfYN7zWoNbNUaYcE5iMRgU84uO9eS+GPvBigg7xHpsD9+Z9Zg+p3F+b8cE5gfQ35lJOIt1Tt+OpGw35drw3gD6/PPtdp9+4jco6UBbz9Q18551GMjhvz23FfefRuRTDX9eN7V2ih21PH86llPSb07mUKUGvI+hhLgVlqk5vmq+abb+Gcorxa2qtSe0hZHtGH8F+wPv8+K0OPfQRGIu/lmxf+cjYmAXz13spx4P2xfaPNs7234EyjhtQhhw3bAdeVMxjePkTbueBD7ucZKN02Ytj1R7WKYDxTqftiMB1t0N7p4Df4dBGvrAu0w7ZpLJFk00T8w2MC9gWVT+pcyqerFQ/tQkeZVPUdrdTGY7vHSpD3e4mM22+PDBuYztUjlfFAzjmn0Rj9/6SK/h9sN2Ng1xBH23m0+oNcgX9ttt0rmBjQ7mCKwe5gsK5gs5+kCv4Y/BtUzXlCnYNcgXTZXOVK3h4nuQK/nNkruBPa8oVfBn0+WODXIH3DHIFRG+QK5ibXMF/bihXcPF+miv4b+DDvj/IFfTRDtnkIFdQzHbryBV8v6FcwZ/S2B2bD+hQ2d2Cb2XzHE9PAS88v0G8wwT/E7DdiVN6cSr7Ufv/Yu2Hzzwr+/FweXmKXQJ+p0Mb+eIb2NmWkU+r1+A4Km0X7ZNt1/OZ6RMjK9VPbYJH2Sj75DG5A2VTVNaFMrZ51G0cd1k/1bir9jbl3S7J93fE7rNtEY8Ir856KfvfRmWxcX2HylBH2W9g37LfsP5EXUV4zhUY/K9mfVHxxlWZK+AvBOC9FUq/eW5l8IvgLppnBHzbSEGcz8zw5OUKrB+biKnR3tkXeD44fYr6TbZb72bt2Bvc2M5GEz+G4DnzC6APOFeA/ojjjA6UcQ6kK+gqf4S5glUZHzzXSX9jrmAx6Z7K66PPYd0z+N8CfX5J9rtOv7GdytAP8M2casxRetYW9XEM5XrmByrelBidKzD8dd3krOxPzXfquKk6/e9eQS90c7SSqbrJ3MsVNOnXvPWQPLny3B3byPbsrWF0oIz9R9ehp+Z36CM8H6lugs+7OftQyhV4+QC08Q6Vob53qQxlyHHDLuBFxTw4ZiP868GHvYNko3TZi2N3C3jvizje134VLi9PcZ+A3+3QVl/JYV6SJGyTyhZNNk3MNzAuYFtU/aS+oOHJSvVTm+BRNkVtdxeVdaGM7Rp1eye0+R2BcRvbofKVKh7AMX8xjd0dgGviFufQ2I22q+5m5Nj3CrDd60k2yj934V3RuJPnTGq+7uHqOLQ9/VW0kS+sy7SZT6unbNdk04Tt1jk/ULJS/dRO+u2abTD2Rmm2z9gbpXHcZf3sJP3tiB13O4CXb3X39l2kD8vTy7Mq3euK9in793Jr7DdQR9lvYN+y3+CbwhmecwUGfwflCkp+yUfmCvjrdZjPUPrNcyuD3wO+bUvAt40UxHlPZK7A+rGJmBrtnX2B54PTp6jfZLvFvukSrq7AhTLlXIHJaDTROUvDx2tT9zm5AvRHnNeMveG+S2XqKxup3D9LuQK0XcwVPES6p/L66HNY9wz+70GfP0LxRh1+g/OWKmfkjTlKz9qiPo6hXM/8QMW5dHSugL/6VDI34X71Sc13KvrN6VyBmuOofsBcQd6XzrxcQZN+zVsPyZMrz92xjV0qQx/BfkB9HY59hKKncmHoIzwfGRuzdAGvfcVH2bi3Lsb2j/ruza05blBfFFZzrmGC/xL4sG+TbJQue3Fs3nydc59qvu7h8vIU6sux9zm0kS+sy7RDNqls0WTTxHwD4wK2RS9Hkz4xslL91CZ4lE1R272XytTX9JTtYg7s24FxG9uB4zbbbih/+BCN3U1/DZrn1h8GXtS+AhwHEP5/g+2OntqL075MnCRxOvGAgMevG7MPQ514IAKXt6fhQQH/gEMb+cK6TJv5tHrKdk02Tdgu2hvbruonhI+RleqnNsGjbKws9svUH6YyHKO8L1PfB21m/cw7K+DtK8AcPX8dXvlCT/fyxizWPTVmKftnv4H2z34DdZT9BvYt+w3+4jjDc67A4A/P+sLiT9SRAroucwUPEo/3Aw9Kv3luZfDPy3hM+/jJAd82UhDnUzM8ebkC68cmYmq0d/YFng9On6J+k+0W+4ZzOirvgDLlXIHJaFTAI75hgn8O9AHnCtAf3U+8oz/iGETljpU/wlzBqRkf40m/7WKu4BjSPfRp7C/Sh3XP4E8DfX5h9rtOv7GLytAPcGytxhylZ2qtCMdQrmd+wPwK6mITuQLDP5b0t7lMrkDZH44PnCso6TencwV7BD3VD5grQJkifcPl5Qqa9Gsopxi/hvA8d8c2sj2jj2A/gD6C/cdOhx76CIzFTyXbVz4yNmbB+fm5lCtA+2L7Rxtn+0d957gBZchxw4PAi4p5cMxG+NXgwyZJNkqXvTh2r4DfAzC7qT2o63sjcN3n0H5IwO91aCNfWJdph2xS2aLJpon5BsYFbIuqnxA+Rlaqn9oEj7IparsPUhmO72zXqNsPQJsnA+M2tgPHbbbd3YJXjAf2t1zBxWC7V5NslH/2cgVF5+vowx6MwOXN1zz9VbSRL6zLtJlPqzefcgWqnzwfq2Sl+qmd9Ns12+Bs5gqubihX8PzHea4gZsxHXUV4zhUY/M2UK0AdqZor2EM8Yj4jZl5v8LvAt20K+LbYXIHB3zYPcgVo7+wLPB+cPkX9Jtst9s1c5Qq6kbkCzmvWnSv4VGSuYHdNuYK/AX2+fxZyBegHOFegxhylZypXgGMo1zM/UHEuHZ0rMPxjSX+by+QKlP15uYKSfnM6V6DmOKofMFeg5iKIaz7mCvLkynN3ldMsOt9g/1EmV/CphnIFR9aUK0B957gBZchxwx7gRcU8OGYj/N+BD/sGyUbpshfH1jFf93B5uYKHBfxDDm3kC+sy7ZBNznauAOMCtkUvR5M+MbJS/dQmeJRNUdvdQ2U4vrNdo25jDuwbDeUKOB7IO/PMcZPaY+XNT/L2jvL8RMVCaq/RlgCd0LmkS7LfvNfoXyNjaqNdUd8nmt5HE3s+ScVGvOcFZYznkXhswPswxmhswFwU78lQ+0PVPJl1L/SNEt5PZvA/ETG7p8/eXTFF9VntNyqrz2gbk9RWg1+wYqats6DPB8+1PrPOoj5736fn+WNd+ZwfLdv3ez7p/xNAJx7v+v+Uea7/ai7h6X9ejoT1H+O3udD/rxfQ/wcdmkr/rW0h/cd8IsI/19F/JV9P//PWCD3930tlWG9LgA7qP/Y767/B/0ak/hvtJvQfZcT6782b0qfoXIfXBDB+9/Sf12vr0v9PF9B/L/ZW+m9tDek/3/Vl8Esc/Vc22IF3Vde6sA17qAzrbQnQCcXzrP8Gf0qk/hvtJvS/zvlrXp6B43m0DU//eZ2jLv1/hPS/A3CcG9oucKizKpw32gFlXWrHTuBF2Yjh5TObr1sxU+/CFb04VYzk3ZFYx5zXw9VxaHvxtaKt7sZgXhLBp9Vr8PzXSNPnWpWsVD+1CR5lo2yrQ2Ux58VQN727K5R+dpL+dsTabgfwvn5ZL96pHLxF73DtZL+V/e+gMqzn3QlR9qxal3jH9b5EwB8N5Qj/nky4tr6BOlJA1+Va9G7iEc/hK/3mtTuDvxl821UB3zZSEOe6yHHW+rGJNZs676rJ85tst+psWov+jbjU+g3b2Wii57p8L4vBf0jEdcof8X0cZe/c6EIZrkXvyfjgM7rpb1yL3ki6p+6jQZ8TuovxYdDnW7PfdfqNLpWpuw68MUfpWVvUxzGU65kfqHgGPHot2vCPJf1tLrMWrexPndOt6Den16JVnlD1A65FqzO0iMtbi27Sr3n3+OTJldeGsY1sz+gj2A+gj2D/EXtXP8bie8j28+7P4ZilI9qR4l1F8w20L+8+J7Z/1HfvDjdsH+qN8mE8ZiP8n4IP+wzJRumyF8fmnTOfovaoc+YeLu98vXdWVNFW53aYlyQJ26SyRZNNE/MNjAvYFvPWZGNkpfqpTfAom6K2y+vbOL57d+Vh/v0zgXEb24HjNtvulOAV44EJQb/s3VV8pwLaNfLBbWQfhHg55v8vYLv/TLJRcWSV+yk61J6i91N0Hdp5fqNDtJXfYF6SJDy2Pp7vp+hkv2Pup0D77FIZ2ifnGNTdKeruJJzTsX52RTs68M4bd7uA90mUK1BrmZ7u5d0D2cl+K/vnvaJ1jOveXSzsNzg+ZHjOFRj8DylXgDpSQNdlroDHcTxzo/Sb51bTNvqqfX/TPv5xwLeNFMT508hcQU3j+HDT43ie32S7xb7h+aMaS1GmnCswGY0mOk9h+Di/fUDWrypXUDZeUPk75Y8wV/C8jA/O56a/MVcw8aredpfNU70A9PnQ7HedfsOLrXnfqhpzlJ6pvYE4hnI98wPmV1AXm8gVGP6xpL/NZXIFsXP3in5zOleg4nDVD5grQJmq+3u8XEGTfs3LgebJlefu2MYy+QDlP7Y79NBHYCz+PLJ95SM7Aq+KWXC+MU65AvVNk6LnZDluUPM5HjdCe5pC52QXgw87hWRT951avA+/6J1aXo4974wu0x7cqdULr/op5k6tWNvlHAOO72zXqNu4v/yUwLiN7VBrISoewDF/gsbuLsDxdy+K5gOUzXOcpmLfjuCVY98zwXYvINnUnefrUHuK5vm6Du28PF+HaA/yfL3wqp9i8nz43YsulcXaJ9s86jaOu6yfXdGODryLzRX8/St68Sqf4Ole3n6aTva76BkS9htF8wFK19lvWH+iriI85woM/tKsLyz+LHmPlMwV3E88Yj5D6XfoTPAfgG+7PODbRgrifDfMU2dh/3bhs6CeD06fon6T7VaN8S36N+JSZ8DYzkYTnbPk/LbBv9/JFaA/4rwm+iPOgUwJusofYa5gF+UK0HYxV3A96Z7K66PPYd0z+PtAn2+keKMOv8F7nFTOyBtzlJ6pdV4cQ7me+YGKc+noXIHhH0v621wmV6DsT813KvrN6VxB3j1xKleg5iKIy8sVNOnXvPWQPLny3F3d+aJ8hLeGwf5jyqGHPgJj8V1k+8pHdgReFbPgfoVHs5hF2Tjbf9F8gJpbc9yg7pNVdxPxfbIPgQ/7JMlG6bIXx+bN1737PWPu1Kpy7sm7LyTvTi1lkw3eNyHnG3Xeuatkpfop5k6tWNvlO+9UPkDZLubAPhkYt7EdKl+p4gEc86/fT3MFnwPb/fogV9BHm/kc5Ap6y2YzV/D1hnIFHxrkCgrnCr63H+QKhk/b9zft4+/XlCv4wSBXMF02V7mCn8+TXMEzM/3KyxWMntbb7rK5gueAPo9lvwe5AvkMcgVEb5ArmJtcwTPJ9uvKFazfT3MFx4APeznJZpArCNvkIFdQzHbryBW8PDBuYzvK5ApGaezuAhzbLvLWobKieYSW4MXaob5DyPHHCrDd3yHZ1H0Gwdv/eF8Erq5DOy9P4e29GpxB8O/2884geLmCDpTVcQaB9bMr2qHOFI4n/fbQBbzLKVegxnNP9/LOIHj3jnhnENhvePmH2T6D8LasLyrG9I2eQVgHvu0dAd9W9AzCJRmewRmEuTuD8F7oAy9XwHmODpTVcQbhHsoVoO1iruBq0r2yZxC6oM/XUrxRh9/gucLgDEI0vcEZhKS6X5utMwjoI9gPdKCsjjMI95DtKx8ZG7PgGYSTKFcQmyvsUNlsn0HYDT7sYySbwRmEsE0OziAUs906ziB8LDBuYztw3I49g3C1kyvoJL1ls7WvQJ3P5Nj3UbDdr5Bs6t5XEDNf93B1Hdp562NMe7CvoBde9VPMvoIOlHWprO59BV9pKFcw2vC+Au9OEm9fQYfK5tO+gm9RrmA+7iv4Kfi2bwd8W9F9Bf8amSsY7Cvol2ld+wp+5OQKOlC/6X0FTz193++8fQU/q2lfwa+dPlOvlf2u028M9hUM9hU8hjz7+3jdV9CBsqb3FZiP8HxkbMyC+wp+unTf7ybyAU3uK3g2+LCXkGwG+wrCNjnYV1DMduvYV8D6Wde+gp+VnMe0iF+E9745oHyOd2eiioW8fQ5MB30Ctu012V9e+3lFJue8mLrJtXiUEet7Xo6o6HzQZKJioykq60CZ0cybz35z6b7fE8CTwbEutZJ+Xluibe1AfYUL++Vo+H0UlCP8+Vn/W3yC8izQryvHoU4COBB3SZ1ZiW21R8WTGDspeukzJsqGI3j55HF/ddr2n7zo4BbVN174HevliIBfIeBNVqPE+xFJ1HOasl2jbWXcdixD+zMeUps9cnUvfwhXhL8Y+SH+toBfBXBF+uLQpFcXUN/NXvH+3o1U5vltnI93qKzoPjPv24EG/zaI5a6isbLufWb8bZqi+8y2OLTz8tZMe7DPrBde9VPMPrONULaFyry7bjtQFrvPjPVzi2hH7HdxtgDejy/txatiLU/38vaZse7F7jNjvxF7Z2WHyprYZ/YhGu/n4z6zLvi2mwK+reg+s1si49zBPrN+mda1z2wr9AHnjtEfcd7bu+u2I+jm7TP7S8odh/aZTZHuld1n9p9An3dR7rgOvzHYZzbYZ/YY8uzv43WfGfqIInfddhx66CMwFv9Lsn3lI2NjFtxn9pGl+34rG2f7Rxv39m90qKyJfWafBh/2NZLNYJ9Z2CYH+8yK2a63xyV2n9nXAuM2tqPMPrMpGrv3l1zBt8B2fzzIFfTRZj4HuYLestnMFfy4oVzBVUt78Q5yBTO/Q7mCA1bu+zufcwW/lvGY9vGBKzXOormCgzM8g1zB3OUKfgX6YC5zBSdmfOTlCp5Bulc2V/Ay0OdnZr8HuQL5DHIFRG+QK5ibXMGJZPt15QouW7rv9/6WKzgZfNhrSTaDXEHYJge5gmK2W0eu4LWBcRvbUSZXwPFA7DymlfT7oZh9ZlMCvgMwPD9BOXJMgPU2BuigT8C28T4zgz8/MqbuZL+b0HeUEeu78tkIX3RfH8+TUU/4jBfK2GjmzWffsHTfb+uzuwDuzqS37B6Bw8q2QRl/a60jeLb2d4EXa/8GgDG8wwS/FsaGD5KNoH4PEe/pE6PzuA91A7WnC2VTEbjucmh7+qJoq/swmJdE8Gn1lK2YbJqwlS4CAN5QPyF8jKxUP6k9wVNUdieU3UVlmI/tUhl+a20blaFud5KZNrN+3iXasQHe8diwQfCa4v3OS3rxbhN4Pd3rCHi0Y9a9e0T7lP2z3+hAGfsN1FH2G9i37DesP1FXEZ5zUQZ/K+WiUEcK6LrMRXGOYzvwoPSb5+4Gfz/4tjsCvm2kIM4tkeOm9WMTcza0d/YFng9On6J+k+0W++YewnWPwIUy5ZjKZDQq4BHfMMHvcnJR6I+2E+/ojzpUtlXQVf4Ic1GfplwU2i7moh4k3etAGfuL9GHdM/jPgj4/RLmoOvwGz1PRDyAO1ilPz9RcAMdQrmd+wPwK6mITuSjDP5b0t7lMLsqL+9OHc1El/eZ0LkrFvaofMBeFMkX6uF6ZPrPt1zoAEOPXEN7LDbE9o4/oUBn6CPYfWx16ofMnnybbVz4yNma5B/B+I4tZlI2z/aONs/2jvnPcgDLkuAHzYirmwTEb4b8IPuxbJBuly114V3QNcBu1R60Berg6Du28c01MG/nCukw7ZJPKFk02Tcw3MC5gW/Tm2ukTIyvVT+oMGOebYm2X8884vrNdq9yL0s9O0t8OHLfZdrcJXlU8cJPAu17gNfgNgGuIcKS/L8l+DxP8d0XsajhvFjysg3fcpxsF/M0AY/xMJP1+jHPlWO+67LfSd4OrqO8HK33H9rC+Y15wSMCzbDYLeMwbWd+qO7947n0dlBnNccKD8k55P+zYXn7y+pb16xbApfr20uz3MMH/3NEvpS83wDuWoSdz5GeCeMC6E6KeyVfpl8FV1K8JpV/YHtYvT1/Sh2Vzq4BHHVqX/W4TPMrJytAujeY44UF5PxbTLOqFQ//VCvw1XvkdzxMQ1yriZ0ONdLDdRxOdG6EM53FPfPXMe5bJkKh7YfZ7mOB/89Uz9X4l+z0h6m+g+lb2tKxOqmcvWx2uzz4Yx4j1VIbyQJ8TaifCXxpo55HA5wudXInxVdHu2sru0PfF+HWEL+rX2XejTd5IuG4UuNQ8gGOE0UT3geEbJvhjoA84V7Ie6t9MvF9XkPd1gnflR6xu2hd/kPkRFQfcQjTVGKb6qi3q3xzAtUDwj3bL/T6U6PGQ4U0nMF+p/PMwwR8PfbV0tcaZBHi4McDzaAB+E/Fg8C8V+uL5AdT/jYTT4JcAzkUFcV4UwLkMcHKsoez0FnhXdDzleALleCuVIe88Lm4G+gz7TqKPZajnTDdx+OUxNY9fHm+s7PUwXr06+72Q8BX01UNeX71a8BvbVzc67WNcVm846ddHz0ZQHq95tcY5UhDna8WYrmKVowD/6wPxSJL0xyPpw34ZfQba4RMpJkH664l/GyfeJOxRjfWGq9pY3/q6GuuvAwge65VsEJ59wi0CHvtxXfZbjTfPorL1UMax1XWCzjp4542l10Fbz1nUi3eDgzf9/XriIy/GOy/7zX74YscPKxl6MldzRJQrr6Nif3BOQensbOsjtp/10Wtr+hSdD6/LfreT8Pih9JHjLE9v0sfTR8xLnUmxHfJq9JWPZn7yYu51BG8+fjQAzz7f4K9x4p7bBA/ePOF2AX+b4HmCeMC6TBvtEmWyktpj8NdH+uOach6HKv1HubH+ezJKH5bpHQIeZWUyaRM8ylfp/21UpvJIns2ug3eebVjdVA7PJV9dd36OfbXB3+X4atU2z1c3lZ+zvpltXZ2v+TnU1dj83FMjYoH1Dv9KHzcI/lVeifsd692U5PO1QfCl5jEbHDovqkjnRYJO0znIF1F7bnbaUzQXgvVvpvbcXGN7FM95OdU/pzmM8m04h+HxzuC/BHOyv4zIqRbV3RuSXj69HFL6nJXMtD9Jmog59brtbMacHFfieBmTM0Tdw7HTYBLisQl5oT3HzBmV3/Dkq3J0ap/5TVSG+raB6NSVf/3+b+bzf5PT3jz94FzMPFqjm/MYgHWh6Bod+0uko/wl9zH6V+wXXrMy+G85saPSA09v8uZ0xo/SDf72m8rzN+hD5rXebKQylXeM1RsvV4hjtI3fXo6slfSOk6jPCB9aX9lAeFr0/kB4j/XWJL1t5hiJcb+N4K2dowF4w8exyP91cgm35PDwduJhYw4PtxAP07ZyRj8PnvzTx4sJFzL+pJDdDLcIn/GD7xD/WKL144gk6mmx/Iye0oP0Uee72J7UWonnA5WdK1zra8RlcYOKYRcRnaLzIqzvzb8WV6SzWNBpev61iOhsrJEO2sxiorOpRjqoB4cTnc010sHxiPfO3CR4SMeJI8+YeY/jltrDmD58BsLg16yaqffsDKeaMyOPWB/H/ZtFO5jeczMa5v8wj1vAH8lzToYrT3bPJ9mptRpPdgZ/Osju1x3ZsW2rGGMi6ZcHx/SYn+W1V5X/xXescypHPi7q8XiFeeAic8UY20D8Y0l/m8uMVyrPjTEhnx+5sxy96fMj6gyl6odDEi1Tdf7TbEz5Wc4ZoG+8ncrQn3GeHu37KPiNNEJtsth2wuFPxaEYu6l8C+vebMdKt5Sj58ZKKj9UNFbi/VfzNVZCPjlWKppzxfo3O3QWV6SzWNBpOrc7iJXi6ZSJlc6rKVb67hkz9SZpvEdfERMr3SLawfTeNg9ipQtJdmo9wZOdwX8eZHexIzu27UGsNMMnvkP8g1gpHCupeKPJWOmWnDZxrKT4U/FO+hyRxD0xsRS2r0DfHRmrm4a/rlhKxSUqlrL2bS5H74hU1w7M6mEc+0b4rfY/YX/V1X8qNzNX/behHD23/1TOqs7+Q9sq0n/KNo+B31iG7fHiSqw/W3HlMUQnNMZvoTFerWnhGM97Bgz+fhjj76ExPnZfwI3AM7e5pnX+oaLnmry9y+lTdN/tuux3zLq12lPeSvr7pOi6NZ5v/WJg3boFeC8Uddm2EX6j4MPg+SwNw/C5F4N/CNZg/uNMzXPo3EtoHfYjgHO2z72gnPkcCdbz1mENrqJNHKlsAtvDNqH28KpY0eDz9vCy3mMsu5FwsX2lz0qBy+N1QwVeuR+xr3i/scGiXmJ7WC8N/lGhl6r/TeZN9L+3Dq9k6q3D58mU813eXmRvHT5vzw37xJsEDzgmztYclXMGdwAvQ4JXwztM8F+GMfhfaFy3+VKSxNmsmp/hnIvPQ+Pc7K4IXJ4vVffJ3uXQRr6wLtNmPq1eg7Yl98nhXJttS/UTwsfISvVTm+BRNkXny3dQWex8+XZo878EckvYjljbxbwU56yUr/J0L3as8s6bKPtnv6HGOGVL7Dewb9lvcB6E4TnXaPD/h3KNqCMFdF3mGrcQj3cCD0q/OYc4ff8WrLf+JODbRgri/FnkOGv92MQ9bWjv7As8H5w+Rf0m2y32TczZYJQpx/Umo1EBj/j4bNVY1q/qTgX0R3cS77H5Oz6vpNYQUrkfk/HB563S3zhfPmRVb7vRp7G/SB/WPYN/IejzYdnvOv0G7+1EP8BxqhpzlJ6p+AzHUK5nfsD8CupiEzlxwz+W9Le5TN4qNkdd0W9O58S3CnqqHzAnjjJF+obLu3+ySb+GcorxaypP3k7628j2jD6C/QD6CPYfmxx66CMwFj+GbF/5yNiYBdchz6P5BtoX2z/aONs/6jvHDShDjhvw7n0V8+CYjfDHgg9bQbJRuuzFsXcLeLxn8DZqD+r63RG4bndoq3tE73Zoq/uNmZckCdukskWTTRPzDYwL2BZVP3nfClSyUv3UJniUTVHb5e9N4PjOdo26jffSrwiM29gOHLfZdm8TvGI8MFt7/+rKFfwW2O6bSTbzLVfg5dsHuYIZfvJ8bJ25gth9iHXkClg/1fpb7LiL+32fH5ErqHI3RdlcAfuN+ZQrWJv1xXzOFVwPvu2KgG8rmit4D8xTB7mCXlyzlSu41skVoD9qOlewOzJXcENNuYL7QZ83OLmCsn5jkCsY5AoeQ579fbzmCtBHNJ0r2N1QruBIJ1fA9j+fcgWPgA97dJAr6KMdsslBrqCY7daRK3i0oVwBxwO8pz993gDveC8L7/EO8WHwpiehvVah3MDnIM6yvVZqX9AKaNvfB9qGfkLNfzjG+y74iS84sQ7fa6FinSTp98sMe3yiZfBV4OPLq8K0TIfGnTamOL62Kgx3vIBjHAuEDHh8u0XUU3NPPpNzG9G41aGxWdRTNDYRTpSZOmtwZ075HaJtiXi3QMDfFmhvImjfnoP3VoFH+RrPR3FMXVdscG62l1PZS8gmlF7d5vB+B/GetxeQeVfyQ/+h9kfyWQbWrY2inS3xb+PvfHjHPlbd9Y4wVpf3p/5Y+EzGGdoHeG4A509FzsHTmefCOx6LvX5CftS+xtuonrpDKBHvVP/cSLCcSzhe8BT692aBJ8SDd77WO79X157C08k2MZ65iXi/mXhH2A3EH5/NYP1eT/B4D8+QgGH9nh5nM51W+q3OBSJf5wZwHgo4Y+5Q/X/gXdH703hupO5PU7yj7+F3qn9Yv9kfHS94Cv37FoEnxINadzL9vimAk2myPqQP6/d6QSft9y/9xr7fSr58T7va66f25LVFfb6jyXh4JugSfxcD+VRtXBnA+RxHP+u+j934Uf5ho1MP+2+hoHWE/fi5/xg+s4UDkrAO8n71F4CcTlyteWkxPzlPg+cYj2gRviTROcL99BzjM+o4x8hno9LfmNt+CY0Bysaw7puy32xjLz1zpt4JAZxJUs03/flv9OKNvZsjdmzxzrR5535uoDL1vRvjQcWQCH9e9ptjyJPBNr3vhuH5VcNjZfG61/q+yilhjMg5Je/cVPoUjWP5ez1qfcTTL5XrZb0JfQ/B8PE5s1XQB7xuhXfT8lmXmwryHroDmG0RbYPtWJ0rXC/wenaPfNu3UdjuX+eMrWp9v8r3ZXgdXsV3av+Odx7V4Jq4A3U27522vlU5DI4j1b2led9P7ZLvVfctY9+GvtUX+i7k67Lf/K2+tzv6lTeuFL3Dn+9mjj3vbLbf4HnnJ8z1eWfrW5VL4v1G6Av5nLz6hmLK+zrSLzVOYt3fyX7zOPk+R19uddqYPkXHKOPHy7WonCrrksrvGQ/eXoP09zlJrxwM/prIeKGmPW9Li64He9+uSR/uC2+PHMqkTfDcL/hvxOWtv6jvJ90m8PPdTxuceCF2z2wM78rvKntDm3qWM8/nmHWjQ5Pr4tgzGoAPzT/vFPJifxbKvb6BcBr8VscfqDH1Q/Cu6B3tnHtV+Ug1f/DuBqgnnk9eMdd3tPP44d3t750Nz8vXePqPOtQm/cfx/Hqi6cWxXBfphPTf8LGuPuTof968/LcJp8F/pGDuy9P/vBjBi5G8e3nM3zQYn5881/E5678XnxfN88bqP+rQz17Yixf3UyudfW32m+9PfrSgfuG8oWwMqnTI872cn1GxK/djaJzheYrBfy4y3qrpmxuHzbU/57U3Fd96/tO7W0j5TzVesv/8SmR+xvsWdAzvsfaGNvWdzN5MB3Huy+PNTQ5Nrot2HRpvDB+PDf/DGW9wbqbyQTzeGPz/V3C+7o03efN1zgepe7bUXN6brxtcRfs8vOnvauXlyni8QX/I38sp+l2tWP1HHfpypv/V5PruN7aAF8M9JCCH6a/B/DjTzzGgb3+HI/j46qP//qU/fNWidxxK9dPH+ujACvif9ueTn3/51/7la03hv27R8KE3vW7lqU3h//wB3/nBZ/76LTc3hf+bC1edvOCPbnhGU/jv+MGrX/z+X3nW/2oK/62fesGp/+vM7z49D/9E9nsUyoeozgHZ32EoGxX4hgn+kMwvpbbzBIpVRgS99N0RDlwr8FfxjPzYuzEBPyTgjfaBAt7KDoIy9LEIg/JCXGNQjvBPz9pufbIQ6lj9tqC/kOgrvvHdAoI/SMAfJODTdj55dW8bsO1F17jTZ5Tq4zukbevT6XNA0s8v9qPxZHJdKOCtDHWC9eVAeD8kcB1A9Qz++dSP2B6r3xb0URZJgG98x/2o9HtMwD/2/Z7VMzyX9THv++yl9/7s0Pu/1ZQP+8iLjznh4Nceta4p/Ac/+qdnfOP/XHJUU/g/+D9+/pUb3vuU7zWF/6Xbrrhu/MV7H24K/4MHfeEVH9+28Hebwn/ic276lad9+p3jTeEfGX7anUfsfdPpsfjftWbyinMuunjt5N0Z5EICLurkFgrG4+uvO2MhIyxUPznDNgZV4R8dc8H60w4NJ97MS/pYUI8dZHVSJ3so/P4VqJM+rwJ8PACfJuha2ekBPtIHL4jlQfrVUGYDjcmJB7MjkqjnVVb/gHL1R54g6B8AvKXPsnK4p3X4lfDyiCTusbonA+1WCdrLoX4B3hdY/VPK1R+2+qeWqz+UOpe0Hy7KFHM86dU3w6n+JokOak2Px5JKtjm9yXCY6DF/Rm+C4Jl2CNewwNUW9Ydnmc64qFe1L0omcab7gidFoXZNELySkcI1InApGY0M6OwXdBYKOgX8a9VxK6k6bhm/PNHB9qYPJyXHCsIfWBD+IAE/7MCPF8R/cEH4iYLw7YLwh0TCm888FMrMH5ouPAHeFxmrY3wu4h8jXor63HHCh3SsLYeVwz0a2xbDP5ZUkl2rIr/T48/hSS+/LF/D3yZ45h1hFa70MZ06KJnR18vXrrlwzdorT5lc++pfzMIuWxBAiWJF0gzPv+0ZCeBJ2TyE3jEMu1o1RWMXhe8PDLw/KPB+PPD+4MD7icD7duD9IYl+lhHsKJWfnAM/nQNO+p8W/cfvm/p3Mou06uDVdFL9bjkw4wH86VNxSh/t2jD/qPg9Iol6pl3TENHj9vEQpaYPbSpLn1cCHJfFTC3mOy7ls+rgq86prApxW0SnVSMdrGd+TU07DyV+isoN6w8TLhXy4vC4zOFrIeEay+GLcWH9McJ1YA6u5YQL6x9IuPLC6FMJF9Y/iHCN5+A6hXBh/XHCdbCDK/19AOHC+gdTvQmH5yGqg/Dps1DUS58jkqhnOoTFuMf0ObX5dxM/E1A2JOpaHDVM8Ce2Zuq9l3gfLsf7tF2jHfAYhbpVYMw4IHaMMvxjSb9dlBmjlB2q9Tpr+4GCl7YoY9+hbFSt77ZF2Ssf57jUeFcHX3WmC9UYbXripY6U/25RGdoMy0Hp55jDH9Y3uIUB/o5Iop7RPJ91R4DnkM/CfV4I/2OoZ3e8TSS9MlO2lRdn8liqlrNaSb+uKFw8lg45fI3m4OKxFOuPEq6FObh4LMX6MbEHypfHUi/2yMPF6dUDBK6Fol763xFJ1LO8Ykr1XDV2Fai/xuofWK7+hVZ/vFz9Sat/cLn6F1j9iXL1j7D67XL111r9Q8rVv9jqH1qu/ltUGrRA/YvMP2L6zHTZcGParYDvfSLahD0qLjL8Y8RLQXpuWhHbx3HREwUvbVHGNv5EQeeJgo7CNVIjrrEacR1YI67xGnEdXCOuiRpxtWvEdcg8beOhNeKqUyfqlH2d8qrTtuvk6wk14qpTV+vsR9wL3QLY/539VfFagTHmSTZmqH3iFfMIT0Ke7PHyCOOCnvE1Jspi9jC+41m/edIDv/PvR7aovvHC72KWvtXYq+LGArI6XJ1xMtqoA0nSL7P0QRu1d2l8v7bVy9+BJfmLkR/ibwt4zlHE9sWhifZD6aPmw6EtSunvhVTGdoNl2BejVIa82DzKzoMom0kSnadtURnqD8dBKoeL79iPYP3xAK5QXgD37vfUb83UO64VbldMXvzASN4PDOAaDvA+SrwbvCU20/76/ZaWB/KHurgsCbc1Jj+OuDhvofLjhmsiBxfnLVSu3HC1c3Bx3gLr85h2iIMLbWJC1D+Eytinp4/yh5ijSJLS2wUPSHm7ujVDh9vDfgbXlYYEvOmGWrc6yGnPIQ22Z6xge5R+qvbwmDRb/XOg0x6liwh/KrUHY71xpz0HNtger3/yfNEp1B7lP+ZT/6j2oP88wGnPhNOe+dg/GBuo9rSpTMV0OLa2BD885qWP+SAVDyFeWx9QfpnnxWq8wHfeer3B8VroEhiDb6c2TkCdmHHd4JeJcV2NYbwmoMbWCad9WH8iUA9tEOmwrDkm5Pkn/j4M2j0k4FkuBn86yOUu0O8k6bUj46uiHY0WHVfVFkdvXMU8KsbxVj9Jah1XZXvaBduD8Mud9vB8bn/on1Od9nhxwnztHx5XsT3eONRk/0w47VFxD/ohHldV3KP2jk1QWQvohMYZLMO9MxXvETnDaA8B7iEBGbpH5LIMQdP3iNj7+X62/vdgfEyf+Xi2/orWDM9N3z/S5P0dH8gQpG36A7Bre8f00ne3OXCtwF/FM/Lj9cGQgJ+r+zs2k27Ox/s7biR/Mpv3d8zXexpi75k4Ovt92dqLL508Z81F50y+e/L8y9euufiic84/9/y3Tp5z8aXnnn/h5DlXXHruJZdMXmqf7pnjWwTWqCMqBeivUVs9C9R/TsUtY9PqhOl3tb19iOC4TlqutpMbTMXbEk6u2M5nVTxNOWTtUlvFVLq/6pZGpFXXCWjFu7fFHt0Ph5cK12hBXE32idpyrsJzvrlCbe1Ty2j2+wDgN2a5CYfUtwKO58PvY7LfFZdv11S0ueQJgj4Pj/M9pH1e9nc+h7TPAp7tVosXAb6Qji8Q+NQW51Hgt4K9LTBe1NZbdTtKGib9avb7kkvXvOvctZO/lY7uKy462cb2ZenQzoRQf1D/FiTh8Qnbo3AMQX31pHKvOB1d0yLaRaejx2V/m56Omn+56OK1a9585TmTF73z8snLJy8455LLz7twzfnnvPnyi87P4q4LL7R462lZnTmOt06tGG+dWjGOGK56q4OKt5Stmk4sh7p8U4/BnAIweBtP+ngxmUrTnExlQ4K+im2MLt8oZduwKo5lpzY5lpnPta1Vqd+y6Ujmt179mKmcnFnKqscMZXlmJ8t+YSZMjsO+Fv17Af2b3dWwwMMP1sNhsqIbO7WqG3tq9rdpN2Z0Llhz6eQvOuJd6axx7eRbJi89552X/6K7Ji9aa5JYCLUMY5GBz+ofVK5+3/l+5AXxThPM/qrebwX+vYD+erAtB++4KDOcZszIr7XD8sfYG++avHQtryvj/sUyA0fJ/fmyD3CfpeHlAS4pQMMetBx+uG85mOQBsgD9VogP1d/Wl3h+wOTx/wNSq5RsexkOAA==", + "custom_attributes": [ + "external", + "private" + ], + "debug_symbols": "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t6Rb0i3pduh26Hboduh26Hboduh26Hbodp5bNcE1DuIkLuImGtGJQUwi3QbdBt2YJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJQdZ8l2NH2QJcBAncRE30YhODGIS6XboduiGLLHCRdxEIzoxiEk8F+cPWQIcxElcxE00ohODmES6DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboZ3ZAlUTiJi/i5jV+hEZ0YxCSeh5UlFwdxEheRbk43p5vTzenmdAu6Bd2CbkG3oFvQLegWdAu6Bd2Sbkm3pFvSLemWdEu6Jd2Sbkm3Q7dDt0O3Q7dDt0O3Q7dDt0O389zwjK6LgziJi7iJRnRiEJNIt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt003o5vRzehmdGOWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJYpYsZslilixmyWKWLGbJYpYsZslilixmyWKWLGbJYpYsZslilixmyWKWLGbJYpYsZMn6EFkCHMRJXMRNNKITg5hEui26LbohS3bhIm6iEZ0YxCSeh8gS4CDSbdNt023TbdNt023TbdPN6GZ0M7oZ3YxuRjejm9HN6GZ0c7o53ZxuTjenm9PN6eZ0c7o53YJuQbegW9At6BZ0C7oF3YJuQbekW9It6ZZ0S7ol3ZJuSbekW9Lt0O3Q7dDt0O3Q7dDt0O3Q7dDtPLf9+xEHcRIXcRON6MRy88IknofIklM4iJO4iJtoRCcGMYnn4aTbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptumm9HN6GZ0M7oZ3YxuRjejm9HN6OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26Hboduh26Hboduh26Hboduh23lu9vsRB3ESF3ETjejEICaRbswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZkkwS4JZEsySakX9++yjcBON6MQgJvE8rCy5OIiTSLdBt0G3ypLv6zZmNaY2JvE8rCy5OIiTuIibaES6TbpNuk26Lbotui26LbotulWWTCt0YhCTeB5WllwcxElcxE2k26bbptum26ab0c3oZnQzuhndjG5GN6Ob0c3o5nRzujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbeW7V69o4iJO4iJtoRCcGMYl0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RjliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGYJ+l5nFG6iEZ0YxCSeh8gS4CBOIt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TbdjG5GN6Ob0c3oZnQzuhndjG5GN6eb083p5nRzujndnG5ON6eb0y3oFnQLugXdkCWn0IhO/Nzq673Q93rxPKwsuTiIk7iIm2hEJ9It6ZZ0O3Q7dDt0O3Q7dDt0O3Q7dDt0O+220Pd6cRAncRE30YhODGIS6TboNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNum26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbpZnQzuhndjG5GN6Ob0c3oZnQzujndnG5ON6eb083p5nRzujndnG5Bt6Bb0C3oFnQLugXdgm5Bt6Bb0i3plnRLuiXdkm5Jt6Rb0i3pduh26Hboduh26Hboduh26HboxiwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLEHf6/eVugt9rxeTWG7+IbIEOIiTuIibaEQnBjGJdHO6IUt+hZO4iJtoRCcGMYnnIbIESLegW9At6BZ0C7oF3YJuQbekW9It6ZZ0S7ol3ZJuSbekW9Lt0O3Q7dDt0O3Q7dDt0O3Q7dDtPDf0vV4cxElcxE00ohODmES6DboNug26DbpVlmwrNKITP7fthUk8D5ElUTiIk7iIm2hEJwYxiefhotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptumm9HN6GZ0M7oZ3YxuRjejm9HN6OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26Hboduh26Hboduh26Hboduh23lu6Hu9OIiTuIibaEQnBjGJdBt0w73XXTiJi7iJRnRiEJN4HuLeK5Buk26TbpNuk26TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptum25GN6Ob0c3oZnQzuhndjG5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdkm6Hboduh26Hboduh26Hboduh27nuaHv9eIgfm42ChdxEz83w886MYifm3nheVhZcnEQJ3ERN9GITgwi3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TbdjG5GN6Ob0c3oZnQzuhndjG5GN6eb083p5nRzujndnG5ON6eb0y3oFnQLugXdgm5Bt6Bb0C3oFnRLuiXdkm5Jt6Rb0i3plnRLuiXdDt0O3Q7dDt0O3Q7dDt0O3Q7dznND3+vFQZzERdxEIzoxiEmkG7PEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmCfpev6/rWOh7vTiJi7iJRnRiEJN4Hk66TbpNuk26VZb4KTSiE3lszJJglqDvNWbhIE7i5/Y9P3ih7/WiET+37xHCC32vF5N4HlaWXBzESVzETTQi3TbdNt023SpLchUO4iR+bt8zihf6Xi8asXaJFQYxiechsgQ4iJO4iJtoRLo53ZxuTregW9At6BZ0C7oF3YJuQbegW9At6ZZ0S7ol3ZJuSbekW9It6ZZ0O3Q7dDt0O3Q7dDt0O3Q7dDt0O88Nfa8XB3ESF3ETjejEICaRboNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuRjejm9HN6GZ0M7oxS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzBH2v37PbF/peL56HlSVnFg7iJH5u33OQF/peLxrxz23+yu3LksYkng+/17fqe20cxD+3+T0SY1Xfa+Mm2oe70IlB/NxGTefLEmD1vTYO4iQu4iYa0YlBTCLdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdNt2MbkY3o5vRzehmdDO6Gd2MbkY3p5vTzenmdHO6Od2cbk43p5vTLegWdAu6Bd2CbkG3oFvQLegWdEu6Jd2Sbkm3pFvSLemWdEu6Jd0O3Q7dDt0O3Q7dDt0O3Q7dmCXnZcn+vSzZv5cl+/eyZP9eluzfy5L9e1myfy9L9u9lyf69LNm/H90G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023YxuRjejm9HN6FZZ8t3N39X32hhEuhndnG6VJV97+q6+18ZF/Ny+JoJdfa+NTvzcVrlVllw8DytLVg1WWXJxEj+3XYNVllw04ue2ozCISfzcdh1QZcnFQfzcvrfKu/peGzfxc7MarLLkYhA/N68DqiwBVpZc/Ny+77za1ffauIifW4xCIzrxc4uab2XJxdNYfa/z+yKfXX2vjZP4uaUXbqIRP7eMwiAm8fSiVt9r4yDOXtTqe23cROtFrb7XxiBmL2r1vV6sLLn4uX3fKrSr77VxETfRiE4MYhLPw8qSi3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023QzuhndjG6VJccKN9GIf27rh58NYhLPh9+mrb7XxkGcxEXcRCM6MYhJpFvQLegWdKssQbVUllw0or9qqSy5mMTzqqWy5OIgzlctlSUXN7GODejEINax1XTyPDw/4ndsow7oy5LGRfxWctR0vixpdOLnNsrty5LG01h9r+t7usCuvtfGSVzETTSiE4OYxPNw0G3Q7cuS9f0F/q6+18ZN/NxmzffLksYgfm5rFZ6HX5Y0fm71OlR9r42L+LnVy0z1vTY68XPbozCJ5+GXJWuX25cljZP4uVkN9mVJoxE/N8NgQUzi51bhWH2vjYP4uVkWLuJ+iCdeFNWwtf61zbz+a22zi4u4iUZ0YhCTeBqrJbJxECdxETfRiE4MYhLpNug26DboNug26DboNug26DboNug26TbpNuk26TbpNuk26TbpNuk26bbotui26Lbotui26Lbotui26Lbotum26bbptulW26wugqolstGJQUzieWjlloWDOImLWG6n0IifW/wKg5jE87Besi4O4iR+brEKN9GI5WaFQUxiudV86yXr4iBO4iJu4ueWs9CJQUzi55Y1s+8lq3EQP7eshfpesho38XM7NVi9ZF2Mh/XiFF74jXtq3MqHumaoNsd1auqVDxeDmMTTWG2OjX/j/r3hK5zERdxE+3AVOjE+9MIknodfPjQO4iR+bt8zf3e1OTYa0YmfW2VqtTk2fm6jJvnlQ+MgTmK5lfHcRCM6MYhJ/NxmTefLh8ZBnMTPbdYkv3xoNGK57cIg5sO9iDVCHcVX3fv7C/1dnYm7XrqrM7FxECdxEb/B6t1kdSY2OjGISTwPv5Le9YJenYmNk7iI5VbzdSM6sdxqZp7E8zDKrTZtlNsp/NzqkqA6Exs30YhOjIdf8f4tYuEgTuIibqI9PIVR6MSy+OZbrYC7rjqqFbBxEhdxE+1h1UVdllTLXqMTg5jE87Dq4uIgTuIi0m3SbdJt0m3SbdKtKsBmYY2wCmsEKwxiEmuE73RXG17jIE7iIm5ijfudgGqt23UhVq11u143q7WucRG/EbyWuorhohODmMTzsIrB64irGC6WWx18FcPFTaxxv21U7XK77lpUu1xjHfEprBHqMGuDXzSiE2vcWodI4nlY275e3KtdrnES6ZZ0S7ol3TKI+c5F8mwens3Ds3l4Ng/PZtUQTuE5fQqrBQ4nq1rgGidx9bmoFrhGIzoxiEk8fd6qBa5x9MmqFrjGRfQ+hdXWhvNWbW2No09htbVhoaqtrXETjeh9sqqtrTGJp09WtbU1DiLdFt0W3Rbd1jub1Ru266KsesManfhNJ2p1qhgunodVDBcHcRIXcRONWG41nSqRi0k8D6twLg7i55Y13yqci5toxM8taxtV4VxM4udW133VG9Y4iOVW+6EK5+ImGrHcasNUiWTtkiqRi4M4iTVunflT49Y5rhefup6sLrDGICbxc6vbUdUF1jiIk/i51WVotX7t7yu7d7V+7br2rNav/X2N9q7WL/vh187Dr4YaB3ESF3ET7cNR6MT4sIxHEs/D+SMO4iSW2yncRCM68XOrC85q/Wo8D796s7r2rNavxkn83L7Pw3e1fv29ahca0YlBTOJ5uGvcLFzE/fB7JbO6nqxmrMbPrS4XqxmrMYhJPA+/4m38jm3WUXzFa/X5RjVjNW6iEZ0YD6PGrQOKGsELa4Ra9TCiE2uEOsxI4nmYP+IgTuLnVpes1WDV+LmtWqivIBvj4VeQfxcyhTVCrcPZxJpvVcDxt1AniEk8jdU0ZXVVXE1TjZO4+gRU01SjEZ2DBTGJdKsqvPj917qYruamxkGsaikLVAtwE43oxCB+c/j+pG1Xc9PFqpaLgziJi7iJdS6yMInn4f4RB3ESF3ETjehEum26bboZ3YxuRjejm9HN6GZ0M7oZ3YxuTjenm9PN6eZ0c7o53ZxuTjenW9At6BZ0C7oF3YJuQbegW9At6JZ0S7ol3ZJuSbekW9It6ZZ0S7oduh26Hboduh26Hboduh26Hbqd53Z+P+IgTuIibqIRnRjEJNJt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdGNWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJdXGZPWpR7UxNS6idSIeBAgwiEl8oXv8RxzESVzETaSb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbaTf7/X7EQZzERdxEIzoxiEmk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26ab0c3oZnQzuhndjG5GN6Ob0c3o5nSrLPk+YrXqXWpcxM/te76JVe9SoxM/t+/OqVXvUuN5WFlycRAnsdyycBON6MQgJvE8rCy5OIiTSLekW9KtsmTX6lSWXEzieVhZcnEQP7fvTq9V71LjJn5u361Vq96lxiBmY3Up2Xfv1aofyb57r1b9SI1OrBGsMInnYeXDd1/Oqh+pcRIXsdyi0IhOjIeVBN+dPaseI/tuj1n1GDUasda3LKrmLybxPKyavziIk/i5ea1O1fxFI35uXitZNX8xiedh1fzFQZzERdxEI9Jt061q3usMVc1/dxeteowaB3ESF3ETjejEICaRblXzXierav7iJJZb7ZKq+YtGLLc6hVXzF5P4uUUNVjV/cRA/t6hdUjV/cRM/t+8enlWPUWMQP7es6VTNA6vmL473s1XzFxfxc8tyq5q/6MTP7dTJqpq/eB5WzZ9a1Kr5i5P4uZ1akqr5i0b8c/NfTeer+cYk1kp+P1s9Ro2DOL+fjcJF3ET7MAudGMTP7bsfZdVjdPHLh8bxoRdO4iJ+bt+tCKseo0Ynfm7fzSKrHqPG8/BLDZ81ne/6oXESP7eFn91EIzp/NohJ/NxWrdmXJY2D+Ll9V+ZWPUaNm/i51QtV9Rg1BvFz2xjsPPyypPFzq+CvHqPGRfzcKkjr2XqNTvzcKl7r2XqN5+GXJe51Wr4saZzEz60KvZ6t12jEzy3qgL4saUzi5xa1Nb4saRzEz+27v271bL3GTTSiE4OYxPPwy5LGQaRb0C3oFuVWqxNODGK51RmK8zB/xM/t1PJ9WdK4iJ/bqeX7sqTRifFOYSbxPPyy5J7CM4iTuN4pPJtoRH+nsLLkYhL/3KJipRrJGgdxfmiFi7iJf24x8LNODGJ+OArPwy9LGkevejWSNS7i7lWvRrJGJ0avejWSNZ6HlSW16tVI1jiJ37EN4CYasY6tpjODmMTv2GYd0JcljYP4reSs6XxZ0riJn9ssty9LGoP4uc064nUe7h/xc1s12JcljYv4udW1fTWSNTrxc6tr+2okazwPvyyJirZqJGucxM+tkqsayRqN+LnV1Ws1kjUm8XOrS9ZqJGscxM/Na7AvSxo38XOrq6tqJGsM4udWFVCNZBe/LGn83LxObEziIr7rnWoOM/zXuta4OIiTuIibaEQn1nzLIpN4Hp4fcRAncRE38Vud75NXq0ayxiB+blErWflQWI1kjXVswElcxM/t6+SzahmLepGolrHG87CS4OIgTuIibqIRnUi3QbdBt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdNN6Ob0c3oZnQzuhndjG5GN6Ob0c3p5nRzujndnG5ON6eb083p5nQLugXdgm5Bt6Bb0C3oFnQLugXdkm5Jt6Rb0i3plnRLuiXdkm5Jt0O3Q7dDt0O3Q7dDt0O3Q7dDt/Pc7PcjDuIkLuImGtGJQUwi3ZglxiwxZokxS4xZYsgSK3RiEJN4HiJLgIM4iYtYblloRCeWmxcm8TxElgAHcRIXcRON6ES6LbotulWW1JviaslrnMTP7etQsWrJazTi51YXcPUMvPtryIdTuIjfCF8DilVLXqMTg5jE87DyoS72qiWvcRIXsdxqkpUPF51YbjX1yoeL52HlQ71dr/a9xklcxD+3rIvpat/LX833S4L8mqqtGvUufknQOIjzw9pGXxLkr44ia9yaTta45fYlQWMQk/i51ZV5Neo1DuIkfm6j5vuVf46azlf+OapwvvLPesNfD7PLURbnNFYnX+MgTuIibuLn9jVVW3XyNWZvo2rfuzh+xEGcxEXcRCM6MYh0G3SbdJt0m3T7aj6/1g2rVr9GI9YBrcIgJvE8/Gq+cRAncRE30Yh0W3Rb5eaF5+H+EQdxEhfxc1t1xF/NNzoxiJ/b12dj9QS7i9/1Q+PntmpmXz5k3b6pJ9g1lpsVGrHcajoWxCSeh/4jDuIkLuImGpFuTjenm9Mt6BZ0C7oF3YJuQbegW9At6BZ0S7ol3ZJuSbekW9It6ZZ0S7ol3Q7dDt0O3Q7dDt0O3Q7dDt0O3c5zq97FxkEstyhcxE00ovdLUrUxNibxPESWAAdxEhdxE+sovigO5AOw5nsKJ3ERN9GIToyHlQR1z7HaDe86LB7x4hFXzV8M4re+359BWLUbXqyavziI72xWE2LjJhrRiUFM4nlzQM0DB5Fns2oec6iav2hEurHmgzUfrPlgzQdrPljz4dw7zpV0rqRzJavmMQfnSjpXkjUfrPlgzQdrPljzwZoP1nwEzxtqHsiVTK5k8rxVzV/kSrLmgzUfrPlgzQdrPljzwZoP1nwcnrfDlTxcycOVPFzJqvk9C5NYK/m9BlTTZOMgTmIdmxduohGdGMQknofjRyy3KJzEqvlR6F2F9Uy5rM+E65lyjefh/BHfGaq2y8ZF3EQjOjGI7wxV2+XF9SMO4iQu4iYa0Yl1FF/uJPIBOIjfuHU7r9ous27cVdtloxGdGMQknoeVDxcH8d1NStw9ADoxiEk8D3H3ADiIk7iIdHO6Od2cbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdEu6Hboduh26Hboduh26Hboduh26ned2fj/iIE7iIm6iEZ0YxCTSbdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdPN6GZ0M7oZ3Zglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCXnZYn/Xpb472WJ/16W+O9lif9elvjvZYn/Xpb472WJ/16W+O9Ht0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt003o5vRzehmdDO6Gd3qHcrXkufVa9mYxPOw3qFcHMRJXMRNNCLdnG5ON6db0C3oFnQLugXdgm7vU09Hr+XFJJ6H+CwUOIjltgsXcRPLzQqdGMQ6Ni88D+sdysVBnMRF3EQjOjGIdDvPrZ4T1ziIk7iIm2hEJwYxieUWH9Y7lK890qsvs3ESF3ETjejEICbxPJx0m92d5/WcuMZF7O48Rw/nRSd+uyTqgKqH8+J5WD2cFwdxEhdxE43oRLotutX7lu9zaa++zPxaP736MvNru/Tqy2wMYj6s9yJfn6NXr2V6jVt3JS46MYhJPA+r5r1Wp2r+4iQu4iYa0YlBLLddeB5WzV8cxHKrc1w1f7HWdxQa0YlBTOLnFrW+dVcian3rrsTFSVzEffvwvHotM2pmVfMXg5jE87Bq/uIgTuIibiLdqrpr6tUTmd9ndV49kY1BzNsm6tUTebF6pi8O4iQu4iYa0YlBpNug26TbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26LbolvdiazUqJ7IxvOw7jRUalRPZOO8vbdePZGNm2jEGvfbytXnmDCunumD/7qIm2i3tdbR53gxiNXpWxbVMw2snumLgziJi7iJRnRiEOnmdKuK/W5CefUu5vd0Aa/exfyeLuDVu9iYxPOwqvB7wKJXP2JmrXrV28UgJvE8rHq7WOtby1f1dnERN9GITgxiEsvtq7fqR2wcxEn83L4HGHj1I16sF8vvM2GvxsLGSaxfW4Wb2G3DjsbCi0HMh3U77wBrhJoOGo9PoRODmLdt2KtZ8GI1Hl+sxuMsnMRF3EQjOjGISTwPq/H4It023epl8fuY3KsBMA/+63daqlqqAbBxECfxb4TzPcjBq6nv/GrVv8K5+BVO4yBO4iLuD2up3YhODGISz8P4EQex3GrVYxE30YjlVuc4glhuXzFUU9/51cHnJhrRiUFM4nl4fsRBnES6nW4N92rqa3Rit4Z7NfU1dmu4V1Of1wVnNfU1TuIibqIRnRjEJJ6Hg26Dbl8Vnq/hwKt973wNB17te+drOPBq37v4vQA2DmKNYIU1Qo07k3gerh9xECfxW99Rq7M20YhODGISz8P9I5bbLpzERdzEcjuFTvzcvmZir5a8xvPwq83Gz23W6ny12biIm2hEJwYxiedh1fFFunm3cPv2RdzEbuH27U4MYrXeR+F5iEZ/4CBO4iJuohGdGES6Bd2y1qzORdXxrK1RdTzxA0FM4nlYFTvrgL7aPKs2+FebjUFM4mms1rnGb32/x5N4tc41LuImGtGJQUxizfc7LdU61ziIk1huq3ATa9yv9Krx7Xwf8Xk1vjVuohGdGMQknodVsRcHkW6r/wzCq/Gt0Yj9ZxBejW+NSfzOfL3Bq8a3xkGcxEXcRCM6MYhJpJvRrWqzXoSr8e3UNUE1vp3vgz+vxrfG87Cq8OI3wq7TUq+QX0O+VzNbYxLPw3qFvDiI3/ruWr56hby4iUZ0YhCTeB5mudXuy0GcxEUstzpDVYUXy+0UBjGJ52G9mlqtTr2aXpzERdxEIzoxiEk8jdXt1th/HuTV7da4iP3nQV7dbo1OrD9qscIknof1anpxECdxETfRiE6k26BbvcbWrb9qZjt1i66a2Y7hB5wYxHxYFVsXI9WgduqyoxrUGp0YxCSeh/VqWndyqkGtcRIXcRON6MQglludlno1Bdar6cVBLLc6x1WxF2vcVRjEJJ6HVbEXB7HGrfWtOr5YR1ErWde/F8utplPVfbHcaqmruoFV3XWHqFrRGsvtFC7i51a3Q6oVrfFzq1s91YrW+LnVnZxqRbtY1V33wasVrfFzqzsu1YrWWG51QFXdF8utDqiq+2K51QFVdQOruus+QbWiNZZbHVBV98XPre4IVCtaY10T1AHVtfLFJJ7GakVrHMTP7eIibmK57UInBjGJ52G9Hl8cxElcxE2k26BbXUHXu+ZqRTt1G6Ba0U5d71QrWqMRnRhEzndyvovzXZzv4nwX57s438X5Ls53cXUW3RbdquZxQFXdOKDN+W7Ot6r74nlY1X2R8zXO1zhf43yN8zXO1zhf43yN83WujtPN6VbVjQOqOsYBOecbnG/V8cVJ5NkMzjc43+B8g/MNzjc43+R8k/NNzje5Okm3pFtVLA6oahMHdDjfw/ke7r7D3Xd4Ng/PZr3y1juJahkD5vvjVc/3x6ue+ONV4CLWuKfwG6HuGyX+IBU4iJP4jfD9xarXF442GvH7mLHemFdzWGMSz8P6wPbiIE7iIm6iEek26VZVeGo6VW91c6savk7dsKqGr0YnxsN6ja1LlGrtOnUxUq1djUZ0YhCTWOtbM6t6uziIk7iIm2hEJ5abFSbxPKx6u/jn9veBXZ3D+mbQ5lU8i7ewCbtwCKfwIdc3hDYP4SksvtWxMWqpqmPjohO/U1v3D9D9dfE8rI6NunGB7q+Lk7iIm2hEJwYxiefhoduh28Hq1VY7WKVa+YNVws+cx9XV9XgIY5wsxjinOIUPefyEh/AUrtWuAq2erccm7MIhnMKHXN8W3AzfKJ7CS3gLw3cWuzB8ax1mCsO3fnfBt9YHf1heh4g/LAcu4iYa0YlBTOJ5+P6w3NHEdZFu9cXBv+9vc7y6uB6bsAuHcAofcn1/cPMQnsLwrfW3LWzCLhzCSUalf0+p9YNKvxzCKXzIqPTLmGedL1T6Zfx8nbv8CQ9h/HytZy7hLfydv1VDVrFeDOJ3/hbGOw+rWC9+56/u0qC96uIibqIRnRjEJJ6Lgfaqi4M4ibXa3/2s+KGiv3tQ8UNFf3eT4oeKvjyEpzDGqTFRod8ixA8VCkaFXh7CU3gJ12p/N1/ihwq97MIhnMKHjAq9PIThu4uX8BY2Yfie4hAu313rVl/x/dv18/Ud381DeAov4S1swi4cwiksvtUtZXVKq1vq4iR+W+y7IxLolrpoxG+L7Tq46ry8mMTzsDovLw7iJC7iJhqRbk431PKuHYVX5+9GU1QP1B/XGQwTduEgo8Zx4KhlHCNq+bIJu3AIp3CtttXOPz/hITyFl/AWNmEXxvxrHfB6ffk8Hni9vgzfXTzJqNY69oFqvbyEtzDmY8U83oEqBqOKL2N8L57CSxjjR7HJ77pwCIvvFN8lvqjiy1N4CW9h8V3ihQr9bmPFQIVensI1ptf6oEIvm7AL1/iO8VP4kPF6erl8v/anGHjd/G49xcDr5mUXxvh1fvG6efmQ/Sc8hKfwEoZvnXe8/l524RBO4UNGzV4ewhiz9kDgd2tt8VoMRp1eHsJTeAnXnKPWHPV72YVDOIUPGfV7eQiXb9Q5Qv1e3sIm7MIhnDx3qN/iifq9PISxh0+xv3WbuPa+nMKHjFfq76ZfzMG1mqjxyyaMOZcvrrEvpzDW6tsnc/IczTmEp7D4TvGd4ovavxzCKcy9MZf4LvFavOqY99UZHMIpjGMp3rzqmHsJb2GcX7ALhzDWqtZ/82pn2k94CIuvia+JL2r/sguHcAqLr4sX6jpqrVDXl124xvxuvMZEXV8+ZNT15Rr/u4saE9fVl5fwFi7frD2J2s/aV6h9MGr/Msav/Ybav7yEt7AJu3AIw7fOO2ofjNq/PISn8BLewiaMMb89sPD6+90Ai4VavryFTdiFQ7jm/N0Gi4UaB6PGLw/hKbyEt7AJl+93VyoWav9yCh8yav/yEJ7v3C3U/uUtbMKonS/fFuoa64bX9MtTeAnjWGaxrBVq/PIh4/X9lC9e3y9PYazVLpZztOUcbTlHW3y3+G7xRe1fHsKyN0z2homviRfq+leM1/TLQ3gK41isGHfJap09hFMY5/fLioUavzyEsVa1/vcuWf0uavyyCYtviG+Ibxxy/oSH8BQW3xQv1PWpY0ddg1HXl78xx6/2fNV18xLewlZce7te05tDOIVP8bcnq0Xrj1fxEt7CGH8Xu3AIp/AhV+03D2H4WvES3sIm7MIhnMKHPDFmFON3sziEU/iQ1094CNecv7v4Ud1dj7ewCbtwCKfwIVftj+9+YFSX1+MpvIS3sAk7z90O4RQ+ZNT7d0c8qp2r181M2IVDGMdSe8llrXwKL2HMuXzdhF0Ya1X7xOUcuZyjkHMU4hviG+IbW9iEZW+E7I0Q3xSv+ryqYqYeodZoRCfiOGo/1kfMFUn1tLTGScSJrV9EcV82YSwSfj74q0k8jWj7ujiIk7iIm2hEJwaRFiji70ZyGIr48hau+X83XMNQxJdDOIXrJH83VqMejPZ4CE/h8v0eiRSGQv/6B8NQ6JdTGON/m8tQ6JeH8BRewlvYhOFrxSGcwoeMQr88hKfwEsaYteaG3621tSE8hZfwFjbhmnPdRjUU9OUUPuR6MW8ewlN4CZfvqnOEQr/swiGcwoeMQse5Q6FfnsJLGPVyipPrFoeMgr48hHEstZdS1ipdOIQx5/LNQz4/YaxV7ZMj5+jIOTpyjo74HvE94osX88vncfWNPR7CU3gLY/2tGMfixYeMF/DLQ3gKL+EtbPdj8agWscYgJvE8rObsi4M4id3kEI6S/z6dCEfJX07hQ0bJ1910R8lfnsJLeAubsAvH7UsI9JtdPA/rs/CLgziJi7iJRsx3xFuOBmFweQhPYTkak6MxORqTo7lhAE7hQ3YekPOAnAfkPCDnATkPqFrPLnL5nMuH5pQ64pCjQalf3sImLEcTcjQhRxNyNCl7ImVPpOyJ5AElDyh5QMkDSh5Q8oCS++Fw+Q6XD90rdcRHjubIDj+yw4/s8MOjid9PeAhP4SW8hU34HdBtMgMm8R3QbTIDDuIkLuImVqNmFCbxPKwkuIhDOcXdARroMrvoxFqnr/M5Aklw+ZCRBF/Hc6DTDL9anWYXF5GOi46Ljq/nNOL1nEa8ntOoB6Q10m3TAlft9Zlc4AX/cgpj/t+LSaD2Lw/hKVznuT6RCtT+ZRN2YfjWycELfn2CFXjBvzyFMX7NHy/4l03YhUM4hQ8ZL/j1KVHgBf/yFF7CW9iEXTjIqPD6NKVazv641hYv+JddOIRT+JDxgl+fYAVe8C9P4SW8hU3YhUMYvnWOUOvFiVq/PISn8BLe79wlav2yC4cwzst3IZN4wa91S7zgX97CJoxj8WKuVeKi/vIQxvjli4v6y1sY42exy++GcAqL7xLfJb545b+8hLewCYvvEq+qaixVvbJfXMRNxHinuP+YItDmBrQfsSZbH9UlivvyEq7J1sdzaHW7v+rEINLR6Oh09EGcxEXcRLo5LVDE9REhGtiapzDmj5/fwibswnWS6+O5xEv55UPGS/ll+NYGRKHXR06JQr/swhi/NhcK/fIho9AvD+EpvIThWycahX7ZhUM4hc9jtLo1D+Easz62Q3vbqI/S0N52GVfwl4fwFF7CNef6+Aztbc0uHMIpfMgo9MtDGL5WvIS3sAm7cAjnO3dob7uMQr88hHFeVrFz3fCO/XIKHzLesdfHZ2hXu2uFW3CXTRjjly9ezC+nMMb/9gna1e7vmpwjk3Nk4mvia+KLF/PLISx7w2RvuPi6eFVVz9pidaV+MYhJxHjF1UdeNwDqgWKNm1iTTbALh3BNtj6Lq963+6v5Iw4iHZOOScc0ohODmES6HVqgiOvzwIMivuzCmH9tcBTx5dOcPxTx5TrJ39V+/vBqfXkJb2H4ejHGj+JDRqFfxvhZPIWX8BY2YRcOYfie4kNGoV8ewlN4CW9hE64xv8/oEp1u4/vcLNHp1ryFTdiFQ7jmfGrNUdBgFPTlITyFl/AWNmH41jlCoV9O4UNGoV8ewpPnDoV+eQubMM7L+hhFjHXDlfrlKbyEcSy1l1zWClfklw8ZL+anfPFifnkKY/zaJyHnKOQchZyjEN8Q3xBfvJhfHsKyN1L2RopvildV9ahlrnfeFwdxEjFe7cf6w5FRy1R32y8m8Zvs/D6ESzS3NQ/hWTyKV/9qPc2r0YhODGISz8N6z31xECeRboMWVcTz+/Av0SR3ef6EMf9dPIWX8Ba2Yit24RBOYfjWfBbGj+IlvIUxfha7cAin8CHvn/AQhu8pXsJb2IRdOIRT+JCriOeo816vynPU2lbhNqfwIVdBNw/hmvOoNfclvIVN2IVDOIUPOeBb5yiG8BRewlvYhJ3nLkI4hQ85cV5W8ea6pQm7cAjjWGovHVmrM4WXMMYv32PCLozxa58cOUeH5wjNcM1DeAov4S1swi4cwvRFk1zzV9UVJ9Uj12hEJ2K8bz9WI1w9DCerD65xEmuy34dwiS64ZhOuyc4avP6S8/5qEs/DRcdFx0XHur92cRON6ES6LVqgiCd4CW9hzH8Xu3AIp3Cd5O+Dt0RHXPMQnsLw9WKMH8UhnMIY/9tcE4V+eQhP4SW8hU0YvnWiUeiXU/iQUeiXh/AUXsI15qrzXq/Kc9XaonAvT+ElvIVNuOa8as1R0JdT+JDPT3gIT+ElDN86Ryj0yy4cwil8Hi8Uep27hUK/PIWXMM7LKs63buiIu4yCvjyEcSxezLVC51tzCGP88sWLORgv5pcxfhbzHKHzrXkLi+8U3ym+eDG/fMjrJzyExXeJF17Av5v6iY64+d2bT3TEXcYL+OUhPIWX8Ba2+1i1rIa4xiAm8TzEs8mAgziJdp85mdX81hhEHEwdJAoejIK/PISn8BLewibswiEsvi6+Ib4hviG+Ib4hviG+Ib4hvnhUYO1bPCqwsB7jeXEQ4VkF8p4gmOs9QTDXe4Jgol9ufjcVE/1yl5EGl3FAdWbwFMH6VTxFELiJdDx0PHTEUwSBp3HjKYLAQZzETcTCeHEKHzIS4PvEI9EX1zyFlzBOyCk2YRcO4fL9/kYmNxLguyufGwlweQnX+N+d7NxIgMsuHMIpfMhIgMvwXcVTeAlvYRN24RBOMhLg+2Qj0f82rdYWr/KXQziFDxmv8pcx51pzvMpfXsJb2IRdOIRTGL51jhAGl4fwFF7CW9h47hAGl0M4yTcAan+i0LFuKPTLJuzCNabXXkpZK7z6X57CNb6XL179L5twje+1T1LOUco5SjlHR3yP+B7xxav/5S0se+PI3jjie+hleGX/bhSn4ZX9+wAiDZfwl03YhUM4hQ+5Hi363erMekRa4yQu4iYa0YnxsJ64/d0bz+qWa5zEdR+jm/ae6pv2nuqb9p7qm/ae6pv2nuqb9p7qm/ae6pv2nuqb9p7qm7botui26Lbotui26Lbotum26bbptum26bbptum26bbptulmdDO61QXAd388q8OuEbsiik3Y7+Ohs/rrGpOILfHFArrrmsuxTlg9BfjiIm4ittsXCeiUm1FT/V7j7dQO/l7iGxfxG6NuYVbHXKMTvzWq+2fVRtd4HtZz+S8O4iQu4iYa0Yl0S7qh0L9PYBI9cjNq8ihorCIK+nII52P0ws3v05tE/9v8PoFJRxFfduEQTuFDxgv496lHoi+ueQov4S1swi4cwvC14kPGpf3lIVy+tVEdL+yXy/f7kCIdL+yXXTiEU/iQ8cJ+eQhP4SUsvvUIxbo1VH1zjUHMD+v81CMUgfUIxYvjwzqZ9QjFi4u4iUZ0YhCTeB7WIxQv0s3ohuKuW+5ojJtVg2iMm3Vt66jjy0N4CmOcLMY4dcZxvQ5GLV8ewlN4Cddq1+19tMI1u3AIp/Ah4+X98hCGb+18vLxf3sImDN86+3h5B+MluhLGUdGXTRi/W2uLir78nbaNHzmNeJraxUHE2F6MMaK4xjiF52E9AfHiN0ZdNlf7WuMifhutrsnrGWmNTgxiEs/D+SMO4iQuIt0m3VCj9WFLta6NVZ81VO/aH4/iJbyFTTiLvx1dTWl/XKu3p/AS3sIm7MJRXCu/U/iQ64K7eQhP4SW8heE7i104hFMYvnX2/ScM3zrpPoWX8BY2YRcO4RQ+5PgJi289dbheoqqjrXETv3Ne+V7tbI1B/HZYvSjWU9cuflXcOIiTuIibaEQnBpFuSbe6BF+jdmDV8ao71WhmWwM/E8IpfB6jaW3VCwKa01ZlP5rTmkM4hQ+5Xpmba7XrTj4a2JqX8BY2YRcO4RSG73ey0NjWPISnMHxP8Raum97fxsSj12p/JG6bAydxETfRiE4MYhLPw023eo21mkO9xl5cxG+r1NvYamBrdGLch7FndbU1nof1GntxECdxETfRiE6km9GtetdqM6JLrfYiutSwzaqf5WIQ82G8D4arLQ2fm1ZXWqMTg5jE9yltNaQd7JVqWrk4iYu4iUZ0YhDLrfYUPt4uxMfbwEEstzrH9bDEi59bfZRTnWmNTgxidfvU6tRfmBVWU1rjIE7iIm6iEZ0YxCR+e6culaqNrXEQv71T10DVw9a4iXYfxp7VwNYYxCSeh/UifXEQJ3ERN5Fuk271oVh9ulQPWaunwGf1o9VD3rMestZoRCfWCHVAuxuesjrRGjfRiE4MYjU8zcLzsDpOLw7iJC7iJhqx5lunBQ/9BybxPKxu01XnuCr2Yo1rhTWzOvh6ZOnFQZzERdxEIzoxiEmkW714ep2hevG8OInfmXf87CYa0e/D2LPazBqTeB6eH3EQJ3ERN9GIdDvtdn546H8WVt/ur7D6dkehEZ0YD6u/5LtLf6pprBp7T/WMNRrRiUFMYvUZ+4f1QfTFQZzERdxEIzqx3GZhEs/DejW9WG5ROInldgo30YhOrD/yqNXBH3kAz0P8kQdwECdxETfRiE6kW72anjriejUF1qvpxW/vnDqgejW9uIj7Poz9VBtZoxODmMTz0H/EQZzERaSb061eY63ORdWx1daoOrb6garji5toxP4roVMNYfWXM6f6wRoXcRON6MRvfb3qol5NL56H9Wp6cRAncRE3sdzqtOCh/8AgJrHcvnNcDWSNdZU4wVvYhF04hFO4rk6/NogzcFV8ua5Ov1fYg4esNcN3F29h+FqxC8PXi1MYvt95Ql9ZM3yzeArD9xRv4fL9XrQO+sqay3fVMdZ74ebyXXWMdb+quXxXHSPeI18u31XHiPfIl+Fbx7hcGL51jHjvfBm+dYz7JwzfOka8p768vgct15D1TbMXjejEICYRjrVKeDd9eQiXY2UfutGat7AJu3AIp/Ah49305SEsvi6+eNdcryjoOlv12oCus7XruPDu+PIUXsJbWOYfMv+Q+YfMP2T+KfNPmX/K/FPmn7JuKb4pvnl4jHhfjGM8Mv8j88f75csuHMIy/8P5owOteQhP4SW8hU3YhUM4hcUXiVHHiEez4RjxaDbMGZ1nzSl8yPMnLPOfMv8p858y/ynznzL/KfOfMv8p81+ybkt8l/giAXCMqHQc45L5b5n/HsJTeAlvYYzvxS78VXuFd/WkNZ6H9aTUixg7ijFGFtcYNVw9//TieVjPP61Erqazxkn88qkivjrOGo3oxCAm8Tysb56/OIiTSLeg263gL8nQcrbqUggtZ6uuItBy1ryEt3CNU5caaCFbdSmBFrLmKbyEt7AJ12rXdQhayJpT+DxGC1nzEJ7CSxi+q9iEXTiE4ZvFh4zX/LoqQZtZ8xRewlvYhF04hFP4kKf41tcSVCFV91njIn7nvKqrWs8anfjtsCrL6jtrPA/re+QvDuIkLuImGtGJdFt0Q33X1RkazJbX5FHHXvNEHV8O4STj9fl7H3nwCLXldcbxOnzZhUM4hQ8Zr8PfZ8AHPWXNU3gJb2ETduEQhq8VHzJety8P4fKNOvt43b5cvlHrgNfty+Ub+N3yjVqf+qICbPD6ogJgfVHBxUGcxEXcRCM6MYh0S7ohMaKqCYlxeQov4S1swi4cwil8Hm8kxvdJ8NlIjMtTeAlvYSOj0r/PLA/ayZq3sAm7cAjXPL8/XTt4zNplvPZ+n4MetIc1pzB+/turaA9rHsLf+avAqO6wxk38zl/VX7WGNQaxzl8ddH33ALC+e+DiIE7iIm6iEZ0YRLptuuGKO+sMoqJPTR4VfWqeqOjLKXzIqNxTK48KPbXaqNDLIZzCh4wKvVyrXXcL8JC05iW8hU3YhUM4heH7pSWaxJqH8BSGb519vF5f/nz3r9atrqz3Dz8fwil8yFWtzUN4Ci/hLWzC4ltfWFBBW89ZazyN9Zy1+Dp3Tj1nrXESa0N74SYa0YlBTOJ5WF8vdHEQJ5Fug24Dq/ftKDxVbdf7SDxVbf/qZ+YUXsJbGOPUcS2Mc4qH8BRewlvYhGu1v7/mOXh6WnMKH3JddzcP4Sm8hOFbJ2ubsAuHMHxn8SHXV71XrFafV6MTg4gxdvEh+094CE/hJbyFTdiFQ1h8XXxDfEN8Q3xDfEN8Q3xDfEN8Q3wDvrXXEr61d3IIT+ElvIVN2IVDOIUP+Yhv3VfHqa376hcX8btbiT1d99UvOvG7N4oCqCaUi6exHrzWOIiTuIibaEQnBvG5ocdsf3+fdtBLtr+P8Q56yfb351kHvWTNIZxkVHzdB0Rv2K57f+gNa3bhEE7hQ0YS1Ps29IY1T+ElvIVN2IVDGL6j+JCRBJeHMHxr3ZAEl+GbxSbswiGcwodsP+EhPIWXsPjiT0dq2fCnI8Agfue87rtWZ9nFuvt+8dthOIF19/3iIm6iEZ0YxCSeh/Ul2RfpFnRDJtRdWvSS7boDi16yXXdd0UvWPISncI1Td10dtVx3Wh21DEYtXx7CU3gJ12rXHVj0lTW7cAin8HmMB6k1D2H4ruIlvIVNGL5ZHMLw/dYwUN2Xp3CNXx/IBar+co1f700DVX85hGv8epNd7WfNeP2/PISn8BLewibswiEsvlN8l/gu8V3iu8R3ie8S3yW+S3yX+C7x3eK7xRcpUfcY0OXWvIVN2IVD+OuJrre4aGDDdkYDW/MWNmEMacXc8mhUax7CmLIXL+EtjCnXVsVlwv3dEE5h8Q3xDfGNKbyEt7AJi2+IF2KgblMGYuDyEq4xrdYT8XDZhUO4xq+bg3gm22XExuUhXL51cxDtarve6qNdrTmEMX6dL8RDMZ691jyEp/AS3sLwtWIXDuEUPuTxEx7CUxhjRjF+91tbtKg1D+EpvIS3cM253o3j2WvNIZzCh4zSvzyEp3D51pt5PHut2YRdOIRT+Lxzlyj9y0N4CqN2TnFw3fDif/mQ8eJ/Gccyi2WtUOOXXRhzLl+8Rbh8yKj9ul2I7xy9v+tyjlzOkYuvi6+LL2r/cgrL3gjZGyG+IV6o67oEwOPYmlP4kHEJULcFEzVe1zh4HFuzCeP8enEIpzDWqtYfNY7fRY1fnsLie8T3iO9x4RBOYV7w4nFszVMYezWLXTiEa8x6vcBj2i6jri8P4Rr/+yOYg8e0NW9hEy7f72+TDh7HtqPmhtq/PIQx/i5ewlvYhF04hFMYvt95x+PYmofwFF7CW9iEnYy6/v4Q5+BxbLtum+JxbM0m7MIhnMI156w1R41fHsJTeAlvYRN24fLNOkeo/cuHjNq/PISn8OK5Q+1fNmEXRu18+YZvGL3rhtf0y0t4C+NYai+FrBVqHIwav4w5ly9e3y8vYaxV7ZOUc5RyjlLOUYpviu8RX9T+5Skse+PI3jjie57X943OuKd1xVAxVSwVOCCDwI2kA5EqjggU+/f3QJ8YKqYKrFtAbB3AVLgKncHQGQydwfypGCqmiqVCZzDVFAWfWBBUfIuhoob+bop/YqnYKkxF+Xw3xj8RKlLFEYF8+G40fwI+C2KrMBXw2RChIlUcEciJFkPFVIEZYIcgK1qYClcRKlLFEYHEaIGhsV3wmn+w8AiBFkcEXvZbDBVTxXcI9sMpqYh4wlS4ilCRKo6ICpAnRgmcxoqQJ5aKrcJUuIqQE4wgaXFEIEpaoACxrxEUd0VxldAiVKQKHFxtPjz+7S4i+vqe2CpwCAvCVYQKLOKGkNOI9r4nhgqdwdAZDJ0BAqWFqwgVqUJnMNUUvTpY0dvG18JVhAocXG3l27KH+rk9ey2WCuwDhzAVrgKLGBCpAxwR+6dCZ7B1BltngG6AFqbCVYQKnYGpqWGTYxFtqzAVdXDjBxEqUsURUUlhY0AMFVPFUlEzGNjKDh+cLE8VR0TAB8cTQ8VUsVRsFabCVWAG2CEIlBZHBAKlxVAxVSwVWwWGxnY5GAALf6aKpWKrMBWuog5h4pRUbDxxKNDb98RQMVUsFVtFzWAOCFcRKlLFETF+KgZPMPr/nlgqtgoU4IE4XFE0/j0xVEwVOLgJIYuILr8nUgUOATNYPxVDBRZxQ8hpnGurMBU6g6UzWDqDdUTsn4qhYqrQGWw1vb1DDnFEIDZaDBU4OIN4jUWfcBWhAvvgDnBEIDZaYBHxO7e/6IqlYqvQGbjOwHUGniqOiNtndMVQoTMINUVSTCwikqLFEYGkWCgZJEWLqWKpqB2yUBi49GjhKkJFzWBhKyNQFnYiAqXFUgEf7FEESgtXESpSxaFAC+ITmIFBTBVLxVZhKlxFqEgRSIoVEBggIVxFqEgVRwRio0Udwv5BTBVLxVZhKlxFqEgVNYNdpxGPt3tiqJgqloqtwniCFwKlRahIEciQeSCWrOjeKkyFq8DB1ebD97z2ItpQMVXgEDADXIe0MBVYROwq09NoehpNT6PrDFxn4DoDXIe02Cp0I7luJNcZuJoiKQwTRctTi63CVODgsJXR3mQQ+VMxVGAfOMRSsVVgEXF+8PcDPUCoSBU6g6MzODoD9jJ/YqnYKkyFzuCIKXoPbSfEVLFU1MHZD8JUuIpQUTvEBsQRgUuPFkNFzcAmBHwWhKsIFfDZEEcEAqXFUDFVLBVbBWaApUKgtAgVqeKIQKC0GCqmCgwdEBgAC49waDFUTBVLxVZRh+A4JYiNFqEiVRwRCJQWQ8VUUTNwnEYESgtT4SpCRao4coIRKC2GiqkCBXggQlYU72VaHBF4L9MCB4fNF7qIeMfSwlXgEDADXIe0OCJwHeLYVamnMfU0pp7G1BmkziB1BrgOaZEqdCMd3UhHZ3DUFJcejm2JSw9cdW5cerQ4FIZLjxZDxVSxVOBvZRLCVLiKUJEqjgj8HUSLoQI+CwI7MSBcRahIFThSjIZAaTFUTBVLxVZhKnCkGyJUpIoj4v5t0xVDxVSxVGwVIQuy9EiRO1cgd1oMFXqkW49065FuPdKbO1eEilShR2p6pKZHanqkpkdqeqRmKnStTdf6/pUjFsT1SJEuLZaKrUKP1PVIXY/U9Uhdd1XorgrdVaFHGnqkoUcaeqShRxp6pKG7KnStU9f6/kkkFiT1SFPrJ7V+Uusn9UhTj/TokR490qO76uiuOrqrjh7p0SM9eqRHj/TIkfrvp2KomCqWCr9/lP5xCKfwId9v1D0Q/QfrH29hE/4OZOANCfo6n0gVp0S9QuI7dO/v12MWmqeweE/xnuL9vlTz4xBO4UNe4rvEC9/Vgzch98tzW4QKHBAWFt/XcwW+sKfFUDFLGMRSsVWYCszAIeCDs3O/VvOKoQI+OJ77zZpXbBWmwlWEilSBGWBL3C/evGKomCqWiq3CVLgIfJMPLqbvV+niYvp+l24LU+EqQkWqqEPAhfH9Rt0WQ8VUsVRsFabCVWAGOI33+zivOCLuN3JeMVRMFUtOML7nq4WpcBU4cxWA9xt2saL3K3ZbLBVbBQ7OIWQRA9/mdQVyogV8AmKqWCrgkxCmA7iKUKEzGDqDqTPgd3V+YqpYKrYKncFUUzyXBWuIB7NcnsJLGMMeiLgPlvk4hQ8ZeYF3H2j7fGKqqLnjbUXgGzrv75uwC4v3Fu8t3u/LOz8ewlN4CYuviRdiAe847vfxthgqcED4HcRCi63CVNR2wIX8/VreFqniiLhf6ol9e7+9E9vufn3nFaYCPtiQ9xs8r0gVR8T9Es8rhoqpAjPAlrhf8HmFqXAVoSJVHBH3az6vqKEDWwTf8xdYeCRBi0Nxv5i3xVAxVdQhxIbYKkyFqwgVqeKIuN/6eQVmYBBTxVKxVZgKVxE8wXga4hNHBNKjBc7cgjCu6P0e3xahIlXg4Grz3e/svYuIrwdssVXABzO4X/l5RaiAT0Loadx6Greexq0z2DqDrTPgd4J+wlWEilShMzA1rZzAnWB8y2+zC4cwhoXAY9Z+4Cm8hGvueYWpcBU198SJqac69e8fMp7adlm8Q7xDvN+XhH5swi4cwuKb4oVYSKwYYqGFqcABoT4QCy1SxRGBWECn1/363xZTxVKBGWDf3m8Jxba7XxN6xaG43/aLnqn7db8tpoqlYqswFa4CMzgQqeKIuF8lesVQMVUsFVtFDY12rPvtv2jHul//22Kp2CpMhauoQ0DDxP0S4BZHBL4GuMVQMVUsFVsFZmAQriJUpIoj4n7H6BVDTjDSo8VSsVXgzC2IIyt6v0b0iqFiqsDBOYQuIt6LtEgV8MEM7leLXjFUwAe7yvU0up5G19PoOgPXGbjOgN89+iful49eoRspdCOFziDUFM9lxUnAg1nBeDLr5SGMYbGN8RxWrB8exHo5hL+5T/SvoUO1Bb60pMUogRODR7Li9/FM1stbWLyPeB/xfl9G+vFpHnj8Y/MQnsJbOGpyEyJVHBH40oPqPxtoW31iqlgqdgmDMBWuIlRgBpjb/TbSgJgqlgr4JISpcBWhIlUcEfi6gxaYwYGYKpaKrcJUuIpQkSLwhUbVezXQnFpf+vgJVxEqUsURga81alGHMHBK8MVGLZaKrcJUuIpQkSowA5zG+z2mVwwVU8VSsVWYnGB8zVGLUJEi8NUJ1TA5fvfbSrGi9+tKrzAVrgIHh82Xuoj4RoQWUwV8MIP7FaZXmAr4YFelnsbU05h6Go/O4OgMjs6A33H6ia1CN9LRjXR0BkdMB5/F/omlYqswFbjjeyDqrioWcfCJ7J8YKuq+7veHLp9YKraKurNc7wTGfQJlDxAqUoXOYOoMps7gPp39iqViqzAVOoOppvgMN7CI+Ay3xVKBg9sQpsJVhIq6bR5Ya3wYcwU+jGkxVGAGmBs+cqn3PAPNqU+ECvgkxBGBj3pbDBVTxVKxVWAG2CH4qLdFqEgVRwQ+6m0xVEwVNXRiu+CzlMTC47OUFkPFVLFUbBV1CIlTgo96W4SKVHFE4KPeFkPFVIEZ4DTiU5YWpsJVhIpUceQE41OWFkPFVIEztyBCVhQf9bY4FLdttQUOziFkEW9zagtXAZ+ASBVHBDpE6i3NuM2pd4AxVSwVOoOhMxg6A3zU2yJVyEa6PawtdAZTTZEUeDG6D6dskSqOCDSF1PuoMe/XuGyIrcJU1CHUX8yM25zaIlXUIRycH3S73wH49S+fmCp0BltnsHUG/A6YT4SKVHFEmM7A1BRJcbCISIoWoQIHd3/niEBStBgqaofUu7KBttUntgpTgRlgKyNQDnYiAqXFUAEf7FEESoutwlS4ilCRKjAD7BAESouhYqpYKrYKU+EiKin8h+1SFxiONwJoTn3CVLiKUJEqTok6JWhOfWKomCqWiq3CVLgKzMAgUsURMX4qhoqpYvEE42mZT5gKV4EzV7WNttW7omhbfWKp2CpwcA4hi4jm1BbrpwI+mMGaKpYK+CSE6QCuIlToDJbOYOsM9lAxVSwVW4XOYKupYegDUUPXn7UMtK0+sVRsFabCVYSKugy/Zw7vZa7Ae5kWQ8VUsVRsFaYi/8FXRX98yHjwzuUy2VgAflHzJ5aKrcJUuIpQkSqOCLzfaaEzSJ1B6gxSZ5A6g9QZpM4gdQapMzg6A7zfwQs9WlufWCq2CpxqFA++BhIvpnjC5hV4xOYT2FITYqpYKrClFoTpAK4iVKQKncHQGeBuSoupYqnYKnQGQ03r8sTxnhytrU9MFTg4h9gqTIWrQL0ERKo4IhBHLTCDhIAPJorQaeEqyqf+nGnga5+fOCIQOi2GiqliqagZ1N82DXTAPuEqQkWqOCKQTS2GCgyN7WIYAAtvR4T/VAwVU8VSgUPAKXFT4SpCRao4IuKnYqjADHAaY6nYKkyFqwgVKSc4joj8qRgqsEcNwmVFM1SkiiMCVzEIVXSz9iLiKqaFqYAPZoCrmBaponzqg6eBPtc7APpcn5gqloqtwlS4ilCRKmQjoc/1CTW93zjrEK4iVKQKHFxtZTSwTrw1RAPrE1tFHUL9odNAA+sToaIOof7AZaCBtQfAfdcWQ4XOYOkMls4A911buIpQkSp0BltNkRQLi4ikaOEqcHBYNyRFiyMCSdGidsiCD65iWiwVWwVmkBDwORBHBAKlRfls7FEESoulYqswFa4iVNQMNnYIAuUKBEqLoWKqWCq2ClOBobFdEgNg4REOLbYKU+EqQgUOAacEsXEFYqPFUDFVLBVbhanADHAaESgtUsWhQDPqE0PF5AlGM+oTW4WpwB6tHEUP6l1RPFr0ialiqcDBJYQsItpQnzgicB2yMQNch7SYKsqn/jBo4KmkbwBT4Sp0BlNnMHUGuA5pMVRMFUuFzmCpKS49qo9voCXVq6FtoCX1ialiqdgqTIWrQFZhQfART4sjAh/xtBgqpoqlYqv480nHnqivpm8+5C9NHuMosSG+yMhqBxvVc/rYhessGVYPedHiiEBeGEy+vOjf/+Li8RIW7xDvEO8I4RQ+5PwJi2+KF9LDrggVqQIHhPpAerQYKqYK7A1UAdKjhalwFTWD6l8ceEipV//iQDPqE1NF+VS/4EAz6hOmwlWEilRxRCBKqrNroE31ialiqdgqTIWrCBFID+xDdJk6zg+6TJ9wFaEiVRwRyIhqKxx4NOkTU8VSsVWYClcRKjCDA3FEIEpaDBVTxVKx5QQjSlq4ilCBPVqvInhaaa8oLjpabBWmooZGeqA/tRcRFx0thorywad36E99YqsoH3xChv7UN4CeRtfT6DqD0BmEzgAXHS2WCt1IoRspdAahpl9O4A/iRnWkPsahYbviYqSFqXAVoSJVHBGIE3yqh6eZPjFVYAaYJuKkhanADDZEqEgV5zu22mzV0Pp4CE/hJbyFTdiFQzjJo8af4CmMowuIrcJUuIpQkSqOCFyn4ONDPBn1iamiZlBdkAMPR33CVGAGCREqUkWtb53gekLq4yE8hZfwFjZhFw7hJCNf8CkdGlmfWCpwfFh75EsLV1HHl3foVFErjA808djUJ4YKzMAgloqtwlS4ilCRKjCD2vV4sOoTQ8VUsVRsFd86401rdb3iGSujul7xaI1RXa+Ph/AUXsJb2IS/8zixwt91zOMUPuTvOgZPaRn1ReOPp/AS3sIm7MIhnGTkDz6KRefrE0sF1g57HfnTwlXg7KHAkD8t6uzho0v0xD4xVNQM8KEmemKf2CpMhasIFakCM6glRk/sE0PFVLFUbBV/M9h4Ha3+2I3X4XpKaz3Q9vsE/ic8hKfwEt7CJuwfJziEU/iQv/zZdnkIT+ElvIVN2IVDOMlb9s/ZU8VSIfvnbFPhKmT/nJ0qdP+Y7h/T/WO6f0z3j+n+Md0/pvvHdP+Y7h/T/eO6f1z3j+v+cd0/rvvHZf+47B+X/ROyf0L2T8j+Cdk/IfsnZP+E7J+Q/ROyf0L2T8r+Sdk/KfsnZf+k7J+U/ZOyf1L2T8r+Qf7gE1U87vWJpWKrwNnbEK4iVKSK7/jqNXNWQ+3jITyFl/AWNmEXDvINl4AYKqaKpWKrMBXfAUZ9fjzRWftEqjgi6hIo6vPWiZ7bJ6aKVQKzrkugJ0wFZmAQmIFDYAaY6Dwi1k/FUDFVLBUYIEvsnwoMcCCmihqgPvGd9UDYlff/MGEXDuEUPuRKkRhYy8qKGFixLyvqS88+DuEU/kY6+OUvJx4P4Sm8hLcwjHEO6j3UE3UO6nO/iYbZJ46IwGHgvH2BUF9h97HLokWoSBVHRH2oEwPnvT7UeWKq0PNR75ueMBU6g9QZHAyN836miqWihp5Y8QqEJ1xFqEgVh6K+r33UN+p+YqiYKpYKzCAgTIWrwAwORM1gXdMjojLjiaFiqlgqtgpT4SpqBnWtO9FW+wRmULsFbbVPDBVTBWaAg0NmtDAVriJUpIojApnRAjNIiKkC+wArujCDK0yFqwgVKQI5Ux+CTDTcPjFVlGl9hjHxnNgnTEWZbixvXc08UaYbi1hXMy3spwIzMIipYqnYKkyFqwgVmAF2rx0R/lMxVEwVSwVmgC12AwlrcAPp/tgRET8VQ8VUsVRsFcboR8fuE6EiVWAGmOhNsSuGiqliqdgqTIWrCBEHK4qtjEhrMVUsFVtF+Rg2HyKtRahIFYcC7btP1Azq/vzEU2efWCq2CszAIFxFqMAMHOKIQKS1wAwSAjM4EDUDx0QRaS1MhasIFSniCy4EdD2AtnERN9GI/hC5UfdYJ9pvn0gVf4c6sVJfhDQO4iQu4iZi7NowaJ+Nuj0+6xGwiNvqpG1cxO8y4f6sEZ0YxCSehyh5x3Ao+RZ1chxnFyXfYqvA7LFmKOx6uzHROfvEN38cIsrasQVQ1i1MhasIFfnWLrj6ydVPrn5y9ZOrj4K9S143ZXvJUbCOLYmCbVHrEdheKNgWdQyB/fAV7L5jOTGISTyN1S7biLEnRM007v/z3by5mMTzcNQdI+AgTuIibqIR4bchQkXt+ropPfEQ1xa4YmiB2TsERguIUPHNfwAPlw8dr08MFVMFXBJiqzAVztOEjtcnUoXOYOsMts5g6wy2zmDrDLbOYOsMts5g6wy2zsB0BqYzMJ0BLgRa7K4vtMXeWkFb7BOhIlUcEXitTswMJd1iqPhKC7/xlXTjJhrRiUFM4nlYhXxxEOmWdEu6Jd2Sbng1TqxMfRbzxBGBsk/sdJR9i1ryxCqj7FtsFabCVYSKVIEZVEGgdfWJoQIzMIilYqvADBLCVYSK72VgAM/DLzgaB3ESFxFjH4g6BryfRIdq4G0rOlSfmCqWijqGuqMz0aH6hKsIFani2zmYDMKj7vRM9Kc+MVXA3yG2ClMBfywbwqMF/K/pEYHwaFFv9IGTuIibaEQnfmPnD6tbxZ+4s4Nnrybu3+DZq0+YClcRJbAIVf5PHBF1SfDEUPHdGMNY3wVB4yZ+L36Y4HejojGISTwP6wbnRfhhS8dUsVS4CsweZy1/Kr67eli9uml5cRGxcjitaSpcRa3cuL+TKsob73jQlfpEHQneB+Db6hO3bdCvmrg5g37VxM0Z9Ks+4Sq+l35YfhnSeBrRj5p4f4Su06xG7Ymu08T9EnSdJt40o+s05x2gjqS6nCcaTRN3Rerr5ym2ij8fv7/hxHhYiZDVtDvRYpq4BKsWU1z5V4NpY821PoObaC9NXI6jvfSJI2L9VNSq454L2kufWCq2ClPhKkJFitjwwaJujIZDqNf1XFhUFDCCE62iTwwVU4WpwGhYbpTpFShTXMaj7TPxrgAtnLmwiH5ExE8FZoB1Q6m1WCq2+ITp/+MqQkWqOLI6KM8WQ8VUoWuAUryHjVJsoauDgrt7DQWHe0jo50zcNkI/5xOmwlWEilRxKNDPmYhr9HM+MVXUDBA66OdMBB76ORP56ShVvA9Ac+ctF7+lesURgVLdVywVW8VXZAF0YjxEqeIeEZo3E7d4qnnT7n83IuZ6f7nmurEmKNUWRwRKtUWt1sYCoVRbLBVbhalwFaEiRaBUEZPo1Uy880ATZuKdD1otE2+k0Gr5xFKxVXz5h+WoL36/GMQknof1xe8XB3ESF3ET6eZ0c7o53ZxuQbegW9At6BZ0C7oF3YJuQbegW9It6fbVM95hV+dlYxCTeB5+L6iNgziJi7iJdDt0O3Q7dDvPrfouGwdxEhdxE43oxCAmkW6DboNudaGcuImFh3Am7pyhPTLxuoomyMQNDPQjJm7boB/xiSOirk3R/zqrHxFv96obsXERN9GITgxiEs/D7+WukW5GN7zQ4QZR4IWu/5+/UXCjoFoQGwdxEhdxE43oxCAmkW5Bt6Bb0C3oFnQLugXdvlrBbYDqNWw8D79aqS60Wf2HjZOIFbqiVgg3DNBJmHjzj07CJ4aKqWKp2CpMhasIFalCZoBnYz4xVGAGE2Kp2CpMhasIFaniiBg/FUOFzmDoDIbOYOgMhs5g6Ay+22B4/17dhhe/F8/GQZzERcTYCwLHUBVaDYN5cRAn8RsFv/i9LDYa0YlBzId4McTtOXQDJnYrugGfcBU4/oRIFUcELm9bDBVTxVKxVZgKV6EzMJ0BLolxRwrdgE8MFTUD3OxBN+ATNYO7OvVRe97Fro/aM7FUdZv7iVSBGWA6uMBugRkciJoBbpTcZ2QCN9GITgxiPsSlM+6h4ImYibYDPBEzcasDT8R8IlRkCYM4IpAmLYaKqQI+WAQkAzpV0OOXuFeCHr8nhoqpYqnYKkyFqwgVmMGBOCKQDC2+GRzcUUGP3xNLxVZhJQaEqwgVfzPAClT338V6aP/FP2+sV7X+NS7iJhrRid9ewPHWw/ovnod1gX1wvwcPyHxiqlgqXMUpUZsMD7t8AqNtiKliqfhW7q5IRUqzC4dwCh9ypUnzEJ7CS1h8TXxNfE18TXxNfF18XXxdfF18XXxdfF18XXxdfF18A2ttEEPFVIG1xoaKrcJU4Jxiz0eo+PwPbkvhO99b1FvzJ4aKqaJmgFtZ+OL3J2oGuK+Fr37H8zcnvvsdz6WceLbmE0fEwQxwCGeomCpq+WFTlzHNJuzCIZzNC98Ff+rG2MI3vp+6Mbaqu+/r24VwFaEiVdSR1I2xhda/J4aKqWKpqEMx8DeBgYGROBNzRuLUza6Fxr8WeCAvfur+/Tb4+42Foe4DqsCHjNi4v4DYaDFVLBVbhalwFTXh9kkVR8T9C23wFF7CdVQ4Q3iS5mUXht2CSBVHRKXLWVjsipcn6oAX1rEC5omt4vOv+1MLj9FsDuEUPmR8/dDlITyFl/AWFl8XXxdfF18X3xDfEN8Q3xDfEN8Q3xDfEN8QXyTLwtZEsrQYKrDaOL9IlhZbRW2vhUpFsrQIFakCM8C2QLJs7DV8tyLOI75a8fISLvuNg6lgecJVhIpUcSjQV/jEUDFVLBVbhalwFXUCFjiFDxnP6rw8hKfwEt7CdeId7MIhjAOfEEfE/KkYKnDgMJlLxVYRIhBTdYtyoTHwbMwAMdViqdgqMFptEHT8nbpJuNDx98RUsVRsFaaiTorhpCCFWqSKIwIp1GKomCqWCswgIEyFqwgVmAEW3o4IxwywvD5UTBXfDKofbN3vj79swi4cwknGdU2LOhLD2cTVi+E04eqlRahIFTgSnE1kTIuhYqpYKmoGjoVFxrRwFaEiVRwRyBjH8eDqpcVUsVRgBjgexEwLV4EZYNaIGce2Q8xAoNfv1B2ihV6/J2oGdUtmodfvia3CVLiKUJEqjghc97QYKnQGQ2cwdAZDZzB0BkNnMHQGQ2cwdQZTZzB1BlNnMHUGU2cwdQZTZzB1BlNnsHQGS2ewdAZLZ7B0BktnsHQGS2ewdAZLZ7B1BltnsHUGW2eAZKubXAtPAX3CVYSKmkGCDxm5dnkIT+ElvIVN2IVxgJVH6E08dddsoTfxCRyGQZgKVxEqUsURgTdlLeDjEHpaQhcFEdXiiEBEtcBpCYipYqnYKnRjpM4gdWOkbozUjXF0YxzdGIioOzdEVAvdGEc3BiLqzg0R1SJVyAzW76diqJgqloqtwlTI1ly/UJEq5CysG1EBMVRMFToDjailEbU0opZG1NKIWhpRSyNq3YjC3OZUsVRsFaYCM0iIUIEZHIgj4kbUFUMFShRDI6JabBWmwlWEilRxRCCi6rbrQpflE1JmaKw8dUN2obHyCVcRKmTzobGyhempNz31pqfeloqtQk+96ak3PfWmp9701Lueetft77r9XTcfgqu6/P5EqEgVWF6sG4IrMWtcdbWYKpaKrcJUuIpQkSIQaYnNh0hrsVRsFfDB5kOktQgVqQLXfThsRFqLoWKqWCq2ClPhKvBOpia671u4K4aKqaJ86jb/2veN2oEIFamifOpe/sIDRJ8YKsqn7vIvPEC0BxhbhanQGQydwdAZ3PdsEPOnYqiYKnQGU02RO3jPhgeItrhv4K7AwW2IqQKL6BBbhamog6ub6wsNmk+kCiwv5obcaTFUTBVfi/Hvh9NYf6vxhKlwFVECJ+uLmu8viSGGiqkCPlgQ2ypMhasIFaniiHDMACvqQ8VUsVRsFabCVYSIwNA4JYEBsPBhKlxFqEgVR0TiEHBKcqiYKpaKrcJUuIpQUTPA7dbq6Hzi/FQMFVPFUrHlBB9T4SpCBfZoZUi1cvaK1qNFKbYKU1FDV+vpqlbOXsR6gCjFUIFDmBBLxVZRPnWPf1WbJwcIFalCZzB1BlNnMKeKpWKrMBU6g6mmi3fA0frZvIS/NBlYM3wZ3GUXrsNqkSqOiI29Ae89VEwV5X7AW9iEXTiEU/iQ71fFgYfwFBZfE18TXxNfE18TXxNfF18XXxdfF18XXxdfF18XX8diowz8iIifilpsfO5SnasU2MUYDWHUwlTUHsLnLoYwalEzwIcthjC6AmFUrcnLEEYtpor6wAKD4SHql03YhUM4yQgbfLZjiBR8DGKIlImlQKS0CBWpoo4En7VUzyrFUDFVLBU1A9wTdiRPC1cRKlLFEYFMws19Rya1mCqWCswgIUyFq6gZ4E6/I5Nwp9yRSVcgk3Av2pFJLWoGuEZxZFKLrcJUuIpQkSqOiPVTMVToDJbOYOkMls5g6QyWzmDpDJbOYOsMts5g6wy2zmDrDLbOYOsMts5g6wy2zsB0BqYzMJ2B6QxMZ2A6A9MZmM7AdAamM8BVUvVIL8dVUoupYqmoO+DYR7gDftmFQziFDxnfM3N5CE9hHKBB4DAc4ohAOOF2vyOcWkwVS8VWYSpcBXxQXUdPy9FFQUS1MBWuAqflQKSKQxGIqBayMeI3VSwVW4WpcBWhIlUcTjTGT8VQMVUsFTWD6jRfgYhqUTPAOQ1EVItUcUQgovBhSSCiWkwVS8VWYSpcRajADAziiLiplBAwdYilYqswFS6ncYWKVKGnfuupv6l0xVShp15TKTSVQlMpNJVCUyk0lUJTKTSVAtlTfzCxAtnTwlVgebFuyB7DrJE9VyB7WgwVU8VSsVWYCldRPo7Nh2unFkPFVFE++DArcO3UwlS4Clxx4LDvtdMVR8S9drpiqJgqloqtwlRUDw+2aN0Luly3gpqrdQs/XzeCmpcwjhFVgMhq4SqqfQgbGu1Dl8/jRF7hQ71EXrWYKura+AfewibswiGcwoeMr/W+PISnsPgO8ZU2I7Q8N4vvEN8hvlN8p/hO8Z3iO8V3iu8UX+QSPvRM5FKLI+K2K22IoQKrHRBLxVZR/gvswiGcwoeMbwC/DIeEwKY5EHUk+PQ1ETUtjghETYvaN7itn7gAarFUbBWmomaAz8gSIdQiVXxHg3cWaJluHsLVg4Vdi++/uryFTdiFQziFDxnf6Ht5CItviC/yCB/yJfIo7v/jKkJFqjgikEcthoqpYqnYKnQGuFzChy6JG0stUgVmgPXFjaUWQwVmgG2ES6wWW0VQoMka75PQY908hZfwFjZhFw7hOo7qpV8Hl0lX4DKpxVAxVSwVW4WpqJXEB0EHl0ktUgVmUC9BB5dJLYaK2ksbvIS3sAm7cAjD+4ojAu/hWsAbK4YgarFU4OgNwlS4Chx9QqSKIwJXS/hg5CCO+v/5GwA9jdVj3Vi/fLCOSJ8WQ8VUsVRsFTV93Gc/SJ8WoSJVYAaYJC6BWgwVmAEODJdALbaKbwYDd+Cr55oiVKSKUwKbpC6OBu6ZV3f1vO3B1V1NYSpcBXwcAj440oAPJlqRc1/nqruaYqpYKmoGuKlb3dUUriJU1Azw+lQN1fPe+qyG6u/5gBAwxUQrZQZuoVVHNYWpcBWhIlWcJ3Y9Y/V7jCDEUMHNun9479bCVLiKUJEqYLpKjJ+KoaIOu+p6V/c1xVZhKlxFqEgVR8T8qRgqdAZTZzAxg4AwFa4iVKSKI6KiCd24u1q6KaaKpaJmUH9Ov6ulm8JV1AwWZl3RNCpddrV0P7ExA4cYKjADTHQvFVuFqXAVoSJVHBH2UzFU6AxMZ2A6A9MZmM7AdAamMzCdgesMXGfgOgPXGbjOwHUGrjNwnYHrDFxnEDqD0BmEziB0BqEzCJ1B6AxCZxA6g9AZpM4gdQapM0idQeoMUmeQOoPUGSD5FvIgjwjEYIuh4rtEqEv2/bsPmgZvYRN24RBO4fN43Cfcg3GAVyDWrqjDqHvWu5q4KY4IxFqLoWKqWCpqueqm9x5DTsuYsihjDhVTxVJRp6VulO+BiGrhKkJFqqnOYP1UDBVTxVKxVZjM7UbUFaEiVRyZGyKqxVChM9CIGhpRQyNqaEQNjaihETW2bM1hehZMz4LpWUBE3bmZngXTs6ARNTSihkbU0IgaGlFDI2poRA3XfXAj6go9C65nwXUfIKJa6FnQiBoaUUMjamhEDY2ooRE1NKKGRtQI3QehZyH1LKSehdSzgIiqe4F7IKJa4CxsCFcRKlIF1gBzQ0S1GCqmiqViqzAVrgIzwCHgSq1FJVUdQXWId1BMRFXdad3VIU5hKlyFnOz5SxVysuf4qRgqpoqlQk72HKbCVYSKVCEbfs6fiqFiqiifun+/8VzYJ0JF+RjWDfFmmDXircVQMVUsFVuFqXAVIQJvAQNnATfMW0wVS8VWYSrgsyFCRarAkdaV3kSItRgqcKQOsVRsFabCVYSKVHFEIMRaDBU6A9cZuM7AdQauM3CdgesMXGcQOoPQGYTOACFm2GIIMcPCI8RauIpQkSqOCIRYi6FiqlgqdAbVorBx4qpFoTmEvwudjWOpe++X695783cHCiGHvvLmJbyFTdiFQziFz2P0kzcP4SlcK1ufcuyFZKon5+yFZEICLiRTi6FiqsBoBoHRHOKIQMq0GCqmiqWizkbdTt4L+dPCVYSKVHFEIH9aDBWYAVYH+dNiqzAVmMGBCBX1V4eXD7lulDcP4Slc5oFTgyurwKnBlVULVxEq6vBxWMikwHyRSS2GiqliqdgqTIWrCBWpQmeA5LnHhqwI7BpkRYuhoj76x26o29/NW9iEXTiEU/iQ609Qmoew+Kb4pvim+Kb4pvim+Kb4HvE94nvE94jvEd8jvkd8j/ge8T30Rdd2MxY6IKaKpQKbICFMxWeOfXefqXs5hQ8ZsYHX1Y3YqPvcG23ZdTN7oyu7OYW/kerW8t732XzgIfwtX8LtPl0TvIVN2IVDOIUP+T5aEzyExXeJL0Kibr/vjXda92jwTutOG++0WkwVSwVGw9lDcSfOEYq7xVAxVSwVWwXOBk4NirtFqEgVRwQuOFoMFVMFZmAQW4WpcBU1g4OdgguOK3C9cLDWuF5o4SowABYe1wstvkPA7UY0VzcP4SkMjyswEiZZb14mDrLeuzQP4W+khanXG5fmLfw5TNRXvWtpDuEUPo+t7i03D+EpvIS3sAm7cJ3k+gODjQZp/AHiRoP0qI8dNhqknzAVrqJmW580bDQ7z2r43mh2fmKrMBWuIlTUotRnELueh/tEve4/MVRMFUvFVmEqMIMfRKhIFUfExgwMYqjADAICo2Gpdqo4IuynYqiYKpaKrcJUuAqdQRU73jNX03NzlXrzZ493z9X0/HgJf964FK6m58cuHMIpfMh1ldA8hKfwEhbfEN9KgDlwalDpA3sIpV6fFe1qXKbYKkwFRsPpRLUP+JypYqnYKkyFq6izgYs5tC8/cSjQvvzEUDFVLBVbBWawIVxFqEgVmEHtFLQvP1EzwIdaaF9+YqnYKmoG+EwK7ctPhIpUcUTUu4snhoqpYqnYKnQGlTK4yEH3cnMKf/a4lkHrcvMQ/rxxGYW+5eYtbMIuHMIpfMiVK81DWHy3+G6sLM4gMqXaWzYajyc+KkPj8RNTxVKB0XCoFRD3RQxNxE8MFVPFUrFV1NnAx2vVRkwRKlLFERE/FUPFVIHjwRmNrcJUuArMADsFWXIFsgSf9qFneOLeWT3YlyJVHBG4cGgxVEwVS8VWYSp0BpUluPBHm3HzeYwmY9yKQY9x8xT+vHEzCw3GzSbswiGcwodc8dE8hKew+A7xRT7gfjQ6hCc+6UGH8MQNXHQIP7FUbBU1Gu5hB64bcM8Erb9PTBVLxVZhKups4CUIrb9PpIojAtcNLYaKqWKpwAwmhKlwFaECM8AZRi5cgVzAHW20/j4xVSwVNQPcAUZT8BOuIlSkiiMCWdJiqJgqlgqdQWUJ3jShJ7g5hD97vBVCq/DlipHmzxtvSdAn3LyEt7AJu3AIp/Ah4yt/Lotvii+uQnDPO5ApuBcdyJRbIMiUFkPFVIHRcKi41jAUFa41INDX+8RQMVUsFXU2cLsxca3RwlWEilRxROBao8VQgRk4xFKxVZgKzGBAhAhkCe5xJrKkxVSxVGwVpgI+GyJU4EgN4ohA/uBWaCJ/WmAGAbFUYAZYeORPC8zgQISKmgHuyyXy5wrkT2BBkD8taga4r4Ou3ydqBoHDRv60qBngZiD6gZ/4P7W9264sv23u+y659kXpREp5lSAIvLK8NwwYTuA4C9hYyLvvan0l6Rs93GyOLg1f/K3fnLOpM0sHikQJUG3onwugfxTVhv4ZgBKg2tA/A1ACVBv6ZwBKgGpD/wzAlhrVhv65oOufq9Zd/Yx0pHSidKZ0oTQ21RcoQ2VA3mgXrGIGBIbIkBgyQ2EQBmWoDFyCyiXAjgjqB0a+l/6Eke+lKGHkO6ERQBcNCAxcn8b1aVyfxvVpXJ/G9Wlcn0b1acfBEBgiQ2KQVW0Y+17VhrHvVQUY+06IDIkhM1B9YOw7QRkqA9cncn0i1ydyfSLXJ2YGLkHkEkAXXdWGxrmqnbg+iesDjTNAGJSB65O4Ppnrk7k+meuTuT6Z65O5Ppnrk7lFM5cgcwmgV65qQ3tc1S5cn8L1KZWBRjzseSfwCMHqBdaasOed8KgPTjhhzjvSQmld6UtLNECXNP7mlJSOK10oLZR+mEXjRK5b6850W+muBXCEB1PdkY6UTpTOlC6UFkorpSul20o3yrdRvtAJDYXDzMeBLgxvIw5oYXgLKDC8nRAYIE0AkKaAytAIMPMHBIbIgN5ogMxQGIRBGSpDI8DMH4ASFEBkSAyZ4VECjIICi9oJ2iECKkMj6OuTCYEhMiSGzFAYhIFLkPqoRIOmttIPXTHT4ZGuSEdKJ0r32YBu7uEFR1oorZSulG4rXQ5KB0pHSidKU76F8i1o2dRB0H7oGkH74Z9JYsgMhQHSUFWFNAwOjQyJITMUBmHovdHt6QvsWic0gq4lJgSGyJAYMgNKgB6twqAMlQElwEhpBwNKgNbB1csAlAACcPkS0G6P9UUKqPVjeTHTSulK6TbT3bR1pgOlI6UTpTOlC6WF0r3e/elAgSHshEbQtdGEwBAZEkNmKAzCgBIEQGVoBPFgCAyRAb/poxzmrhMCQ2RIDJkBpRaAEGT8RgGZoTDgN2jrrAyV4dHLl+Q++Uc6UPrRy5fYPvlHOlP60ctX2XtM8pFWSldKt5WWg9KB0pHSidKZ0pSvUL59r5ESOhpaop+LFpiWpn6sWWBaOqEwCAOkQTRmfELbYMYPyAyFQRiUofdGP+QrMBMdgBk/IDBEhsSQGQoDSpABylAZ2oLuY/gRMRsQGHoJ+hFbgQVpytdvMkNhEAZlqAyNALN/QGCIDFyCx+xP/aC0dAPSmRZKP4ZlPxgt3Xp0pttKP+b9qO9j2s90pHSidKZ0obRQWildKd1WOlG+ifKFfui2eQVWoamfZJbuHfgRZBzQCPLBEBi6tILmgH4oqDf0w4BG0E8sJgSGyNB7o7sTL7D9nFAYhEEZKkMjkIMB9UHrYF0xIDFkBpQAI0WEALP/ahDM/gHKUBlQNnRJ5TaAXhiQGZCPAIRBGZAPOrhyLzTuhca90LgEjUvQuATQCwOEgcdB43HQqATpCAwQXQGFQRi66H6cWWCYOaERYMIP6PkI8sGEH5AYMkMvQbf5LDDZTP2cssBkcwA+6gOQTwZEhsSQGQqDMCgDSlAAjQBLhAGBITIkhsxQGCC6D5dudXkCGh7rhQGZoTAIgzL0Kii6BPrgAuiDAYEhMiSGzFAYegkU3Qh9MKAyNALogwGBIVIHQx8MyAyFAcO/awoYbo4WxaZjQGRIDKgcBp9yI0JtDGgE2FooSoCtxYDIgEbEqKrcjZW7sXI3Vi5B5RJULgEUyoDAwAOp8UBqXILGmTZaK+VrBXFBYIgMqNwFtFbKhzJUBowDANTGgMCARlQArdZyyAyFgUsQuASBSwCFcgEUyoDAEBm4BJEzhabop/klQ1NcAE0xoIvuB/glQ1MMSAyZoefTT+EL7DYnKENl6CXotp4Fdpupm3cW2G1OyAzIJwOEQRkqQyOAQhkQGFACjBAolAGZoTAIgzJUhkYATVExXLA+qGh4KIcBlaERQG0MCAy9Cg1dArUxIDMUBmFQhsrQCKBQGroRCmVAZEgMmaEwCHUwFMqAytAIoEP69VO5LECvFsXSY4AwKAMq1wcfzD2vRoS954TEgCokQGEQBjRiBlQWQN0IT7oTuASBSxC4BFAoAwqDMCgDlyByptAUxwWZoTAIAyrXh3K5zjAbIDBEBowDAWSGwoBGVICygMrQCDKXIHMJMpcgJ4bMUBiEgUuQOVNoioYGgaYYkBm61SROhWEoOkEZKkO32OwXB+UyFR0QGCJDt9rEce9lFopj0csudEBlQD4YozANHRAYIkNiyAyFASXACFFlqAyNoB4MgSEyJAaIxnBpEICGb4EhMiSGzFAYehUCuqSrjQmVoS2AHemEwBAZEkMvAc5vYUc6QRiUoTI0gnCsDoYd6YTIkBgwARugrhaFgeiAeDAEBlQuAqgRYQY6QRlQBZQgNoJ0MKARM4C6EdagEzIDlyBxCRKXIFWGRpAPhsDAJcicKe5GocXgnnZCI4A1xgBUrgBws4QWxa3pAGHAOLgEVIZGALWBA/rLfvQSIJEhMXAJhEsgXAJRhspA93uX/egALoFyptAUuDyAYeiEytArhxN1uKadEBgiQx8hODeHa9oJhUEYegkihjIUSsRIhEIZEBmQD8YoFMqAwiAMylAZ2gLYk2YcNsOgdEJkSAyZoTAIgxJAU+CQHcahudvqFvicnSAMylAZGgHUBo7IYVE6ITIkhsxQGIRBGXoJutuhAp+zA6BQBgSGyJAY8upgWKFOEAZlwATsehTmpaNFc2LIDIUBlYsAbsRyMAQGVAElKIkhM6ARMaoKd2PhbizcjYVLIFwC4RJgHTIgMfBAEh5IwiUQzhRLD2zYYSSasXOFleiEzFAYhEEZKgN0FcYObLQGBIbIkBgyQ2EQhmUDVGBJmhN6GwplQGRIDKgpWgcKZYAwKENlaAtgfToB1jQCiAyJITMUBmFQhsrQCMKyDiqwMb1qChvTCYVBGKimNVQGrmnkml5654LIkBi4ppFrGrmmkWsauaaRawrr0wHc1onb+rL4QoMkrim0y4DK0Agy1zRzTTPXNHNNc2YoDMLANc1c08w1LVzTwjUtXNPCo6pwWxdu68sWDA1SuKZyMASGyMA1Fa6pcE2Fayo8qoRHlfCoUq6pck2Va6pcU+WaKtdUeVQpt7VyW0Mj4ZIG7mQnJIbMgJo2wLJGL5c96QXtYOgtirtL2JNOSAy9RXF9edmTDgHCoAxcArKHL43s4Usje/jSyB6+NLKHLw0aaUBhoExhXJpxfQzj0gmRAZXLgMxQGIShDxfcksK4dEIjgBIagBIIAPkooDAIA/JBfbDEGdAIsMQZEBgiQ2JACRqgMAiDMlSGRgAlNCAwdNG4xoPVaC5oeCxxLsASZ0BgiAyJoVcBN6uwNJ0gDMpQGRoBtMuAwIASoBuhXQZkhsIgDMpQqYOhXS7AIcyAwICeSwChFsUSZ0BlaATYM+HWF5amoxGxMxpQGJAPSoCd0YDKgHwwqhp3Y+NubNyNjUvQuASNS4AlzgBl4IHU1kASmKlOiAx4y5UAwqAMlQGiW4ewXq3JZZk6IDPgqfQBEAZlwCvtAGgkIB4MgYFLELkEkUsQC4MwKENl4BIkzhSaQtCI0BQDhAGVu35TGRoBNMWAPkL67bLAieuExJAZUAIBIB8FNAIolAHIpwIiQ2LIDIVBGJQBJcAIgUK5AAplQGCIDIkhMxSGLloxXLAzUjQ8lMOAzFAYhEEZ4KcAXQK1cQHUxoDAEBkSQ2YoDCgBuhEKZUBlaARQKAMCQ6QOhkIZkBkKA3quz+0ATYEWDThdGRAZEgMqJwBqRBiXTmgEWIf0y2GBcemEyIB8KiCzgMIgDFyCwCUIXAKsQwYEhsiQGLgEkTOFpuimnQIb1AmBITJA9AV4V30AlKEy9CpUANTGgMDQq1DRPzmRgJwZCgOXIHMJMpcAu5wLysEQGCIDl6BwptAUFY0ITXEBNMUAVC4DIkNiyAx9hPQ9k8Bj6gRlqAwoAYYyFErFSIRCGZAZkA/GKBTKAGWoDI0ACmVAYEAJMEKgUAZkhsIgDMpQGRoBNEXDcMECo6HhoRwGVIa2APaqEwJDr0K/9RXYq07IDIVBGJShMjQCKJR+ASuwV50QGRJDZigMsjoYHk8nVIZGAB3SL+IlQlOgReHkdIIwKAMq1wcfXJmORsSOZUBiQD4oAdYhA4QB+VRAZQHcjZm7MXMJMpcgcwmwDhlQGIRBGbgEhTOFpgjoBZyHDCgMwgDRfSjDThW+bgR2qhMiwyOf0m+XBXaqEwqDdED/4JZnCKgMjUC5BMolUC4BzkMGZIbCIAxcAuVMu6YoBxqxJobMgMphylRhUIbK0DqgrfvSY0JgiAwoAcrWkA9GIlyGDKgMyKeP0QSvIQMCQ2RIDJmhMKAEDaAMlaERwH/IgMAQGRJDF93vnQWGrqVfAQsMXSdEhsSQGQpDr0K/9RUYuk6oDI0gHQyBITIkBpSgAAqDMChDZWgE+Vgd3N2TLogMiQE9lwCVWjQ3gnIwBAZUTgDciEUYlAH5oASlEcjBgHwwqoS7UbgbhbtRuATCJRAugVSGRqA8kJQHknIJlDOFpoDiggnshEaAW54BEI2hjJNTqA0Yuk4Qhl6FfrssMHSd0AigNiLywRv9SwDe6A9IDFyCxiVoXAKcqQ6oDG0B7GEnBIbE0PsnXqAMlQGV61MGJrATAkNk6COk3y4LTGAnFAZhQAn6UIaha+kXowJD1wmRAflUQGYoDMKgDJWhEUChYPsCe9gJkSExZIbCIAxKAE3R750Fhq4loeGhHAYIgzJUhkYAtZHQJVAbAyJDYsgMhUEYlAElQDdCoVwAhTIgMESGxJCpg6FQBgiDMqDnuh6FCexoUU0MmaEwoHIYfMqNWA+GwIB8UAKsQwZkBuSDUVW5Gyt3Y+VurFyCxiVoXAKsQwYkBh5IjQdS4xI0yhQmsKXfGQlMYEu/8hGYwE7IDIVBGJShMjwqB7evAhPYCYEhMiSGzFAYhKHn09sdRq8jHSiNaqIBoE0GZIbCIAzKUBkaAbTJgMDAJUhcgsQlSFyCxCVIXILEJUhcgswlyFyCy1+yABJDZigMKEECoKH7cC/kSVkKeVIW2MwWHCrDZnZCZkBN0YeXJ+VLgDJUBi6BcAmES3B5Ur4gMWSGwsAlEM4Uy5OMBoHSGZAYUDmMNyidAcKgDOhGTEWoowugjgYEhl6CgjkGpdMvf04QBmXo+eB+pEDpXAClMyAwRIbEkBlQAowQKJ0BylAZ2gJY004IDJEBogsAAnrDy+UV8YLAEBkSQ2ZAFSpAGJShMjQCrGIGBIbIgBI0QGYoDMKgDJWhrQ6GNe2EwBAZMEYVoNSiUCgDGgEUyoAuGjdbsIwdjYhVzABh6PngAgw2sxMaAVYxuGSCzewQULgbC3dj4RIULkHhEmAVM6Ay8EASHkjCJRDOFMsTXC7ATLbgmgtmshMaAfY7AwJDZEgM0FVoazhtHyAMylAZGgGCvAwIDD0f3LbAZnaCMOiIiCCyojWIrGgNIitag8iK1iCyojWIrGgNIitag8iK1iCyojWINMq3Ub4rWoPoitYg3X52piOlE6UzpQulhdJK6UppyjdQvoHyDZRvoHwD5RsoX6xncO8Ci9sJGFIKaARY6uDKDRa3EyIDhlQFZIZHATD5usHtTCul60pDreCaEpazpT+2lW45iygY0g1nZ1op/ZCEW69uQjvSPdjLSD+aEJdu3bJ2phOlM6ULpYXSSulK6bbS5aA05VsoX2gUXAnCaLb0B7QCo9lyNTH0xoDAEBkgDaKhKq62gaq4AKpiQGCIDIkBvYGuwdpjgDAoQ2VoBFh7DAgMKEEBJIbMUBh6CaBrFKuSAb0EuA6DBe0ArEoGBIbIkBgyQ2EQBmXgEvRVCQ57YUA70oHSj+xxBgzr2ZHOlH7kjYNmmM6OtFK6UrqtNKKiX+lA6UjpROlMaco3UL7QGrjEgVVswdUgrGILlvqwip1QGIQB0vqEhYVrwY0b/KtOyAyFQRiUofcGbo5g+zoAa5ABgSEyJIbMUBhQAgUoQ2VoBFid4EYHtq8TugBc2cGodUIjgJLAlhVGrRP6G8PrXyVKZ0oXSiMPdAcUBK7E6vUoGOlE6UxpPJtCWiitlMY7UqTbSuMx8JUOlI6UTpTOlC6UFkorpSnfSvli0rcLHoIEl1kwRRUc9sIUdUJlaAtgcCo4jIdZqWCmwIHpBGWoDI2gz9gJoYMAIkNiyAyFQRiUoTKgBH0Awvp0QmCIDCiBAjIDStAAwqAMlaERpIMhMESGxJAZuARdQWANDLPUka6U7tn3+QOb1JEOlO55o5u7ZhjpTOlCaaG0UrpSuq10VwkjHShN+RbKt29JpL8HFZikCm42YJIqAf+s64YJkSExQBqqKpCGwaEHQ2CIDIkhM/RGwckZrFAnKENlaAT1YAgMkQElQI/WzFAYhAElwEiplQFXIxjS10UL/ua6aLlAGJShMrQJerlEHRAYIkNiyAyw7EJaKK2UhhUG0m2lYQVypWFdiHSkdKJ0pnShtFBaKV0p3VYaxmRXmvKNlC8MUPuQ1svMtA9pvcxM+1hVOECdEBgiwzKHUFiWwhRAYVk6IB8MgSEyJAYYI6AVYSI2QBiUoTI0ApiIDQgMKEEGJIbMUBhQAowUuEse0EvQrxgVNqcDYBIyIDDAHA8tioe/AzJDYRAGZagMjQAmIQMCA5egaxlF43QlM9KF0o/sFVXuGmakK6UfeStmSlcvIx0oHSmdKJ0pXSgtlFZKV0pTvo3yxbVuRA9Cp0QMNeiUeP2zytAWwCp1AqQ1wDJaVNieTqgMjSAcDIEBRosRkBgyQ2EQBmWoDI3gCixVAYEhMiQGlCABCgPy6aoARqWIz6NwbDqhMAiDMlSGRgBdMiAwRAYuATYWgnShtFAaO22kK6XbSmNLgSpe551IR0onSmdKF0oLpZXSldJtpYXyFcr3CiyFroEWyBhD0AL9KZjCnnQAtMCAwICHCuhOXc8RFFajExpBPRgCQ2TAgwi0NIw6BhQGYVCGytAI8FBuAEqA8Q2jjgGJITOgBOhh6IUBKAHmOPTCgLYAZqcT8FAuACJDYsgMhUEYlKEyNALokgFcgq5L+jmAwup0pDOlH9n3TbPC5HSkldKPvPsZhMLe9Ep3HTLSgdKR0onSmdKF0kJppTTlGylfrEL6hZbC4hQRghQWp9cEgcXphMrQCPJ6uqmwHsVLRYX16ARlqAyNoBwMvTf69YvCTeqExJAZCoMwKENlQAnQo1dgqQsCQ2RACTBSoEsG9DV7vKAyNALsWwYEhsjQdw0RnYV9y4C+a8DCA0amE1AC9Cn2LQNQAvQc9i0DUAJUDvuWASgBOhj7lgEoAToL+5YBKAGmNfYtA7ClRMO3gwGbSlS7RQZsK1HtlhmwoUW1cToyAFtaVBunIwNQgl5tWKlOQAkEEBlQAgVkBpSgAoThUYJ2Sa6Ubivdlc9IB0pHSiPvBsgMhQHnCBGgDJWhEeAsZUBgiAyJITMUBi5B5BLgxARfRxirCj5uMFaVjJriXGSAMChDZeD6ZK5P5vpkrk/m+mSuT+b6ZK5P5vpkbtHMJShcAhyHXNXGechV7cL1KVwfnJRcgJOSAYGB6yNcH+H6CNdHuD7C9RGuj3B9lOuj3KLKJVAuAXTRVW1onKvaletTuT7QOAMSA4+QyvWpXJ/K9alcn8r1aVyfxvVpXJ/G9Wncoo1L0LgE0CuoNly0XtWGfepVhXxkhsIgDMpQGZBPV0ywXJ0QHiEiAtKR0onSmdLIoyuyfOmCCuiSILX7bB/pROku6fpxobRQWh9plLv7bB/pttLdZ/tIB0pHSidKZ0oXSgulKd9E+V46oQF6T2CxB7NUwaIIZqkTlKES4BgUayeYmAoWRTAxnSAMylAZGgFmPlZVMDGdEBkSQ2YoDMKgDCgBBi1m/gWY+QMCA0qAkYKZP6CXAKsqWKJOEAZlqAyNANpiQGCIDImBS/DQFghDod1EdaaV0o/RgZVBt08d6YeimOnHqMSKoxunznSidKZ0obRQWildKd1muvRwMSMdKB0pjZYNALRfAqD9erFhhDohMEQGSBMApCmgEUA/DAgMkSExoDcaoDAIgzJUhkaAVcSAwIASFEBiyAyFoZegm3QorE0n9BIoWgfriwuwvlAIgC5RtFsPLgXd341NZzpTulBaKK2UrpRuK93jy4x0oDTlWyhfaCOcOML2dIIwKENlaATQRgMCQ2RIDCgBOgjaaIAwKENlaATQHxWVg/4YUBkaAfTHgMDQS13RqdAfF2B9gI0yDEQnRAb8BqMc64MBheHRywWjqk/+ka6UfvQyPkLdOHSmA6V7LzekE6UzpQulhdJK6UrpttLhoHSgNOUbKF/sNbpVhMI2VLpnOIVtqDQUG1piQGRIDF1a9zGtsPOUbkWgsPOcEBgiQ2LIDL03uvGAwmvqBGWoDI0AM35AYIgMKEEEZIbCIAwogQIqQz+FP9CifUehB37TVxwTIkNiyAyFQRiUoTI0AuES9CBTWDx0r6sznSj9GJZYEnSXqzMtlO7TAa0nldJtpfWgdKB0pHSidKZ0obRQmvJVyhc3KwcGIa5QuhGUwkZUj+ufCYMyVIIGaahqgzRMnVYYhEEZKkNbAO+pihU8vKdOiAyJITMUBmFQBpRAAY0gHAyBASWIgMTQTUoL0m2l40HpQGlIyoDEkBkKgzAoQ2VoBOlgCAxcgsQlSFyCxCVIXILEJUhcgsQlyFyCzCXIXIKMEiQASiCAwiAMylAZGgE0zIDAEBkSA5fgoWEClHl3wzrTSunHAIDm6+akI/1QLjP9GAD4kHRb0plOlM6ULpQWSiulK6XbSutBacpXKV/c2mIrCwNSxVU1DEg14p/hgnZAYIgMXRoOb2EMqjivhTHoAFy7DggMkSEx9N7ASS6MQScIgzJUhrYA1qATAgNKEACJITMUBpRAAMqAElRAI4CGGRAYIkNiyAyFQRiUgUuAh3W9QeFndaQDpbuteUY6UTpTur8piEgLpZXSldJtpbs6GulA6UjpROlMaco3Ub7QNjh+hwGp4lwdBqSKTSUMSCcUBmHo0rAxhiNUxek5HKFOyAyFQRiUofcGztVhTToAK5ABgSEyJIbMUBhQAvSoKENlaASKEmCkaGBACdC80BgDhKHng9tiWJxO6PngEBE2pxMCQ88H2zuYnU7IDIVBGJShMjQC6J8BgYFL0LgEjUvQuASNS9C4BI1L0KgEcJ46ITBEhsSQGQoDSpABylAZGgH0z4DA8PgUoedhvXpNBVivTqgMNGNgvao4yYWN6jX6YaM6oTCgBgJQhsqAGvQxDhvVIQDrmgGRgUuQuASJS5CEQRkqQyPIXILMmUK54KQZZqgTlKGLxi4ZlqgDsGAZEBh6Ptg1wxp1QmYoDL0EONKFoarioBOGqhMCA/JBn0LtDMgMhUEYlKEyoARoKqidAYEhMiSGzFAYhACaBjs22KYqtmawTZ1QGIRBGSpDrwIOYeE7dUJgiAyJITMUBmHoJcA5KOxZJ7QJFfasEwJDZEizgyvsWScUBmHABGwdoCh6i1bYq05IDJkBlYuA1YgVxqkDoDYGoAooATZKAxIDGjEDCgsQBmXgEkQuQeISQKEMiAyJITNwCRJnCk0R0QbYAQ2IDIkBlSsArOlQ7VwZGgHURj/orrBjnRAZ0IjoH6iNIaAwCAOXoHAJCpdADobAEBkSA5dAOFNoCkEjQlMMCAywEz0AiSEzFAbYimJiYOkyoDI0gstOFf1zGaSioJdF6gWFAflgjF5GqRdUhkZw2aVeEBgiA0qAEQKFMqAwCIMyVIa2AMasEyBaARBQAZWhEWB9MSAwRAZYEx+AzFAYhEEZKkMjgEIZ0EvQfY1W2K9OSAyZoTAIg64OhmXrhEYAhTIAE7ABCrUolh4DlKEyoHJ98MGYdTQi1MaAzIAqoARYhwxQBjRiBnA3Fu7Gwt1YuASFS1C4BFAoA4SBB1LhgVS4BMKZQlMcFxQGYVAGVA5DGWrjQC9AbQxIDBgHAigMwoBGRP9oZQGNAGpjAJegcgkql6BmhsIgDMrAJWicKTRFRYNAUwwoDLDbx5SBphhQGdoCmLdqPwKrMG+dEBkSQy9BPxKrMGLVfjdSYcQ6oRFAofRLjwoj1gmRITFkhsIgDChBAVSGRgCFMiAwRIbEkBkgug8X+E7V/gSywl51QmLIDIVBGLpR7IEu6WpjQiPo65AJgSEyJIbM0I1yD3RjVygTlKEyNIJyMATqYCiUAYkhM2ACNkCjFsXSY0BgiAyoHAafcCNCbQyoDKgCSqAHQ2BAI2JUKXejcjcqd6NyCZRLoFwCKJQLoFAG8ECqPJAql6ByprAeu1oU1mMX4HZ4QGBA5TCUcQd8zR/YiA1QBowDAbQFsEqdgEZUwLr3rJdV6oDMUBiEQRkqQyMIB0Ng4BIEzhQ27/iwwOh0QiOA2Xt/RVdhdDohMiSGPs36zVSF0ekEYVCGXoJ+CFrhO7X2U9wK36kTEgPyQX1SYRAGZagMjQAKZQBKUACRITFkhsIgDMpQCQpEY7gUCEDDF2FQhsrQCORg6FWI6JKuNiYkhsxQGIRBGSpDL0FEN0KhDAgMkSExZIZCHazCoAyVoGICNkCiFq2ZoTAIAyqHwde4EVtgiAyoAkrQMkNhQCNiVDXuxsbd2Kgb4Tt1QmCIDIkhMxQGYVAGzvSyMhNAYsgMhQGVK4Blf1Yz2Z/VTPZnFb5Ta4QAqI0BmQGNeP1GWIAyVAYuQeISJC5BigyJITMUBi5B4kyhKSIaEZpiQGLoleuPJyrMVycIgzL0EdKvfyq8qg7A0mNAYOgl6Nc/FYattV+KVBi2TlAG5JMBjQAKZUBgiAyJITOgBBghUCgDlKEyNAIolAGBITJANLpEIQAND+UwIDBEhsSQGXoVMroEamOAMlSGRgCFMiAwRIZegoxuhEIZUBiEQRkqQ1sdXKBQBgSGyIAJ2AC6WhRmqxMaQTgYULkIoEaE2eoEYUAVUAKsQwY0AqxD+r1OhUHrEBAjQ2LgEkQuQeQSYB0yoDLQQIJB6wQuQeJMoSkKCgq7tQGVoRFg6dHvmSq8n8KyvJacGQoDxoEAlKEyoBHRP3jvcgm47OEviAxcgsIlKFwCspSvhSzlayFL+VrIUr5etqkDOFNoioxGhKYYoAx4JnkAGgE0xYDAgCeaAZAYMkNhwDNNDGUoFNwiwFB1QmBAPuhTKJQBmaEwCIMyVAaUAE0FhTIgMESGxJAZCoMsgMPTiusOwQID5/4C5TCgMAiDMlSGXoV+GVThF3VCYIgMiSEzFAZh6CXANRH8ok5oBFAoAwJDZEirg+V603tBYRAGTMCuR2EIO1oUe5kBiSEzoHIRwI2IHcsFUBsDUAWUAOuQAYkBjZgB3I2ZuzFzN2YuQeYSFC4B1iEDIgMPpMIDqXAJCmeKpQfujODwtGLVKVh6DEgMmaEwCIMy4LXWlWkj0IMhMESGxJAZCgPyQS9AoWAFCe+nEwJDZEBNIQ0KZUBhEAZlqAyN4Hpnh0FxvbO7IDIkhsxQGIRBGeoCWMNeDQJr2KumsIadkBkKA9UU1rATKgPVVC+9c0FgiAxUUw2ZoTAIgzJwTUMjiAdDYMjUIJFrCu0yQBkqA9c0cU0T1zRxTVNiyAyFgWuauKaJa5q4pplrmrmmOTJwW2du6+sVLxokc00zzR9YxE4IDFzTwjUtXNPCNS08qgqPqsKjqnBNhWsqXFPhmgrXVLimwqNKuK2F2xoeTfCRgPvVCZEhMTzyQRTuCiercNhQYSM7oREgQh72JbCRnRAZUocAyCygMAgDl6ByCSqXgIKCV9jVTogMiYFL0DhTxM7DvgQGsxMCAyqXAYkhMxQG6VAAylAZGsEVFFwAyEcBmaEwIJ8KUIbK0Aiu0N8XBIbIgBI0QGYoDMKgDJWhEVxBwS/oorG+hnNVREWucK46oREgQt6AwBAZehWwVoZt7ITCIAzKUBkawRUU/AKUAN14BQW/IDFkhsIgDEodjMicAxoBInMOQM8lQKEWvaJ9X6AMlQGVw+BTbkSE3ByQGZAPSnCF/r5AGZAPRpVyN1buxsrdWLkElUtQuQQUFLzWKyj4BTyQKg+kyiVonOnlFQmNeHlFukAYlAGi+1CGnStcPlXYuU5IDL0K2JfAznWCMPQqYMPRrtDfl4BGAN9HA7gEgUsQuAQUFLzCm+sEYVAGLkHkTKEpsC+BCeyEwoDKXb9RhsrQCKApsNyHCeyEyJAYUAIBIB8FVIZGcIX+roDAEBkSQ2YoDMKAEmCEXEHBL2gEV1DwCwJDZEgMmaGLhh0XDF0RFbnC0HVCYsgMhUEYehVgkwVD1wmNoK9DJgSGyJAYMgNKgG68goJfoAyVoRFcQcEvCNTBUCgDEkNmQM8lQKMWvaJ9XxAYIgMqh8HXuBERw3dAZUA+jxK04wr9fUFgQD4VsLqxHUdmKAzCoAyVoRFcQcEvCAyRgUsQOFNoin5g3GACO+DyuHhBYIDoC7pG6tcdDYauE5ShV6Fe0AigNgb0KnTDtnZ5b70EXF4aL8gMXILEJUhcAgoK3i6PrxdcXhovCAxcgsyZQlNUNCI0xYBGAE3RbdkaTGAnRIbE0EdINxFrMIGdIAzKgBJIhyv0N0biFfr7gsSAfDBGr9DfFwiDMlSGRgCFMgAlwAi5goJfkBgyQ2EQBmWoBNAUDcMFC4yGhodyGKAMlaERQG0M6FVo6BKojQGJITMUBmFQhsqAEvRuDFdQ8AsCQ2RIDJmhrA6Gp9cJylAJLg/QCZBWi4Yr2vcFhUEYULk++GDoejUiDF0nRAbkgxJcob8vKAzIpwKUBVQG6kYYuk7gEiQuAQUFb+EKCn5BYRAGLkHiTC/f0OiFyzf0BZmhMEB0A3SNFNCIlwfoCwLDIx/E2m6X+9YBmaF0QP9cHqAvAcpQGbgEwiUQLgEFBT8hMWSGwsAlEM4UASYONCIi0AxIDKhcBhQGYVCG2gFtjQg0FyACzYDAgBKgbFfob4zEK/T3BcqAfDBGr9DfgCv09wWBITIkhsyAEmCEXEHBL1CGytAWxCso+AWBITJ00d2Oq8HQFVGRGwxdJwSGyJAYMkOvQrfJajB0naAMlaERXEHBLwgMkQElKIDMUBiEQRkqQ1sdHBH9bkBgiAzouQRQatEr2vcFjQCRZwagcgLgRoQf6AHCgHxQgiv09wWN4Ar9XQHcjYW7sXA3Fi5B4RIULgEFBW/xCgp+AQ8k4YEkXALhTCnuRLs8uw6oDI0A18aCoUxxJ1qkuBPt8t86oJ8R99c3DYauEypDP6VW9M8VdwICrrgTF0QGLkHlElQuwRV34gJlqAyNoHEJGmeK+2As6mECO0EZUDlMGRiYAC4T2AGBoR/B941agwnshMxQGFACASCfPhJh6DohMCCfCkgMmaEwCIMyVAaUoI+Qyx52QGCIDIkhMxQGIcCNDbYvl6ErNgKXoeuAwiAMylAZehWwRbgMXQcEhsiQGDJDYRAGlADdiBubAY0ANzYDAkNkSNTBuLEZUBiEAT3X9ehlAnu1KK6NBySGzIDKYfAJNyKsTS6A2hiAfFACWJsMSAzIB6NKuRuVu1G5G5VLoFyCyiXAtfGAyMADqfJAqlyCyplCU+BjdPldHRAZEgNEYyhf0a4wKK5oVxe0BZeha3990y5D1wGRoVcB+4XLI+sQUBiEQRkqA5eAImS1fEXIuiAyJAYuQeBMoSmwqIcJ7ITAgMrhN9AUAzJDYegjBBs1mMBOqAyNAAoFWysYulbsjGDoOqEwIJ8KUIbK0AigUAYEhsiAEjRAZigMwqAMlaERQKEMeIhu2L7A0LVhIwBD1wmNoC8wJgSGyJA6oEskMxQGYVCGytAI9GBACdCNGhkSQ2YoDMKg1MFQKAMaARTKAPRcAhRq0SoMylAZUDkMvsaN2BJDZkA+KEETBmVAPhhVjboRhq4TAkNkSAyZoTAIgzJUBi5B4EwDRDdAF92fyDSYwE5QhsrQCLpCmRAY+jIcPQcT2AmZoTAIgzJUhkYAx0YV6UTpTOmeSUYDIJ7mAGWoDI0Au5oBgSEyJIbMwCXIXILMJchcgswlKFyCwiUoXILCJShcAux38KGHmewEZagM6Oo+eWAZi9CjDY5aJ2QGDClkCqUzQBkwpBKgkQDE8x0QGLgEyiVQLgFOUwYIgzJUBi5B5Uz78qRhTw4z2QnCgMoJoDI0gnYwYL5gHEMdDUgMmQElQP9A6QQUFEoHAJvZCT2f/jSqCZTOgMSQGQqDMChDL0F/J9VgTTsAgSkGBIbIkBgyQ2GA6D5cYAzb+vulBmPYCZmhMAiDMqAKAmgE6WAIDJEhMWSGwoASKEAZKkMjyAdDYIjUwTkxZIbCgDHaP8Awkx0tWgJDZEgMqFwFcCNiFTOgEWAVg4s22MxOiAw9H9xFwWZ2CuBuFO5G4RIIl0C4BFjFDAgMPJCUB5JyCZQzvSJ/o0+vyN8XBIbIgMphKOPcFVtDGMNOqAy9Cv3RVIMx7ITA0KuQ0D84d70E4Nx1QGHgEjQuQeMS4NwVAKexEwJDZEgMhaH3T3+C1WD/OgCaYgAqJ4DIkBgyQx8hCflgFTNAGSoDStCHMnzFtm6P2OArdkJm6Pl0Q8MG+9cJylAZGgEUyoDA0EvQzRYb7F8nZIbCIAzKUBkaATRFNx9qcPXaMhoeymFAZWgEUBsDAgOqgC6B2hiQGQqDMChDZWgEUCgZ3QiFMiAyJIbMUBiEOhgKZUBlaATQIf2VX4Mt62hR7HcGCIMyoHIYfJUbsUaGxIB8UAKsQwYIQ8+nYFRV7sbK3di4GxuXoHEJGpcA65ABhYEHUuOB1KgEsHKd0EV3A8AGW9bWLeEabFknCIMyVIZGcMXEugC66gBEhsSQGQqDMChDJYCT124F1i4vrwMSQ2ZATROg9r8RQCOAT9cBvbMKGhFqY0BiQIsiHzh2HQKEQRm4BIlLkLkEOTBEhsSQGbgEmTOFQikXBIbIgMpVQGYoDMKA4dIAlaERQKEM6CUQ9CnUhmCMQm0MEIaej2C8QW0MaARYhwwIDJEhMaAEGCHQLgOEQRkqQyOoB0NggGgMF6iNq3+gNi6A2hgQGCJDYkAV0CVQGwOEQRkqQ1sA164TAgNK0ACJITMUBmFQhro6GCavA6BdBgQGjFEFyGpR2LJOqAyNAKcpUCgwbL0aEYatEwpDzwcXejBsnVAZej64NINh6xCQAkNk4BIkLkHiEmAdMkAZKgMNJJi8TuBMsWPBZQlsWScoQ2VA5brmgy3rhMAQGR6VO67e7gplQmEQBmWoDI2gK5QJvRFxiwiT1wmFQRhQUzQIFMqARgCFMiB0V/nIFD7oBySGzFAYhEEZKgHUBhb1MGydkBgyQ2EQBtQHMxg6BDePsGVtsKKEO9cJhaFLwz0ZrFwn9HbD7RGsXDvEA1auE3p9HsZiD4gMiSEzFAZhUAaUIAMaAXTIgMAQGRJD77kDoqFQHu32gMrQCKBQHleXDwgMkSExZAbUVADCoAyVATVFCaBqBgSGXoLHddoDEkNm6CV4XLQ9QBiUASVQQC9BQwdD1TS0G85QGloUemdAYkA+aAPonQGVoRFA7zS0AZYrj6H8gMxQGIShEvRIFvWS1kNZTEgMuQOq3aNZTBAGZagMjaCHtJgQGCIDuuQCYVCGyoCmQtdjHTIgMEQG1BTdWDNDYRAGZagMjaAdDIGh56No3lYYUFP0D1TNgMrQFnT713QcByAwRIbEkBkKQ6+pKkAZKkMjCAdDYIgMiSEzFIbaixMAjSAeDIEBNY2AxJAZCgNqmgHKUBkaQToYAkNkSAzSM00AZagMjSAfDIHhzAeat1vMjmReybKSspK6kmeu0ADdfvZKPlTLSIaVjCuZVhI1QvUKyt0VVLeAXRAY0D4YZNAvAzJDYRAGZagMjQD6ZUBg4BIol0C5BMolUC6BcgmUS6BcgoqxKIDEkBkKA1oUE6AqQ2VoBO1gCAyRITGgBBgIrTAIgzKgBOj61hbES/NcEBji6vp4aZ4LMkNhEAZlqAw03rql7YKeTzgAmaEw9HxCAPR8QgRUhkYAzTOg1zQkQGRIDJkBJUBBI0qgAGWoDI0gHQyBITIkhsxQGLgED50EXdWNbkeyzeRDGymK/tBFIxlX8qEbUNGuia5kWUlZSV3JupJtJrsmupJhJeNKrtzKyq2gHfuYjdBDER0OPRTR4T0c4ITEkBm6tAjRCmloDA0MkSExZIbC0Ns+CkAZKkMjqAdDYIgMiQElwJiFthkgDMqAEmBcQNtcAG0TMb2hbRKaCtpmQGLIDIVBGJShMrQFCdpmQGA4S4ClfDe1Hcm8kmfe7fq3spK6kmeutSHZZvKhXUYyrGRcybSSeSXLSspK6kqu3MLKDZokRQBaKwPQWgWgDJWhEUArJAVAWgUIgzJUhkaA9ciA3vYZTdtjCk9IDJmhMAiDMlQGlKCP5m47uyAwRAaUAL1aMgNKgBbFCmaAMlSGRgCdMiAwRAaUAA0PnTKgMAiDMlSGRgA9NOAsAbaS3fR2JNNK5pUsKykrCdnoVOiRjKEIPTKgr47k+meFQRiUoTI0AuyKBgSGyNDbqmAgQFsU9CO0xYDK0BZkaIsBgSEy9JqWCMgMhUEYUIIEqAyNAGuTAYEhMiQGlCADUIICEAZlqAyNAKuWAWH1aY6RITFkhsIgDMpQGRoBa6GMtcmAzFAYUFMBkBbKrIUytNAAtCgEQAsNyAxo0es3wgKUoTJwCQqXoHAJLi10QWLIDIWBS1A4U6iXgkaEehmQGLpowVCGehkgDMrQ8xEMZaiXC6BeBgSGXgLBGMViRjBGsZgZoAzIB4MPquYCLGYGBIbIkBgyA0qAEYLFzABlqAyNAIuZAYEhMkA0ugTaRXrDF2iXAYEhMiSGzNCroAEgDMpQGRoBtMuAwBAZegk0AjJDYRAGZagMbXVwgXYZEBgiA6p9AHS1aIHaGNAIsNkZgMolADci1MYAYUAVUAIsawY0AigUbGJK5m7M3I2ZuzFzCTKXIHMJoFAGVAYeSIUHUuESFM4UmgLbkVKUoTI0AqxXcLBYhPYmRTJDYcA4UIAyVAY0IvqHd0eFd0eFd0eFd0eFd0eFd0fl2h1doAyVoRFULkHlTKEpcGxVoCkGKEMXXTFloCkugKYYEBh6PrjhKdj2DMgMhaGXAFc3BQoFNy8ChTIgMCCfAkgMmaEwCIMyVAaUoI8QgUIZEBgiQ2LIDIVBCKApcCcjWG1gzyNQDgMKgzAoQ2XoVcAuTqA2BgSGyJAYMkNhEIZeApzfCxTKgEYAhTIgMESGRB0MhTKgMAgDqt31qEBTXC2KpceAxJAZULkE4EaE2rgAamMAqoASYB0yIDGgETGqhLtRuBuFu1G4BMIlUC4BFMqAyMADSXkgKZdAOVNoClxsCZYeuDwSqI0BiSEzKAGUA26SBMphAKQh064CAu5XupHrCQEQGCJD6hABmaEwyMqn+4Jdf1MZGkE4GPoODJshxW3NgMSQGagNFOsDVFuxPrggHgxdWi4A1CcBUJ8MEAZlqAyNIB0MgQEtikxTYsgMKIEAUAJULqEEqEJCCdDWqe9pM36TD4bA0NstXNDzwSl0N4w9AS3aFwsTKkMj6IuFCYEhMvSa4rC6G8YuKAwoAXqhoARot4ISoHUKSoAqSK8pzo0V98cDIkM/JbiaF7c4A5QB+aB5pRF0FRBwftttYRdEhl5THNl2K9kFhaHXFMuibiW7oDI0gnowoARogxoZEkNmKAzCoAyVoCEfNCJuia9h2fAbtE6rDG1BhXbBKW2FdhnQS50OQGLIDL3UOFfthrELlKEyNAJolwGBASWIgMSQGQqDMChDXa3TDWPPv0mAyJAYMgPyyQBhUIbK0Gc9VHTFXfCAwBAZEkNmKAzCgBbts6Qbxi4IDJEBNUWD5MxQGIThMRsVh+TdF+yCRvDQOwsCQ2RIDJkBLaqAytAIBDXFUJbAEBlQU4xryQy9pjg+7vazC5ShlwDnwhV65wLonQGBITIkhsyAEmCMQu8MUIbK0Aigdwb0tsamqzuGDarX35QOaJB+DjtBGSpDI+jnsBMCQ+9TXGZ3M9sFmaEwoASYWU0ZKkNb0M1sFwSGyJAYMkPPB0dUDRopX3/TCKCRBgSGyJAYMgP6NAOEQRkqQ68pTsy6ze2CwBAZEkNmKAzCoARYCWGR1bASGhAZUFMBZIbCgJoqQBlQ0wpoBNBVA1CCBogMiSEzFAZhUIZeAlwPNKyRLsAaaUBgiAyJAW2NyhUeVYVHVeFRJTyqhEeV8KgSHlXCo0p4VAmPKuFRJTyqhEeV8qhSHlXKo0p5VCmPKuVRpTyq9BpV/3PSP/3z//0nfCv7HYXMlM5Unak2UhiKPRVmKs5Umqk8UzOPNPNIM48080gzjzzzyDOPPPPIM48888gzjzzzyDOPPPPIM48y8ygzjzLzKDMPLLMfVy1YY/eUzJTOVJ2pNlIYSj0VZirOVJqpmYfMPGTmITMPmXnIzENnHjrz0JmHzjx05qEzD5156MxDZx74ej0uWPDp6qkwU3Gm0kzlmSozJTOlM1VnaubRZh5t5tFmHm3m0ZDHqcmw++4pmSmdqTpTbaRgURn6Cx+soZGMK9nz6U8ysHpGsufUX7tg5YykrmRdyTaT+D4hGVYyrmRaybySyO1RXnyTejKuomPp2/0+Y+GLZFlJWUldybqSbSYxn5EMKxlXcuWWVm5p5ZZWbmnlllZuaeWWV2555ZZXbnnlhtndH+hgeiMpK6krWWcSkxhJ/OzxJgBTtr+OwZxFsq5km0lMWyTDSsaVTCuZV7Ks5MpNVm6ycpOVm67cdOWmKzdduenKTVduunLTlZuu3HTlVldudeVWV2515VZXbnXlVldudeVWV2515dZWbm3l1lZubeXWVm5t5dZWbm3l1lZubeYGq8UrGVYyrmRaybySZSVlJXUl60qu3MLKLazcwsotrNzCyi2s3MLKLazcwsotrNziyi2u3OLKLa7coBT6fgJKAUlZSV3JupJtJqEUkAwrGVcyreTKLa3c0sotrdzSyi2t3PLKLa/c8soNX+1+a4jPNpJhJeNKppVEyR7Ll2vO92RdyTaT15x/rKOvOd+TcSVR48cK+przPVlWUlZSV7KuZJvJa873ZFjJuJLI7bFwxZzv14VaVlJWUleyrmSbScx5JMNKxpVMK7lyqyu3unKrK7e6cqsrt7Zyayu3tnJrK7e2cmsrt7Zyayu3tnJrMzfYDl7JsJJxJdNK5pUsKykrqStZV3LlFlZuYWWBKf34NCdMaSR1JTEIerLN5DWlHxKuKd2TcSXnYiTFvJJlJefyAMaDofY/rSvZc3vcUSZMaSTDSvbcal+5p5XMK1lWUlZSV7KuZJtJTGkkw0qu3PLKLa/c8sotr9zyyi2v3PLKrazcysqtrNzKyq2s3MrKrazcysqtrNzKyk1WbrJyg6p4XOnBUPBMnpus9NhkXZuTODcncW5O4tycxLk5iefv8uN3GCsl/M/5B3/5j3//49///B9//be//+1Pf3r85fiD//qnf/6X//tP//nHv/3pr3//p3/+63//5S9/+Kf/88e//Hf/R//1n3/8a///v//xb+ffnh+HP/31f5//fwr8f/78lz89Uv/zh/Xr4/VP4VO///rh4nkKOBe5XhFJHkdpXUQ6b+VIRPoiIhoi0ihEamUJkOYVIGG0wXklPAWcU/yLgPxaQOgxjrqEs2fqSxHFaofHpcDVDppeirCasoe3hYjz9O9lU6rRofEx5NCh59xfIpJ+EVHv9oZZjbYkHPVlNYIho0gaHXImlwyJX0UEq08f96xXn5b4UoQxrlRHl543AaseRd0SetR0SJDwWoIxNGM3QkCPnvvUKSM/VcMYmt1IF4Vo+roQYnRpP2REl56NuQa3yGf9oa/7wxoVegxdcybbSxHN0ngPvX5pvBxeiYjH3T6N4Xafxni3Tx/3oa8ktG5k0UU8wsKsPk3RX5F+FXRVpISXFTEGZ6zz83G8FGCriiZzUIT0skf1vu62ZOQYR0XyucN4/R1s5mcozilCrXHuNL/ISFZz1NEjchSSkPwDI4U5MJKWlwMjGcOz9ShJkFEOVhhfy5GMcpz7qTlLNJLC+EGf6JjsORd92SfJGJ+hx7ZHn5y3SSSjfpVhqM9z9VeX7suFvonx60Ir6YbRUe+ODrsucsgshpT2si7ZWnj2I4BLcdBS5zw9+Soj3B0f5ih1qkC7PVpea8fGS6bn9sjWB1aP+YFVao9nGZYm7TfCV3vUNdpT/To+slgzZn7oc6Rx+k2GpU3jHCDpUf6XMqq1jk1Dmz5Cm76WYWnTHg8UHfNFI1f/AHGqwhLuq8IS7w51u2PbaIycSI09N2ixBqmkOj+T+fXgKOV+xxa53bFmc7S5TzqXpa/HaKkbmqPdbw457jeHuQib0/4RleR1MYwxWrqZOtZhgT5P36asVY7ufO5aDR5GOYxRKjLLIRpeq0FTqZ8LwiHkvBfiFfaTQhZDisQ5a+U81Xstw1rCdONYDNRAM/9HMnQtgyqt0r/JaNZWeH7l9PzfatXwdYmsxkDVPD9QWmJ5LcPQpmnNW9Ji5yz6KsHSpaGtKUebyG8yjKVpieOzUNLxmYQ2F2KhvJRgjq6URq+eR3CvR6iKtXfKsyIiH8pQXZtyjZ/JqGtjX4/XMuw5q0edc/Y8unkppd7ePpnl0DCP8c5Vbnq9IKzGKD23F2V0b3j4qnnxza+3N1Cm5qhtfSapDN9qUu5rjir3NUfVu5qj1vuao7a7msOU4NIc9gitdW5ZtJXX863FuzPFGl2l2+tfK4aYP5v158plrn5qbq+31s1ad6S1deJT73Ob+lWG3J1tZinyvMc4l3THy1KYxxU6h/kjutHL44pmLUpLavOMlDX6k4z+Ruq16phnarl+EdL8QkqeJSm5JUNIvH9u0l843RvtdqvWOT4khs96RtKSYfaMtffp7zwvTcjnN8+D3SxIXQt1UsjfC2Lo05Da/GDnL2P16WbiaNZ11VQi5621fibE2yTBvuBwjrMQf3OcwYPO1TX1Mw2AN4rXcVTW191rXTv1+K9TF8XWXqlEqyDd1OLqXWPShGBdivZ38NdhI6/Hzu/nVyHGYFWZlVHlE9yfCKkyLwmq8E7sWYh1/+QeZ9bNjW+c2dM30zo3GDPPumw41y153ceJISSbH72pSFS5g59bpNz+fpuqaN6GnSn9bOaleVqYzjO71wM+3r7CN4uR56L9POZKr4uRzIOpdYiSEo92+YGQHpYF3XLUwxBinePqPN9qSvuY5/1DsO6juiv2SwYdoKbyk3LoKgdde3wvh6lXdU6Zgw/anktiTZnz1mWe+PEh/bcpY95InZeltOWW8mLSBOtKKpZj2SCVbJSkmaOkrVHyepMZrEsp7041WLdS3q1qfzN4b6/anybd3awG61rKt1u1Rbi2q/b3u8zToXMBbHw1rVupR9ThOULoa/VsO2LdSqV1GnIYhjTZPPAP0/4kaqbJ+/TlLZZOfLxEHPPu8RDx5aWSqVpjXGYoORj6uezYXZXbuytbjXRvFWNHkl6rEet26rzRyetMdY341n4gQ2cPixZDhnVWdYR5hXrQYvO8k30SYrRIWyr+vMfMhhDr3F/m/D0Pd+W1OrNuqEqZt/2lVPpi/WCdKNNO6FyoGetE64rqrGnK666eGvZpwIt5qppooEWjJNm6jg3LWqiRkPQspNxXadYtglOliW5QaVK3qDRz4uQwl89ftxNfDwODeU/lHfPWRZVzzJcNd27Bumhyr0c0316PaNmwHjHviXzrEVOEbz2iO9aJ2jb0i3Vb5eyXGjb0i3Vb5ewXU4SvX6wlAByGYPKfO6PXSwDruuo8V527K23GVtG8r/KOEOvCyj9C6v0R0jaMkHbcHiGmCOcIMd+7zM9DLM04TGjWYjVHnZqd2uPbt7vl+99u677I+e02L6283+6mv//tjsc8PotZXq9XrYOr84NKVgBH0pdi4rFBxcdjw1FAPG4fBcRjw1FAPG4fBdgiNqj4OI1e0pd185OK70Pp9aBfRneJrcy+9UvdMUI2LAJiuL0IiGHDIiCG24sAW4RvhFjbb81p3tOwuW17btFi3inOM3g233mSYBpFTauEc/FPt0X5uRjmKYCunWaTl0Ls9ghzPaNCn4lv7WEpVV36XSsVpDw/WLI+38c09iDbhu8iwv3dXbReTnl3d9E6jvDt7uxyeBVILBsUSJTbCsR6aeNWINa1lVOBmCJcCsQeZM6zt/4RuXv2FtOOkZruj9S0Y6SmHSM13R+pacdITfdHatowUq2HqPPijG32v2lU8w2Vc7cb847xkTecU8V8+5wq5g3nVDHfPqeyRfjGh/nZlrQMNJo1QkxToLReplFJvgmxLqzcw8x6SOUeZtZ1lXuYWddVzmFW8oZhZq3tnMPMFLHhg+nct0frsuoH+/YdR+ZRNrxTiXL7oUqUDS9Votx+qmKL2LArk0JLmfRyF2JdVWWZe6rMD/2/rf7FfEQ97c3Om2vaHj4NMuuuCjHhrxUi3RLH9nQIYT2oOhcH02Il8yHEs+8ENfXqtBY7k+3l8Z29jJimvOFgK4BnBW8+qvIeqZhXVd7Ja11VuSevdVnlnLzWPZN78qrenrymCJ+CN5cA/ZTiUvBqjJB6bBghdccSoO5YAtT7S4C6YwlQ7y8B6v0lgK3M1vvhTO8SvimzWjdsd83XUb7trvmdOeb9Tj6KsXdv4f53xnph5f7OtLThO2PdVrm/M3XHiXnb8BIwtttPAWPb8BYwttuPAW0Rzslr3anQg5FIj2+fh1k6NpwBpGPDGUA6bp8BpGPDGUA6bp8B2CJ8nWtPf59mTscGI8AUbhsB2uXwDrKw4fOfwu3PfwobPv8p3P782yI2aJAvt7LyWoNYb6PKkecF0UGmCE+mGfanu5XpNvI48sstYrL9+42+reQz7NuEMV9XTZvo0tio4qk54o5hGu8P07hjmMb7wzTeH6bWesr9oYsbVjEpbrj3T+n2vX9KG+79U7p972+LcOog61u5HOWUlF7fDae0wVdFSrKjc/V+59Ydndvud2773Znr/cDk+MsfmB6Q9+oXatPnvWGybqmcHxjrlsr5gck7hmm+P0zzjmGa7w/T3H5VB+WwHG0la3SUHTupsmMnVe7vpMqOnVS5v5Mq963+TTfDZboZFnnpONryiLJ8mmd+K/vNG611N3VuwucaJiR+Y15+IIRv7FI0hJgP/1z+1ZOYJ/4eB+umCJ837mS9o3K6407W1Pf5407W1ZTXybq/V9ToFe/wyOnDMRamV8pzXf/60W5S26WKKy5Dsu6mvN697eoUmR5RxKyOdTel86rtTNKAf3o5YAupcRp01twMIXJ/8lo3S87Ja4lwTl7rHZV38lp3U87Ja91MuSevu1eMyWsOjzaNl7Wxz/Pn4WFeTfmiJCTrWsnZt9YzKnff6v2+tR5Se92Em0K8XvWtJ1But/rtvt90WwdNP71a24eKrIa2FIi+fgOdzHdUJS/XP3S99ezsxlbuyxt0amosqtoGldruq9R2X6W2+yo1H7dVaj52qNS2QaXaw2P6HjjrLC+HRz7y7eGRj3J3eJgifMMjm8+nvMOj3h8e7f7w8PfKx8Nj7ZOPo362XM7r1cFZYGOMWbdSzqhZOWwYp+H+OA33x2nYME7D/XEadozTcH+cvhkdd08wzju1KeEoryO7ZetOSuJ8oCc5vf7sZ+tWqoVp2c4rsuev/pv20NUe9cM29UUky+bbqXysK3p6K/RNRr0/a81LKd+stUQ4Z226Hxstp9vB0bL1bMo9a929Ysxac3QsJ7mRj2F/JKPMQ8NY0ssQaTmZdqTT22dp0j6UMd0vmTLs2eLammbb0Z9rpOfbQQBzNs37XcHzsunlzxM9zy6Fc77l2wEms3UbJWEeW0igbv023/xC5EMheT5EkUzb4+9C2u1+MeuywtiE+mld4hxics78T4XM6SKxfdo1aTroFPaN+02IdSHV6jwxaDzSns9QbCHO0xxbSJgH0+3sqA+FxLnmb3wN8zMhznOlbD2b8p4rZWsL4wxSZpZD51VfU4mvy+EX0j4VMtXimSyfCQnnenmtU49qiTG7eN5etkzbuh8OtuUCORb5VMh8UXoKMSag/wv+epdqhqNa549q7OzM1b8rbGy2rqfcm3ZTSDrmtXCK1RDic0oZNRu12bDz1/s7f72/89cNO3+9v/PXHTt/3bDzt0eHLM1c80cyUvdmeFWm6acyjtsy0lpaJfp8/0yGrKgS9bWMKvf3Q7YM337IrEtegyxLvS/jwzGW4vxIpVxf9635aEqEIqdZs84qiJY5QM7PxOuCpPuda8vY0LkaVl2MiWvegBzTFCx8deDwo0ZdT9GqMcrabe/p2fTu11agj6bGVsQqR55nh1mS0RzmN3tag+TE959P3+xiPZlynvsV68WU85tdjnz3m22K8H2zy3H/rr8ct+/6y1Hvf7P9vaJGr8Tb5362DN+5X7Fd8rnU2JuR7jqzK+H+KA33R2mQ22d2xbyX8pwN2aVwzhXrWso5V6yHUt7jGFuIc0tpC3HukG0hzoMhW4jzYOhNm/gOht60iTN2vbVX9wevr3cPhuxyOA+GfiCkfSrEdzBkCvEfDL0ZJ74znR8o55dLu2K+m3Idx5grqpzXqiykD49S8oqqkY2jlGIGtXLaHBfrzZPX5tiuTpvRtUo4Xpvpl7zBhLrk+MvVOZcZ88QtZKs6+TdHWslz7V5KE6MY5kufuZehIH3x6a1hsZ5OObWiWYppScE7me+lsCKfhrnMzJH90PtFhKOm5UGqluMzIW1u2880m6f8SMgKbB3YVO8njaor5LnRtdYx+QYR5669rS9EDS+rYgtx9owtxNkzb4S4esaeuUJbkdpez1zrlsobK7TIbRNquxxtPrIJ7cvdQf6JkEznIelDIVpXyHDeC3wTUjZ8ZsxgVM7PjFkdb2TLYoajEj3mFl40tJddbAtxhccspos/Z3jMYr6jcobHLLrhYWrZEY6q3A9HVXaEoyr3w1GV++Go7BHijHxYrLsqZ+RDW4Yv8mGpG7yvF8vDn9f7erE8/HmdHhXrIZXP6ZHdIs6gB8UMSOWujN6vzAYXn6Vu8J5S2m3vKaVt8J5S2m3vKbYInw7ZEbCstLKjX+R+v+iOfqn3+6X+qm73hrSTY4OTf9nh4E92OPiT+w7+ZIeDP7nv4E/uO/izPw9O7+tybImaJmFD1DQJG6KmSbgdNU3ChqhpEm5HTbNFbNAizqhpEjZETZNQd4yQDd9/ibe//xI3fP8l3v7+2yKcI8RsUlfUNIl3o6ZJ3BA1TeKGqGl2e/iipkncEDVN0u2oaZI2bCBkRywquR+LSnbEopIdsajkfiwq2RGLSu7HopL7sajsQebct0veEDVN8o6Rmu+P1B1RsSTvGKn5/kjNO0Zqvj9S84aRejtqmpQdG6odfv5kh58/ue/nT3b4+ZP7fv7kvp8/+7PtjJomZUPUNJENUdNENoRMEdngjFrktjPqHuTp9jCT286obREbPpjefbtsiZomssGvvuiGqGmit6OmiW6ImiZ6O2qaLWLDrswXNU10Q9Q00ftR00Q3RE0T3RA1TeqGqGn2MsIXNU3qhqhpsuNKReqGqGlSb0dNk7ohaprU21HTbBE+BV82RE2TtiFqmrQdS4C2YwnQ7i8B2o4lQLu/BGj3lwC6IWqatA1R06Tdjppmf2ecUdP0uB81TY8NUdP02BA1TY8NUdPs/nVOXj02+PrX47avfz02+PrX47avf1uEc/JuiJqmYcMZgIYNZwAabp8BaNhwBqDh9hmALcLVuW+mv08za9gQNU3j7ahpdjm8g2xHOCq9H45Kd4Sj0vvhqDSW39UgzqA2Gu9HTbM/3c6oaZpuR03TdDtqmqYdwzTdH6ZpxzBN94dpKvd14YaoaZp2rGLShnt/zbfv/TVvuPfXfPve3xbh1EEboqZp3hA1TXeEo9L74ah0RzgqvR+OSu+Ho7JnrvcDU+Ivf2CcUdO03I6apuV21DQtO4ZpuT9My45hWu4P09J+VQd5o6ap7NhJyY6dlNzfScmOnZTc30nJffNU06+9zguqfH7c6QPzgxdqeb0Ly2cfvRSi1v2U94WamvdTOx5Cn40ZZruq5fHPFLI6J+X8oZA14KUc7UMhac7f877qdWgstUMfeXtHf7t3yjRCOi/Wreq8MaieVgSlhVdP/94JmQ9ezzRZVT0JsezDReYT0fOI8PWre7UuqnJcjhW+GBA/+exX66IqtPkFj0d46SFOrXsqnw8xtW6pYpyv1GLU/PJUVqvpVK0t484zza6VfyIm5PWA95wC+lKMOWQ1zSqdu1JjyFqvqpwuRLWZOtbljkzt2yqPoydThM/Rk1o3VU4XS2pdVflcLKl1y+R1R+bvldfuyN6MDpcLUVOG04XoOxnHbRk+D5HVuqn64hatfNamTlemb2S4XJnWw3xh4vJ2+UaGy02cXZc839yf27rwuhz62+VwuVT1y/hwzjldqtawwaXqm8HuHCDhlzvG5w61WrdUXneobwricodarfdUvqVMtV5Ted2hmuXwuUN9u1AVWqjmFwvVar2m8q52TSE+d0b2MlXnefeZfD3Y431X6jXedqVuivCtg2q870q9xtuu1Gvc4Erd3yuWTjY3MfObHVp7vXZIcYMqtHYxTtsSW8g6NDuT4TMh4VgOarK5n7JKUtJyQiifb8rIZ1Zr8vGmbFkhnRu0YoixqpTaapcgH7ZLj3NwCfniYjX5N81ODV/t7dCx1ED9aOqcZwhzyAbj651v7/+rdVvl/mjmDU1qdu10ZXj2cvpwyIdjeXg77/I+PocIhVZF+vHMCfGgxZUxc8zo0jOAOb1neHIy88bv1ryzevjdeuWxrlovq7zOu0whTu+K5tt9r080NYMqhnX0lj71/+W0Z6rWvVWRNK8lhFZGT91ruu4im+hIfkR/5v9L53vV8+Dr9f1Itd0AbhASZJ18C90G/EyIzjP485AlGkLMRwBz4mX5TESbrsh4Af8jEeGgk1UphhBrU5NleQJudMXSftCmbbkAbNEaZ9b96HLOVmr90K+aLL9qQrvNJxnVvumZ4fdoeRXDs+8uy6taXO6zY3791Kxquj//Tb8KgRwrBD57f/Z7bTrOSbGsk7PXD6OqaT/jq47tVW0FVS6sVn8gQuK00ZCYPxPhqkjTDXrZFOJVqea7qh1C3HrZFOLVy7Xc1suWCKdetvd5Tr1c6329bLapUy/bz2+9s7+Fu5PmjUsUz+y3Rbhm/xsRvopsmP22EO/Ebb8txD37TSHO2d+O4+7sN0X4Zr8pwjv7m/Wswjv7zTZ1z37rVYWQI3Havsenupi+9+eJZOaAxt98VZUNW6p23N5S2e47vJO3bNhStRB+WYh38tpCvJM33N5SmSKckzds2FK1cH9LZbfpjsnbZlCzVl57Vmnmq6qwXlVFCsL1bfLucBDdTN99vslrvpn3Tl5TiHfexfLLQtyT1xTinbzWvZVz8loinJPXEuGevCncn7xmm3onr2UvHtu66Gk1vp6+1uuqfMzAc/lLJKH8E8dI3umbbu//bZ9G3ulrCvHOvNR+WYh7+ppCvNPXdMDnm76WCOf0tUS4p691Z+Wdvmab7pi+5z38dPIa2munJs16YpXrdK6QG4Ul/TZ9247pW47b07ftmL5tx/Qt6ZeFuKevKcQ7fe2XVq7pa4lwTt8iG6avNWu809dsU+/0Nf14pXmZGJLSbcTXE/xmvbTK0zwq80sAUb+IMm++2QznZyKmXURh18o/EdFjJuBKhNzEfCyifChCVsycD9tCZlvIp22hsyL6aVuwiA/bgoM7ftgWOttCP22LOitSP20LFvFhW9SpMqp+WorpCL3WD0vRzwShQT9tCxbxaSlmgLpmqBzb55/T1M0W4nw61Ox7pbY+jsUSYp2kiv4DJfz8ktmujNM+zRTiNf6zS+I0/nvjwsx1kWKK8F2k2CI8C0rbR5ZzQWkL8a4FW/xlIe4FZdtwjdra7WtUU4RzQdk2XKO2dv8a1W5T54LSdmDm3IWdeuL2PartfMw7a8KG88uzNvm3pXjnzRspzolzStG7M8eW4Zs6tgzv3AmHFaXKOXneNKx7O2Z6AFsPEWOj+jw5aDnrY7mrCsuTeODIO/IsxBwo9OqFmjbosxBj/kieMURL+lDEfF4htX4qYnoCOV6W4o1TtWkcUo4v24jnYlib/jLfiGXJW4S0V0LcfubScRijzLqoCnnFq86pvq6O5QBQjvmoSQLZQ38XYg3Vc5DPZx6hHHWLGPb0ID85UWmrWQyPtabfu3WW0cLLxfxZm3p3Q2D7rPN+QtOWj18Kvy3F/wlNYccnNOX7n9CU739CU97xCU33bQHeNKz7E2pdwB3pH6vqJzu+cJhOAfPyXR1fzeFwZNMz0HwRxEHnn/00mH703IvpfNuWz/aB59UEue6Yw1l+W4pfE5hS3Jogt/uawJLh1QSWDL8mKHGDJjAb1qkJ3jTKXKC0+HHDTi8nTcv9zjFk2HMnzbCP5+/Ch0Li8mGfDqtVN9xd2UJCSOtdYK4fFiWE2Tsh1PKpFFqxpfZxWcp66VjoMcxPpch6kV7bxzVa0ydFq0Yi9/WSyH29JLJDL8mvD9s0N7QhFf20UZx6yZTh1EvOzjFlmEtQZ11MGc66OJfClo41dypeHWvvmbw6VncMVt2iY3WLjtUtOla36FjdomN1i46tG3Rs3aBj6xYdW3992Lp1bN2gY+sGHVs36FjzpNxZF1OGsy7OE3tLx5oXKl4da1/teHVs2zFY2xYd27bo2LZFx7YtOrZt0bFth44Nx30da8pw6lhThlvHhuPXh61Xx9qN4tNLtgyfXvJ2jpbPLuF9VbFFuGritSawFOyx46Dg2HFQEMKGkWoKcSvYN1KcCtaW4lWwthSvgn0jxalg39TIq2DjBgUbNyjYuEXBxl8ftm4FGzco2LhBwcbbCvaNHdx8HX1eQrwMKGqLWE5n2WfNTwwLnS7W3gjxueCzXyL4Pjjlds9630OYHbvh1OTNmxnvByenDTPXEuL/4NhSvB8cU4r7g2NKcX9wbCneD45dI+8Hpxz3PzjluP/BKRt8YJxSfn3Yuj84ZqM4PzimDOcHx9k5lmozX2r6FKwpwqdgne9FLQUrOxSsbFGwsmOkyhYFK1sUrGxRsLJFwcoWBStbFKxuULC6QcHqFgWrvz5s3QpWNyhY3aBg9b6CNT1Z+BSsKcKnYJ3+NCwFa3o68SpY2+eKV8HWHSO1blGwdYuCrVsUbN2iYOsWBVu3KNi2QcG2DQq2bVGw7deHrVvBtg0Ktm1QsO2+gg23TStsET4FG24bVth+4LwKtuy49IsbHA7aQtwK9o0Up4K1pXgVrC3Fq2DfSHEq2Dc1cirYGO4rWFOGU8GaMtwKNoZfH7ZeBWs3ik/B2jJ8CtbbOZZqO25XxRbhU7DH7YrYXnK9Ctb21+tVsHHHSI1bFGzcomDjFgUbtyjYuEXBxi0KNm1QsGmDgk1bFGz69WHrVrBpg4JNGxRs2qCX0u1LP1uE69LPiliXwowRlRI/Ds3PnWs953LEILId7ru61Rbh6lWv239DhB2QwfmxeRMawvuxyRteHZpC/B8bW4r3Y5N1x8fGlOL+2NhSvB8bu0bej025/1jWlOH92JQdj2Vj+fVh6/7YlPvPN2wZzo9NuX3K8CZgjedj80aE52PzJjTT9DolQqE823PfiunxOs73tmeaHIE8BzQ65VgGUXW6RQ4tcCjA8tQoViBvZzgiS4QzHJEpwheOyPIhEL3hiHY4Iogaf1uK+xGzLcX7iDlqua+htdzX0Fp2aGitGzS07ghLZJ5jeV0AxHo/LpF1BOV2axzSjnFf829L8c+eusOfVqz3/WmZMryzp+7wpxXbBn9adsN6Z4+1afNGKDzrcz8YVr4f1Svfj+qVN1RkR1SvrDsmcGu/LcWvBtqG+ATnduh2gAJbhlMNmDLcaiAdZYMaaDuCFFhv/90f0bQhrJa57vPOni2Lx7QjrpYtxT170o7IWqeU+4cE6X5sLVuGf/ZsiK71pmG9Ll0tZ6zOGAHnPzPXBJ4gAbYMX5SANzJcYQJsGb44AX4Z5VMZrkgBb2S4QgXYMnyxAvwyPm0PX7SANzJc4QJsGb54AX4Zn7aHL2LAGxmukAG2DF/MAL+Mj8vhihqgtitnX9QAW4gzasB5xGtdfDrDBpxSrDhwPjehZnWccQNMId64AXZJnHED1PxCuLZqtgjXVu2NCJfTxrjDfWvccdaSyvHbUvyLTVOKe7FpPdryLjYtGd7FphkFyr3YtN6BuhebZsN6F5up7tiqlftRN/KG2wJbiHvcS/xtKf7ZIztuC5Lcvy0wZXhnj+y4LUiy4bbAblj3Vs0Q4o4fkNTyXOyMH5DsayVf/IBkvdzyxQ+wRbjiB7wR4YkfYDnF9cYPSJZneW/8gB8IeRk/4M0oc8YPSGakKGf8gGRdbHnjByQzAJc7fsBPxLyOH/DmtMUXP8B6K+GMH5CsB23OjUHZ4TW87PAanmr7bSn+T2jdclfQNtwVtA13BW3LXUHbcFdgN+yO+AE5pKkgg6TXV4bJisflix+QrJsPZ/wA2RGMK28IxiU7gnHJjmBceUswrrwlGFfeEowrbwjGlTcE48pbgnHlHcG48o5gXMV6Ix/rbJR0ZFr4hfxcH2uDXqc+CZXMi/NXQz45tsxjy22q8/7y2DCPbSHuGRjqb0vxz2NTinsex3B/HlsyvPPYkuGfx9bBoXsemw3rNqHbcaSUo96ePXHDkZItxD3u0/HbUvyzJ+04kM3p/oGsKcM7e9KOA9mcNhzI2g274yt47vBlbvbJrP75K2gKyce6/j8kGp/S/OtSpJZ5qFR1VUh+IqPN2yppUT+UsQ63Wnktwxywvucbtgzf8w3vxLHeCpp6zfuG2dawzmdlOW/wAGsKcT8reyPF+azMluJ9VmZL8T4reyPF+azsTY2cz8pyue+4ODtdqJZPy+H/ZpRfH7beZ2X5vnfbNzKceum+f9s3S2pnXUwZzro4l/aWjj12OOI5djjiyTvCcZlC/DpWtuhY2aJjZYuOlS06VrboWN2gY3WDjtUtOlZ/fdi6daxu0LG6QcfqBh27IcJR3hDhKG+IcCQ7IhzJFh27IxyXKcSvY+sWHVu36Ni6RcfWLTq2btGxbYOObRt0bNuiY9uvD1u3jm0bdGzboGPbfR1rX/b66mLL8NXFe+ls6diyI8hR2RHkqOwIx2UKcevYN1KcOtaW4tWxthSvjn0jxalj39TIqWNLuK9jTRlOHWvKcOvYEn592Hp1rN0oPr1ky/DpJW/nmLpNyn0dK+W+jnXaxpoR5zecx74xovbq2B0RuUwhfh0bt+jYuEXHxi06Nm7RsXGLjk0bdGzaoGPTFh2bfn3YunVs2qBj0wYdmzbo2HL/zsuW4dSx5fadl/24yqtj447QPmXHnVfZcudVttx5lS13XmXLnVfZcudVttx5lQ13XmXDnVfZcudVyq8PW7eO3XDnVTbceZX7d15vHp96XCm+EeFxpWi/5nUG63wjxBes841bEOc3534sDrd7EusO0PQe470DtP3YeL85O+JymUL83xzd4SveluL+5ugOX/FvpHi/ObrDV3yp933FmzK835y6w1d8qb8+bN3fnHrfV7wtw/nNcXaOqduODefTx4bz6eP2+bTt386rY/MOF+llR2guU4hfx7YtOrZt0bFti45tW3Rs26Fj5bivY+W4r2NNGW4dK8evD1uvjpX7UYLeyPDpJdkQJyjfj8eRb8fjeOOp1ul0vt639vB6zLVa1HRo7NX0tmtlp6aXsOEJrSnErenfSHFqeluKV9PbUrya/o0Up6Z/UyOvpo/3X36bMryaPu54+S3x14etW9PH+ytQW4ZT08fbK9A3vvSdOlbv30R6ffqbAYc23ES+Cf7g1bFpx2BNW3Rs2qJj0xYdm7bo2LRFx6YtOjZv0LF5g47NW3Rs/vVh69axeYOOzRt0bL6tY9+EpPEFHMp3V9NVbh9N2yJ8ceXkfvwm3WA4bQtxq/kdAbpMIX41X3bElbOluNV82RFX7o0Ur5ovO+LKidx3GS/OoV8+LYdfzcuvD1u3mr+vld7IcKr5DXrJjvnXlqPlh5viKUZ+IOT8YVtCqE2ennuL2kWpBxXlMyk5PDxXYZjE8OrhuX1j7m0T287D3SZ1S5vU221iOQhprSz34pWWA5J+ImQN2FbjayG2C4pj+g470/TV+JEYn6MEW4TLT8IbER43CebDaG/PvBHi65ls+5v19owpxtcztghXz7wR4eqZbNiqSFphMBJN3SQ/ERKnS9NTiL4UksyYcnm6OYk5rJW4PMXbFMuLId41XUsb8hH0XYhloDU9mta0ynHeJv9ARp1RCqoES4b1PuaYYbNjoL7J3ypjzJoqQ61WMr75VhC1Lj5SmPusdDbry/79Qd/oy76xB0maX4kvkQ5+JKPE6QTqVHwvx4hp1VTa2jc2ijL7QyHTM50lJFnxxH2DNVVjnLUVpLbVLxZa8QdCYpraOZZPhaxdUmOPxD8TEmRFKqnl0+pM91xnzeJrIVYYxqYr+KHK6y/WD4S0T4W0tZRvrz96b9okrzYpYjSsqebrihBCm/JvE8cKzcVxhl7qxWQtwbXpdCneWDGmZ8UYTEfC5GI9G1ogHve/WWq6LvR9s0wZzm+WxnT/m2Ua1Hu/Wdatlvub5e8bNfrGHCVtesAP567N6OB6+1vxriTzuCUevMl6FmI5tUuzh/Nh9U4yPVz6gg3ZJenOVlES8hP9vSRWk5wD9lgDtn7WrjGEuSwJNRvtWja0q2XT30qdQ02DMerNSzZXu5r6tYZp9V1DTS/1q/3Vcm4b3wjxbRtNIf5tY1D7NmmPHKcLRVuGz4XiGxkuF4rmMwVddzj1tYZt93eOmuuGr7B1oOb9ClsyvF/hEjZ8ha2QKd6vsPVEz/8VdveNfjZGfBtHU4R332gd7rv3jbYQ11rAjrLpGanWSs+7azRlOLdqpgzvTi1u2Ki5ZbQPZTi3aVs+MWarenficcO5QtxwrBB/uS7eQ4V4f6Ramt07Uv0y2ocyfCO1hB0j1W5V36mEvYJwHkpYngldhxLW1VM+5lg/VzTs6Pt5aWgF5EpxfulS4tXQT2SkaSGQUn29NDQfabku9Kz2SG3dph/UpP+gPcxj5+UivwSa/Ud7lmJsrJLMEOxJ+CnskxTTi4qrRawN74pqe165rMv0p/YwJczVJQewe5ZguyuZVkKhsE/7Jx/wpowc14IuppcygpqBr1qsMne7sbVXLWptmHVuMc/DEbLYOEeKW8bZDAdVh9ZT8XiuT7k/c00Zzpnb9PY4tV7OrSDuZ7K+klBvj/R6d6QnvT/STRnekV6tx1jekW5FOzjH6NwBRYpnFsMPZJQVfL2U1zLs2aI67ZtKJcuVb7OlWp5inbPFluGbLfW4r9X9LRLSyxbJ2dxqt7XVXu0RP5ZR78ug48NvMqyb7zB3DufPaE1Xs19GlDxliH4oYxo2xCTHaxnmOE0rInCSD2Ws1UdMel8GxT56lmEZ88kxb83k4MCmTzJKu9+3pgxn39oyfH1reTA9j7FoVRg2yCgfypg3TGdSP5Oh66hOS/xMRp2XKedtxoftoTr1utJdyucy6od1Ocb4SDV8OD7qDFl2/uzDvq25Lhnt03LM8VHl076dQcLOZPtwzulag1h9a57kHvNsO9G38ocyjiUj35cR06c6aD2WiPXDcqTVHqXdL4elC8sGvV426PWyQa/nDXo9b9DreYNezxv0er6v161QyOWo8+bjaPLR+qOkNtrjTBrrIHN9OtcwiW+m47fdh9Ui3hu2WszN+jS+PSexWEWxzFWLDilaGh0+1Gch5k6orp0QX/fpsxBrubwMXU7lGA0h9qOEvB5c8Vuc7xUy27asqImqVtuaUtrqofZ6sJjbOwlzrASJ5oZX0s3z5TcFmSIeBalWQYp59j9P7UOjXn6ayOZDqTDDs+fwuiCWjLLisxfu4WcZVuicIkspSZXPZCyjqsft7ksZdtfkNN8HSs4fS5mz+Ey3121Sbx8y19uHzNU62g2V3hS146WFSzVdH4R5y31e2ulnMuJcbrYY60dHzGm+xTvTtHT+Ud8qGUFoCc2YvNYtlffYzJThPDazrpg2HJt9bZH4ebvWJSV9OPN0nYyeaVp2fu+dev8KwJbh7R393d750iJ6fNw7SlLCSynWRZFPo5kSfJcJVk3Oc91pBVyDoZtDtVyq+a5WbBmnWlxfGxU6yP+ZFJ22TGdawqdSlqZXPqz5wVircS1JajLmsPk+qea5+zzTrX4k5dx+TisxfgsXnxbBbhkhfiajTLPXWKhvfiLjLH+c63neKj0v6M3HY86bc1NIOe/ixhorVjaN+ImQNO1vSiKD129C2iG3VbQtw6ei23H7wfSbBplb4ZJDMRrEsuCVY1ojykEHUP9AirEeKPN0Ueiw9XnL96Yg6xkq78l/WJ3lNeTcL4WPpcx7X2F7sR9LqVMKbT+/D3vr4CXPQ+iSTSHp7ifUFuH6hppV8d7I20K8V/LNeizlvZIP5t3xMc3n89epo89FSfc1kinDqZFMR4IujWQ9Vj710Txu0chzr/plyDr40Zheynh0oDVInFZjLbYN3z6rKBLmvKGVzfeCmO+t3NWxTC3d1bEs0E61M1dZfA8dwvNYS+aJ9BwopNJUflCO/lj9Wu3xhu25HGmDCZoppC0fZO3LbcOzgraFzGZterSPhaQphO+0vgkxnZ/kqaTZjPWxLv8qxFq+HvODE095hhDTAH1+yltlk4cftUldDdvozPSbkGbdOuyR8uWdIduSPLeKLWVZpMRIm79/IEXtI7p1Qhc/lbIO2MP5NfxUSp5vlU71VgwpxXpO6vTeZTdukrk/T9Vo3GIuUXwPnsr9FVu5v2IrO1ZsZcuKzfSr5tXVLZsHUq4X/8284nK+NWxy+wWXLcP51rBZ97rem9Bm3W053xo2sQ0PfW8N/X1jvTW0BonzwX+T+4/8guWFKMrU0WeSFgXPz+xNIbqMfs/R/5kQ94N/syTdT9k407KEWGrgaGvhd6bZ59VPxISc1/cvs7HKD8WEvMRk40G42TKpreYN8mHzeiO1tdu+A8zp43XJ0LwrJcMjQ6v3PV20ap4TOD0ymCXxtqrZu75gfm+G65HI7SQvzH826sNqlfOw4+M5GNbDm/BV5/9kmVPmSont1X+2UpqnfaSXvol4sxSe5QhJP15Q5/nM41w2hR3LckuKvXOaS+FWyUDj+56nbTjdahtOtza8rGrt9gnZm0ado+RsX7Ea9f7lgSkjdMfqGCNyWOPVlCLzUiZIap9KqWVdrpaPy9LmO5x4HOFDKe6jC7ssy9wraH1do9gXVnc36W+kODfpb6Q4N+mnlLphk2437rL5qCF83Cw+hf2uWXwK+wddZClsK4iP76Q5HlaAXO9J8ymlbDhpDkYva5mLYpXA94HFL6SGPB1ZpZg/FFJmH9fy5U7iuY/DfdMtuyDTpXstbDP5rSDxtouBNzJcn1Po0ptfMcsPTpXp1KdyCJFv3WvVxXnUZorwHbWZvgq9R222w0PfUdvZMW3DUZu5BvUdtcXDvvhyHbWdQuLdozZbhu+oLR7p/qODeFg3K76jtlOG3D9q+0HfGEdt5iDxHbWdBWn3j9ost23uozZTiPeozQ4N4TxqM0viPWorx5ajNlOM/6jtjRjvUVtuG47aTCHeo7Zcbx8KmSGunUdtpgzfUVs8rCse31HbKSPdP2qzS+Jt1bbhqM0eru6jNluM+6jtjRjvUZu5zPEdtdkrJddRm2V+6d3nSNyxz7HuvfzGsea+YL4ATqfepjWs/kCITlO01PiN2rOQsOGLHm4b69sifItpsybexbTdHN7FtO6wNLS2SiGTrX7Q190bzXvN9ZCpZd5Q558IyaSl04dCtC63XbyM/d6ysmMOq26Yw6afKNEViks0vO5kK66YzmOG87PTPmvavKpzrh6tpq1hR9PWHQaHZkgCmW4Vo4gYQ98SUuaXK4rml0LiscMX4Sllgy/CYH6/ynL/fabDqwByQeqOlXm0oyaux8DKPvieZByWi/aoq5s1GzvBtuO4oG04LmgbjgvajuOCtuG4oG05Lmj3FxfvRsk8AI1qbVaaGQ9Ll4uzph8LOe4L0bIM5uX1oLcfiPDxR/mwYRNZZJ8LyE+FyDpYrodRnWJVx+Vi/Z0Qp4t1szp5ftMTX8p8L0n99ZKsGXhew20Q8ukEPO8OdAqpr4e9ucAPshxHazTU0ptx7x0o8be7R8OaxoZWCsE0sVPa6BdLV5tFacvtmTFSzGsm52lOsGMVOU9zzJI4T3PerJSSrJVSeXnfFeIbKZmk1I+kOG+8zAiozmuVEO/H2TyF3I6zactwrpPMB1bedVKIt+NsRvNJknud5O8b4xDGHCTOaxXzIZD3WsWygnZfq5hCvNcqohuuVcySeK9VpG65VnmzefPeh5hV8t6HmEK89yEi93V9uX8fYspw3oeEXO5/QbPs+ILm+wbddu8670Ps4eq+D7HFuO9D3ojx3oe8OfZbjyXltQ+VaFofn79MlaSUj6R4jVPrjqNQMyJjWEEqk2E2bHmqV5nbDNX42kw2BsuhYZHlOkHYrPSpINbBIT+2pDeo5x//QIhOI9nzmOt4KSQGCb8t5VTBxxpr9VMpqsu8tUVLihXFd3reU77o+ZEMCg9Z6ocyzh3ivI5gj5X/QIp9DuoxbX3TsG3dI7RojDfL7WWps1FKpXOY1vwyRMK666WNZHuujd6/7C1m1OoV7SrSfUaO5bkg6bYmKObGK6xRcqb5O/j8rtf01BrLOiPj+7PjuT5yuz5W35Qyw26eW0D5SMS67D2T+TMRropYd1VuFV23KFfrwmuPFL+KNqW4VbR15eVV0ZYMr4o2r97cKrrWDSrabFinio62/bRXDbTbsydaN6M+NWCLcKmBNyJ8FdH7asAW4p7A7del+NWAKcWrBqLlas6pBkwZTjVgynCrgWi5MnOrAbNh3WrADJ+9jtioHCU+i7DOTdI8dsxfHGnnp+pYkcDdG6543N5wxVw2TGNTiHcCxhB+W4p7GttS3NM43N9wmTK80zjs2HDFsGHDZTfsjmnc5iukLx7kv01jUxWE6a21RHq9+m0aa9oxja1rKuc0tjYo7mlsCnFPwFh+W4p/GptS3NPYuvHyTmNLhncam14W3dPYekfknsZmw3qnsWn439b1TqNH298nsvXMKx8zktJ5QxNfT2QruLZ/IqfbxwSx5A0T2RTinoLmyfIWKf6JbEpxT2Rz1eWcyJYM70S2ZPgnsnnV5J3IZsPumMjnTfx8UhFaMCay+UCrznAs+dQMrydy3TKRy3F7ItcdE7lumcgl/bYU/0QuacdENoN4OSeyJcM7kYvsmMiWEz33RLaf8zknsmm1keaN5HkRSzcZT4f/0bIAy9NiKlMHn2PmBzLKvAJnm5wfyphGEoVjVf1IhkwP21/87H8so3wqY7aHfNweMttDPm6P5XFcP24PlvFpe3B0t0/bY4WG0Y/bo8661I/bg2V82h51apCqH5dDh0Ks9dNytBnltX3cHizj43LMB2/N0kFqvn3wmcHZQuK81j0Pwl9bsJ37PvOGqq2PZjGlWMew693QF99W+QfVcVqvmUK8poF2SZymgbG225cxpgjfZYwtwrXYNJ2oeRebphD3MrHF35biX2y2HXeysd2/kzVleBebbcedrNnL7sVm23Anm44ddyA97u+92ZOODXcgthDvuE9H/m0p7tljS/HOnh6w8+bsMWU4Z48pwz17Urgf9OBNw7q3apbxaFxvGU+1sYS0/Fwfy6NGmD4KzkMcXm09C/F6+ecI1PosxDKAmw41hJ1y/EjEfIUhFBjxhyLGxNHjZSmS9YSqHHEFbv+yr3guhnUiUOazssxOOW4IaS+F2KNsLrNSOg5jlJmvufLyhJFTfV0dy2ZFjvkASgL75PgmxBqq7NkjlKNuEUM+Ub81ru02ejULzZun05YUg+uQo4XXi/pk3Sv5NgZmg7g/oXHLxy+F35bi/4SmHWYEKd03IzBleD+haYcZQUobzAjshnV/Qq3ruiP9Y1X9bBSYsvnOe84ecuv9fGKasmWdON9n58inJk8xfS0/lf7FdL5tF5jShq2oLcQ9h7P8thS/JjCluDWBddHm1QSWDK8msJ1mejWB6TvQqwnsZ3tOTWA3ylygtPhxw05fKU3L/c4xZNhzJ01fbOfvwodC4ryLPeVZrbrjYssUElaE4XPZVT8sSgizdwJHGP6hFFqxpfZxWcp6DFnojc1Ppch6uE5vvX9aozV9zkWiIUXu38eaMrx6SXbcx3Z36r87bNPc0IZU9NNGceolU4ZTLzk7x5RhLkGddTFlOOviXApbOtbcqXh1rL1n8upY3TFYdYuO1S06VrfoWN2iY3WLjtUtOrZu0LF1g46tW3Rs/fVh69axdYOOrRt0bN2gY82TcmddTBnOujhP7C0da16oeHWsfbXj1bFtx2BtW3Rs26Jj2xYd27bo2LZFx7YdOjYf93WsKcOpY00Zbh2bj18ftl4dazeKTy/ZMnx6yds5Wj69y/fVxZbhq4vXpsCS0TacFbwxPnHq2Bw2DFZTiFvHvpHi1LG2FK+OtaV4dewbKU4d+6ZGXh0bN+jYuEHHxi06Nv76sHXr2LhBx8YNOjbe17G2Sdx8Y104ztyPrOqWu1r2hvMTG0OnI7Y3Qny++t48VnB+c8r9vvU+mjD7dsPZyZvXNd5vTt7gmMAU4v/m2FK83xxTivubY0pxf3NsKd5vjl0j7zen3PenYcrwfnPKDn8aufz6sHV/c8xGcX5zTBnOb46zc0zdZr7sdOpYU4ZTxzpfmFoyyg4dW7boWNkxWGWLjpUtOla26FjZomNli46VLTpWN+hY3aBjdYuO1V8ftm4dqxt0rG7QsbpBx5puMJw61pTh1LFOdxyWDNNbilfH2n5bvDq27hisdYuOrVt0bN2iY+sWHVu36Ni6Rce2DTq2bdCxbYuObb8+bN06tm3QsW2Djm0bdGy4b2dhy3Dq2HDbzsJ2LOfVsXnHHWDZ4cTQFOLWsW+kOHWsLcWrY20pXh37RopTx76pkVPHlnBfx5oynDrWlOHWsSX8+rD16li7UXx6yZbh00vezjF123G/LrYMp449NtRFN+hY2xuwV8fGHYM1btGxcYuOjVt0bNyiY+MWHRu36Ni0QcemDTo2bdGx6deHrVvHpg06Nm3QsWmDXkq37wBtEa47QMvpbQoztFRK/Fz0m3dJ64HXdDVL/qLzcynqfZsTW4avX72xBQwZdugH5/fmTRAK7/cmb3iKaArxf29sKd7vTdYd3xtTivt7Y0vxfm/sGnm/N+X+C1pThvd7U3a8oC3l14et+3tT7p812DKc35ty+6zhTWgcz/fmjQjP9+ZNHKjpkkqEooA+x4EqZjxSifMR7pkm7yDPsZNOOZaJVJ2ulUMLHELw6+vmIJYvVV/gI1OEL/CR3PboGnSDmyBbiPdNctH421LcL5ttKd6XzUXvO9kyZXg1tO5wslV0g5Mtu2G9L5uPHZEdS70f+OjYENnRFuIe91u8KptS/LOn7nCyVep9J1umDO/sqTucbJW2wcmW3bBuvwDGuHdHQyztfrStdD9sWLofNixtqMiOsGFpR8Cv0tpvS/GrgbYjvoEc9+MbmDKcasCU4VYDcmyIb2A3rFcNWG/53R9R2RCty3Jr7J49smPxKFuidcmWaF2yJVqXbIjWJRuidcmWaF2yI1qXbInWZUXN9AYVkGiuCVxBBcSO/ucKKmDL8AUVMGU4gwq4ZZRPZfiCCtgyfEEFTBnOoAJuGZ+2hzOogC3DF1TAlOEMKuCW8Wl7OIMK2DJ8QQVMGc6gAm4ZH5fDF1SgmVtPZ1ABU4g3qIBYfgvdQQXEutlyBhUwq+MNKtDMj6YzqIBZEmdQAdNFtG+rZotwbdXeiHB5cgw7fLqGHWctUo7fluJfbJpS3ItN6w2Xd7FpyfAuNs2wUe7FpvUs1L3YNBvWG1TAjNXp3qqV2yE5bDfE3tmzxZex7NnwyY7bAluKe/bI/dsCU4Z39siO2wKRDbcFdsO6t2qGEHdQAbGuQb1BBcS+VvIFFRDrFZcvqIAtwhVU4I0IT1AB60moN6hA3429HGbOoAI/EPI6qIA9ypxBBXrDvRwgzqACYl1seYMKiBmeyx1U4CdijKAC9mmLL6iA9WLCGVRALG92zqACeYcr8bzDlbjU9ttS/J/QuuWuoG24K2gb7gralruCtuGuwG7YHUEFckhTQQZJr68MxfKp5QsqINbNhzOoQNkRoUs3ROgqOyJ0lR2mN7olQpduidClWyJ06YYIXbohQpduidClOyJ06Y4IXcH0oV9no6Qj08IvPEfctB5whTr1SahkXpy/GvIF03Wwex5bsbGcJnTmZ9RrQrflW6yh/rYU/zw2pbjnsRUKyjuPLRneeWzJ8M9jyzu6ex6bDes2odtxpKTWCznn7X/YcKQUt9zbazp+W4p/9qQdB7Ka7h/ImjK8syftOJDVtOFA1m7YHV/Bc4cvc7NPZvXPX0FTSD7W9f8h0fiUWjdee6RILfNQqeqqkPxERpu3VefmSD+UsQ63Wnktwxywvucbtgzf8w3vxDGfpm14VvZGwzqflWne4BPWFOJ+VvZGivNZmS3F+6zMluJ9VvZGivNZ2ZsaOZ+VabnvylidHlXLp+XwfzPKrw9b77My3eDuVje4u9UN7m7tJbWzLqYMZ12cS3vz6W67r2Pf7AG9OnZHjC5TiF/HyhYdK1t0rGzRsbJFx8oWHasbdKxu0LG6Rcfqrw9bt47VDTpWN+hY3aBjN4Q90g1hj3RD2KOyI+xR2eHyTHfE6DKF+HVs3aJj6xYdW7fo2LpFx9YtOrZt0LFtg45tW3Rs+/Vh69axbYOObRt0bLuvY+3LXl9dbBm+ungvnS0dm3eESM47wh7VHTG6TCFuHftGilPH2lK8OtaW4tWxb6Q4deybGjl1bA33dawpw6ljTRluHVvDrw9br461G8Wnl2wZPr3k7RxTt8l9N1+2DKeOddrGmmHoN5zHvjGi9urYHTG6TCF+HRu36Ni4RcfGLTo2btGxcYuOTRt0bNqgY9MWHZt+fdi6dWzaoGPTBh2bNujYcv/Oy5bh1LHl9p2X/bjKq2PDjjA/dcedV91y51W33HnVLXdedcudV91y51W33HnVDXdedcOdV91y51XLrw9bt47dcOdVN9x51ft3Xm8en3pcKb4R4XLda77m9YbvtIU4w3fKhpAcsiEkh2wIyWE+JvTaWdh+bLzfnB0xukwh/m+O7nAXb0txf3N0h7v4N1K83xzd4S6+1vvu4k0Z3m9O3eEuvtZfH7bub0697y7eluH85jg7x9RLx4bz6WPD+fRx+3za9m/n1bFpR0iOuiNGlynEr2PbFh3btujYtkXHti06tu3Qse24r2PbcV/HmjLcOrYdvz5svTq2bQgV1DaECmobQgWl+yE50v2QHLanWqfT+Xrf2sPrMdeSYTo09mp627WyU9O3sOEJrSnErenfSHFqeluKV9PbUrya/o0Up6Z/UyOvpo/3X36bMryaPu54+d3irw9bt6aP91egtgynpo/3V6C2L32njtX7N5Fen/5mYI8NFnVvgj94dWzaMVjTFh2btujYtEXHpi06Nm3RsWmLjs0bdGzeoGPzFh2bf33YunVs3qBj8wYdm2/r2DchaVwBh+T+KXmQ+2fTtgxnaDm5H8Ipb1hN20Lcmn5HjC5TiF/Tlx2h5Wwpbk1fdoSWeyPFq+nLjtByTe57jW/OoV8+LYdf08uvD1u3pt+gl9oGvdQ26KVgfCy6HUgXIeQRKob0AxG5TRH5tQjrmMBZClOEqxSWo67zRKUO7fpl6j65QzRlSJt+MKSlz2TUpeXbUT6ScX4dpp/LI76uSzCPKtMxo8Omo6YPpfi8EryR4fJK8E6GxyuB2TM6HR49HCB81rtfZOQPZcQlI73ul9isM8IU2xjvKYX8oj3eyEjzc5dS1dcy2u/KyGHWJcfwWd9Or5BR2eHLj/plemR9vAP6UAaV41MZda69HzZGH8qYqwdbxu2PS7v/banmOU0M8zMZX+uONzKmf6Mz2V7IsO6RfW1hSnC1hfWetWiYjp6UvDSFePhl1Bl3rtQUPpQxv5JnUj6UUVY5KHb5z2SsbW4tH5ajzdFVzpH2aXu0JeN1v5jL47KcahYyKftcRv1MhszFcRaK3fEzGTOcSVZjjIkdGG18EVTDa9do6bCs0nKZI/WsGJ1iSPpJSVxO2s6SWGPE5aRNN0Ro2xHd96xL+20pXhdtb6Q4XbSl4/7FlS3Dt9W2ZXi32unYcHH1pmGdLtpq2TGJrcAb3kn8piTOSZxuh76pGxyP17pj+qX021L8k9iU4p7E999o2TK8k3jHG61TStswic2GdU5i62tejimjHPH1KisdZpyJOENVlMhrxvosxDoC0NmyonRq/STEro3MNSOfifyD2pQdtZHfrU2YUVXO5GerxtLfcEFGivqZjBXd5UxukCHhQxl19i7H//iZjBlY8BT3aZvOy4gzKR/KSEtGzsZIvf++8o0M11m3W7EaMuoG1xp1g2eNdMixQTVbQrw3cO+k+G7g3khx3sC9keK8gXsnxXcD965Gvhu4U8rt+AW2DO+KQjbELzgP/H992Dpv4N40ilMrid7XSs7OMWXct817I8NZl/u2ebrhAZ7GHRq27hiqdYuGrVs0bN2iYesWDVu3aNi6RcPWDRq2btCwdYuGbb8+bN0atm7QsHWDhr3/kqEYZ7jpvM4b94ta6fin5g9l1M9k1GP0S+Lo6T+TMQ+Qzp+VD2XkumS0T8sxo3FWilfwMxnz0OZMGuUwbZ9nv5wfjvyZjHTE9dVKn8o4lox8X0b8sByxra9nrB+WI632KO1+OeT1WLe9GPr69o07RVffvpHh6lu3jPhhOZx9a5fD17fuclh9awXpiXmuFGPh+/CnGIAh3LZgeSPDZX1yymi/K8NnwWK2aZqfypj0MNrU2gWUqZSFvlFPR4pmMfIyguE1zD8oRr5/QBqseyznAalZmxLnQD0PGF/WxpYxDyZjkdctEuohlpQ8VUgpx4dSnMZ4tgyfMd4bGR5jPCvwks+gxpTgMqhJt4160m2jnmIFz2hlrrJbDS9vN20Za5Xdanwp47xnM/dAx7QfOdO01/2ZHOcYtWX4xugbGa4wVpYjvTgNjFokA6PzK/wDGWmZrxV9KSPF+2PEluEdI7JpjMiGMSIbxojcHiPWll+nAmBLp1K9AsrciRWl76QcXgG1zh45kyQii1/EPMtpB20pn0WkUExjq0gXxWQGp+EHUsoxx2k52DDwuxTra6tr46BUFvlRSdosSaBF/w/rE1bI+3iYUjYsUc1rK9cS9V1t1rPAeFi9YzlpC7Lurc+0tNda8Y2cZU5zplux5ORNcowFa503x7XRxkrKD1pYdB7Ciwb9cNSd62WZUsrHUuoRppYO5aUU00dNmZ/QgxbPP9BOX0TQIeJ37aRW7GBftOt3zaqzQbTKx82aVrPSVuC7FN3QObaUHUrhzL6u+uRPVZzzNMBScV41aaq4GJbCjtbUsU7x49xFpyO8Hmz1djjYNzJca6R3Mm6ukcIRwrpc4VnjFiHL46oUNqg5ng8UrGj1tc1ldMqfFCOeO7t57qV0lpieHdCaViiy3pAJXeMlkZ9IiW2dFx31pRSrY+pRp06k/ev3Vm1WKIWsszolr3Gq34RYFtg6j0fOTR21yfPdWWhmqO155qx83PMPpFg3G3O3lYNxdxbaBq8upxTZcPlsS/Fe1fZvwc1rVlOG+5o1HhuuWb3VMZ1R24/9nDbUppM1t/VzPG6/9HfL0PKhjB908X1vAW8a1mn9bGrI+ck4p1h9rSFjMD+AKa1Tk5yWUtHjR2LKHG9nmh4gqPu04Pw6yLwJ543B9wolewM390u8gj3KsxTzBrnQVXahwfK9Waxd16lgxwfoTNODan+znHpxbQ9Soqf/zw1jHeXE9Twk0uqzPI/8YL12EXo7t0QcPxHR5t0L2UD/SETR9cIzfihiXjPK0V6JsA/Gli032T9/a03r9FXSPH2RzIv5+lwV6zYrzA1opE95yvoso2xYmsQot5cmMW5w33xKqRuWJnZZ3F9Q6xbG/wVN4f4X1JLh//qltOHrZzaK8+v3ZgKVeZAqhSwOvk+gZD51mZpReT8cwrdmse762eKo8e12/EipFENFW0+zzmP2Y564f7ncfr7SMa+V29w2peMwjrVMKSm3KYVXBD+UcnbzXBXQ2cs/kGJ5YJ4nl4W8q4TyrVWsNUGeZ0mpkEloCM/jzXqf5d5Nxiw7VHbW+yp7R0TYU8qG8FVvpHh3k7FsULZli7ItO5St2UEy7V2+Oo76XpSypWllQ9PeD9VkD/x1shzKpwPfvT6QLesD2TBkZcuQlR1DVrasD7LtuH/ofC7IN50vxmDLaV5W5cRXvrn9oCR1nnRX9p/yvSTmNF5HmcpXeN9btu34+uix4+tjXXt5vz5bvIZE3XLMpRuOuXTLEZXl9cc9CTX99iRscXq3KsUY+tpMO4W4bvbDp5Owzj4+QjCKUs3YzMtJRiKTie8jv+64UYh1x41CrPdvFGLdcthsXYH5Z+GGJ1dxy5OrWDe4ybAbxT8LrU2UxrWJKtaGzroIS3q0dUIbQnp9KGrdhO04FD0v8+YpYCYvpN82y9YdSTgXIfNkNUoxzr6tO6xlHJ8D3f+Wj+qSqlGXetuGxDx/mBu5c3f78vzB9EEU5uku2xw/VyQdYcM9drLi0eU6Tw1yFeMeO5m3NF1LXJue4/jkHvtLm9CBzPc2MTdfGtfui5+jyrdGMRWsHPOSRiV+LmY60Tt1Np0PfRdjjNgU0jxOYfOe57v5vvF8vbwo6zGpGqtiM+7ueeIwrUAqO89K5SdSVNb3q5pSLMPBNF2KhcwuxX4mJcs0nyihWFLy/S+Yv0LkxvJ7UeyOnoeJ7YtJyfeyqG/5Fuly8B80S93SRXVHu5hS3B0dw46ONgN4Lv/CqVqNa2sXXRe4qvQC+Jt2ieaz6nnCw8bvT7brb4uiS9HV0IyiWGe1MU2zvTNN5l3Py4xk3Ue5l03vSpPXhUcsLRpirPlI57WJN3buK2lJadoBpy8X9aeIfz3xj//+57/921/+49//+Pc//8df/+vxy1AfE/7xTQ7t8dV4rCPiMVNhpmJPnSMgppnKM1X6F+fx72SmtKfOOsU6Uz2Px84mHTMV8LU6Uz2Px7vLlGYqz1SZqZ7HY/mddKbqTLWRysf4RQ4zNfPIM4+c5y/KTM088swj1/mLNlJl5lFmHiWOX5Q0UzOPMvMoMn+hMzXzKDMPOcYvJMzUzENmHjLbSmZbycxDZh4y20pmW+nMQ2ceOttKZ1vpzENnHjrbSmdb6cxDZx51tlWdbVVnHnXmUWdb1dlWdeZRZx51tlWdbdVmHm3m0WZbtdlWbebRZh5ttlWbbdVmHm3mEY7ZWOe5x0rGlUwrmdfPykrKSupK1vWz2WrnXdhKrtzCbLhTW6zkyi2s3IKsn+lKrtzCyi3OBgwxrOTKLa7cYl4/Kyu5cosrt1jXz1ZLppVbWrml1ZJptWRauaWVW1otmVZLppVbWrnl1ZJ5tWReueWVW14tmVdL5pVbXrnl1ZJ5tWRZuZWVW1ktWVZLlpVbWblBQTxWGQEaAsm6km0mLyURH8mwknEl00rm9bOykis3WbldyqL/rM2krtx05QaF0X8GjYHkyk1XbpfS6D/TlVy56coNiqP/DJoDyZVbXbldyqP/rKzkyq2u3Opqybpasq3c2sqtrZZsqyXbyq2t3NpqybZasq3c2swtHrMl4xFWMq5kWsm8flZWUlZSV7Kun82WjGHlFlZuYbZkDGklV25h5RZk/UxXcuUWVm5xtmSMYSVXbnHlFvP6WVnJlVtcucW6frZaMq3c0sotrZZMqyXTyi2t3NJqybRaMq3c0sotr5bMqyXzyi2v3PJqybxaMq/c8sotr5bMqyXLyq2s3MpqybJasqzcysqtrJYsqyXLyq2s3GS1pKyWlJWbrNxktaSslpSVm6zcZLWkrJbUlZuu3HS1pK6W1JWbrtx0taSultSVm67coEseJ3sRugTJuJJpJXtujzOVCF2CZM8td2G6kj233Je7PbfHc54IXYJkz016Mq5kz+2xy4vQJUiWley5aU/qStaV7Lk9DBISdEnrybCSPbfHXj9BlyDZc3v4qUvQJUjKSvbcHmadCboEyUdu3T9O6rokPXaWqeuSKxlXMq1kXsmykrKSupJ1JdtMxpVbXLnFlVtcucWVW1y5xZVbXLnFlVtcuaWVW1q5pZVbWrmllVtauaWVW1q5pZVbWrnllVteueWVW1655ZVbXrnllVteueWVW165lZVbWbmVlVtZuXVdkh6TLHVdciVlJXUle26x/6zn9jAoTV2XXMmeW7/M+j9//Nuf//i//vKnxx70sU3977/++9iSnvj3/+8/x9/8r7/9+S9/+fP/+2//+bf/+Pc//e///tufHtvXvnM9+vb1/O+/nLvIGB7b23D9+b+c37lzY3/+N+Z/PTPGn5wlO/+byr/+AT87v4vnrHn8t/9RwL86d/Lnf3OXF4e8dN4n5UMuWefR8R9SjUPOeXT9h/PuZsjI54HmeWvx+H16/L7/Iv4hz39/HowWefx1njU4NVM8/+ixSf//AQ==", + "is_unconstrained": false, + "name": "add_lock_private_user", + "verification_key": "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" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "14990209321349310352": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "string": "attempt to add with overflow" }, - "2920182694213909827": { + "15367606449725535591": { "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "string": "Function add_lock_public_user can only be called internally" }, - "3305101268118424981": { + "15764276373176857197": { "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3738765135689704617": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] + "string": "Stack too deep" }, - "5019202896831570965": { + "16075137377171297093": { "error_kind": "string", - "string": "attempt to add with overflow" + "string": "HashlockAlreadySet" }, - "5727012404371710682": { + "16431471497789672479": { "error_kind": "string", - "string": "push out of bounds" + "string": "Index out of bounds" }, - "6485997221020871071": { + "1998584279744703196": { "error_kind": "string", - "string": "call to assert_max_bit_size" + "string": "attempt to subtract with overflow" }, - "7233212735005103307": { + "2360858009427093503": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "InvalidTimelock" }, - "7542496824365424242": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] + "4493654309393309420": { + "error_kind": "string", + "string": "AlreadyClaimed" }, - "8270195893599566439": { + "459713770342432051": { "error_kind": "string", - "string": "Invalid public keys hint for address" + "string": "Not initialized" + } + }, + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" }, - "10676044680617262041": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { + { + "name": "hashlock", + "type": { + "kind": "array", + "length": 32, + "type": { "kind": "integer", "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" + "width": 8 } - ] + }, + "visibility": "private" + }, + { + "name": "timelock", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 64 + }, + "visibility": "private" + } + ], + "return_type": null + }, + "bytecode": "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JwIUBAsAKhQTFC0KExUOKhQVFiQCABYAAAcxLQ4GFQAiFQIVIwAABxYtCAETAAABAgEtDhATJwIQBAwtCgwHIwAAB0wMKgcNFCQCABQAACr0IwAAB14tCxMUACoJDxUtCxUTHAoTFQQcChUJABwKCRMFACoSDxUtCxUJACoSERYtCxYVHAoVFwYcChcWABwKFhUGACISRBctCxcWJwIXBAQAKhIXGS0LGRgcChgaBhwKGhkAHAoZGAYnAhkEBQAqEhkbLQsbGhwKGhwGHAocGwAcChsaBicCGwQGACoSGx0tCx0cHAocHgYcCh4dABwKHRwGJwIdBAcAKhIdHy0LHx4cCh4gBhwKIB8AHAofHgYnAh8ECAAqEh8hLQshIBwKICIGHAoiIQAcCiEgBicCIQQJACoSISMtCyMiHAoiJAYcCiQjABwKIyIGACoSDSQtCyQjHAojJAIcCiQSABwKEiMCACoUDyQtCyQSACoUESUtCyUkHAokJgYcCiYlABwKJSQGACIURCYtCyYlACoUFyctCycmHAomKAYcCignABwKJyYGACoUGSgtCygnHAonKQYcCikoABwKKCcGACoUGyktCykoHAooKgYcCiopABwKKSgGACoUHSotCyopHAopKwYcCisqABwKKikGACoUHystCysqHAoqLAYcCiwrABwKKyoGACoUISwtCywrHAorLQYcCi0sABwKLCsGACoUDS0tCy0sHAosLQIcCi0UABwKFCwCDCoKExQWChQKHAoUEwAcCgotAAQqEwkuBCotEgkAKi4JEhwKFAkGHAoKLgYEKgkVLwQqLiQVACovFSQEKhMWFQQqLSUTACoVExYEKgkYEwQqLiYVACoTFRgEKgkaEwQqLicVACoTFRoEKgkcEwQqLigVACoTFRwEKgkeEwQqLikVACoTFR4EKgkgEwQqLioVACoTFSAEKgkiEwQqLisJACoTCRUcChQJAhwKChMCBCoJIwoEKhMsCQAqCgkTJwIJAgEKKhMJCiQCAAoAAAoQJQAALuMnAgkGAAoqGAkKJAIACgAACiclAAAu9QoqGgkKJAIACgAACjklAAAu9S0LAgoAIgoCCi0OCgItCAEKAAABAgEtDgkKLQgBEwAAAQIBLQ4JEycCFAQQJwIYBggtCgwHIwAACnMMKgcUGiQCABoAACqvIwAACoUnAhoEIC0K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", + "custom_attributes": [ + "internal", + "external", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "add_lock_public_user" + }, + { + "abi": { + "error_types": { + "10791800398362570014": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "11021520179822076911": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "12469291177396340830": { + "error_kind": "string", + "string": "call to assert_max_bit_size" }, - "11732781666457836689": { + "12913276134398371456": { + "error_kind": "string", + "string": "push out of bounds" + }, + "13450089406971132036": { "error_kind": "fmtstring", - "length": 77, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 144 }, - "13649294680379557736": { + "13455385521185560676": { "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" + "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "14101993474458164081": { + "14067204867181196045": { "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "item_types": [], + "length": 75 }, - "14225679739041873922": { + "14576755381182599325": { + "error_kind": "fmtstring", + "item_types": [], + "length": 24 + }, + "14990209321349310352": { "error_kind": "string", - "string": "Index out of bounds" + "string": "attempt to add with overflow" }, - "14657895983200220173": { + "15764276373176857197": { "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" + "string": "Stack too deep" + }, + "15835548349546956319": { + "error_kind": "string", + "string": "Field failed to decompose into specified 32 limbs" + }, + "16431471497789672479": { + "error_kind": "string", + "string": "Index out of bounds" }, - "15200354114977654233": { + "16792019527863081935": { "error_kind": "fmtstring", - "length": 144, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 77 }, - "15760694058516861966": { + "17154023812102399658": { "error_kind": "fmtstring", - "length": 128, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 128 }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" - }, - "16446004518090376065": { - "error_kind": "string", - "string": "Input length must be a multiple of 32" - }, - "16954218183513903507": { - "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { + "17803644318014042523": { "error_kind": "fmtstring", - "length": 132, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } - ] - }, - "17476367995570638746": { - "error_kind": "string", - "string": "NoAllowance" + ], + "length": 58 }, - "17610130137239148460": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "18313900523101689315": { - "error_kind": "string", - "string": "Note contract address mismatch." - } - } - }, - "bytecode": "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", - "debug_symbols": "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j67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdj67z0XU+us5H1/noOh9d56PrfHSdz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nsOp9d57PrfHadz67z2XU+u85n1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d56vrfHWdr67z1XW+us5X1/nqOl9d51iWlIuVs85B0XSLss5Bo2k2rabdZE3tOO047TjtiHZEO6Id0Y5oR7Qj2hHtiHZEO247bjtuO247bjtuO247bjtuO245sHAJNJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdox2jHbMdsx2zHbMdsx2zHbMdsx2zHbsdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux22HtsHZYO6wd1g5rh7XD2mHtsHZ4O7wd3g5vh7fD29F1vrvOd9f57jrfXee5/slH0mxaTbvJmrzpNEXTLfrq/FE7oh3RjmhHtCPaEe2IdkQ7bjtuO247bjtuO247bjtuO247bjlycdSj0TSbVtNu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", - "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" - }, - { - "name": "add_lock_public_user", - "is_unconstrained": true, - "custom_attributes": [ - "internal", - "public" - ], - "abi": { - "parameters": [ - { - "name": "Id", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "hashlock", - "type": { - "kind": "array", - "length": 32, - "type": { + "1998584279744703196": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "3080037330898348111": { + "error_kind": "fmtstring", + "item_types": [ + { "kind": "integer", "sign": "unsigned", - "width": 8 + "width": 32 } - }, - "visibility": "private" + ], + "length": 132 }, - { - "name": "timelock", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 64 - }, - "visibility": "private" - } - ], - "return_type": null, - "error_types": { - "206160798890201757": { + "3380315280177356474": { "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." + "string": "FundsNotSent" }, - "516370165797458160": { - "error_kind": "string", - "string": "InvalidTimelock" + "344423948968719440": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ], + "length": 98 }, - "2722406262643068352": { + "361444214588792908": { "error_kind": "string", - "string": "HashlockAlreadySet" + "string": "attempt to multiply with overflow" }, - "2920182694213909827": { + "4261968856572588300": { "error_kind": "string", - "string": "attempt to subtract with overflow" + "string": "Value does not fit in field" }, - "5019202896831570965": { + "4440399188109668273": { "error_kind": "string", - "string": "attempt to add with overflow" + "string": "Input length must be a multiple of 32" + }, + "6565645037161677025": { + "error_kind": "fmtstring", + "item_types": [], + "length": 101 }, - "6144404149669079610": { + "7555607922535724711": { "error_kind": "string", - "string": "AlreadyClaimed" + "string": "Preimage mismatch" + }, + "7564993426627941149": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 48 + }, + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 61 }, - "13699457482007836410": { + "8992688621799713766": { "error_kind": "string", - "string": "Not initialized" + "string": "Invalid public keys hint for address" }, - "14225679739041873922": { + "9791669845391776238": { "error_kind": "string", - "string": "Index out of bounds" + "string": "0 has a square root; you cannot claim it is not square" }, - "16870384257694633552": { + "9885968605480832328": { "error_kind": "string", - "string": "Function add_lock_public_user can only be called internally" + "string": "Attempted to read past the length of a CapsuleArray" + }, + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 }, - "17843811134343075018": { + "992401946138144806": { "error_kind": "string", - "string": "Stack too deep" + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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", - "debug_symbols": "tZ3bjh03robfxde+KJ3FvMpgEGQynoEBIwm8kw1sBHn3Xfwp8a92sNTqWu2bmS/sWqQO1Ik6+M8P//70rz/+++PnX/7z6/98+OEff37419fPX758/u+PX379+affP//6yyn988Oh/5NL/PBD/nj+f/vwQzv/v57/HY4T2vn3EBTKgJ4m9BP0R6IS/ZWopH/8UI40IIQJ9cMP8fxViackRoU+IKUJU5LrgKIfJ4U6oOYJ8uGHdKawtDyhD9AUGkyJTIkMST3ihDpAk2pQBsRjgpo4E19zmSADyvxTmZI6JXVKWprQBvQ4oQ6QMGGYaMcxQbMsCn1ASBPaAJQqoA5Ix4T58yQD8pTkqVCr32AqrFPSNRdngTeUIaAb9CNNmJIwJZowgCbMoA7QhBmUCWridKSe04Q2QB0AgMKsJ4j+vCnkCd1AUKeAOgB1ClBboiADUKeAKUlTkqYkT0meknLqyadLSA0T+gCtZQMZ0PME/easSpE4oRqEQ6t5kP4uKmkxDmqTtCBzAtVJmuJBMqmOAj+pTUITMZJJvUySwylbaZ/UBwUUqlGdhLKrSmgQDSSTSnJqk2pwqpO0a9FCPSk7yaTusu4ycZlMWTymLIbDivukOikmpz4pZSeZpJ6HWojqekbqe4PKJG3cuYBUn5ZBRMWDenCqkzSl+ewBQ9LuJAsoO/VJKTrVSTk4nSkoASSTtOsZ5LLqsuqy5rLmMq393EAySRv4oDYoH2cKSgTVSVrOpYDKpOgyzZGR9utFQKesqoflHJ3apOKy4rLqsuqy5rJWJ2mJDyqTNB+D5m/LEZ1cFoLT1FfUN6r6eEGqCkj/qqVR6uFUnGSS+sGgPkk7+tpBdZJ29YOmrB7ByWXBZcFlWs6DipNMSm1S9t9m/636cztAZZLmyEhT39Q3MBS1CNLvMkgGYTQadOayqY+3EJ3apOiy6LLksuSy7DJNqRFSalQm1eTkv23+2+ay7r/tU19HmrU+OlLVQfpXrV8MSIOK05nfruWCMWlQn1RcVlxWXVZd1lym6TNSjxhUJ2m/Nmj+Vo7k5LIQnaY+0TR3rTdBqiJI/6r+LNqOBqk1rTdpwUllml/RUusNVCfpuDCoOGm5nG06Hlqmg1wWsn0XDy3nQXVSCk4uy8f8rfZwRsVlpczv6uFEmdttnpbmsu5p0R7OSFyGctbvAsrZyGU6/uK7c/CZFF2m/mzfqT8PclmeOQ/awxkVl2lfYt/piDjIZW2WUGizhEJ3WZ8lFORwmrJ4zBI6i83pzLkcSlozg1ymo5BEkEzSPntQn6Q5kgxqk4rL1NfsO62ZQa6vuQ3tE+0XOj0f5DJxuzLtpmPaSMe0m4LLwrSb1NcG1flX9bVBLtM+0b7TnsZIfc3+qr5mVF3mOUo6VxmU51/V14y6y/rMeZLsNHOZj+TksjBznsPMeUaOCqhNSi5TXxOtX4ymg6a/5BKcXFZdVl3Wpv9hNDXqLusuE5fJ/G05gpPLwvwOo6lRdFl0WXJZcll2WXZZcZm3meJtpnibKZ6P4vkono/i+SieD4y6IIy6aAsYdY2Cy4LLosvgYV0JHmbkMl0vDFI/gA2dpQ1ymY5gRg3rbKjWIWKgtvSB2tQnZqJMbFhqHxHYHEMkVsWkGA9icdRxLRzqjK3jA/UyrPLOKf+J/YhEVRb0Zz0cxOIYKY2UJkp1hjWxO+ZEbI7ay0yEYU1krwexODZKG6Wd0p6J3RGxi4FtIlaSE90wVpMTYSICxTFmYndMkdgccyBSWTmIVFaorCZHy1sFZqI4CqUypQkD98TuCIcZ2BxjIFZHq80GzMTumKOjVZYoaqs812vAQhRH1MXANhEL0ImaBg0MpQDvG1gcI6WR0kRpojRTmqE3KcLlBoqjLqsGws8GFiK+zYqIjw1sjhImYqQ+kwfMxO6IuogV2BwtQ0DLEDB7ZcWSHOtBLI4tEL02Y/fajD0TvTajeG2m4LWJEdaqJaVC9NpMORG9NlOJRK9NDLkTvYZSo7RR2intlAql4rWZj0j02szBazPHg1iIXptYxE702szZazOjxcYOhF4BimNtjujtDZF0De8ljKHnVFIR5TswE7ujzgwmNkfUhYZmTiyOcPCBlBZKC6WV0kopHEYjoCcWojjC1wciOeq/BQ4zEHnT0sFgO5FSy6ah6s1quOpke2J3TJQmSjOlmdJCqc5QByKsPbA66pRuIjV0auiUCjWI622oN40LpWbp1ZaF5W7Q2M+J1RG+M7AQxRFuNBDK1GGaJd2wOTZKG6Wd0k6pUIpqAXZUy8DiGBLRNWD1PFGlGktKHd43sDoiQxowSh3pLdqyOjxKw0PJRmlDNOmBmvnSgN0RI8NAl2KJPJHSQGmgFEkf2Bwt6YbimKkhU0OhtFBDpV7LkNabWHoFiG9Pf8gHinpgdYTv1ADMRHGMlEZKE6WJ0kwpkm6IpA9sjmjoA6mhUUOjtFNDd70BGapR0dKbFNF4NYh2YndEY9CAWsZieSBmCrUCIe2KGCQGVscaiJp0jVtlG48HUgqPsm8tvUChXnFrEbnAzyKqxTBQGjwNMQaiW7PxeCCl2dMQ0dAHin+Ahj6QUsw17FurFmBL/gH6KMNOKbOJxfTENj/AcnoipcGLBCvqgdEzjzX1wERp8iLBsnoipRhmNJ6YsbIeWCmtXiQ2zg9EkUSgOHZKMV3U+GPGCntin4g19kRkU50rI5sDKUWnYN9aFRpmolvL6BTsZ2hZhoXSwjRUpqHSWmMaGqWdaUBfbYjpon2AvhpYjkCs81vbYx1Y/APMbAZSymzaTGGg+AfoQAZSWrxISvEiKdUzX6oXSWmUNi8SmykMRDZ1v9hmCgNdWg8vknp4kVTLZgdWx0gpPFWDnWf5qwaNbGbExAeis+kVCCmswbkGat46lMG5BkJ6duYZwe8gti+uUsHOOLrtgZSi29Z4zomQasoaph2GGAs1CHRidcQqSQM9GQHsM3CrCH/QUE+2sRtoY/dASDW9HQWl4YUTdTdY4wQZG7ETIbW9fGpQfxhS7bkmUlogjcAys9nVH4YUe/MDKW2QJiCkmiGM8+ea50TsqZ6hSsV6EClVj5qoO9a6/M2iHjXRey5hFy/exZfjiERKw+wRi615DSOlkdJEaaKGTL2Z0sJvCzVUSiuljdJGaae0UyqUer9egvfrJ1LKvAXmLTBvgXkLzJsNzYbIm/bVxYZmw0JpobRSannTwxvB8mZIaae0U6p5i7ogPbFOxNA8kdJAaaA0UhopxTGIgYUojpq3gYUaCjVUSis1NOqFg+v6+EToFZxuScTuKJRqFUYciUnI5sDqGCgNlEZKtV+fKI447zGwO+ZEpGGc+xhIE5UmKk0gxwNpotFwp4lOw0ITzHFmjjNzjJ3liYXoJnLMRDeRUyLSRI5Emig0XGii0nCliUrDjSYaDXea6DQsNCFuuBwHsRDdBBb8E91EiYnoJkqKRJrIgUgThYYLTRQarjRRabjRRKPhThOdhoUmhIbFTdTDDdcIvdrmK4aZcaoLH2QgflYULb0N2B0tvYZImTan2gKxOnZKO6VCqaXXUCbakauB3RHHrga64WYZMnQTLQWim2iWY0OayDRcaKLQcKUJ5rgxx405Rgh/Ig13mhAaFjeBs1wT3UQPkegmbCox0E0gxj8xE91wzzSRabjQRKHhShOVhhtNNBpuNNFpuNOE0LC4CcT4J7oJCYHoJiQexEx0w5IS0Q1LpolMw4UmCg1Xmqg0XGmi0TA6Gzu9iL4EBwexDx81IFgRSIh6pqsikBA1nFcRSIh6buvE7oikD4Teroi+ZGB1LJQWSiulSPpAcUTSB3ZHjBcDaRjjxUA3gUjDRDeBTYCJmeiGEYqY6IYx35nohgNzHJjjUGii0HChiUrDlSYaDTea6DTcaUJoWNwEdgkmZqIbjiER3XCMkeiGYwpEN4wAxUQazjRRaLjQRKXhShONhhtNdBruNCE0LDQhbjgdieiGEauY6IZtQjTQDad0EAuRJrIbTuh39AxhxT5D1COB1WY2euqvIv4Q9RhmRfwhatC34rzcxD4RWw5R47/VZjaG6FYGUhopjZQi6QMzURzRkQ7sjoWGkSHDShOVJhpNWI4NaaLTcKcJoWFxE4U5LsxxYY4RlRgYD2ImumE7DD7QDZdME5mGC00UGq40UWm40kSj4UYTnYY7TQgNi5vAVsZEN1HDQcxEN4xdjYluGLGKiW4YB/gm0nChiULDhSYqDVeaaDTcaKLTcKcJoWFxEziMPjET3bDNgvTMaLVJju5fVJvk6IZBtUlO0ZaFDY6ouwQnQqoDFQ74TeyO6FZ0a6DaJMcQ3cpASoVScWlH0gdmojiiIx3YHWMkNscUiDSRaQId6UCaKDRcaKLScKUJ5rgzx5057p0mhIaFJsQNY4tkohvGOcKJblhiILphSQexEGkiZyJNFBouNFFpuNJEo+FGE52GO010GhaakGm4IdQzsTmGQKyO8SAWojimTKSJnIg0UWi40ESl4UoTjYYbTTQaRr+j+0PNJjm6w9RskqM7TM0mObrD1HAaf6Imsh64IpId0ZcMrI5I78DmWPkt0qtbOg2bLBMp7ZR2SoVScalNZ3QnqOF8YtTtn4Yj+1G3fxpOKE4Ux0hppDRRimoxxCAxsDlikBhYHSsNWzYNaaLRRKMJDBIDaUJoWNyEBXUGuonEHCfmODHHKSaiG8btgDN5wOaYKc2UFkoLpZVSdDYa5GsJnY0G7k6sjuhsBlIqlIpLMyp2YCaKI7rXgd0xRmJzTIFIE5km0L0OpIlCw4UmKg1XmmCOM3OcmWOczBgobhg32qKGKpvdYGsJiIBgAYoj3HMgkqMt1uYwA5tjobRQWilFP2mIVjiwEMUR/eRAGNbqrlYXQKsLQ34QKY2UJkrhcoboSwZWR8xLBhYiDWNeMhAmtD+rVheGzdHqwrA4Wl0YZqIra1ZDhq6shUCsjqgsPT/fGupCj803XDuIuoF0YnVE0geKIyZPuq3ULHSi20rNQieGMDywEMURXdtAzYVuNrWOhj6wOWZKM6WF0kJppRRFrUf9m80qBlZH9OADkRwBiiPGWN3EahY6AVroZCClgdJAaaQ0UoqGPrA6oqEP7I6FGgo1VEorNTTqRYYE1xMtvRmIb4siamhgc0S1DBRHTH0MLZGG/NZSptcRD7RN3X/rNqIb4j6b7r/1w26jGraJdtFuIKWB0kApblUOLI64WTkwE8UxJ2J3LDRRaKLSRKWJSmWNJuzmbVTEzdaBzRG3Ww9cDMX9ViDmBANxcVTPIHdEJZKeQe4IOiTdLzy3LCOxKmpR40TjROjtij0Qu6OVuqFMTFbUQLsALEA1ofefO24XTBRHlK8h0juwEPFtwDXX4ohcDGyOdj/YsDt2fmu3hDOuyh7EMjEfB5HSQGnIxO4YE7E5pkh0wzjyOJEmCk0Umig0UWmiQZlWbMZFTt0967gznnT3rGOMnUhpoDRQatVi2BwTpYlSS7phdbSkGxbHSmmltFFDo97OlMHPdF+v213zgW2i3TcfSCmqRU/DdsQJBkZKdWRIunHSq+WtAruj1QXQMmRYHdGOB1La+G3zuqjWWgquW6s13abpOOeYdJvmjL9HIqVoOLp50zHGWjNt1kcZUmodk6E4WscEtC4IypB03QnqODaRIj5AXQykVEeypJtCHdseSU/knjsDB9Gldm99YHdET2uI9GqovWPBnzTU3rHgTxpqP8fKQKQUFYAb7biukDQW37FpkXCHHZsWAzulGBkG9jlQ2XoeKFhJDKyOIRKbY6Q08lt7DACIMUsnLt3GWMMSidURjSEBsQjS2Uq3gxcDKYXD2A19OIyiYOSdiCJpij43Eht5DX1CJDbyGqbiiJF34EXKb0siUm+ltUYNVuodKI5CqV2BP/TNALsDb1gd0b0O1J/hYj8W5gPRMRmi8Q6EhohHCfBBUkRnY4jhYCDSkBWRXkOMpgPrxGiJNGyOgVK0TT2kLDgrMZFStM2B4miPMhg2x0INmBNo6E8Q2E8a+pNobwkY9onJEmlYHdGBDNRy0DChYFE8ED3iQEoTpYnSTGmmFF28xhwFxxsmdkeU+kBxRKkP7LNacKZhYp1og/BAeJQoYoxF6dgYa4huZWAhwrC6RjbX0CLBXfiJlKIbLLCGbtCwU4pusGS8XuHVksVL3YbbgV5DJWSiOEZKI79NkUi9+SBSAyYCGtySYqWurbBYqRtSiqnPwOoItx8oE3G0IGl4TBCAn9gcMVMY2B1TIlKa8W0HNsdCKXrEgShfrWMbTQdepOJobgSE7wzEMlUrayxegYgQDSyOHnQQO2VgmChN/NbCsFo6eNglaThPbGDVc9uC8wQTKUXSDTE6DaQUM5uBWmZ68ltsNB1IKfodDf2JvQWjoT9BUD1p6E8QVE8a3BKseZO+lyC25kVd2Jp3YHW03R1DLVQ9cSfjdRgtVBw3nEgp1iKGqICBLhVMmw3hRhoeE3s2xjBSisagYSGxx2M0LCT2fAwqwB6Q0VOrYk/I6JsCgkdksC8iuNs3sTvaFirSgCath2gFV/OThi0Ed/MHCqVoDHje4MDlPueLHHUwGJWARxAOnHCcnC5yNGeN15yMyQ4eGzhwFiDhuYEDhwESHhw4EPFOeGjgsPE22/e252hsm47GWJynweo1eJDgsKUxniQ4bAA2xi39yRgtJldyvMhRL4NRMTroKws5X+RYDuOJg8Per+ndGHKUQ0APJoexygXlMPb6B3ey7fYb20Ewe8gH44QMVgcTe9YHfjf5IscIMrmT00WOOpqsZSIoTxumJ1/k6MekGMMWyiHamzzNGHKUAy4JJhFjHE8xW3JcODtj1z4fKKuE14wmX+R4x2iwdmT5CMaVnC9ynfM5z+smJ+Mw8mAcRJ3cyDiUPrmT+0XeL9/jvLUxVtT5QH1le2No8EVu7wwNRh7ttyld+CLXzs0Zd4FQttjEdxYyLoUMxnWJyYXcL/J++R6v+RyoX9wgcEb6UdfF8jW4ky1f3biT00WeoB+2iuVr8EVu72YZ1+PC+cLQD//E6UNcGVPuZFybHIwrn5Ors100nHyRh+PCmYx8BfghpgU5BGPI7RvtK3KIxvOG38l2V88Y95MmV7Ld0RvcyP0i75fvkS9ju3BgfQhOIk7G8e7JlYw3pgLKsKV5bVQfAEsXvsjx7l8oxo1cL3LNSw6WHrsRar9FXgbD3yYLWYozNuKdr3J+b/cOJ1M/jhxOThc9uK4SxLiT7eWAwZUM3wvw7Q6/iqj3bpe2B1/k9mBbN27OiIA7o3yg354IsN+K3d02xmWQyUL2q9P6+Npx4av88n1JF77orxe77aKns3yks3zsmsRkL5/5Gl0DBy8HHWwufJEnL4eA04OT80WevXwC5gzzt0y/NqoLC7kVcj8ufJVfvpdLOoX67abi4EA92DvHgxfK2t6HHP2Axt2UOzlf5OjfMKYHuxaBftVevZtcL3LUy+RyYSEj/egDA64oZoynAYv7HLNxI4eLHK/eReQFC/wcq3Elp4scr98NRv82uZPRD8Rm3MjtItd6cdZ+PqLeMTdwvsrFGQf9MIU8URzxgowhnpAZ2Bzx8NJASjO/xWtShgXm4H54Hs/5Im+NrN1yxtQ0YEowWS5yPN9ojGU/Zs32Rt5A7cgmdkd1t4nimChN/BbPD+JdxoCrCs6abnuHEdOCyaiSyUg3XCFbfgZf5AL91bg62xRhspBDvnAnR+gPxnU8HRcQG5gojupnAzVaOrE4Vkorv9WpwUDLTjNGdlBcOKmXsboIeOU120ORCLzjHb8Tu6PO3QbiSb2B1VEbykRKM7/VnAzURQKeeAx4YGBiddSWP1FLEW9JBoQCsqUSbR2IGPtEVYHnPwOC7M4XOUZ8PP0Z8KjP+Cka+sDuiO5roDjqJGYipZXfVqauUW+jtU4NFhlQxLtBE6sjljkDURhwWQsCNMPmmCnFMIK3NwOehXW+yDG8Z1OOZY39FLGygd0R2zcDxXE+K6voUpyjm+ip8+dlFd3aCA8AkxcG7gJM9MLAez8TWRiIBAwVjeY6pZ2ZRijA2eXRxnJ7hBTXBPDTeHiiI0b4gTERxTFlIqWZ3+bmWKi30BqCNO2vvz5+mK9O//j710+f9NHpyzPU//jzw28/ff30y+8ffvjljy9fPn7435++/IGP/ue3n37B///+09fzr2f7/vTLv8//PxX+5/OXT0p/feSvj8c/PUcCnTTi52fvX5urOKcQL5SEhZIjuo5zknNRUV6oiAsVZxOpU0c7A0CupMUXOtJjHfoEUB86To75kY5lVnQ9b8k4PedhVso7ZKV+76yU7rXSH9dKf6yitT5VnL3Zw0TIIiMJwQnLyLkL8WxGzonbw4ys3DxGz8k5xzvqYzdfOalcGouG9B9mZu2lGvmcVSsPlSyzk0JkdlJ8nJ33cNTwHp66XzspP8zOQoleEB06SknMSwkv87Jw1jOanmexRr12+Cgv8VgVSDtYvy2mGwXyIi85PcrLroaS72ioxyyLUqM80qDLrEcq9PrNUKEXYlir/eX4FFdOWqaLxouGc2vwpYaFhzasEawTO8OB1HF27y90tEWlekbOmI9riPEbDYuuNOJlCMtIPOSxjoV/ljjHppKOexo0im0VEsq9fOAMpOUjXWrkWx1p1Y+WOKcs5+Kn3dRRfaAuXe7pwMG2MfeJ/bGOsvKu6M5Vb2mQPLuLc9vrloYX86/6uF7Tol7POfH0z5yF6QhvKU6dqI/iLDerNbmHnthv6XiPrOD9vjHlyP1eS2nBu662aK85f18d+p79zEtt/Z6O1hJnCo9bfW7PtpSVhr2WstKw21LK8bR7LYtT2PFIfFycy8G1NO/L63XK9M3gWhZz0drSTIdezaGO8HKQLysXPbIPCOcWD3U0uTXVKOHRVKOspqEt+DKjpfQwFaW9w/Sv9HeY/q1zU7Pnpj8u07py0ypzBpivyfibjsXK61wo9elkSffaHi5lF31plN586nNyvKnEs6Ms95RIT65E+mMl6zJplzJ5XMF1WcEyPe3cbaeKc6t+X0evvvDqFyd5mw6Z48sZyj8e61itmkKe5aH/lMMtHSH4OKd7P9TR0xt0cHF+7i881rFqNI0T/X7kh42mpe+r4xyouTI/Lv4RXpZpW8wKI47hjpn6ZbxM36ZjqcPTEdMlhvQ2HeKNLl0abnpLebQUvDxqfFwe8g7lIe9QHvKdy0N8WRzkMo/5W3ns6mjxro7iOl6srfd1nOt6Hx6Oy8zwWx29Luen0dcNreVLiaT0Bi39oJZz1HqsZTEDCOxTzzX/4759paN7iLDL4155XaqXwEl/XLsS3qNU11p2S1XS86W60rFXquuJmW8PnM3/8cRMVl4mwddj8sLf2/6EuR0+YZZb0b3mC9xzHXHc0dA9G6VnuaNBjjnL1bfCHkZsj7Cq0lmj7NDLsf97/MslY85Q7mnw6GJI9zREL8gY4j0NHhiM9Xik4VitJWP2QO3jBVg42vPB3nD0Z6O94ZDnw70hHM/Ge0MIzwd8w2rHaS/iu1axFfJdZ2Uz5huWu02bQd9XlOxFfddKNsO+IfRno1lLFXvhrKWK3XhWiOHpgNYrZboX+31FyV7wd6nkXXKzGf5dt5rN2G1YbTy9i5LdCPBayWYIGEX3ZKtZqdhsNSsV260mpef9bFmmm3Hg9cC7GQgOqT4fCQ6pfddQ8IuZSGsPZyJptcDOfiIh5sui5dtkhLxISKyekFhzXSgJz8dgQ47vEIQNOb1DFPY1LXth2Fe0bMZhXyuXvUBsWO0I7UZi10o2Q7GvKNmLxYbV5tRuMHapZDca+4qSvXDsugFtxlLDaofqXZTsRmTDKnywG4J8RcleDPIVJXtByHWZbEZlwyrkvl0mayWbZbJW8h5lshmZ3VeyCM2+pmQrNhvWu7t7wdlQ23vEEV9RsxtIDMt9os1I4lpJ9flSOEMm95TsxSNfqZ+9MG9Y765s189azXb9rPaLtutnqWS3flZKNutnPY30OYr+A9WPx57VjpH+qyEe7o2LAawf7zGN7Mvd74PnuY9jcQS6r6ZuBc/HmJaS+uNT4ctiqSUxCr6YovdVA8psQOd0/XEDWithrK+keFuJD4Rl1dUulZTOIyxyNyX1qFz75NtKiiu5jutvU+IHw8/m024qacHbYMv9thIGYmq4q4TZaXI3Jd3P/seew20l7rG9lLtKuq+Ru6SbSiRwLZjvK/EykXK37QjbjtxtOwmPeFvPdpbsTSV4BcOU5HizAeo/nO19bF7M/5bjV0t0+0sr/raPjceyU9q+V1FWJbt5su6VDLGX7SEvMrSM24k7/pGu7bi8ISXSOZIuUrJUcm7H+EnBo8TH2VntdvWaZ0p6rcfDHem4CnfvbmuvsxO8gzz36xbutrphpf/SiAdE+0rJwmdZw/rA0yUy+43HLrciDg8L6b8m/bAFrpUUj+jk0vNNJdUbYD53ZxdKVlteh3f3J17iqv0NOoL39i1c7619oyMur4txrynWeDMdpXk6itzU4bHQtkzHsmKOgxWTn3eRuhjM10rawVh1eDyExuVdq00XWerYdZH+vIus07HnImsd7+EiHrg/NxGO512kxXDXRRJdpN3tz5rH/vVfcH6sZHnratPPljo2/Wy147XrZ+t07PnZWsc7+FlLdBEp7+BnUm8q6dn9rC9m83G1ybTrIksdmy6Sy/Musk7HnousdbyDi3DpmXsNz7tIX+wavJKSNkNiZ+zlblck0bsiSYvslPi8ny11bPrZMty/6WfrdOz52VrHe/hZ66yY+ryfSWp3laTis+98c35WDldSrou0vylZ3Ts6t648jHVyzQ+j67GuH1rxXaF+CQJ/G9VeKyk+EQjX86JvUtKat5veFiqWZRK5yVzjdWHzbZms68ffwThjJotKXu5OvaF++nvUT3+P+mnfv3ADz7CGfLO7L9EXJyUulax6yIM95PV40t/W9G2hZP81iVUoa+85ibbawN99T6K1VbFuPSixVLH3osQyKzExKzneVLJ5UDL28J2V7J62XCvZPG0Z+9JXd05bLlXsnbZcqtg9bRn7ws02T1uuy3T31v06uOh7sbXFx4cLoyzfCMLTsiOUHeLDA3BxdbEqteq7BK2Hx/3ZUknnVkNfBTrXSsLlWlS/q4Q7J72tUrIs2cM3cc6SPfLjkl1d8wqJadFn8R5pOZaO0t1RwsMbVlFWjwlkX+WkfDkmWeIbdPDNMt1qv6nDJyXpxVtQ37zN9+RNrfT0Ta309E2t9PRNrfT0Ta11XVQPjqR6vbn3lvrk6ZhTXbmpwy8FpRf+/TYdvkVZL+dm36Sj+b2iEx/qWLbUxv0ieXjmPK1uWeXLlC5dzq1/+3plWN4oYAQ+x+vZ3fQWJYyd5cu1zLcpKbX6hsIRFkp2i6TXx0Wy1OHbz6cOeaxj5SDX3uvsvurNymHYOr84DfaWcq1+4/WczywqZ9mFJJ6XvdeVIk44duPD0xrkXmdcvDuv6Z4G31wNrT6r4bKx+rZc+JDSy+PufDnVyJct7+vU9m0TluzrhWe0FN+NVJa7aSlCLeHhEcGUlkcEc+XxlXLphN40Re6+tEw9l8dzyuUayE+1Sry7jKqzK5RWnl6JtbsL7XTwgHsId1frmw9Arq5o7T7Rl9bv/Wxd0nxFSeUtlV5uKtl9tHCpZPdRzLWSzVcx19nZfBYz12djD0sVmw9jrlRsv4yZv7ez7r6NuSyQrY5orWKrI9qtllVHtI4J+8hbQks3Y8LBj9aXIHe3ZoLX7anvrhL8dUanw10lmUpqurkZGbipEi7R6Tdt4EU/4X9iu7sJKNTRn9cRbqYjevtvMR1308ENzcsu8dvS4TuAZ9Dwbl5S3tlYXR8C2POPpY5N/3jlMMKWf2zrCDfTsekf2wcrFv6xTseef7yiY8s/1ueI9vxjqWPTP145z7TlH9s6ws10bPrH9tmshX+s07HnH6/o2PKP9XnGPf9Y6tj0j1fOVW75x7aOcDMdm/6xfUZ04R/rdOz5xys6tvxjfSR6zz+WOjb945Wj2Vv+sa0j3EzHpn9sHzNf+Mc6HXv+8YqOHf9YX7HPvFl4Pfrwtnv62Z8LP5W0x0qWDyDspuQVJZspWT6UwaVhuN6++eahjLy6YtX9VpMcZaFiMT7wNu2LiwhvUuFnUtrln1h6m4pOFe2eCl5mb9f7hH97d2T1jzQdh2/UnZzuvXNz/jLk99Cyd+U6h3e5cr18fGsrArFWsRWB2H0CbKVi+fbeXkaWKvYysvkC4ErF07tB4endoPD0blB4ejcoPL0bFJ7eDQpP7wY1eX5QekXH1pi0fLJ9Nx3l+XSsn/TfHBpTeHpoXG1GbQ6NSxV7Q+NSxd7QmOKzQ2ON7zAyvqJkb2B8RcnmuLgKzG+Pi8t/mGhrNFlq2BpMNv9xpFVkvzy9vVCe3l0ot3Lxz/M/f/r589cfL/9E7p9/qaqvn3/615dP4z//88cvP1/++vv//Tb/8q+vn798+fzfH3/7+uvPn/79x9dPqkn/9uEY//OPmGv6GHPP//z4IZ3/XfrH2k8O9sczcWeU/lBBgODc9zv/R/75lybv/wE=" - }, - { - "name": "commit_private_user", - "is_unconstrained": false, - "custom_attributes": [ - "private" - ], - "abi": { + }, "parameters": [ { "name": "inputs", "type": { - "kind": "struct", - "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2095,14 +2632,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2110,14 +2647,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -2127,7 +2664,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -2136,20 +2675,18 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -2159,53 +2696,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -2216,25 +2722,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -2245,19 +2747,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -2268,19 +2768,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -2291,25 +2789,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -2348,8 +2854,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -2357,14 +2861,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2372,14 +2876,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -2397,10 +2901,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -2415,14 +2923,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -2439,14 +2947,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -2464,14 +2968,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -2489,14 +2993,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -2514,14 +3018,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -2539,13 +3043,19 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } }, { @@ -2556,7 +3066,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, @@ -2570,8 +3082,6 @@ { "name": "src_receiver", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2579,7 +3089,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -2595,8 +3107,6 @@ { "name": "token", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2604,7 +3114,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -2659,20 +3171,14 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2680,14 +3186,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -2695,14 +3201,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -2712,7 +3218,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -2721,7 +3229,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -2761,8 +3271,6 @@ { "name": "note_hash_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -2770,11 +3278,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -2787,7 +3293,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -2799,14 +3307,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifier_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -2814,11 +3322,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -2831,7 +3337,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -2843,14 +3351,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -2858,20 +3366,14 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { "name": "request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { "name": "pk_m", "type": { - "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", "fields": [ { "name": "x", @@ -2891,7 +3393,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint" } }, { @@ -2900,7 +3404,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest" } }, { @@ -2909,7 +3415,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator" } } }, @@ -2921,14 +3429,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "note_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -2936,11 +3444,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -2953,7 +3459,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -2965,14 +3473,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifiers", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -2980,13 +3488,26 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier" } }, { @@ -2996,14 +3517,10 @@ "sign": "unsigned", "width": 32 } - }, - { - "name": "note_hash", - "type": { - "kind": "field" - } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -3015,35 +3532,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 5, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3051,14 +3562,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3066,14 +3577,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -3083,7 +3594,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -3092,7 +3605,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -3123,7 +3638,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest" } } }, @@ -3135,35 +3652,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 16, + "length": 32, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3171,14 +3682,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3186,7 +3697,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -3201,7 +3714,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { @@ -3212,7 +3727,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -3224,20 +3741,18 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_teardown_call_request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3245,14 +3760,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3260,7 +3775,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -3275,35 +3792,29 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { "name": "l2_to_l1_msgs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 2, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -3311,7 +3822,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { @@ -3320,7 +3833,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } }, { @@ -3331,7 +3846,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -3343,14 +3860,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_logs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -3358,42 +3875,49 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "log", + "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log" } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData" } }, { @@ -3404,7 +3928,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -3416,14 +3942,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -3431,14 +3957,10 @@ "kind": "array", "length": 1, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", "fields": [ { "name": "value", @@ -3454,7 +3976,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash" } }, { @@ -3465,7 +3989,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -3477,7 +4003,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { @@ -3497,16 +4025,12 @@ } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -3516,53 +4040,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -3573,25 +4066,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -3602,19 +4091,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -3625,19 +4112,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -3648,25 +4133,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -3705,8 +4198,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -3714,14 +4205,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -3729,14 +4220,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -3754,10 +4245,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -3772,14 +4267,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -3796,14 +4291,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -3821,14 +4312,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -3846,14 +4337,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -3871,14 +4362,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -3896,221 +4387,78 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "databus" - }, + } + }, + "bytecode": "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mu1S3aU5Lu3k0s4u7eLSri7t5tLuLu3h0p4u7eXS3i7t49K+Lu3n0v4uHeDSoEsHunSQSwe79AyX5rp0iEvzXDrUpcNcOtylI1w60qX5Lh3l0gKXjnbpGJeOdWmhS8e5dLxLJ7h0oksnuXSyS6e4dKpLp7n0TJdOd+kMl850aZFLZ7m02KWzXTrHpXNdOs+l8126wKULXVri0lKXlrm03KWLXFrh0sUurXTpEpdWuXSpS5e5dLlLV7h0pUtXuXS1S89y6RqXnu3SapeGXGq4tMala11a69I6l65zab1Lz3HpepducOl3XLrRpee6dJNLG1y62aXnuXSLSxtd2uTSZpdudek2l253aYtLd7h0p0t3uXS3S/e4dK9Lwy6NuLTVpW0u3efS/S4936UHXHrQpRe49EKXXuTSi116yKWXuPSwSy916RGXXubSy116hUuvdOlRl17l0qtdeo1Lr3XpdS693qU3uPRGl97k0ptdeotLb3XpbS693aV3uPROl97l0rtd+l2Xfs+l33fpPS79gUvvdel9Lv2hS3/k0h+79H6XPuDSB136E5c+5NKfuvRnLj3m0p+79Bcu/aVLf+XSh136a5c+4tJHXfqYSx936RMufdKlT7n0Ny592qXPuPRZl/7Wpc+59Hcufd6lv3fpCy590aUvufQPLv2jS1926Ssu/ZNLX3Xpay593aVvuPRNl/7ZpW+59G2X/sWl77j0XZf+1aXvufRvLn3fpR+49EOX/t2lH7n0Y5d+4tJPXfoPl37m0n+69F8u/dylx136hUv/7dIvXfqVS//j0v+69GuXfuPS/7n0/1z67bQnnZKaS9Nc6nGp16XpLvW5tINLM1zqd2lHl2a6NODSLJdmu1R3aY5LO7m0s0u7uLSrS7u5tLtLe7i0p0t7ubS3S/u4tK9L+7m0v0sH+L2kLh3o0kEuHezSM1ya69IhLs1z6VCXDnPpcJeOcOlIl+a7dJRLC1zy36n335D333f3317330X33yz33xP33/r23+H238j236/235b2333232T230v23zL23xn23wD23+f1387137X135z134P132r131H13zj13x/13wb13+3039T037v036L034n033D031f03z703yX03wz03/Pz39rz38Hz36jz34/z33bz313z30Tz3yvz3xLz3/ny3+Dy38fy367yvqH/5pP/HpP/VpL/jpH/xpD//o//No//bo7/po3/3oz/Foz/Tov/hor/von/9oj/Loj/Zof/nob/1oX/DoX/RoT/foP/toL/7oH/JoH/XoC/y9/fs+/vwPf30/u74/297v7OdX8fur+r3N8j7u/49vdv+7ux/b3V/k5pf9+zv4vZ35Ps7zD29wv7u3/9vbz+zlx/n62/a9bfA+vvaPX3p/q7Tf29o/5OUH9fp79L099z6e+g9PdD+rsb/b2K/s5Dfx+hvyvQ3+Pn79jz99/5u+n8vXH+Tjd/35q/C83fU+bvEPP3e/m7t/y9WP7OKn+flL/ryd/D5O9I8vcX+buF/L0//k4ef1+Ov8vG3zPj74Dx97P4u1P8vSb+zhF/H4i/q8Pfo+HvuPD3T/i7Ify9Df5OBX/fgb+LwN8T4M/w+/P1/uy7P5fuz4z789z+rLU/B+3PKPvzw/5srz9368/E+vOq/iypP+fpz2D685H+7KI/V+jP/PnzeP6snD/H5s+Y+fNf/myWPzflzzT580b+LJA/p+PP0PjzLf7siT8X4s9s+PMU/qyDP4fgzwj4/ft+b73f9+73pPv94n4vt1/Y9nug/f5kv3fY7+v1e279fli/V9XvI/V7PP3+S7830u9b9HsK/X4/vxfP75Pze9j8/jK/98vvy/J7pvx+Jr/XyO8D8nt0/P4Zv7fF7zvxe0L8fo0n9lK45PcV+DV/v27u16n9urBfh/Xrnn6d0a/r+XU0v27l14n8uoxfB/HrDj7O7+PqPo7t48Y+Tuvjoj4O6eN+Ps7m41o+juTjNj5O4uMSPg7g591+nuvnlX4eN605Jxud3D3pHmVNNj0xd/Pr23492a/f+vVSvz7p1wP9+ptf7/LrS349x6+f+PUKvz7g4/E+/u3jzT6+6+OpPn7p44U+PufjYT7+5OM9Pr5i8YwDsyfnxwdnT+7TmOvSIS7Nc+lQlw5z6XCXjnDpSJfmu3SUSwtcOtqlY1w61qWFLh3n0vEuneDSiS6d5NLJLp3i0qkunebSM1063aUzXDrTpUUuneXSYpfOdukcl8516TyXznfpApcudGmJS0tdWubScpcucmmFSxe7tNKlS1xa5dKlLl3m0uUuXeHSlS5d5dLVLj3LpWtcerZLq10acqnh0hqXrnVprUvrXLrOpfUuPcel6126waXfcelGl57r0k0ubXDpZpee59ItLm10aZNLm1261aXbXLrdpS0u3eHSnS7d5dLdLt3j0r0uDbs04tJWl7a5dJ9L97v0fJcecOlBl17g0gtdepFLL3bpIZde4tLDLr3UpUdceplLL3fpFS690qVHXXqVS6926TUuvdal17n0epfe4NIbXXqTS2926S0uvdWlt7n0dpfe4dI7XXqXS+926Xdd+j2Xft+l97j0By6916X3ufSHLv2RS3/s0vtd+oBLH3TpT1z6kEt/6tKfufSYS3/u0l+49Jcu/ZVLH3bpr136iEsfdeljLn3cpU+49EmXPuXS37j0aZc+49JnXfpblz7n0t+59HmX/t6lL7j0RZe+5NI/uPSPLn3Zpa+49E8ufdWlr7n0dZe+4dI3XfrnbOJzDvz28zX/vHT9Jz/7+I92+Hss99FA3scDeZ9t5j32z5/d8OULf3gU5nkfMK/e55p5b5gz79Of7l/ymb2y/Gcwi3ouqVB3XYW6N1Wou7ZC3So031Kh7mD0y4nPcyvU3Vyh7sYKdTdVqDsY/XLiU0WuNlSoO1XtXVOhbhVdGIx+OfGZqj6qgrcKrw6sUPeJ50tNu792z4Vbv3Lgnz+Gef8UGC++Hcjz82//HNB3zpdXHvGxr2PeR3vz87b25ecdPOPJv8+e8aa/POuLM/8A854RyDsskHdEIG9hIO/4QN7pgbxFgbyzA3nnBvKWB/JWBPIuDeRdHsi7OpB3TSBvXSBvfSDv+kDe7wTyNgbyNgfy7gjk3RXIG2nm7fellR+9edFvnrMwy38Gs6hnVYW6z6lQd6ps97UV6t5YoW6jQt3rK9St4ntV6aMqPu7qCnWr+HzPq1C3im89Vb7XnRXqVtH9KvJcxQeqwue7K9QdjH458anCqyq6MBj9cuKzvc1hquB9Ko6hXRubTYo8X1eh7mD0y4nP7RXqDka/nPhUGY+q0FzFtk/Df2rF6tY+O7PYPLosns8VxLO1O8/ILTaYRT3deUY2KX3UnWfE1+3OM+LrducZ2aTowmD0y4lPd56RTYoedecZWcfLRneeEV+3O8+IfNo9z9jWnWfkFhvMop7uPCOblD7qzjPi63bnGfF1u/OMbFJ0YTD65cSnO8/IJkWPuvOMrONlozvPiK/bnWdEPu2eZzzQnGf8dK87X/xPv/3OA5j3YDPv03f0NRY2fnnTmQE4g1nUs73NQbY332kw+uXEp+ujZpNixwajX058qsz1qoyPVfS36xtnHS8bVfq3Stxjqs4cTNX5myp+dZW4VhWap2rsnqq53lTxeTD65cTnqejPD0a/nPh0YzVZx8tkFT0ajH458ZmqmEmV86BVeFVlTKli25+W8/GXB844vTKQ98ZA3psDeW8N5L09kPeeQN57A3nvD+R9MJD3oUDenwXyPhrI+0Qg728CeZ8J5H0xkPcPgbyvBvK+Hsjbqf/Jv+rM5hd2zM975UB+3qWz8/Mu3unJv/+SraoNfX2/q2XgsvkMZlFP956CbFJs7WD0y4lPlfh0Fd9hqtpbxWepMpaur1B3qvzKri+cTYpcDUa/nPhU4XMVezVV7b2tQt2pWmeoIpOD0S8nPlMVe6tiN6rIVZW6U7VWUGVcGIx+OfGZqjn0zRXqVvEZqvTvrRXqbm+x1Sr7K6uMv1X06KgKdQejX058pmp+NFVj91SNC4PRLyc+Ve7q2lKh7mD0y4lPlf3RVexVFd2vUnd7G7uHKtR9Ks4XpmoveTcGlU1KHz0VY1BV2ru9xaAOrVC3im82VXUPq1B3qELdKjQ/8axqrgGouyefHcgbaua969Z//tvVP/zaaJxlt+ZfE4DGxo3rbtm0+toNz725sen6NTeuW73hlsa17s+t627ZeP2Gm1bfdkvj5pvX3bJ7s3xzeWR0QdCv0fXEt6k2A+oVrz9sV0eOASxU/8mrJ2tZWfxPtt/XKdn+rM8IgfpIi8H1d9XPhN+zCH9J+s+uSv/OAZqtbxZD+cEs6unxy2e+nXOaL3zbn9H8vXnT9Tdev2nLoidEdfGopF70hKBe9qScMsAa/b845/2OQHcvlInnye1nG8zmVbBPfG+gR5Tspb9WxnSyH/Db394IOr72iV98+QMXHvvcnai+f6xvdgQ8a6/feO0Gp9+rb1p32+rnrtu4sbF+3cbLVj6ZOcUKvraigq+tKOC1GVCnRP1RBb8W6jMt/hnIxisS1tmhmW+/5zd/V1T+tZOp/FZuMIt6eqz+2eXqj8rdOeXqT7P658LLwSzqGaX9PFX38Y1feednH3r/x9+96V3veHSnr816zcwjd7z3/vv/Y5+f7vvan93/Nqt7flaK7j6rf4HCffqHeq56zh/974aZ5217321f++ryzbP2bXz0gAffcdUnHjngh6ufb3UvVHV/8OLX3Vt/38vePHjE537Rd97DP1798wumn/S1z92118e2/uaHP7O9M098RGRC3S9e9ZtvfqD+8jtuf+jP7jzp0F0a73n5V/7z3z/12ffWf/4vf/C8r9id0k98fMTaXMbGLCtXf47VX16u/k5W/yKoH2Oo7bH6K8rhH+3zi8vhH+XfynL1R3UFo6WD9mPk7e/+5qKHPnf0d3+z4wuXNe67feGLvnT5T+7Y811zv3fDH+z7nlHerVJ1v7Np8SOb9njuCT+Z8fmHjnnLPvt96/F3feD7/71l3Uk//v4P/uTAn1vdS1XdFo/VvUzU3fPYeSff/Oq/3/Ubhx709TP/+j1HvWKvx59x2jf+9Py3/Ox/P/0rqHt582/B/ppl9a8oV3+U31eWq99r9a8qV3/Uvl0NLwfDdUaHNav7rPi69ky3uteIuoef1v+zd7zwnvuzb7/rRy/578P/4sz5O+2/aKej/uF1X97npluu3utnVvfZQFCBNu9r9VdDfcTf6rH6Q+Xwj9ZvQP0C+Ed1HKPlg1nUUzNnfNayMVrYbygwRq1QPlWB+uusfm+5+rdY/enl6l9n9fvK1d9g9XcoV/+5Vn9GufrXW/3+cvVvsvo7lqu/3urPLFd/0OoPlKu/0erPKle/YfVnl6s/6nfXy9W/1urPKVf/Vqu/U7n6W2yusjO8NHtksHeB9wXs3H41gpdl4+1ERvD7iZaivmON4Bk+bp/ZOmv7roKWushjG7mrwLOrwKNg9SSE1ZsQ1vSEsPo6tI07JIQ1IyGs/oSwdkwIa2ZCWCl5n1KHBjoU1qyEsFLKRErep5Sv2QlhpdTtlDJRTwgrpY2ekxBWp46P5meZ74C+Ri3nr+Hhd4ann2BZ+wezqKcWatcuAl+o/M6B8rtFwvf6bDLaXOA5e92azeuXbpiwJt5L/5+fQ+K+VG4oQBrDrVHi9/vSux5RFh/fPFszbTbv3HWbrn3Oqsb69evWukZOWL1nSOflvGeHFMuYM74bUTqYRT3TYoQS4fdnWikHs6inFhIapWyeqyZ8Ta4u3dBYu7hx88bNN67DQ6oopoylRlDxnerTGlCWBcqdR/8vFfUyARtlaXfIU5wwmLOziW3aPaceqyy/mybK70awdhP1jPaeQH2EgfVYYkJSHSOV1g7/KJNsuGOmsiW1Z9ey2lN1KhvitX9wiQ7lpCC+XUIyijCNHuP1HiLPYO3Z/L8vB5bV7aXyb27+rVM5/1xKOPYQ9OI744+f1r6OaEfespxU4SPCM7rwHcLvzyrJZS3Ub9g+lpM9yuHbOYbvSI/xek+RZ7DsG+19ObCsbi+VtwPcdSrnH5aTPQW9+A7l5N1EO/KW5aQkHxfFyonB788qyWUt1G/YPpaTPcvhOzOG70iP8XovkWew9m7+35cDy+r2Unn7GHSdyvmH5WQvQS++Qzn5YPP3jBx6B7Oo50bF6wL1b5uRTeRdgfqbrP7e5eo/x+rvU67+nVZ/33L1j7b6+5Wrf7fJ3v7wkvX8AHhfZKkxVs8Nfj/RUlbPDyB83D4OgQ8KWuoiL7RM2CPeTQvA6k0Iqy8hrHpCWD0JYQ10KKwZCWH1J4S1Y0JYMxPC2iMhrJRy36n82jMhrJSyuldCWHsnhJWS9ynbOCshrE6V1X0Swto3ISzzjWy8R/+g1vw7Q9QrOjdEeEYnvkP4/URLQXy1EF+wfTynObAcvp1qVB/xIczB5m/j9UEiz2Ad3Py/LweW1e2l8v1NhtapnH94TnOQoBff4Zymtwl3tqCX4zuDAu6ggFsX9a3cgKhnspKivxCe0YnvEH5/Vkn+ayH5GIR3LI8HlcM3J6Z/kR7j9cEiz2DZuZy+HFhWt5fK70XyeDDQxPJ4sKAX36E8WuB1IJvIW5aTknw8J1ZODH5/Vkkua6F+w/axnBxcDt/ZMXxHeozXzxB5Bmtu8/++HFhWt5fKH0Jy8gygieXkGYJefIdycmAT7owcegezuId1xGAgbORLfD/U/jNWzgx+f1ap32shPip9s/bNLYWv9jOWDcSHMI0e4/UhIs9gzWv+35cDy+r2UvnjSM4QB8uG5SG9+A7lbAHZI+Qty0k5PmZnxcqJwe/PqsjlmJyoflP6Zu07pBy+RTF8R3qM1/NEnsE6tPl/Xw4sq9tL5ReRnMwDmtgezRP04juUk9OacGcLenn9I6QvCLcu6ls5JXMF7N4q1acF6q+2+vPK1X+e1T+0XP3bTUbwMgDWx8PhfQF5PSZWHw1+P9FSVh8PJ3zcPo7hHiFoqYs8lpEjBJ4jBB4Fa++EsHoSwpqZEFY9Iaw9EsKalRDWjISwdkgIK6VMzE4I65CEsAYSwpqXEFZvQlh7JYSVUrf3SQgrpS1MqY/9CWGl7Mf9EsJKKRMpeZ9St1O2MaVM9CWE1al2IiVd24PP1B3Tpo73KfVxeoe28dAOpSulP5GyjTbWqrmwT4NZ1LOZ55oGA2EfCe8LzHtPrxG8LNPzbIPfn2l7OJhFPaPz7CMJXx5fre3zBS11kcfz7PkCz3yBR8HaOyGsnoSwZnZoG2ckhNWfENZeCWGl5P0+CWF1+7EYrP0SwkopE7MTwupLCCul/RpICCsl71PKakred6r9SimrKeVrh4SwUvZjSvlKqUMp5as3IaxZCWGlbGOn+nIp25jSn+jUfuxUX+7QhLA61c9J6WN2/Ymnhw6ltBMp6UopX/MSwjo8IayUvE/pA9hYy/uRLN8/FWNgto1xFJ7Rie8Qfn82sS9TxcDU3iZr3/xy+AZj+gHpMV4fJfIM1oLm/305sKxuL5U/pdmousBxEOE4StCL73Dv1/HNf2YLelnnFN+PFHDroj7zCOuxPJbsr55YeTT4/Vkl+a+F5EPxRcmH1VX9yvyP7dcQLI4LW75/Zoh6BfjRG8t/g9+fVervWogvyk5a2xcIWuqU5x/eU7lA4Fkg8EwWLO4v/wxmwce6YwIvjDaEezS8L9Av02PlwOD3ZxP7pYwcHE348nhqbT9G0FKnPP9w3x0j8Bwj8DxVYKEMsY2yfP9UlIudyspFSXsUlAtlN619x5TDNyemH5Ae4/WxIs9gLWz+35cDy+r2UvkbyV9AHOwvWB7Si+/QX1hP/gLSexTBVXw/WsBV45WVe7rhGRD1WL9Kyl+03TX4/Vklfa6F5F3xRcm71VVyyvyPldOnIiyTv2MCeIrad6x/TBdPcjzzK+KZH4lnQUU8CwSeAVGP7RDKabxdqH071g4Z/P6skt2rhfRQ8cXat7AUvtq3eGxGfAjT6DFeHyfyDNbxzf/7cmBZ3V4q/xYa5xEHj/OWh/TiOxznX0/jPNLL89Ki9g/rM4+wHstjuf7K6rHyaPD7syryPyaPSj4UX6x9x5XDNzumf5Ee4/XxIs9gndD8vy8HltXtpfJ/RPJ4PNDE85XjBb34DuXxPc1/ZuTQO5hFPcsVrwvU/5cZ2UTeFah/jNU/oVz9N1v9E8vVP8zqn1Su/p9a/ZPL1T/H6p9Srv6fWP1Ty9Ufsfqnlat/hdV/Zrn611j908vVP9Tqn1Gu/kKrf2a5+j+w+ovK1T/f6p9Vrv6fWf3F5erfbPVLft7zEatf8vOei63+ueXq/8Lqn1eu/sut/vnl6v/M6l8I9YusqVj9peXq9xi9S/CloMng21iHnyWt5fw1WJxnuPoJVkHaayHakT72l5YAPmxjHqwlBWHNEHll+uTCLL9dCH8gQIuik+8Wq9Lm2QlhLUwIqzchrOMSwjo+IawTEsI6MSGskxLCmpYQ1skJYZ2SENapHQrrtISwnpkQ1ukJYZ2RENaZCWEtSghrp4SwzkoIa3FCWGcnhHVOQlgpx45zE8I6LyGs8xPCOqgDYfnH5KtivOOCivGKUyrGK5ZVjFdcUjHesKhivOG8ivGCsyvGC5aar30GvKw1/6pYQAG/f3mN4GWZnj+d2fzdT7QUxDc6fzqT8HH7eL1xkaClLvJYRxYJPIsEHgWrPyGsOQlhzUoIa4+EsGYkhDU7IayZCWHtkBBWT0JYAx0KK6Ws7pgQVkren5AQVkpZTamPe3VoG1Pq4+EJYaXUoU7l/d4JYaW0EynH2pR2IiXvU/KrU+UrpW+Ssh9T8n57sBP7JIR1YkJYJyeEdVKHwjolIaxTE8JKyftDOpSu0xLCmpYQVkqZWJgQ1jMTwkrZjynpSimrnWoL5yaElVJWU/ZjSro6lV8pZfX0hLBSympK+7VfQlgp/a/pCWGljCmk9MlTzhVSxh7Nv7c49mlQr9b8WzGGP7tG8IxOfIfw+4mWgviCMXxsn/FF7TcsgG9WTD8gPcbrs0SewbK1tb4cWFa3l8p/qsnYOpXzD++NPkvQi++MP14/P9oznvYzoRzLSUk+Rn8b2uD3Z5XkshbqtzPhHa/1nCVoqYs89olj+a1g9SaE1ZcQVj0hrJ6EsAY6FNaMhLD6E8LaMSGsmQlhLU4IK6UOpezHOQlhzUoIa6+EsFLqdkr5SqlDKe3q9sD7HRLCSmmjzRbaucRFkLcL4Vkk8CwK4MH6Vq7ieZeVFc+7XFbxvMpFFc+bnGt+1Xnwstb8q86SFPDxRmoEL8u0T2nw+4mWgvhGfcrzCR+3j33KCwUtdZHH+4fUeYgLBR4Fqz8hrDkJYc1KCGuPhLBmJIQ1OyGsmQlhLU4IqzchrJS871RZ3SshrJ6EsFLKV0qb05cQ1vbA+x06tI0DHQorpW7vmBBWSt6fkBBWSlntVB8gJazuuF0MVnfcnjr56o7bU8f77rg9dbq9Y0JYncr7TpXVwxPCSsmvlDYnJe/3TggrpQ6lHLc71UZ3qj+Rso0pfd+U/ZiS99uDndgnIaxpCWEtSggrZZz8rISwTkkIa25CWCcnhHVIQlgLE8I6OyGs7YH3JyaEdVJCWKcmhJWSX+ckhJVSVlPqUKfKfae2cXuwhSnp6o4dT4+x49yEsFL6cin5dXpCWM9MCCvlWJtSJlLyq1PHjv0Swko555ueEFbKNZ2UcYCU8YmU+3P4jA3uDas1/1a883hWjeAZnfgO4fcTLQXx1UJ8wfYZXyre/ztQo/qIT93xa7xeKvIM1rLm/305sKxuL5Xfp6lMdSrnHz5js1TQi++MPx7k7tPH0468ZTkpycdnxMqJwe/PKsll8D5qpT+q36xuXeRx/CmW3wpWb0JYfQlh1RPC6kkIa6BDYc1ICKs/IawdE8KamRDW4oSwZiWElVIf90oIK6V8peTXHglhpZSvlDqU0q6mlImUdrVTdTulPqbUoTkJYaXUx+1BvnZICGsgISwba+0MF/rLfIar6B3YWN/KDYh6tebfit+jeaRG8IxOfIfw+7OJbS7jsyv+K75Y25cJWuoij+N5ywSeZQKPgtWfENachLBmJYS1R0JYMxLCmp0Q1syEsBYnhNWbEFZK3neqrO6VEFZPQlgp5SulzelLCGt74P0OHdrGgQ6FlVK3d0wIKyXvT0gIK6WsdqoPkBJWp47bKXmf0gdIaaNT+hOdKqvdcXvq7GrXJy8Gq+uTT518df3CqZOvTvULU/KrU2X18ISwUvIrpc1Jyfu9E8JKqUMpx45OtdGdOqalbGNK3zdlP6bk/fZgJ/ZJCGtaQlinJIS1KCGsuQlhpVwfSsmv0xPCOiQhrIUJYZ2dEFZKmTg5IayUvE+p24sSwkqpQ2clhJVSH7cH+ToxIayTEsI6NSGslPw6JyGslLYwpY3uVLnv1DZuD2NtSrq6vsnTY+w4NyGslP5ESn6l9MmfmRBWyrE2pUyk5Fenjh37JYSVMqYwPSGslOtWKeNMKeNfKfcXWsyKz5dZvn9mZJo3g1nUM1AjeEYnvkP4/URLQXy1EF/UPmlr3/Jy+GbWqD7iQ5hGj/H6IpFnsFY0/+/LgWV1e6n865oL8HUq5x8+g3mRoBffGX+8fj7aN5525C3LSUk+fiRWTgx+f1ZJLmuhflP6Y+27qBy+v47hO9Jj+FaUw9djfbVSwDZaLmn+35dDi9XtpfLvJXm4WNSpU55/WAYxr0e8mzZFsFYKWMhH6xOvG29v8kLJv0+DWdRzLNsFg4GwS8rC5bG6ZfD7s0qyXmM7ZvjybIySI6tbF3kcLyvb9/73Xh0KqychrB0SwlqcEFZKfs1ICKs/IawdE8Ka2aFt7OtQuuoJYaXUx5T9ODshrJQ6NJAQVsp+TCmrcxLCSilfvQlh7ZQQVkq571Sbk7KN+ySEtW9CWPslhJWSXyl9k5Ty1al+YUq571RfblZCWHskhLU9+HKdKvcpfZPumFYMVqf6cp1qC1P6ciltYcp+TMmvTvW/jk8Iq1P9r+kJYaXU7ZQ6lJJfKcehlDrUqbxPab9SxuU6NTaUUr5S+r6d6mN26tixPCEsGzsGCLbl+6fietN+NYJndOI7hN+fTWxnqvUmbF/Z9aZp8LuT7GFKPerUWHlKG5YSVne9qRisxQlhpdShlP2Ycj0gpa/TqXGYlPKVkq5OXdfp1BhFyn5MuVchpb3nu1PRN+K7U5UfsiKAB+tbuQFRr9b8OyPTcjaYRT331wie0YnvEH5/NrHNZfwzxX/FF7V3zerWRR7vww/t30I8ClZ/QlhzEsKalRDWHglhzUgIa3ZCWDMTwlqcEFZvQlgped+psrpXQlg9CWGllK+UdKXsx5R0pbSrKWUiZT/ukBBWSt4PdCislHZix4SwUvL+hISwUspqp/oTKWF1fYCpGzu6PsDU0dX1AaauH7s+wNTZiU71AVLyq1Nl9fCEsFLyq1PtxN4JYaXUoU4dOzrV9+1U+UrpR6fsx5S83x7sxD4JYU1LCGtRQlgp4/dnJYR1SkJYcxPCOjkhrEM6lK6U/ZiSroUJYaWUiZT9eGJCWCclhHVqQlgp+XVOQlhnJ4TVqbLa1cepa2Onyld3HOrKPcM6NyGslD5myn48PSGsZyaElXLcTikTKfnVqfq4X0JYKeei0xPCSrlulTI+kTJuknI/k8U6bP8hzuXnE55pAs+0AB6sb3kzRL3BLOo51fbvzYWXNYKL9rgnHnZvjeBl2fj+zwh+P9FSEN/o3sXjCB+3z/hkbT9B0FIXediPmId4ThB46iLv0jbAmpFD52AW9Vyq+rtA/d9hfhoMpA3nqwX6ds9YWTL4/dnE/isjSycSvrx+sbafJGipizzuo5MEnpMEHgWrPyGs4zqUrr6EsPZMCCtlG2cmhLVDQlgDCWHtmBBWSn7tlRDWTglhLU4IqychrJS8n5EQ1uwObeM+CWHtmxCWzV8my1dVeBZUxLNA4BkQ9WrNvxV9kSNrBM/oxHcIvz+b2OZUvojiS1FfhGM3nTJOH54QVspxulNtzJyEsGYlhLVHQljbw1jRqX5zSrrqCWGl9GtS+ropZWJ6QlgpZaI3IayU/Eppvzp1npGyH1PS1aljR8p+TMn7lLq9Pc1ZOo1fnTpup9Ttdoy1Nl/B+U2t+XdGDg2DWdQTPVcz+P1ES0F8tRBfsH08VztV0FIXebxufKrAc6rAo2DNSAhrICGsekJYfQlhzUkIqychrN4OpWt2QlgzE8LaJyGsfRPC2i8hrJT86k8IK6U+7pUQVkq5T2kLU/bj9ISwUtqclDKxQ0JYKXk/q0PpWpwQVkqZSOmbpBy3U/Zjp9qvlPKVUh871UanhJVSvnZMCMt4b+t3OB87n/AUnRNi/ZMmGY+aX/o0mEU9a3j+ZjAQNu6DLTCXvLZG8LJsvA5kBL8/0/02mEU9o3PX0wlfnpxY2xcJWuoij/fwLhJ4Fgk8CtahCWEtTgirJyGsekJYe3VoG2cnhDUzIayUMjErIayUMnFcQljbg0z0J4TVlxBWp+p2St6n5Nf0Dm3jHglhpezHlHK/Y0JYKeV+74SwUsrEPglhpZSJrv/19LDRKcfaQxLC2h5s4X4JYaW0OSclhHV4QlgpdSglv1KOaZ3qF3bqmNapc6uUvE+pQyn5ldJGd8eOp8fYkXJuldIW9iaE1Y0pTJ0OpeR9yjbulBDW4oSwOpX3MxLC6tR4YUo/p2snisFK6U907cTU8b5T7QR/mxfvHKk1/9r6L657FliPnV4jeEYnvkP4/URLQXyj678nEz5uH6//ni5oqVOef9ZAOc7rEe+mBWBd2uGwbP8C9v1phEfx+eQAHqx/cgDPqRXxnBqJ57iKeI6LxDO/Ip75As8MUW8wCz42hZgg9wYb4S6C9+3QeYPfn03UwTI6v4jw5cm8tf0sQUud8vzDunWWwHOWwPNUgTUVsqvwnF4Rj7LhA6JeIjk/tayclxxLg3Ku+FJEzv1vvkOhijzNSghrRkJYeySE1ZMQ1uyEsGYmhLVXQlh9HdrGeoe2cYeEsBYnhHV4Qlgp5SulPqaUr5S2MCVd/QlhpZT77UEm9k4IK6V8DXRoG1PyfnpCWCnlvjchrK6deHrYiZRt3CkhrJT+RKfyfp+EsLo6VAzWIR3axu1Bh1LyPuXcPeUcme8MxTZzvOsQgeeQAB6sf0gAz4KKeBZE4jmtIp7TIvE83fj2VG7PjEzr8mAW9dyhYqMF6s/n2KPBQNrw21AF4qBLawQvy8bbv4zg92faXg5mUc9o3PVswpdnb6ztFwta6iKPv+VyscBzscCjYPUlhLVXQlg9CWHNTAhr74SwZiWENZAQVkp+pWxjSroOSQgrpaz2JoSVUrdT8r6/Q9vYtV9PD/uVso0peV9PCCul3B+eEFZK3e5UfUxpozt1rE3Zj7MTwtoexqHtoY0p6UppVzt13F7UoXSl5NehCWHNSAgrpW/SqWNaVx+nro2dOm5vD/O0lDJxUkJYnSr3ixPC6tRYx5yEsNpho9WaAJ9LKLomgPVDaw9nVcRzViSeyVpLOb0intMj8UxW/zzd+NZdI+y2ZzLbc35FPOdH4unKQbc93faU25vgn8Es6jnO1tYPhZc1govr6QXW+WfXCF6Wjff3MoLfT7QUxDe6r2Ah4eP28b6CswUtdZGH/Yh5iOdsgacu8i7twurC6sJKAuvp5qeUsOcWIhu1aWgD2Z6X3CcWfQ6d94mVHD+C+8SwfWzPLxa0cLzAPyyLZWMPnQprKmS368N125OH59CKeA6NxDNZfFtYEc9CgSfC9k/7/C7P3tz39muunT9v1jn/uefOr9h2xscf2nrGvCPZnzXYCJdjrwQ77+mNtf0Gv59oKWv7le1T/oG1faWgpU55/lkD5TivR7yblgOLZaIKLP+sbv7t2rdue6a6PWdXxHN2JJ6uHHROe4Ljz+Mbv/LOzz70/o+/e9O73vHoTl+b9ZqZR+547/33/8c+P933tT+7/+0Vx5jLrf7KcvV3sfqXlKu/s9VfVa7+2Vb/0nL1F1n9y0rVr4323eXwdjCqbraT1b1iFFoh2s+0+leWq3+A1b8KXg5GVc2mWd2rS+Gu/czqP0vhPv1DPVc954/+d8PM87a977avfXX55ln7Nj56wIPvuOoTjxzww9UPWN1rSuHOBqz+s8vVn2n1V0P9afH1Z1j9oXL1T7D6jXL1T7T66I8VaP+g1b+2XP3R9q8tVb/2Lau/Dolq/n3Glx/b4Ze/93DvH//Tzzbc9ovDX/6Z8x76q98/7WWfm3/68CXfffSny6zudaJuC7yjur5+9E2x2LzVf47C/YMXv+7e+vte9ubBIz73i77zHv7x6p9fMP2kr33urr0+tvU3P/zZK6zu9apu+Om1ujeoul+86jff/ED95Xfc/tCf3XnSobs03vPyr/znv3/qs++t//xf/uB5XxmVtd9pFi/Y5l2t/o3l6k+3+s8tV38Hq39Tufr9Vn9Dufo7Wv2b4eVgVNWsbnWfJ+ruckz2lQO+dfyWI3Y/YcNFt973rVV/cM+ubzvs+/U9f7r5tFv/5xsbrO4tom6L53h/t8yHmhtMzQfa2Mz0v3eF3z5tav7v69n8dAjKWN1eKv/oEWP1/ryJz+aUOwNBteZfa9Mu8L5AX+xVI3hZpufTBr+faCmIb3Q+vQvh4/bxfHpXQUtd5PHdHrsKPLsKPArWfglhzUwIa3FCWD0JYfUnhDU7IawZHdrGHRPC6lT5mpUQVm9CWHslhJVSvlLya4+EsFLKV0od6ksIK6VMpLSrdq5lQNSrNf+aH7A/0TCYRT3TagTP6MR3CL8/020ezKKeUT9gf8KXxxcvf+YfbN50/Y3Xb9qydENj7eLGzRs337huGoLOxntDzBWEiu9q2fjWY14PveNyF9D/S0W9TMDuAXiDkKc4YTDN+8Q2DebUQ15k4t00UX5/grW/qGe09wTq+2dA0DDVElvSUw5KLLaPPddBQUtd5PEMQlkM5SEXpWtmNnYqqqlJZ69bs3n90g3rM3p66f/zc0jck8otzSGtJuDWKPH7PeldTxZW1dBkKUZk/MPGGGENEZ6uMe4a46eGMe4R9VhiZov3eVqv2mjt8I/awmblFJ6lFfEsFXhmiHqD9mPk7e/+5qKHPnf0d3+z4wuXNe67feGLvnT5T+7Y811zv3fDH+z7np19CGb/WePpRf7vTPQa3OlZuL96qfx3Dh+rd1ATn9cwc9+bGnbW5ht/Z+W6Tbdcv+7Wdc5Wb8zoaaUWl9D/q0Q99cSM4SUNT7ShM/ipxnAlWnljZbyhY4FAriBUfFfF0K2i/8sYulZeAxu6kHHCXtlZ4LV307J8Q6SMGMcaQ4bMP92h+cmnuMRuz0NzjMTGDs15Eps3NHO96Vm+hPdS2TOaQ0ZFyR53AzLT2B0Dnny6Y8BTZQzoEfVYYkJSHSOV1g7/1LP89s/IJvJj0H58Z9PiRzbt8dwTfjLj8w8d85Z99vvW4+/6wPf/e8u6k378/R/8yYGPV9SuyypahUu9JbqEnOBBgMWTuwOb/+ete1rdXip/5ayxepeDEzy3md/UvMsaN16/trFp3Tk3PW/zus3r1i7fsGndxkU3rT3n1nU3bSrsEl9I/y8R9dSzI8A7EuD3UCP9w7Oao5r/9wEeLGN1e6n8NU2m+I9H7bLsyd9K6IyeAapv+f4xoTiaaB/Mop5ok23w+4mWsib7aMLH7StnsgfhN3MFoeK7qTbZx0Ce4gSbbGzTMTn1WHL53TRR/miCdbSoxyZb1UcYWI8lhrUI59pHCtysRTeBFu2+LB/vkVk2gQ+sSTsLfKZ1x1BZ/5jWHUttGsyinstjtc7g9xMtZbXuWMLH7SundSgpiOUygmplsCw+lwFlWU451Xu7inr8GMd6ieYHYLC6nQZHbNcBRI+SdnzHzgTWt3IKz+4V8ewu8JgkHwj1VlPeQYG8gwHmAZQ3F+oNUR5u+L6U8uYBzN0p77AAzCMETN93h8weg+cT+gNK0tmqXgD0YF38fzqV9c+a5t9eKvtakKsXk1yhFrNcHdOC7pBcHZPl49m9Ip7dBR7rE5RHlp1jRVst7wSoN0R5J0Iey84Zol2Wd2YA5nkCpu+f/WaPL8f97x+z+EvgfRHnPdbiG/x+oqWsxV9C+Lh91s/WvuXl8F1ao/qID2EaPcbrFSLPYNmhj74cWFa3l8q/q6lvdSr3BKGEY4WgF98Zf7ycvHXWeNqRt7WcvwaX37F+YdutfwwP2pshoOc9s8a3Be1UTzbRrtnEkW3V52HV4n1kq7A+953Sk7Ltv1C0cXY2kTe7we88+V4SwLNboD3t6s/dCA/a2aHm3yc2CVN/Loc8ttH+ty0D9VL5P4X+/CvqT6WLis88LhXl8wECT7v5zOPLioR4ENYQlPdJHc5FPls/GZ/xMNtKqrcK8vjQWw/VwfIIQ8E3GK1k8POzdNvyZNBw9VL5N4AMfrGkDK6gPBwrcFxEOpAPWP6STLerL6d8Xru+CrPOvZaNh2n1kVfYF2x/rfw3AOa+yzSd2C4cD3jrkJIHdYBd8XRV1ho38nlpDu6+LCyLvVT+u4KnPC5gfaVHzyBail5wgvWt3ICoV9WOKJpb6eSPC+qk+Tgsu88HnfwP0smQjCDNPI8oyufdBZ5285nnCKsS4kFYQ1Dep8sJFvOZL5vCQ7qXUz08BMuHeXuoDpZHGAp+7LiQzdZty5NBw9VL5X8HZLBn9vj2q3FFyeAqykOe8rjQyh7yfMDo7svC420vld+x2RY1Lih9RVvL44KVnwUweVwwvNiu0LigZPEy0S7F08sJ1gUCFvKZxwXFU2z/BdR+K7+r4KkaF6y+ikc0KA/jEcsp7wTIY5/1RMhbQXkYj+DYyJmQx/buPMhDGeF4xIFZfnsOAhgc7zsY8o6lvLmQdwLl4YUQJ1Iexu3OoLzDIO9MyjsC8s6DtlrcjhcRD2u+r7i+JbdChOKitZy/WRY3HhwIZWqE5+iEeBAWy/8xCfGgTeb2nCDwWH+hvrRjPdLg92cTdbdMnOxEwsftK7cygtaGuYJQ8R1ymvNCKyP+SbEeeQbkKU5w5BzbdEZOPeRFJt5NE+VPJFgninpGe0+gPsLAeiwxNXqftx5pMHqp/FkwWh1Ao7XChfzgEdNoz9tZwDRY+XOBhl2WaZi9Oe06IQfmlbPH+HHBbA0zEzBVu86gdjENJxINVn6Z8AR6qAzTo975/3Gt94wc+lQ/Ma04yuW1h/vJyl8S6KdjBQ2ok0tb0MBlzsih4XJBg7BuizfcvKVp3TJ61Nkf/J85fxT9f6yAk/cYN7wUmkTyegZbKvWOJcDq+pbbOvLoUaob121al9N2tty1HJzTMv3EjKEl15qix1Bea6o6hqoYsRpDre0qDlgXeTynuzASj+9T20/V7NNLNm24Ja9LYwfXmiCL62ctYNn/bVxyLC0Gk7XkWMyVQuFkriBUfBfifKveTrG/XS2GXihgquD38px6rYzcNFF+CcFaIuoZ7T2B+ggD67HEsIbkuVLsclj5zTA02dYurmP/Pwt+DzZ/hxaaKi507xSrVQa/P6ukxbWQLKkFuGJaxabVsMwhqFYGy+IzByjLcsopyV0m6vFjHGMpeQE4pvdQKBGlkx0mpCE0fKjDiBwqQZcmb+uLf3gLS8z2FpV3ZjaxXWp7yxDlXSBger59NmLrS4zE+4dDjmprBUosWz+1tcNgXdwC1hUESy3lGayVLWBdRbDUEpbatsD1MIR6fgQNofuczxc0DIh6ZfusHqA5tF3Ly9BraVK4CvLUaGH3WvIy4CpYGngD6TP6XrwMiDSzrhfl81KBp918Zj2+LCEehDUE5X1SS0TIZ+sn47NaXrJ6eE8qLy2pJayrBW4F32C0ksH3ztZty5NBw9VL5U8GGfyjwJgSksHLKA95yuOtWsZRfVAjuvOWUvKW3f40sDyl9BXpWkYwrfyfB5an1HKT8lZCsni5aJfi6ZUES3mr2B62EYqnuDS2hNpv5T8auTzFS0noMzQoL7Q8FbsExctMZ0Ie+y9qCYp9BpaRz9KSjbXn72jJpmQ4QS7ZGKzZhNP/Phh+M397xDu2kVj/qACeeRXxzBN4lExYuyvyMXr+b/BTHe1S/rXiC/ucWFfpEQdTbenzkuYVSF42v0n+7CAS2PxrfD0Q3hdo5wmxfDX4/URLWb4eSPi4fczXgwQtdZF3LvzGPMRzkMCjYPUlhHV4Qlj9CWHNTghrZkJYKduYsh9TtrHeoW3cISGsxQlh7ZEQVk9CWHslhDUjIayUMpFSH1PqUEqZSMmvHRPCGkgIKyXvpyeElZL3vQlhpeRXSls4KyGslPzqVFuYkl8pbc724DOllImU43ZK3u+ZEFZKuU/J+70TwkrJ+5RtTGknUvoAKfm1T0JY9i0SizEdCHlHEZ4DBZ4DA3iw/oERsAYFrFAb867oSXQLtZF4PJVbmkNaTcCtUeL3x9O7HlEWYeO1WW3crnNsjeBl2XjTnRH8yd6uU3TX1jnwG/MQz3KBR8HqSwhrh4SwFieEtUdCWD0JYe2VENaMhLBSykR/QlgzE8JKKRMp+bVjQlgp+TU9IayU/Do8IayUsjo7IaztoR97E8JKya+U49CshLBS8qtTx6GU/Epp71PKV0qbk1IfU8pESp8pJe/3TAgrpdyn5P3eCWGl5H3KNqa0E53qf+2TEBaHSXBefRThKXo7FdZfEgFLzYdDbTxKlE8YJjESj6FyS3NIqwm4NUr8ng+RtwqT8K6cjzXbamGRowjWYBb3qN1gBms24fS/z8zGt6NopA7rHxTAc3BFPAcLPAOinrW7Ih9nIf+QTnyH8PuziW0uE146ivDl8cXaVzKcNVDLJqpqj4Bp9PAZIWVWTH/6cmDxzlAr/+Wm7NeziSaFL5yJNV1+SvSF+njakbe1nL8Gl9+FTGKMPJbFg7CGmn9Nv5C3Z8LvVv2q8GD9vAOkuOMZd1qfR+WxnzOBezXkY/nvNvvLhxwPau4QbrWT/Xv11rSeIGjl01H7wE72HzRhKj5bvys5uJDyDhJ4FUy2jUX77mBBQwgW9tdcKm990ZdT3uBx3/0X9B3vmMcLbJT8XJhDA8oPntbKk5//LiE/v6q3phXlZy7htvL/d9hYvV+T/GD9kPzwbl6UH+ORGlt5p3XRsRXrh8ZwvjBb0R4ax44K0KB4pPAsq4hnmcDT7vFhGeE5LyEedYpRTQEugt+YZ3jyxtG6qB+6hHReRTzzBJ4egQcvveelNivjH/OT8IRjAT+pN6ZfEH4/0VIQ36gfqE6DqqkgXwaJdesiL+/ScMQTupASYR2UENaJBEvJzUUCVlF+tWFaeRmVuyqHtB4Bt0aJ3/PhxrxppcFWKpl3FUSWxamkuudvslRf4ZlfEc/8SDwLKuJZEInn1Ip4To3Ec1xFPMdtp+2ZLHk7vSKe07fT9pxcEc/JkXiebnan257Obs9ZFfGcFYlnsuzoZLXn6WbfuuPceDydNs517dv21542XpkWvfRk8Cf7yrSKIZXRpafQt8SQHhXiQN76VPb7NC9v3sTGIQn/8NJTbHjDh4Bf0oQ7W9DLcl901R/rWzmFZ0FFPAsi8XTb023PZLbn0Ip4Do3Es6QiniWReCarfxZWxLOww9rT1Z9ueybTHjzd9PTsinjOjsTT1Z9ueyazPV25Ho9ne5AD/k6Xf4aaf5/Y5jNH48RtPrgVyrYX8FbFD+wyVu/XNMc7COrz8nTRLTlYP7Ql5yjKwzbwlrPDBMwa5SF9hwXow/qH5dTj/uBvm1kZ/1Tcrht9eaPB7ydaCuILbtfF9vE2jTMELXWRhzzMwzNN4KkRrFZ0zcySbYcwEo+gcnkfNaoJuDVK/J5FJ287hP0/O5vYzQcFYIZYpUT/iEnGw7Dw41TK9PVS+S83P3XgzdcezaMCMXeq8oeeBrOoZ2GsWhr8VHeqKvHH9rFanidoqYu8Z8JvzEM85wk8CtaMhLAGEsKqJ4TVlxDWnISwehLC6u1QumYnhDUzIax9EsLaNyGs/RLCSsmv/oSwUurjXglhpZT7lLYwZT9OTwgrZT+mtF8p+bU4IaxZCWGl5FdKHUrpT6Tk1x4JYXXt6tTZ1ZS83zMhrJRyn5L3eyeElZL3KduY0k7smBBWp/qrxyeExRc+4Bz9IMKj5sNnBPBgfSunvrdXa/6dkWnbM5hFPT01gmd04juE359NbHOZOIHiv+KLOv1uddVyP4fvim45Q1jHEiwVqlWxjRrVb9XGhKFAI5G/YX9FDmnTBNwapSynrr3LCwUabBUFPzOH7iyLi4Jj/cMCeE6oiOeESDwHV8RzcCSeeRXxzIvEEzpwzCZORciPCtAQWkVBPKdVxHOawNMj8OBBfbVSMtT866eR79hpPE3HQB6Hlv1vPrRu5b+901i9d+80ngfInwOz8XkHQt7RRDOGoWvNvzY8HALv27G6Y/D7iZaC+EaHh0MIH7cPTWf8R4RZS5ErCBXf1bKJlq0GlOG7g+j/A6lemU9zz4M8xQn+OC22aV5OPeRFJt5NE+UPIViHiHpGe0+gPsLAeiwxNXqf92lug9FL5R9ratUOLh2wbKx8Hi7kBy+cGe22x5nLMA1W/q+Ahl2WaZi9Oe1ibZ5H/6NsrcnB/yWwMh/dSePPBH5un082OvTl0HsI0WDlPwk8sOtJ1Ho10qPeIQ+wbt7/WHYwG98W/F/J4pFU/ogWbef+t/KfC/T/wYKGwWzsWdqCBi4zmEPDFwQNwmou3nDzlqbVzOhh35CtHPcS98TBAk7eY9zwEmvSy9xh7WA89r+SAN/yXZu/R13tG9dtWpfTdh4RDsrBOS3Tz0CmafPPjKzSWBk9Nhv8/kxL3mAW9dTYeho+bh9P3Q4RtNRF3iD8Zm0I4fF92twcZH16yaYNt+R1aeygrYwF18+obk288w9+msEGapxdnkkw1MwR34WmQ1ZO4TmhIp4TIvEcXBHPwZF45lXEMy8Sz0EV8Rwk8DCsvCmETd17qfx/gWHnr1rj9J5h+ocvSlHRGLVJzsq3utuMeYnRogsjcCMveSBcUpDW5aK8iibNFvQtL0jrFZNMa+gr3G04IBk95Bj8yT4gWWw6iBLLXEGo+K6WjW895vHIchiVu5D+LzMdVEc3lwiYavvvipx6LNn8bpoov5xgLRf1jPaeQH2EgfVYYlQ9//9zRJ2QBsRIsH/YiVmRENbFApZp5kp4X0BTdovVTIPfT7SU1cyVhI/bx21fJWipizyO468SeFYJPArWiQlhnZEIln8u7cLqwurC6sJ6isNSa6cXUx6Onzb7ULMDnqEWXT/H+mcE8JxWEc9pAk9onZ7/Gh5+x3gUzdYeHLuZb0VvBMX6F1N78AsLQ82/fra6bGeNE2eyxwBcu3m6l8p/Cs5GrNg5v43IZ2sX0zwDcFheAb9mtp9Nz6UbrNHH4b2kSn+w/OXNv8qXCB1DMhit+uAq6oMzIK9H1DV6eqn8H0IfXEN9gH2IV7vk6Y3CxzLSl2kZOYPos/JrmjThMoKib0kOPuQH8vl3cvBdB/j2BXmwdmaEu6Lc7abkDvWV5S7W746RU+SJklOO2BwjYKEccMTG6vdlug8MHn8Z4Hmiz2PkXPWrld8U2a+J7InsV+QV96uKrKlxKCQH2F/Gk3o2sc/zIpEIC/s6pl+PEfC5X+8N9KvaUIF0cr9a+a2R/Wq8bEe/Iq9i+hXLc7+q8Rv71XhSzyaOk4cQLGWjQxFW1a/YB2yjrfxDgX5VUe6QHbbyL+0AO4y8iulXtRIQ269sh7FfL6C80F7FybLRrxd9zj4/24U8+hTfKi7u8Vr08hwydhX1M6pbo3e75sAyOP4dhlWZ5dbcvA++MMut/NsEy5WaIj3KRFl7Kh41jl4U4KPGx5TDFzxqrExq0aPGRYfFNoiqfy7MIaMm6mcEqybeYZ4SVVwfNFHl7ZA8Qr+Dti6iCPFMQVk+5flbefNA87wLvljSyn8wMAq1mq2xtb5MlEfPmLfJYhsuozystyQHD46OaPl5dLTyfxE5OhrudoyOyCMeHS+HvB5Rnvl9pSiPM0iOKl0JeazSyOPLCE8r08Hyr+RUzb6VN35CoL2tZmUsXygTqyhPzeaULFi5dkRKsD0sCyFd8g/zJiQ7yJt61lpOUC9XEZ6QXfJPSBYwumDRsBkAG/EMZlHPPMOjVp8N9s7wvkCfXYs02aOGaoPfT7SUHap3JnzcPh6qdxG01EXeKfAb8xDPLgKPgjUzIazFCWHNSgirNyGsvRLCmpEQVkp+7ZEQVkr56k8Iqy8hrJQy0ZMQVi0hrIGEsFLKRD0hrJQysUNCWCntakrdTimrnWpXU8pESvuVUodSykRKfu2YEFZKfs1OCCulrKakqztuTx2/UvqrKW10Sh/g8ISwUtqvTpWJlHaiU8ehlHOYlG3cKSGsrl19etivlP14UkJYKfnVqTanU/3C6QlhpdTHlGNtyn7sVH91UYfSldKu7p0QVko70ak2OiVdKXnfqXYipU++PcxrU47bczqUrpTz2pT9mFIfU85hFncorJQywTpUa/6P16asht8NyMfy9qGcGYLGAmu3a20tlq9/QdjTS8KuEbwsG09nRvAHBD6jqz8nbzALPy/4o4+9bulPPv3DGtU3Wvgd70/oE+XVmrbxCtdBCvBqjdrDYbgtD+3JdMpDvhgN/u8py8bT11eSvhj+Ify6KM+n0mL7Yqdsoj01Ptm+GNyHxqekQh9CRjzqlNSKAJ55FfHME3gYVt4HtPi+ECv/l027oO4LUXtg5gn6rHzo9AnSo3jDJ5vUafgY+4B0qd3SJxCelQnx4F6rCwnPqoR41Cl2te+uKh7cV8WnGS9PiAf3aB1EeK5MiAf3BR5FeK5OiOdqKHMe1PP/r4Y89TG2IUGH2eIGvC9gi3tj2oHw+4mWgvhG93c1CB+3j/d3rRG01EUe31O0RuBZI/AoWEckhGV9Ozub2Nf8McfVAs/qAJ75kXgWVMSzQOAZEPWq6ojijeFpJMSDOrOA8KxJiAdhDRGetQnxICzun+WCBu8P/GKXMbg+rYO8HlHX9KuXyr/xsLF6v2rCNBkcAtrXZhof+mND2cR2ML7/oznLdVC/gD0atz6VEaxWvPst8Q7zYnhn5UeAd9OaZ4Rmi3axbq+HvAbl3QB5ayhvI+QhDMzLoA34jmUO61u5AVGPx6tN8L5Af02P0Q2E359NbHOZ8WoT4cO2+4fnbpvL4es1fLcKfKof5mSap4jfYJmOKTt7HeU1IG8j5eG4dgPloQ1CGAgzr018ExnSx/KNsC+mPPTpV1Ie+uF8HgJ9Zz6Lg21m/9baPJ3g+IfnqSgzPdlEvjAPUP9ZV29oAesKgoX1b6A23EBtWC3a0Ea9jvZDJ0OvlZ5Z2zcLWuoiD/sN8xDPZoFHwVqfEJbJv41BJrtnNj9R4/v/qF3HYGE7lXyvIXhW9vhdx+oc0/yt5tXsp6D9YLlbL/I8/D9vLpjMFu1twO8yvMP6Vk7ZoFMJT0PgaQTwnBqg2f7Hi98xBsLxGyt/aZPvFcek9cZ/HJNY728rCTtW7w3+gMBndPWLvJi4bu+n3vaRx254fEWN6hst/I5jW7eL8qeK8sarLVC/alzXcKu47m2Uh7FVo0HFdW8vSV8M/xB+XZQ/F8oV6QsF64pEsFDfUsBaVRKWxa5vhfpsk5DOjYSn6A1fWJ9v+EoRg1V+13FEc9Hb5rD+Ksq7WOCx9qAfMNT86/VlaFdND87xsC7P8az8UTC+XktzvAbQFfJlOU5UtD/nR+I5vSKe0wWedsfuOU60KSEe9GlPJzybE+JBWEOE59aEeBAW+1+rBA1eZm8nPbgN8pReWjy9l8p/ft+xencG9ABtHNbH8a2RTWwH4xsmH6jk2CbjRDj2hni3lXjXgDzFO7YhVv6PgXf3E+/QhrJuI183UR6OSzyWIK8QBuZl0AZ8F/KjmW9Yz/hb0VeKjhMZ/P6sknyMzie3ED6WU/YF7yiHbzROdKfAp/oB40TIU8RvsDhOpO6QULaR/Tqcb9xGeWiDWLZWtWgTx0gUfaY7Ftd4HejO62g+ivgWZ+PzkDazMR7GG0n/kA/sd6kYA74L+V2biJ4U45qaJ7PfVXSejPU3U94mgcfag3GooeZfz9/f3VXTgzYT67LNtPIvgH5/D/WZ4rPqT/a7ivbn/Eg8p1fEc7rA025/iP2udvhD2LZ2+0NDhOe2hHgQFvtdeXrwEdKD2yFP6QH7XVb+cNCDjwf0AP0BrI9+10bRDsb3afK7So7j0u8yWK1491ni3UbIi7EhVn4W8O7vCtgQ9CXYt0J+3Ep5OCYjDMzLoA34jmUO61u5AVHP+Gv9dSe8b4ffZfD7s4ltLuN3xfpB1r67yuEb9bvuFvhUP6DfhTxF/AaL/S7lUyjbeAfl4dxpC+WhDWpAOcSX1yb2u5TsMyzca6z8LF43+D6sG3yP/DRc00Zdfu5u48upMcj6AHnTjvUpjkWXjLmPyrVaB1Z+WCgurmKQ18Nvloui8cw1CWFZvyoZYz+s6F6F+ZF4FlTEs0DgCa2dxsiWwqN4007/CNvWbv9oiPDcnhAPwmI/LC8O3LfbGFy0q7FxYCv/3n3G6vU3Yar5GI/7WwBelk20A6tz8M1u4qgYb5B+GPsTebybQ7xTc7kQ76z8I8C7XQK8Y92O9bVuozwcrxEG5mXQBnzHMof1rdyAqMfjVUk/JdoPM/j92cQ2lxmv7iJ82Hb/sB92dzl8o37YPQKf6gf0w5TvhbDYD0M7y7ENtI13Uh6Oa+yjoQ1qQDnWa9WmkB+2OQdWrB9m5Y8gu1HSb5J2w2B1/bU4f80/qdbF/e9GQlhdf20MD7/r+mtp8JTx1y5M5K8dCz7Hsknw11Z2gL+2KpG/thvw7nLinYptKL6yv4Z+FPtryCseB4vGzVR8ZXuJm6nx6qkUN1NxKWUb2SfDcY3jZiF/LUXcLDbGxTjz/LpzKN/K37LbGMybKW6GdOF+8F9142tPm/ia9as618D+WtHzjvMFzQrPgop4Fgg87Ty3h21Ta05V8aDOs7/2dFvnzPM5HiH7ptY5Qz6Hlf+TvcfqvSLgr8Wsc4b8NSv/GvLX2rnOmce71yXy114DvHtjgHes2+j7sn3prnM++XTXOfP9NbSzHF9D25hqnfOGFm1if02dd2RYsX6Ylf8Tshsl/RhpNwxW6H6RGaI97fDXDH4/0VJW/lXfqfMA6rwen1VF+87xtSpn7BoJYbGtRdjsrzUEnkYAz3xBs8KzoCKeBQJPu+9zYH+tXX4h+2vt8Av9M0R42nXuINZf+0fyOW6FvBifw8qfAj7HPwViRBzP4TPtjG91Dr5vkt0teW5R2l0+o5h3HuBbOXP52PMAVn4/4N13iHdoZ00vFF/ZvuCYyr4c8or3+xSdk2L9vLOdlu+fiuc3ov01g6/OkpYZr9Q5CbWHt+L8YdRfU36z6gf015Cn6mwA+2sNKMPnAdA28p5/9DU4doI2COEjvrw2sb+mZF/FuPAsH8e4ECfLILaxQB/NjpVBg9+fTeR3GRlU8RVsn8mEvxd2bvN383PE563btGLzmhuvv3bJui0bF920dkXjlk3XN25ctHbtLes2bkSiERFe5Ir5+HAZ+32deI8wWl16UcR539QCFl+ggfXZAG5uAesqgqUGN/5/ejaRzkubf6dFwEFFy6PrSqJLLb6EjDwK540EC+vnBVzy6OLLMtUBcv5/ejaRTuZXCE6eAcU2PpfoyjtM5dOdLWBdS7DUYSyDdVcLWDcRLDUJ5/+nZxPpZH6F4Ph0dwu6NhBdeZtvfLqnBaxnEyy1ecdg3dsC1jUEC+tjXfx/ejaRTuZXCI5PwwG6/HM50XUv1B+mPGwPfyC80QIPO2RY38q1e5K2hPAMJ8QzDHlDUM/njUB9tK2hw1I2+G+F9+0ImBj8fqKlIL7RwX8r4eP2ccBkm6ClLvJwXMU8xLNN4FGwbkgIa4TakzcJO3H38TjXQF7MJMzK98Ek7JQmTOV7DGfj8Sk/Zo3AV6N29YnyCK+Xyp/RpMlf9LJX86KXuqDphhxa/G8cT0OBjhnZRP1qh44Y/P5sovyU0ZERwsftYx3ZKmipizwOWihd3CrwKFi3JoTFi6Z5OrI8kY78x15j9S7uQB25LIGOoA8VoyMlF56idYQXnqrqiPJlQzoyImipizzeWD8i8IwIPArWHQlhxerIukQ68k+gI89po44Yv2N1xMo/N4GOoN8coyNVgmEIz+jBdwg/lY6oyz9COnKHoKUu8nDOhHmIJ7Q4jrDuTggrVkfuSqQjHwEdubcDdeS+gjqiaG80f6ece6n41aHwO49HSnbroj4vrDYEnlYy8pLdNT1KRvxvm7/zwvr7QEYeCciI0TiVC6sLK+JZKPBM9sJquzbCLSQ8WxLiQVhDhOeOhHgQVuxFa+8kPbgT8pSttHhRL5VfAXrwuwE9yItZ4sLqGtEOxvfeJo6KG4/kwqrBasW7P0w0ziwE3r2/gA1Bn55tPPJjC+XhmMxxXxVfxXcsc1jfyg2IesZf6y+MW7ZjYdXg92cT21zG14o9+GntGy6Hb3RhdUTgU/2AC6vI02H4bbBCC6trKA9t492Uh37yXZSHNgjhs16rNvFamqIvtMFmqjaZlVygDW4yUxvSeWzCuqpvbobfmId41GFpBauREJatMXQ3mU181wm+EG8y2158oX8r6AvxeG7l/2HPsXo/nARf6Kcd4Av9LJEv9CHg3c+7vlDoecr4QveWwzfqCw0LfEV8IbWm/XTwhXoEfVgOdU/FkzLxrhbAxzimibrPI7ox72zCUTQGdLagt41x3Z5Y/XqqxHVRBlg+i8ZiG0RDA+ox/0v6x9H++GRsYDwb3rF9qyJfef1wQwBfybW8aYYvtLcL8Xl72pdN7MNWF3ojDuyvPJ1H3EX2U7a6/Dy0n5LXAe9oAYv3U+ZtXMa8k/d48q+3w4ftMb6M7QWcD2WOaP5Wl4GjP3UilQtdaF/lwneEl2Va9wx+qgvtVT/kXTC/QxaWEeyjvH2m6tKsGJkNXRCv6Cnap2pTuS93aqDcZlFO4fL/475nvsTeyp7ehOH5fM6y8W1EvLw3WV2orw7NqcMZVk7hmV8Rz/xIPAsq4lkg8IQOR8bomsKjeDPZB9CuS4gHYQ0RnnYddOPYQEPQ4HXm0j3G4LKuhcYLPvR+Bcxvr6APCaIe8FiHF+tlVB7bwfiuaeKYjIv18ni3mninDqCFeGflTwXerQnwjnU7dMAV+XEd5amP1dQoL4M2hA6gqcsgtpcDaKELnp4KB9DUWBdzAA3HWD6AhjaoAeUQZl6bQgfQrK4/XLV/8/fY4aol67Zc1rjx+rWNTddvuGnluudtXrdxUy9AViMHW3i2xHg1VN5To/+nUd4qyr9UlMMn5qqBklccRHu+Bj/VVQPqRFfoqgH1WUZ1VcUt8BvzEM+tAo+CtTEhLP58Rfcqz3w8oas8NyXEg6Moe3rtugJgiPBM1qcHG4IG71k8St6KWsnAunkrGd+Amf1ryFtBi8877dcAvEzgW52D743k6eHoU9XTM1itVoHeTLxrQF7MKpCV/zDw7m3EO7SzrNvIV7YvOFLz53GQVwgD8zJoA74Lrdgy39RsqeKuhWhPj3ctlJSP4K4FlFP29Ep6lqOenvIsVT+gp4c8VSdxQ1d58lUDaBuvozw1w1A2iGWr0aJNRa4aWCnwWN5aqMefyF0v2oyfubdyy6HcSoIxBHlrKW8d5K0H+BceOL5tyBvWa9Rd1muUY9ZrdQWE8T70SVmEy594/STYpq+SvVMyqnbyWHkVwcbZCc9k1ZWxIViNAG41c9oSwK2uvGNasixf1wYAl+UZb2Y0/+KYV8QG+gjl3GVjeJCGJwoA3Lx+UrPGEK9UP6mVMl6RQxvToDx1TY2yMWx/1DU6Sj4boh04Hpu9aRWF5nH+uhZwmZ9q7FBjcCiirvSf7Ya6QSMU3VGyznZDXbWurozn1aDvk39WcmUmeNU6y3dvpuU77zrT/wPb9u85tm16QZg/gVWEfUFHs2y8LbB+rGgLepUtwP5hWxCywf4pajdZb0Mr8LGRHtazPlEe4fVS+V9BH/BJIbRH/EllFZEu6vPgZ4z3aUZwlT88BOV+S7KnTudgXZY9K78/RIynNX+ntBt8xay6mjY05oQ+YY71t7dPmId2P1RZ0fapnZ8wn2y7hnyKsWtY3myL2snG+qyu6lc2Iu+T7AqfWoVHGxGykQ0Bt9UK+6MUR1CfPghdPVj2M7s8bigbxmM2lp8LNuwk4o2S5ZAfq3b+4K4dXgELnQpWsG4I4Fa7ae8K4Fa7aZmWLMvXSaWLxpt2zDfQL2BdVP2kdtqFeKX6qU7lkTdFdZevu1afG1K6i586YvkM+fn+Yd29TtCK/sBkrfbmjd0qBoxw2fc9C3T3UuKNss9qpZTtB5ZXJ3RC8/UQrE0B3CH5VbjV5yeZlkzQiZ8gMFyWZ7xph+6mnB8oXql+UqcGWAdjV55ZP2NWnlHmlXy2uq0yNO7iDg/e/aHWDEOyp3ZaoB6z7KmdFkr/Q7E1thsoo2w31Gk81jOUVZQnjhVY+WubfVFxx6+MFfApF4xnKPnmuZWV3wK27boc2za9IMzrm3BaxQqsH9vhU2P/sC0I2WD/FLWbrLfYN3mfVkVYahcq61lfpmOW/KlWK78J+oBjBWiPOK4ZuxMm75Mb/sFYwasoVqA+J+TL3Umyp+L6WJdlz8q/FuT5HooVpLAboU/V8G21RU/XqnWB0OnNinPp6FgB7w4vGZsI7g5X850Ut575FPt5aYwVtDoREYoVtNOuhdZDWvGV5+7q05fKRrAdUKdI1O5fxqdiYWgjQjayIeAqnwV39F5K8w3Ur9C6GOs/yntobs1+gzp5rOZcfBL4LWDDPkC8UbIc8mNbzdc59qnm6yFYoTiFOmF6dwA30oV1GXeeTipdNN60Y76BfgHrYihG458YXql+qlN55E1R3eUbFnF8Z71Wn9RS8hny8/3DupsXP7yTxu52nxrnufU9QIvaV4DjAJb/K9DdLxBv1O3iIZkYFuXxFDTbsLybY/JghfY0jIjywwHcSBfWZdxMp9VTumu8aYfuor6x7qp+wvIxvFL9pG4MHaa8BuSFTrDfQ3kxJ9hR5pV8qhh97L4CjNHzLRLKFoZkr9WYxbKnxiyl/2w3UP/ZbqCMst3AvmW7Mdz8H2UV5YljBVb+WxQrQBmpGisYIRrvBRqUfPPcysr/Amzbd3Js2/SCML8XGSuwfmyHT439w7ZgGPJ6RPmidpP1FvuGYzoq7oA85ViB8ahPlEd4vVT+Z4FYQQPq30u0x96owX6GutXH832XvZ78PZBNtBtDUO6XJHto03pEXZY9K7873Nj3v+RvpLAbd1Ae2g32rdWYo+RMrRXhGMr1zA5UvNEuOlYw3Pzdn01sc5lYwTDhw7b7h2MFI+XwjcYKtgp8qh8wVjAMOBG/wQrFCtpp15BPMXZN3VyjbiJmfW5AHtsBtBFsP7YE8OG4ir642YiQjYz1WXB+/m90SxXqF+s/6jjrP8o7+w3DkJd367yyYTxmY/n9wIYdTbxRshzyY7eJ8luhzF3UHpT1bRGw7g7gvk+U3xbAjXRhXcadp5NKF4037ZhvjGABgJvXT1g+hleqn+pUHnlTVHdHKE/dBKl0dzgbazPLZ8jP9w/rrvoKGPoDT7VYwSmgu8uIN8PZ2BMTKxgR5YehTChWMBIBKzRfC8mvwj0MeViXcTOdVq+TYgXDkBdjYxWvhqEMxwpQr1kHG5DX7lgBy2eqWMEfPs1jBcOQlzfmo6xaef9wrMDKX93si4pfl5Oxgq1E4zDQEDOvt/LPA9v27BzbFhsrsPKNJpypjBUMQwG2BSOQ1yPKF7WbrLfYN1MVK7gR+iAUKxgm2lPHCh6OjBVszPE5isYKXgbyfGvzdztjBcOQx7ECy8uysJypWIGVU/JsdqDiXDo6VmDw+7OJbS4TKxghfNh2/3CsoKTdHI0VqDnOsMCHsQLkKeI3WJ0YK2jFV567YxvLxgqGKa9MrODhNsUK3pkoVjAMeew3IA/Zb9gKtCifx+D2UvnXgA17D/FGyXLIj00xXw/BCsUK7hfl7wvgRrqwLuPO08nJjhWgX8C6GIrR+CeGV6qf6lQeeVNUd7dSHo7vw5SHsj2SjbX5PW2KFbA/oM42KJtQI3qxfGh+0mrvKM9PlC+k9ho1cvCgTcC2Xd78y3uNPhTpUxvuivI+u937aFrNB/nsDNpu3vOCPMbzSDw24BmXlxT4wqDaH6rmySx7fTnleT+Zlf+k8NlD8hw6/1VUntV+o7LyjLpxDbXVyn9ucuV51lTLM8ssyjPHhJQ817KJNqxKPOeuDpT/b25H8v+vHS7/I5AXI/+tYiQs/+i/TYX8rysg/yMBnEr+rW158m/w2O9/PCD/ir8h+Q/5n63kfxvlYb1GDh6Uf+x3ln8r/+tI+Tfc7ZB/5BHLf2je5J+icx3jifLfQ/LP67Wp5H95xS8sh+Tf2pon//yFZSs/c+8n/yr5HxE0bIJ3Vde6sA1bKQ/rNXLwKH9eyb+V3xnaGpJ/w90O+U85f20VZ2B/HnUjJP+8zpFK/k8k+ccz7oZfnUfjMyfqHHvo7gprhzqzqc4D8JnNZ+wNbdh7PEzlI6n7ga18ijlvCFZIP1vdjcG41d0YTEsm6LR6bTz/Nb3d51oVr1Q/1ak88kbpVuiMe+hcSeiuPDwvxvKpzrjH6i6ecf/WbuPh3tYCLvMzdB8h4lL6fzvlYT22G7Fn1dhuqPN+rGcoq2rtjecb5zT7op1frWT5xrVolG9eu7PyV4NtOz/Htk0vCHNJ5Dib6K6a3nbfVdPKbrLeqrNpNfofYan1G9azvkzPdfleFit/mfDrlD3i+zjQHvHZfXXXrLoHC9eitzTpUGd0h6DcNSR7Ze9ivAvkeaj5O6Xd4Puw1F0HoTFHyVld1McxlOuZHah4Bjx6Ldrg92cT21xmLTr2frqKdnN0LVrFCVU/4Fq0OkOLsEJr0e20a6F7fFrxldeGsY2szw3IYzuANoLtR+j+PRxX0RffQrrf6v4c9lk2iXZ4uP/Y9FmUjrP+q7sBQ+fY1Z459hvuAlqUz4NjNpbfBjbsUeKNkuWQH9vqnDnfH6TOmYdghc7Xh86KKtzq3A7TkmX5Oql00XjTjvkG+gWsi63WZGN4pfqpTuWRN0V1l9e31Tl2pbsYf380Z9zGdqh7NtgfwLroD8TceRd7Bw3fqYB6zffTqDUGtDN591O8GXT3/cSb1PdT8Jyp6P0Uobv4WtkNxt29n2J8edVPMfdToH7m3SOF9ITuq1R3J+GcjuVT3S0TO+7i3TKvo1hB6nsgQ/fV8l7RFON66C4WthvsH7I8cazAyn+EYgUoI1VjBTyO45kbJd88t7LyXwHb9vEc2za9IMxPRcYKEo3jve0ex1vZTdZb7BueP6qxFHnKsQLjUV+m4xR8/7KV/2IgVlDWX1DxO7ZH/sFYwS8oVoB2YwjKfTVRnOpXIM/fIH8jhd0I+da8b1WNOUrO1N5AHEO5ntkBsysoi+2IFRj8/mxim8vECmLn7hXt5misQPnhqh8wVoA8Vff3hGIF7bRroRhoK77y3B3bWCYeoOzHrQF8OK6iL/6LiPlGrM+C841HKFaA+sX6H3tOlv0GNZ/jcSNvT1PeOdnfgg3beZ/xMFPfqcX78IveqRWKsY+I8sMB3N07tcaXV/0Uc6dWrO5yjAHHd9ZrlG3cX87y2WpNlnVXrTGjP6BiBfzdi6LxAKXz7Kcp31d9d4B93333Gau3gHiTOs4XM18PwQrN11rF+Rh3N843vrzqp5g4H373IvR97JB+ss6jbOO4y/KZKlawimIFyiaEZK/VfhqWvdgzJGw3isYDlKyz3bD+RFlFeeJYgZV/ZrMvzP8seY+UjBXcSzRiPEPJN8+trPwlYNvOzLFtRc8ZL27CmaT924XPgoZssH+K2k3WWzXG1+h/hKXOgLGe9WU6Zpl3XmA59EHoO3sc10R7xDEQdbc72yP/YKzgeU061FxnCMpdSrKn4vpYl2XPym8Ceb6i+Tul3eA9TipmFBpzlJypdV4cQ7me2YGKc+noWIHB788mtrlMrEDpn5rvVLSbo7GCYYFP9QPGCtRcBGGFYgXttGuh9ZBWfOW5u7rzRdmI0BoG24/QXf04rqIv/jzSfWUjY30W3K9wIcUKUL9Y/4vGA9Tcmv0GdZ8s2iAcs7H8nWDDXkK8Gc7Gnhg/dkSUH4YyvA6j5ushWFXOPYXuC8G6jDtPJ9t438T0dt+5q3g1DGXY/8e9/yOUF6u7fOedigco3cUY2Etyxm1sh4pXsj+AddEfeKrFCl4Nuvv73VjBBNxMZzdWMD5vMmMFv9+mWMGcbqygcKzgz54CsYLPg237i0Sxgg93YwWjeVMVK/hMh8QKfhIZK/hColjBz0Ce/6EbKwg93VgB4evGCqYmVvCTNsUK+p6isYJfgg3bcd/xMIezsacbKxhfrxsrKKa7KWIFLJ+pYgVfoLEb2xTag8xnBFOeQcA9GXlnEHbdd6zePOJN6jMIof2PMWcQNgZwt4pThPZedc8ghO/2C51BwLFsI+Wpc0BVziCwfG4U7VBnCgeyifqwEeB+dtfxcNV4HpK9VmcQQveOhM4gsN1Q9w5M1RmE45t90clnEJaAbTspx7YVPYNwahNO9wzC1J1BOBf6gGMFaI84zoH2KMUZhOubdLQ6g7CMZK/sGYQbQZ5XNH+ntBvdMwjdMwhPAG/+fbqeQVBraMpGpDiDcD3pvrKRsT4LnkH4SNNnUToeOuvL+j/ZZxA2gg17PvGmewYhXye7ZxCK6W6KMwjPzxm3sR1lziCwP6DWPJVNqBG9WD40P2l1nxrPT2LvU9uUgwdtArbtyuZfvofpkUifOtFdOdOL3pWj5oOhOEir+SCvqaPt5rt11Bk0NTbg2vfv0thQg3JnEa21bCKtNdG2ek59BasX6q+G3w3Ix/J/THNJ5GeBfl02AHUygIGwS8rMMmyrPcqfRN9J4fNPv8jrjaDlYyf99ZK3/nrhrBrVN1r4HcvldFH+LFHeeNVHtA9mUc8SpbuG2/K47ZiH+mc0eJ09Zdl4+qaXpC+Gfwi/LspfCuWK9MVO2XhZQHk3fW1A3sWUF7oHs2hcme1V3l23PA+38n8GvtzfRsTVcdxqx32zIViNAO4U375kWjJBp9Wb7LEtNK8qer+l4pXqJzUPY7/rYshrUF6sn8dzOxVXVvLZEO2Iveu2AXC3UuxY+Voh2Qv5Fkr21J4Wpf9sN1LGlVnPUFZRnjh2bOW/RuN9yRiPjB3zOtKdQEOhfTlg276ZY9uK7vX5dqSfm2gdqbfd60it7CbrbSieoOY0Kr7DetaX6b0KfD+7lf9RIHaM9ojj3mrPhrJHfPcexowwdjx7vyd/q/nHEJT7L5I9dS891mXZs/I77TdW7xcUO05hNzh2hHaD9xSqMUfJWV3UxzGU65kdqHgXbHTs2OD3ZxPbXCZ2rPRP7c2vaDdHY8ex+9owdqz2zSOsUOy4nXYtdJ9/K75yLFetlyobwXYAbQTbj80BfDiuoi9uNiJkI2N9ltsA7u0UH0D9Yv1PGVfmcUPZMB6zsfyeYMOOIN4oWQ75sa32SIf2zd4bASt0pmZYlL83gFvFrZmWLMvXyTbu+Zze7r3sw6K86qc6lUfeFNVd3uMSu48F9xSwfLaKIbLu3i5oVf7AKgFX7T2tZRPtUEzsWN2vjfxgm9CAPPYJsN7FOXhUDMI/HDu28ic0+dzKpzbc7ZB35BHLu7LZoW/+tIrV8/xa3VOu5N1wqj3Iq4D2IRob1gr4NcpDWteKtqm7pq2cwnNqRTynCjwMC+eDFwMs9p+t/FBTzswPWg9wC8jPeua/wUDYm0vCrhG8LNN+q8EfyPL1uV/kxcSoez/1to88dsPjK0L2JnTuTtmbU0V54xXqRgFerVE2AnXkibZA3mbKQz03GlSM+taS9MXwD+ErP/NcKFekLxSsqxLBUra/CqxVJWFZHB7t4HqCpcbWBrwznswW7VqVU4/L5cXcEY+Cv5FovVjQerFot9pzb+UGRL1azl/Dw+9CaxnHEc0NQXMjQDPWD411x1F7VgLMoeZfz/cN+2l6sE+wLo8NVn7DYWP1btkvv/08t0Ka52fjaSnan/Mj8ZxeEc/pAk9KuVH9OZ/wrE2IB/2D0wnP+oR4ENYQ4dmUEA/CWk148vTgAdID3Eug9IB9cSs/B/TghQE94H0jmwFelk20A6tz8D1MPlnJsVauI7C/nMe7RxLZkJ8fOlbvFQVsCI6F7FMjP9ZTHvpN/C0iNWdRa7eh+PeAqGf8tf7CuUs74rMGvz+b2OYy8Vk1N1O+hbVvSzl8o/FZtY9I9QPGZ1XcAGGZjsWswaJt5Dgo+kp5e5aybOKcsdGiTRavmB2gb0DAYtlC2ovyHuEZnfgO4fdnE3W0jGypOS62z/qaxyasq8aaNVCO83rEu7xxi/uiKixe154KX2hBRTwLBJ6niy+0gPBsL77Qpwr6QjyeW/lXwHj+mUnwhT7fAb7QFxL5QrcB7/6BeLcS6GLdRr6yL4Q+CvtCyCuEgXlZFo7fqhgn8w3r8XhV0jeJ9oUMfn9WST5GxyvlI6Kcsi9U0tcb9YXU+onqB/SF1PcCEVbIF1pJeWgb2d/BcY33dod8oZUt2hTyhVZCG/z/thd8CHTn32mPCeJbnI3PQ9rG3YdE+odt5RhUUX8A668nelKMN0Yz7pPnGNQNguYbAjRjfT4nv17gUeP0UPOv5++v9tP0oM3Eumwzrfxy6PdfU59h+9n2Ic3sdxXtz/mReE6viOd0gaedfgq2zfBsTIgH9YBjUO3yh4YIz+aEeNT33VvpwZz9x+CiHczTg7z14P+YN1ZvlyZMpQcc87gV4GXZRDuwOgffnk0cFcdx6XdxLCWPd3sT78rakC8C7/YL8C7kP/E9VbHnFXiPkIq1qDNXofP7am+l8bdijCba7zL4/dnENpfxu2L9IGvfHeXwjfpdaq+m6gf0u1TcCWGx34V2lsdUtI2hc9wcn0Ib1IByrNehvTizA/QNCFgsW0h7O2JQBr8/m6ijZWSr1X06HIMK3f2DYw3HoDYJPJsEHtXP6xPC4hgUrr+yL6TWglcF8MyPxLOgIp4FAs+AqFfL+Wt4+B3jUbxpt8/FMah2+Fz+GSI8kxWDyhvPV9B4rmJQofHcym+E8fySwHgeE4MK+UJW/gryhdoZg8rj3VWJfKHLgHfXBHjHuh0bZwr5Sd31uODztF6PQzsbii+wv4O+RpH1uPUt2sS+ENK3PgdWL7xTMadeKn9rU7+8rm1q/mY9R9y+3G+oXNcPG19X+TvXw2+Wi6K+U0qfruuHjeHhd0X8sHbFpNgPe7rFpNR6pLcxr4yISWFd9iWs/C8PGav36kmISb1hEmNSebx7U4QfFuKdlf8a8O6tBfywbkxqjE58h/C7Man8mFTID+uEmJSij2HF+mFW/jGyGyX9Jmk3DFbXX4uPm/H5jSo+ViMhrK6/NoaH33X9tTR4yvhrX03kr90JPsc3JsFf+5cO8Ne+m8hfezbw7t+Id6H9n+pufuXLsb+m7rGsUV6WxcXNsP72FjdT49VTNW62nvLQNrJPhuNa6CxlA8qxLpSNm8XGuBhnnl93DuWP6tsBYzB/S3EzpGst4H7ggPHluv7a+LpPpfga74VF2OyvrRF41gTwzBc0KzwLKuJZIPAMiHq1nL+Gh98xHsWbyd5r/3Rb58zzOQYPGIOL9jbW57Dyv507Vu/gJsx2rnMe2sQxGeucebw7nHhX1l/7DvBufoB3rNux5w6765zddc4ngDf/KjvL8bXQucOy65xrW7SJ/TWkL3SHjL0L+WFW/hyyGyX9GGk3eF8a0sPyP9lnI1eWwxc8G4ntY3/tBkELz/H8w/G1omcBEE8jISy2tQib/bWGwNMI4JkvaFZ4FlTEs0DgCZ3bjZEthUfxpt1+Iftr7fAL/TNEeG5IiEf5Oa18jrXkc+A3FGN8Diu/DXyO9eRzqL22jA/9tfWiHYzvRrK76AdWtbsGq9XZyJuId+shT9k05p2Vvw549zziHdpZ0wvFV7YvOKayL5dy7y3WZ76puUjF+9Ci/TWD359Vko/R8UrdQaXOM1WcP4z6a8pvVv2A/pq6Qwxhsb/WgDJ8NhJt4ybKQ1+DYydogxA+4strE/trSvZVjMvKqRgX4mQZxDYW6KPZsTJo8FPdJ6HiK9g+k4mZLjVNSrZ50/U3Xr9py3nrNq3YvObG669dsm7LxkU3rV3RuGXT9Y0bF61de8u6jRuRaEQ0C95jPj5cxn5fJ94jjFaXYxRx3te3gHUFwcL6bABvaAGLL4hTgxv/Pz2bSOelzb/TIuCgouXRdSXRpRZfQkYehfNGgqU+fB4yjEjXCoKF9XlxEYNFTCfzKwQnz4BiG59LdCmDabBubwHrWoKVd0jdpy0tYN1EsNQknP+fnk2kk/kVguPTHS3o2kB05W2+8enOFrCeTbDU5h2DdVcLWNcQLPVhd/5/ejaRTuZXCI5Pdwfo8s/lRJe6ZF9N0pYQnkYLPOyQYX0r1+5J2hLCc3dCPAhrCOr5PLw0HG1r6BCTDf54OXs7AiYGv59oKYhvdPBXF9IrB9TaPixoqYs8XpQaFniGBR4Fa21CWPdQe/ImYZ+kSdgayIuZhFn5i2AS9mmahCGP+GNEyo9ZI/DVqF19ojzC66Xyf9ekaYds4kdu7hb1FWwcT0OBjhQfskZ4Rg++Q/j92UT5KaMj6kME6lJxa/u9gpa6yOOghdLFewUeBWtjQli8aJqnI99MpCMngY58uwN15HsJdAR9qBgdqXIJEsIzevAdwk+lI8qXDelI6MMcmMcb65Uuqg9KK1i3JYQVqyOPJ9KRA0FHftlGHTF+x+qIlf9NAh1BvzlGR6oEwxCe0YPvEH4qHVEXxIV05DZBS13k8UfTii6OI6w7EsKK1ZGZg+NxltWRHUFHZjdhdpKO7DL45N9YHVG0N5q/U869VPzqUPidxyMlu3VRnxdWGwJPKxnZb1DTo2TE/7b5Oy+s/+oZT/59YlPR4JO/Q3yeyoXVhRXxLBR4JnthtV0b4RYSnlsT4kFYQ4TntoR4EFbspbPHD47B9el2yFO20uJFvVT+NaAHJzVhKj3Ii1n2wvs1oh2M75mDT/6tuPFILqwarFa8O2MwG9eWsuPMXcC7s5owY2wI+vRs49VH11Uck+O+Kr6qPmZYF/Wt3ICoZ/y1/ir5wdLohVWD359NbHMZXyv24Gc7P5Cq+gEXVtXH4RFWaGF1DeWhbeSPKasPnSsbhPBZr1WbeC1N0RfaYDNVm8xKLtAGN5mpDek8NmFd1Tc3w2/MQzyhC6VTXk6tPlbZ3WQ28V0n+EK8yWx78YU2D47BRfseO55b+f1gPL+9CbOdvtDdg0/+nUpf6N7BbFxbyvpCGfBuaxNm1xeSz1PGF7qrHL5RX0itYRfxhdSa9tPBF+oR9GE51D0VT8rEu1oAH+OYJuo+j+jGvLMJR9EY0NmC3jbGdXti9eupEtdFGWD5LBqLbRANDajH/C/pH0f745OxgfFseJdoE21PqB/WBvCVXMubZvhCe7sQn7enfdnEPszbg6b2bmF/5ek84i6yn/LWFrBC+yl5HbDVR2V4P2XexmXM+5vBJ/96O/yng+PL2F7Av4AyjzV/qw+joD/1SSqnLj+peKFHtO7xx31KbpgPftxHHTj0srlDFpYR7KO8fabq0qwYmUWaYmS2aJ+qTeVPfNArUO4GUU7h8v/jvmf+oI+V/VwThufzOcvGtxHx8t5k9XEhdWhOHc6wcgrP/Ip45kfiWVARzwKBJ3Q4MkbXFB7Fm6frAbTrEuJBWBwbaAgavM786+AYXNa10HjRS+XfcvBYve83Yao9+qifWB9jA6EDaFb+x4NP/p2Mi/XyePfTwWxcW9QBtBDvrPx9wLv/bMJUvGPdDh1wjT2Axnvrih5AU5dBbC8H0EIXPD0VDqCpsa7qATS0QQ0ohzDz2hQ6gGZ1/eGq5n1LcLhqybotlzVuvH5tY9P1G25aue55m9dt3NQLkNXIwRaeLTFeDZX31Oj/aZS3kvIvFeXwiblqoOQVB9Ger8FPddWAOtEVumpgo6BFXVVxC/zGPMSzUeBRsFYlhMWfqOhe5ZmPJ3SV52R9AqddVwAMEZ52XUEV6+nNPXAMLtrDWG/Fys8Fb+XQJkwVzeWd9msAXibwrc7BN7+Jo+IquPT0eBabtwq0gHjXgLyYVSArPwN4dyzxDu0s6zbyle0LjtQ3UF5eBB3zsiwuSo31i0Sp0eNvh6dn8FNFqa8jfCyn7OmV9CxHPT3lWap+QE8PeapO4rKnp47rK9vIuy7UDEPZIJatVS3aFPL0eLxZLvBY3hDUu5jy1mUT2+z17sID83GfTO0oGiE5WeBUeC5r/u6lNl5Ltg77rYBsPXOA8BgMhN0oCTtWL7mvEJ/RpVY2eiNo+eUuZ87/rzf/5+vYHhsteTrLYxGWP1mUrzjmnDIAODLCbXlqPLS86ZBnNPio5SnLxtNXciXqlBj+Kd3H8rz6FtsXoWtQisLaKRsvV6g7pn/LIc92+8bMt0rqYPR8y+Cnmm8p2xuabyme1UUeX8V7mcBzmcCjYC1PCGuo+Vv1M8+3lgs8ywN45guaFZ4FFfEsEHjU+FfL+Wt4+B3jUbxp97yO51uXJcSDsIYIz+UJ8SAsnm9dLGjwdnvbgWNw0W7hnAHr5s0ZfvegsXrPb8JUPsXlmcaH48tK0Q7G96Imjopji5xv4dgX4t1DxDv032J4Z+VfDLx7aYB3rNsNyONxBPlxGeV151vR+ErPt0re5DE631LxyCLzLXVTFM+30M7yfEt9HkCNa+xzoQ1i2VrZok0831L0dX2hOF/IP3zNbRX/ZXVCWCEfpesLjcfT9YWyUnjK+EIfO3AMLtr3or7QfBjPP9mE2U5f6LNNHFPpC32OeFfWF5oDvPt74t3FQBfrdmxcmn0h5BXP61X8RZ0MUyvVzDesx+NVSd8k2heajBNzaryq6OuN+kLq5k7VD+gLIU+VXxTyhS6mPLSN7O/guNagvJAvdHGLNoV8IayL/08XZVdAe7Hs9w8cqzProHxcfGPoCsi7mvJi9RNhIH/zbn+4gtpg5X/abIOPNZ6/TMOcloXXvlTs09oxA/BaXgH5/Yina+6yMTwoL/7BuCnLS8insvJXivI4prBveCXksT+n5BH9C5NHxS+jsR38Qhpi+KX2C8Tyi/Ue+TVEsJT/izwM8ctobAe/kIYYfmH5ovwyHih+rSNYreY4S6m8we7LtE0weL1UfsemLVO38oRs/AoBG21jjWBgO+aKdgxQHtb1cH8158nfkxXnYV/zOqCFZQHh9lL5PcA/O5x40+qGbZYvFePAuMXF1B4cx2+IgLUygDv0KUCFG+niPTK8N0f5G8oOGG8q2oHpyg5gvIrtgOonLB/DK9VPap8Z742LjTldR3kxMSeUeSWfKv6UZ7NZH3A+w3MdNU8IyV7oxgklew3RPqX/bDdQ/9luoIyy3cC+ZbtRdif8Sc2+aOdOeJbv3kzLd94O9+Vg207NsW3TC8I8HcajfUFHs0yvt1e0Bb3KFmD/sC0I2WD/FLWbrLfYNw2C1RCwkKfsExiP+kR5hMd78y6I9Al4d3lsDLxBeSr25Pl+Y5MOFRMYgnIrSPbQpqm5Isueld8A8nwJzfFS2A2+vV7t0QqNOUrO1O59/mxy6Mb2kvvOo2MpvO+86o3tses8KT657NMmgU/1A8ZSWp3eNFs12XYN+RRj19Rak9pD2KA8tBFsB0KfH78sgA/HVfTFbyTdb4h2xPosDYBrsW2l46z/qOOs/yjv7DcgD9lvUJ+MQxvEnzi38reCDXsB8UbJcsiPVXtY1ae31em0zRGw1gZw3yrKbw7gVp+nZ1qyLF8nlS4ab9ox30C/gHVR9ZM6pxLileondQvMZsqL1V0+IYbjO+s1yjaeRH1BzriN7VAxXvYHeMxfQWP3UyVW8HLQ3Xd2YwUTcDOd3VjB+LzJjBW8s02xAt4j1o0VjD15sYIPPAViBZ8B2/ahRLGCx7qxgtG8BsFqCFjtiBV8okNiBT+IjBX8baJYwY9Anj/fjRWEnm6sgPB1YwVTEyv4QZtiBXYm4KkWK/gvsGHTDx4PsxsryNfJbqygmO6miBWwfKaKFfwtjd0NKBeKB/B5/bWCbqXzeV+NztvLZXB7qXz94LF6BxFvlP6o/X+x+sNnnpX+hGA1ArjVjUi3BnAjXXwDO+uyOkPfxnFU6i7qJ+tuyGb6J4ZXqp/UDbh80y7qZ4PycBziW6JwHGKdR9nGcZflsyHaofY2tbpdku/viN1nWyMasbw666X0/zrKi/Xr2W6oW9uUrLPdsP5EWUV54liBlT+62RcVb1yVsQL+QgDeW6Hkm+dWVv5csG0Lc2zb9IIwT2jCaRUrsH5sh0+N/cO2IGSD/VPUbrLehm7WVjE2dYMb61lfFvYheM68CPqAYwVoj9jPUDdNFr3LBGMFa5t0qLnOEJQ7n2RPxfWxLsuelV8P8ryk+Tul3dhIeWg3+GZONeYoOauL+jiGcj2zAxVvSoyOFfAt9lVvclb6p+Y7KW6q9kl9MTjv5mjFU3WTeShW0E67FloPacVXnrtjG1mfQ2sYaCPYftwQwKfmd2gjQjayIeC2ujnb7muLiQegjrP+o7yz34A8ZL/hNqBF+Tw4ZmP5m8CGjRBvlCyH/Fh1o3/oizihr/0qWKE4hfpKzpYAbvWVHKYly/J1Uumi8aYd8w30C1gXVT+pL2iEeKX6qU7lkTdFdfc2ysPxnfUaZftWaPNIzriN7VDxSvYHsC76Aype145bnPPGbnW3I8Jl3/dFoLtvJN4o+6xuQGb7geXVl/dC8/UQrND6WEh+FW6kC+sybqbT6indNd60Q3dTzg8Ur1Q/1bOJes06GHujNOsn6lHejdIo80o+W+17CY27uK7808HxcEP7LvzD/AzFWZXsqRvUlf6HYmtsN1BG2W5g37Ld4JvCWZ44VmDl30OxgpJf8pGxAv56HcYzlHzz3MrKfxRs2/tybNv0gjD/ODJWYP3YDp8a+4dtQcgG+6eo3WS9xb6J2Qumvi7DetaX6Zgl7nnB8n8ZiBWgPeK4Jtqj0A33vHdKfWXD8/3bFCtAuzEE5T6es36Gsod1Wfas/HdBnj9F/kYKu8FxSxUzCo05Ss7qoj6OoVzP7EDFuXR0rIC/+lQyNhH86pOa71S0m6OxAjXHUf2AsYJWXzoLxQraaddC6yGt+Mpzd2wj6zPaCLYDaCPYfoT2MahYGNqIkI1sCLjKZ8E1T/uKj9Lx0LoY67/6AreaW7PfoL4orOZcvVT+38GG/R/xRslyyI9tNV/n2Kear4dgheIU6suxdwRwI11Yl3Hn6aTSReNNO+Yb6BewLoZiNP6J4ZXqpzqVR94U1d3bKQ/Hd9ZrlG2Mgf1fzriN7cBxm3U3L374cRq7ke5GNj4vxdegeW59J9DCa6E8DmD5HZ4xVm/vZ4yHaV8mzrI4mVBfQsavG7MNQ5m4OwJWaE/DPaL83QHcSBfWZdxMp9VTumu8aYfuor6x7qp+wvIxvFL9VKfyyBt1vynH71E/76S8mC9To8wr+Wx1ViC0rwBj9Px1eGULQ7LXasxi2VNjltJ/thuo/2w3UEbZbmDfst3gL46zPHGswMof2uwL8z9RRgrIuowV3EM03gU0KPnmuZWVPx1s2xE5tm16QZhHNeG0ihVYP7bDp8b+YVsQssH+KWo3WW+xbzimo+IOyFOOFRiP+kR5hNdL5U+GPuBYQQPq30W0oz1iH0TFjtke+QdjBc9q0jGQTbQbQ1DuTJI9tGk9oi7LnpVfDfK8uPk7pd24jfLQbrBvrcYcJWdqrQjHUK5ndsDsCspiO2IFBr8/m9jmMrECpX84PnCsoKTdHI0V3CvwqX7AWAHyFPEbrFCsoJ12DfkUY9ewPM/dsY2szw3IYzuANoLtx60BfDiuoi/+LNJ9ZSNjfRacn28efPK30nHWf9Rx1n+Ud/YbkIfsN9wDtCifB8dsLH8d2LAtxBslyyE/dliUvxfKbKH2oKwPR8C6I4B7RJQfDuBGurAu487TSaWLxpt2zDfQL2BdVP2E5WN4pfqpTuWRN0V19x7Kw/Gd9Rpl+25o85accRvbgeM26+4WQSv6A0+1WME20N1HiTfKPodiBUXn62jD7omAFZqvheRX4Ua6sC7jZjqtXifFClQ/hWys4pXqp3o2Ua9ZBxuQ1+5YwaNtihWcMTge7tMtVhAz5qOsojxxrMDKv51iBSgjVWMF9xKNGM+Imddb+cfAtr0rx7bFxgqs/O91QKwA+4dtQcgG+6eo3WS9xb6ZqljBByNjBRzXTB0r+KfIWMFfJIoVfB3k+cOTECtAu8GxAjXmKDlTsQIcQ7me2YGKc+noWIHB788mtrlMrEDpXyhWUNJujsYKhgU+1Q8YK1BzEYTVibGCVnzlubuKaRadb7D9KBMr+Kc2xQqOH3zyd9VYAco7+w3IQ/Yb7gValM+DYzaW/w7YsF8Qb4azsSfGjx0R5YehTMx8PQQrFCvYKsqPBHAPQx7WZdx5OjnZsQL0C1gXhyGvR5SP4dUwlGH/fyvkjVBeA/JCunsv5eH4znqNso0xsF+0KVbA/sBaATf0nQi1xyo0P2m1d5TnJ8oXUnuNGjl48s5WXt78y3uN7IMRrXxqw11R3me3ex9N7Pkk5RvxnhfkMZ5Hwn5DmJ72/QabDc3Gywbbe8SHtKp5Mste3jdKeD/Z6DkE6OO9lmmYSAPKTVV5VvuNysoz6sY11FYrv/vkyvOsqZZnllmUZ44JKXmuZRNtWJV4zszBJ393kvwfsh3J//wOl381lwjJf6sYCcs/+m9TIf+PH/Dk7xj5vyeAU8m/tS1P/jGeiOWfGZB/xd+Q/A+L8sjzkPwPUx7Wa+TgQfnHfmf5t/JnR8q/4W6H/A9DAZb/EcjrEeWLznV4TQD995D8DxOeVPL/zQLyH/K9lfxbW/Pk3+BxvHxVQP6VDobOMRZd68I23Et5WK+RgyfvngGWfyt/daT8G+52yH/K+euIKD8MZdifR90IyT+vc6SS/0+S/OMZd8OvzqOF7ljkuJE6/2ftUGc21XmAXir/3Llj9YbnjoepfKTQHYkp5rwhWCH9bHU3BuNWd2MwLZmg0+q18fzX9Hafa1W8Uv1Up/LIG6VboTPueefFUDZDd1co+VRn3GN1F8+433TAeLibWsBlfra6w5XvoFF3uCr9Z7uR4qwa2w2+A4nlideirfxLmn1h6xsoIwVkXa5F8101eA5fyTev3Vn5t4NteyTHtk0vCPMVkeNsortqett9V00ru8l6q86m1eh/hKXWb1jP+jI91+V7Waz8m4Rfp+wR38dR9s4NPJeKa9EfbdKhzugOQbl3kuyVvYvxEyDPv9v8ndJu8H1Y6q6D0Jij5Kwu6uMYyvXMDlQ8Ax69Fm3w+7OJbS6zFh17P11Fuzm6Fq3ihKofcC1anaFFWKG16HbatdA9Pq34ymvD2EbW5wbksR1AG8H2Y20AH46r6It/lHS/1f057LOobzw9cc8ezTdQv1j/1d2ASsfZbwjdZ7IFaFE+D47ZWP5vwYZ9i3ijZDnkx7Y6Z873B6lz5iFYofP1obOiCrc6t8O0ZFm+TipdNN60Y76BfgHrYqs12RheqX6qU3nkTVHd5fVtHN9Dd+Vh/P1bOeM2tkPds8H+ANZFfyDmzrvYu6v4TgXUa76fRq0xoJ3Ju5/ih6C7vyHepL6fgudMRe+nCN3F18puMO7u/RTjy6t+irmfAvWT751B/eQYg7o7Rd2dhHM6ls9W3xQLjbt4t8zhFCtIfQ9k6L5a3iuaYlwP3cXCdoP9Q5YnjhVY+R0PefKv+Z8oI1VjBTyO45kbJd88t7Lyg00afR/POkTDnF4Q5pwmnFaxgkTjeG+7x/FWdpP1Fvsm5ltFyFOOFRiP+jIdp+D7l638PtAHHCso6y+o+B3bI/9grOD0Jh0qnjsE5Q4i2Ssbp1oE8jy3+Tul3Qj51rxvVY05Ss7U3kAcQ7me2QGzKyiL7YgVGPz+bGKby8QKYufuFe3maKxA+eGqHzBWgDxV9/eEYgXttGuhGGgrvvLcHdtYJh6g7MfGAD4cV9EXP510X9nIWJ8F5xuDFCtQ3zQpek6W/QY1n+NxI29PU9452fPBhl1NvEl9pxbvwy96p1Yoxt7qjG7onqHunVq6n2Lu1IrVXY4x4PjOeo2yjfvLr84Zt7Edai2E/QEe8w+isRtjBauy8XlF4wFK59lPU76v+u4A+77rQHdvJ96kjvPFzNdDsELztVZxPsbdjfONL6/6KSbOh9+94FhBrH6yzqNs47jL8pkqVvDd/cfDVTYhJHut9tOw7MWeIWG7UTQeoGSd7Yb1J8oqyhPHCqz88ylWUPIeKRkruItoxHiGku+8M8GvB9v2ghzbVvSc8YsjYwWJ9m8XPgsassH+KWo3WW/VGF+j/xGWOgPGetaX6Zhl3nmBVwViBWiPOK6J9ohjIOpud7ZH/sFYwWMUK0C7MQTl3kiyp+L6WJdlz8r/JcjzW8jfSGE3eI+TihmFxhwlZ2qdF8dQrmd2oOJcOjpWYPD7s4ltLhMrUPqn5jsV7eZorCD2/j2MFai5CMIKxQraaddC6yGt+Mpzd3Xni7IRoTUMth+hu/pxXEVf/DHSfWUjY30W3K/w1abPonSc9b9oPEDNrdlvUPfJqruJeqn8x8GGfYV4o2Q55Me2mq+H7veMuVOryrmn0H0hre7UUjrZxvsmprf7zt1Wd2qx/x+6UytWd/nOOxUPULqLMbCv5Izb2A4Vr2R/gMf8Nz5FYwX/Arr7eDdWMAE309mNFYzPm8xYweNtihW8qRsrKBwrmDbvyb+dHCvYs0mj7+Pp8zTMorGCGU043VjB1MUKdoE+mMpYwQlNOlrFCvYm2SsbKzgZ5Hm/5u9urEA+3VgB4evGCqYmVnAC6X6qWMErn6KxgjPBhl1CvOnGCvJ1shsrKKa7KWIFl+SM29iOMrGCvWnsDsUKkLbQPKLqGQTck5F3BuEa0N2biTepzyCE9j+2+wxCaO9V9wxC+G6/0BmEUKwAx7kUZxBYPlWsQJ0pHMgm6gPGCq6iWEHqMwihe0dCZxDYboTiD5N9BuEeihWU9OnbegbhFWDbRnJsW9EzCPdFxgq6ZxAm8jTVGYSHI2MFHOdQsfMqZxD+mGIFeWcQHiXZK3sG4YMgz68hfyOF3eieQeieQXgCePPv0/UMAtoItgNoI1KcQfhj0n1lI2N9FjyDsIJiBbGxwtB63WScQfgLsGGfJ950zyDk62T3DEIx3U1xBuHzOeM2tqPMGYRHA7GCqvGAsvsK1PlM9n2/Crr745y1tyxLs68gZr4eglVlXwHj7u4rGF9e9VPMvgK1Vt+ufQU/blOsYO827ysI3UkS2ldQNR7Qzn0F//sU2Fcw59An//o+/r9E+wqyJszuvoKp21cwE/qAYwVoj9q9r+CoJh2t9hXsfOj4dpfdV3AMyPNuzd8p7UZ3X0F3X8ETwJt/n677CmLXMFLsKziKdF/ZyFifBfcVzAnsK6gaD2jnvoKTwIYtId509xXk62R3X0Ex3U2xr2BJzriN7Sizr4D9gdh5TI3oxfKhbw4omxO6M1H5QqF9DowHbQK27crmX177uSzSp27nWnzKbwe0mg/yPFmt1yh5N5yt5rO/2u/J37OBJit3FtFayybSWhNtq+fUV7B6of5q+N2AfCx/W7P/zT9Bfhbo12UDUCcDGAi7pMwsw7bao/xJ9J0UPv/0i7zeCFo+dtJfL3nrrxfOqlF9o4XfsVxOF+XPEuWNV31E+2AW9SxRumu4LY/bjnmof0aD19lTlo2nb3pJ+mL4h/DrovylUK5IX+yUjZcFlHfT1wbkXUx5sXfdsg9YdJ9Z6NuBVv4e8OUeoTEt9T4z/jZN0X1mjQDuVnFrxt3dZza+vOqnmH1mF0Neg/JwbGM/T42JrfaZsXw2RDtiv4vTALhf2G88XOVrhWSv1T4zlr3YfWZsN2LvrAzNHVPtM3sTjfeduM/sg2Db3ppj24ruM3tHpJ/b3Wc2kaep9pn9YSB2jPaoyF236k7JVvvMvkSx47x9Zh8i2Su7z+zLIM+PUew4hd3o7jPr7jN7Anjz79N1nxnaiCJ33a4P4MvbZ/Yl0n1lI2N9Ftxn9imKD6B+sf7H3nUburch1T6zb4IN+xnxprvPLF8nu/vMiuluaI9L7D6zn+WM29iOMvvMPkRjdwPKdXKs4H9Bd2cdNh5mN1Ywkc5urGB83mTGClg+G6IdZWIFj3RjBYVjBfs0+6KTYwXHNGn0fbx/jm0rGis4sAmnGyuYuljBkdAHUxkruKhJR6tYwUKSvbKxgpUgzyc0f3djBfLpxgoIXzdWMDWxgotI91PFCh54isYKrgQbdiPxphsryNfJbqygmO6miBXcmDNuYzvKxAoWlpzH1LKJdihmn9kmUR75wfMT5CP7BFjv4hw8aBOwbVc2//ZS+dsifWrD3Q55Rx6xvLf6dnLRfX3Gk3o2UU74jBfy2HC2ms9uoLFhCMqZ/2p56wQMy7sO8tZQ3npBs7Uf97xZ+5dDGYPbS+UfhLHhdaQj6tvz6+BdjMzjPtTl1B48F7opAtZQAHdIXhRudR8G05IJOq2e0hXjTTt0BfeOsq6ofgqd0QvtmUVeqT3BvCdzNeQNUV4D8nif5xrIu47yULbXQ5tZPoeyie1YDu94bFguaPVwf7vLeLjXCbhD8I75qcYG1GOWvXWifUr/2W6g/rPdCH0THvuW7Yb1J8oqyhPHoqz871IsCmWkgKzLWBTHODYCDUq+ee5u5T8Mtu09ObZtekGY74scN60f2zFnw/5hWxCywf4pajdZb7Fv1hGsdQIW8pR9KuNRnyiP8Hqp/GOBWBTao41EewPy+L74NQIv26MsGx+L+ibFotBuDEG5j5DsoU3rEXVZ9qz8t0GeP06xqBR2g+epaDf4fIMac5ScqbkAjqFcz+yA2RWUxXbEogx+fzaxzWViUSG/3z8ciyppN0djUcrvVf2AsSjkKeLH9Ur/TLZdQz7F2LXY2BDrM9oItgMNyGP7sSaAL+/8yTdJ95WNjPVZ1gHcXzR9FqXjrP+o46z/KO/sNyAP2W/AuJjyeXDMxvLfBxv2v8Sb1PdSXkftUWuAIVjrA7hbnWti3OqeC6Yly/J1Uumi8aYd8w30C1gXQ3Nt/8TwSvWTOgPG8aZY3Q19l531WsVelHyG/Hz/sO5eJ2hFf8Bk4zwod1Q2Pm8J5B2UjadnuaAHy59A5Vc0/+/LKW/weql8z+FP/kV/azaV8b8PzsGH9OE79hGw/oocWGhvTgBYebT3A+3mrxvMiwV9Bwv6rPxKUR5jRUaP4s3KTOPOi9dcQ+2x8nXRHmUbTKYq2oZZyjYg39g2hHjkH+bpKlEeecWxCLwfbQXlHQV5F1Me6s4SouE8QQPKFus16pXVfeKsaf3J39b/F0K5TtTrAyP1+swcfEhfSK+xfhG99r+fnUP7vIJ6faagr5P0en6kXptMdfW6tV5fKGiI1Wur6/nwvfp4uFdCnpJZ7mMrf1pAZq8WtCIPmb+rRfmroQzL7JWQx/MDrMfrUuhvXUY0DGUT+YDlWXet/NnAh/MDsm50VZT1ASXrQ1CAZb0BeTHx3zWifAPKGE+UL3olwbpSwMK+5hia8agv033A639W/iJh+40+1NMhov2ygrTH6hvq1HtnP/nbZBBtw4WE87IATq7r0+XN//tyyhu8Xip/peAX2zrUA6RrGcG08s8K2IPLs4ntWgLvWAYV7y8X7VI8vZLysI9NFpR+Wrl2jEXYftbPUFv9w7xRthVl1/q/nk20h6soD3XjcsKjxrxY+UcZeu3s8XAvhzyDewzUtfsXWGZvCsiX4iGO8UV5aPTMziby5mrKw3q8b0rxnsc85AOWvyIbzwcrf2vkeGN0VZTnRUqe0YazPA9BnrL53BcNUX4IyhhPVFyEZVbZGexrHm+MR32Z7gODx77PSGC8QV+bx8pVBWk/RtA+kE3UGdSpjMYb1HEeb1YFcHJdtJF9OeUNXi+Vf1FgvFkJtLOv6H/vTzCt/EsC9kCNoxfAO5ZBxfvLRLsUTy+nPKTdZEHpp5WrqJ9nKf3E9rN+htrqn6JjsfV/PZtoD/kcEOoG+99qThYr/yhDP56l4eaNN5c0f7N8vTkgX0pvMM7BPFTyiHLC4w3KV8jXWUJ5yFOOTahxF+niuIqVf3fkeJNInneeav/JeKL8J7aHSmaRpzzeGI/6Mm1nDB771u8PjDcYJ7icaF9RkPYy+vb5pr6ZDGJ8iMebFQGcXBftRd54Y/A4/vSXgfFmOdDO8T413lj5vy4YowuNN61idEaP4inHNJB2kwWln1auon7uMtWxNh5v0B5yHA51g/caq7h0rPyjDP05jTccp0NYKBcheUS92bX5m+XxSwF5DOmZf5jnSn5RroweJY8850HaQ/KYKPZ7mZJHbD/LY6it/imqq9afak4dkkcen1V8F20IyyPKEcZ33zNrfLmDAUat+df2zsyF9wV4Pq1G8IxmfIfw+4mWgvhG9yPNJXzcPuu7mS7t3Py9edP1N16/acvSDY21ixs3b9x847ppCDqbuGKFXEGo+K6WjW895vXQOy53Af2/VNTLBOwegHcI5ClOGEzTSmzTITn1kBeZeDdNlJ9LsOaKekZ7T6A+wsB6LDE1eo9Wc3+Bu5fK/xdYzd2X5ePdP5vIh/3p/2cJfG3Uup22D62bQ1CtDJbFZw5QluWUUz26TNTjxzjWSzT/tilFXvp+0/xtPT8I9S3+Y3kHQp7FOZ84z3XE+HIHEQ3qL9KO73j8SmEpeH3SP1dRvUOg3vkRNBwiaK6L+lZuQNQry5t6gGbDg/Iy1Pzr+2rgiLE6Ps2DPGWJeP3Uyt97xFi9evO38RI11mhUfOb5ZVE+LxV42s1n9mPmJcSDsIagvE9HECzms/WT8fkwyDuC6h0JeVgOR7kj4P2RAreCbzBayeDgEbpteTJouHqp/FqQwYNJBtVoyqNvloVlnuWyL6f8wUSflT+0SZOax+8v2ox08TqllT8CYO6bAzPLwrYy1C6Uqf1z2rVAtEvtAbH6amxpUN6BUM9sOI4tvQTjhOb7GdnE/ijgJcgzTyG6rZzhPagc3ug5iMHvJ1oK4hv1hg4ifNy+ct4Qcp+5glDxXS0b33rMazUHuYT+LzMHUVZgUMA0i6L8eq7HWsjvponyBxEspUFsnVV9hIH1BgmGquf/31XUidGAkv55T6wGGPxUGtCq301Wre1zBS11kcdyreYdcwUeBetAgnVgJM1ea5uHUUxrL9m04ZZ1TbXN6Gk16Tgoh4xpon4WgIV1aoJ8Flv/LM3BnTcIG7xeKn+JGKxC9f0TI/bYRe0w/AY/ldjHihBP4rBuaJCvZRP7cJJE1T+X5JChRpSsBSz7X/mSO1O9wWw8je0S4zUBn2tnUf+JO/8ott/Kz+a5npVfH/A51dxARVes/FGiPM5HjJ7ZRAPWnS3q8TwT9ynPIxqOzibyAcvzXlkrvwH4EFpLNrrasVf2aCjAawO4RtIjynNfHCvK4zqR8aRO5blf8H+EhX3NemA86st0Hxi8Xip/R0APcJ5+NNE+ryDtSod5Xss6NUhzUMTJQ+lhAZxKZg1Pnt3ImyPfF5iDqtgP0sVzUCv/QMAehOIU/mEZVPbjCNEuxdMjKQ9jEhgPMtgMsx17ZbH9rJ+htvqnrK1UZzPmUR7qBsv/PIEnVv5Rhji2yN8Q9n83CrhW3u46MxnnMnyO2cq/FuRxF7IJOKu5i9rB9875x9y7e4j2wSzqiXbvDH4/0VIQ36h7F7qP7wnCmn+LzevxRDpzBaHiu1o2vvWY18qLO4/+LzOvD33VFWGa1cA23ZtTjyWX300T5e8hWPeIekZ7T6A+wsB6LDGsRWjV7xK4WYt+H7SI1xbVF2wzQYv9f4jAZ1rHXxn2j2ndMLVpMIt6rojVuuHm736ipazWDRM+bl85reNvQA83/7+coFoZLIvP5UBZllNO9d7Foh4/xrFeovnjEJP/IPlDKLG7ET3q/lFlv+qivpVTeHaviGd3gUfdmchrpZtFW/leTP8MUR7eP3Ep5d0u2mV5WwIw7wjAvFPk+b674Mjx5fjOVvXXPz3iHfP0HkGr9d0w1Oe59jDh4XeMB+tbuQFRr2p7hgXNyscYav59Yt8p+UojkKdGA95ba+X/e+lYvS+Svo1A/eFsfB7SzLpoeVkWx+fdBJ5285l1amtCPAhrCMr7dB/BYj7z/tZtkHcf1bsf8rAcegT3wfv7BW4F32C0ksHvHqHblieDhquXyn8dZPDfSsrgVsrbCnk8HhodyAcsz3vFjc6+nPJ57fpJINZwj6ivaD+QaNkaoN0/LItY38q1U+YRZyv5+W+Sn22Qp+SHz1dZ+Y+D/PwPyQ96aO1of0iv0ZPjWYPSO2U/uB7q6DMiaLhP0FwX9a3cgKhXVTYUza1kY4cjx+qg7cqTDT43a+X/AGRjxybM2dlE+2k0Kj6zD1iUz7sLPO3mM/t3z0+IB2ENQXmfHiRYzGfrJ+PzA5D3INV7AeRhORzfHoT3LxC4FfzY8W2fI3Xb8mTQcPVS+ZeBDO5PMoj1QzL4fMpDnqLt5f4J9UGN6O7LKf98apeVn9tsi4oNK319PsBkW27lDwWYHBs2vNguNVsOyeIDol2Kpw9mrXEjn5fm4O7LdPvzZGVBgKdWf3pOe5inVv7YAE8Vj0I8VTr2oGjXbNHmFxAsFWlDPsfwFNt/L7Xfyp8seKr8lnuJdvQd2IdUfhiW5/sOlI4p34R17IwA7feI+iq20KA8jC2MUB7e5ThMeXgn5jbKw9gCxznwGzk8/uE3cu6nPPyOC8q+xRZ6qa1Lm+8rxuDlnr57iDb+roD6m2Vx4yl/LwHxtCNuovDcmxAPwrKIvJqz8daPYcLD7xgP1h8O4NlcEc9mgYdhmU32zxCU4e/GWvlng14vIZs8kk2kD+9k5TnBMOBjfUZY1memH2j72rFGZfD7iZaC+Gohm4vt4y1I2wQtdZE3DL/z5GN/gacoXTOb+P3TjOKfvW7N5vVLN6zP6Oml/8/PIXEfKrc0h7SagFujxO/3oXc9oizCnizVm0o8B1TEc4DA0+5Q5wGEJ2+6cztNd0Ygr0fUXd78yyHlYZju3BmY7gxn4/Hh/4ZPfR6M6ctb7r81jz4wvbuQ6b2V2oztVDSPAA7G65/VOTTcT65KSVMsXRUOhaJLx58jQ9eDP+mnrulXn+2qi/p5n4DKGyaHm7/ZpXtxwWEytFCPNI1QHg5NzAeFR5l3xYcQnsGKeAYFntCwX9aWKJp5KuGfoeZf38evIVuyFfKUS8Nbxaz8TWBLXh+wJUgj/6/sct44mWdLhnPoe0vAlgxTm7GdimacAjJe/6zOoeGdZEvQtalqS3hpYhjyDs7G0z8MsGLGQqxv5do9Fh5MeNq97KfC/Wxf1HLUtgAetaTWSh8/cKTGqfQRZZOXWk4AffwQ6SPK83A2Pm8Y8kJLdXk6kWVxy10jAk+eDfLPkKCZ9evDgTGolesfmqrl0debTdQp//ugbKzNebAy8c7K4/jH4YttVHZroCzTjbJtW4bMFmFItYAter5atrDH8h7IoYmfHvof6fJ9upy24mcClppSPkB5GK5/MAffNFHWfrOuPd6UOy+vXzhyPDzUX+5/Du9j+J7r+4fHFSv/jyD3i1dq/Cwv/rGLQVQI+Igc2vyjwuqs31ifl7QwRMiyty2njf9JYycvMw1mUc8ikwHud4T9gpKwY8YjhD8g8Bld/SKvN4KWm37ZWNjou+PTNapvtPA7DpG8UJRXW9eNVy+C+gV49Uy1Xd9wWx7qwQsoD7fcGw1e/k9ZNp6+F5akL4Z/CL8u8q6C30X6QsG6LyGsrSVh7ZSNl1FlW9Gv4a2SOOfDLYg7z3/yt/LBDiNai/pgWB/LKduslmrZ1tebtJp8oc0sIF/H8dhoMBD2gyVhx9ohgz+Q5fdrv8iLsUPP+c2imz+68kv71bKJ9rZHvItZvjxMlK+o50crO8S2Bu3Qg5SHdshoUHao5JhydAz/EH5d5LEdiu0LBeu+hLC2loRldkhtEVB2qEF5aisH2qFegrHX/LEyu84fDwv9KbZ3aG94O/Z9gbz7BUyPewHZnpI+0IPKB8qIBtS/yygPdQ15yY/y541mryPnrhyDy+WYHrU9YVqWLwf2P77rFXT438OQj+UPhX6fO3883GH47R/05XlZXa1ZeJiHz88vd3egHMocyzaOnZsoD3V3M+W1kjmeax9LstiOT5H7ZTjbHtdchjtv3aZLntO4Zd3aS9Zde8u6TShhrPXIRft/uPmbJTOjcv7ppXd30v/sTfAGwfsFnFY4VaRlHvzm3o+JtGD9rR2A58iKeI4UeNoZJUScalPJUPOv15ZF88fqsLarlRn+eIqVv/bCsXpnk3eMmsZ8Rmt8VDaelqIHorD+3V08yfEcXRHP0QKPmmlV1QNFs4qSMt+Gs4ntGQ7gwfrDk4ynlV6vTqTXu4Nerwno9d0RbQxtNAqt3m9tAesKgoX1Q3b97gg8Ibt+dySe4Yp4hqewPQZLRTGwD64K0LWNYN3XAhZ/aA7r80b2zQGaN7fAExo/NwfwbKuIZ1sknslqz0hFPCOReI6qiOcogUfNnquOH4rmVvb2QbK3OEtX9pZ3JYyu1IC9fRHZWzUberry+f6EeBDWEOHJ689XUX+qAxKh/rTyP75grN5rI/pT8ea+QHtw10deX6O95ahl6OCuKq9W1dSY0sZocfR1/bwyVTL6NLpJOHQIzD/Wdh8FsMt9mlGARes2HnPsSWe7EMCWmzflRY7nIFKgn8tn9D/X87T1UpnNAod/WH7up3Lc7/ae4cfQ1Kpsq3xl6x7IaWeWxdk6rL85B1berg7rH46+vqep57G7OtTBpJA/wHrH5XpEG3bMqXdtpunDNi8NtNnKvz/Q5m0t2sz+u/Id2TZxuR7RhhmZ3oG0jfBhHl4yWEaesP5kjZ3HEJ68Me3DNKbhaiKPaf732uZvXlH8KoxpH6UxbQTqT1b7ESf+j+1aC2Xy5ja9AqZ/eBeLlf8sRZRxPC8wvsiIssHiPmUd/Rz1qWp7qE+t/GehT/8+ok9D+oG847FL2YLhQHk1V1QxppDfWG3lu/btGBlF+P1ES0F5GPU31MFgbF9Zf8PgfgsahPS38je4Xsjf4LJ5usc+wH30vpW/oWjKK1vF37g/p51ZFjc+YH0rZ/JZ8qLFQaNlGOgwWlDm804fTMsm6qIqr3wMhD9C5a1+b6Z5MwT5WP5fwZe4sLniqvri2Bz6siyuL7D+ZI1VxxKedsS9/TPU/KtiohfAb8wzPHk2uS7qDwfw3F8Rz/0CT6ysr2n+buUT/XfB8XO4+ZvHzzth/PwfGj+HoX4obhNae0EY3NehcVHFkO/OgdVKT5U/cAbBGhF0jQTowvojObB6Be3+yTsBt2czmFTxBNwKtSvG9K+iz7ciRscRvtoRYXT1i7yYHW8/7D/tMz96/+s+X6P6Rgu/i4kdnSHKV9x5uEzteMMLHfyDMnIf5eGON6NB7Xgr6a8ti+Efwq+L8mugXJG+ULCWloRlu9TUHHuqbFJe7MXsE/sO+zd1P/ZU5zC8C61JjlC9EUG7f9jm+Gcw089v6TF4xv8dBK68Xb5zod3LVo6nNW+NsDenPVuJToaRxxvGMU3UXZeNp21bBG0qHoQw8tYtPQy1hjhMbVEwVQxcyS3HkhDPaRXxnCbwhMYk/mt4+F1oPfI0wpPnN5141FgdtCd56yN2eovXu64Hv+mUJkx1qhpp5D5QPgvbQKufdwqX7YmVPwP0ik/hqvjw5QBzOIeGXoHXP3lxprPJnynpcwTjTNym3myibfXPRZluU168eJjK3yfKDwXKq/UmlCu22aHL5axtFx4zRsMSkuNW7b84B+YFR4/BXF4Q5socmKuPGoN5cUA3TsjG4yt6uwLW5x246jKqijtooy/5Mfj92cQ2l4mnqfiA4ou6sIzXZzEvZp/GCQJPjWC1oivhJT9G4h5UbmkOaTUBt0aJ3+9B71RIDmF7Mf9hUzVNzPHut+UE/3aA0SPesZhjfSun8OxSEc8uAk8I1nIBy8pvEeV3EeUTioaRuC+VGwqQxnBbica+9C5PNOzpIZz+9wjV565hGmcLGJsCbeoR77irNwlcCs+KinhWCDzsJdxPXgLiL2AtH+DrEw0Gwi4ZqX4g1vLn7Q5GutTniWKiHof/1d1vPfXg51xUo/pGC79jlRwR5VeI8hWjT/epqIfhVlGPuykPox5Gg4p6jJSkL4Z/CF9FqTnqUTSCoO5kKgrLoh54XWhIlyfLZrQDTwjWMLxjXhpv+jK9UsQ2yco/DLMn/sKt4ncm3k3LJtqjq5t/ZwtY83NoV7gNvn/qor6Va6NNnF7UJvZnE9tcxhtW+qH4wvd+YV3eAeyfS6Fcnr0cEXieKrBQNgeyifJby/lrePgd8znFiiD3WQpYWxPAUlGyufAb8wwWv+N+wfrbKG+LwKNOO9xBeci3pZSHfFhN7UKdZPtd1A5tEvS1uovrg0dpnHl3cQ03f7Pd/s6CsXp/elR+G2N2UmEb8yJcfzkJEa5WvPtwAd755ypqi5X/BPDuowHe8divIuFqp/gI5am7iGqUl2XhHUQqEsxXpqffWRU/9qXeWaWiisrGVLy3oNfwhT5d4h/D53ceKZ6qT42Yjilbx/YMbR2vQo5AHp80QFvXgHJ59gzbxJFZRd9k2U2F5/yKeM4XeEJ+YoysKzyK5la27F/IlvFqKtb1v69p/ubo9PvBlv0r2TKsjzTy/zHzC8MXe0eqlf9hYHVGtfmaAM3DgCMjGP7hscvK/5TGrhGoX3XsMlihu0sr4o2Oxhv8fqKlrA0eIXzcPgxtxn+gNm+PY42g4rtaNr71mNdD726lckvo/6WiXiZgY8RTnQkZFjDV/qutOfVYevndNFF+hGCNiHpGe0+gPsLI2y/Sk1PP/3+DqBPSgBgJ9k87ZjRt3CO2S6xmGvx+oqWsZqr9Qso7Ys8Q66o9nLiYhHmIJ+SdIqzbE8Hyz6VdWF1YXVhdWFMAK7SnTM3C+Kwk2kE+m1V04RrrhxbIT6uI5zSBZ0DUKzsm1wM0q2gL861oBFKdLW21f+7kBRpn3rkDnqFZ+bfDDO20BeNpVjO0LNOzYewHg8F1ZwANllfAv5jtZ2lz4UZ05ut0gBvjh9heO94DjW1XshDbR+dRH/F+P67Lexyt/EPQRxc2f6t9XDH7iBQ+1sO+TMsQ73G08hc1acJVOkXfcA6+vKjCJTn4LgF8+9IN+Sh3hrui3O2i5A7tDMudigQpexayF6hbLItoe3hlVu3dC+1rtfp9me4Dg9dL5Z8t+jxGzlW/WvlGZL8aL9vRr8gr7le16q3OB4bkQK3Qq0jdbQTrNgFL7WON1WWDx7p1Y6Bf+UtZTCf3q5XfENmveJ7V4Fhe1X5FXnG/Kv9D7Z8MyQGOD8YTFVm/k/KGIY8j18p+oxzE9Dn2T579vlP0OfuObBdixheMwNmmw2YE7pJNG25Z1wzBZfSEQmb+/5EcMnYW9TOqW6N3O1OeMp+hTUKGuy/TISs2n1Z+q2B5yPz6J2ZLNXZ3O4K4Bj/VlupWZo1DRSE1C01lpkBU/bMkh4yaqJ8RrJp45x+1zVnd8hNj3RSr1F4tLG/weN36ZYGRQ42EakZk5ZXnrtb4VPvvozysN5yDB0c0FCMe0az8ayJHtEQzHzmiIY94RFORhdBJXLWeraKldSqPvFcjWt7pIMSjvBh1aw16lTyzUvIS8sxC/FHyhR73/ZSH9UKzYCvXjlkwtodlIdS3/sm73QXLY3+z14p7CzjyhLp0P+FRs55YWcBoB0dC1L7E0AxoBGCpIZ9n5Vb+Q8IGGMytLdoWMwNUp27VCt42ysN6uK/AYGdUrqI8zkodlSmqq2x/UM5GKA/HAo7iqJs0cC/EZO3B4vFb3RyqxrteKv+3EDX6FumI0vFQH6j9R+rmw9nZRHvxYASsOwK41a2ZDwZwI11Yl3EznfhdL8NlecabiroyXekK2mfWlZAt9k8Mr1Q/1ak88qbofrDnU94I5OXtB0OZV/Kp/EVlw5Xu4r7LD5Puon7ybLto1F6NR+wTfx/GiCU5PnHe/tDLc2D+e2DcaTWmxvjZamVD2T72s1VUUtk+tovKXis7wnbR5Bp1EXWD91tZ+V80+VfxFmG534ptHZ4gV74X7wG28jPhNPivFmiY0wvC/HXknCWRrettt61rNSbxPlXsm7z9hghL7UVlPevL9HzJ4PFqW1+zX1WkDe0t21T1/TZlb9lOq7MGnu+HNelQ/toQlJt19Ph2q/ky1mXZs/JHgjzPaf5OaTf4liG0GzwHLfpdX6zP39zjb6/5p+Ke7+g97fy9ypJ76IO3haqYQUW7ObqnXfkqqh9wT7vax46wzFZNtl0LxWJa8ZXPB2EbWZ/RRrAdiPHJFL48n+ww0v1UPtkHySdD/WL9Rx1n/Vc3h6o5APsNDwItyufhW1+s/EKwYecSb5Qsh2Is6pvT6IvznB5l/YURsEKxvheJ8i8M4Ea6sC7jztPJ0O177ZhPoV/AuhiaS/onhleqn+pUHnlTVHd5HjYCeazXKNsPQJvPzRm3sR04brPubhO0oj9gsoHLTRdm43GqpR18x+Ms1rdyCs8uFfHsIvCEYF0oYFl5tbbS5utVjMSDqdxQgDSGW6PE7w+mdz2iLD6qmzbl0J1lcd2kNiswLDPh/rkCygwTXRiG5iW5opsPsT4vhRldNzXVZIbAX8C8vTx0PNxglzzG//Iawcsy7WbmHU1DutSVAjFXqTz27otnfemjJ41eBRJ7hM7Kq1D/ElG+4lUqL1VDGF+Xoo4sF71KpeQVEC+N4R/Cr4vya6Bckb5QsK4oCcuuUsGhkjcSt9vG8NR1I0zZlyybGlpsOL5d0BKyY+oDnYr20GZtbldRe7kpEs/SiniWCjzt3hSeN+Xxz1Dzr9f9+8kd2wJ5aknn2c3fvOnyRLh48kFyxdTm+1qmxx8cI/3D+sqbQrnMcA59D4F88nFa1eZnB2jGEFpGMPzD4d3RbSg09pa0qTK8y9eKteE6n+idWFN1nU+x47S8PRm5glDxXS0b33rM66F3vOHqAvq/zHHaYchTnIj59LAafYtcUoVwewQevpwvNNojDLWoZzBUPf//s0SdlBcVTNbRXNNMnNwW0JToz0Ya/H6ipaxmbiN83D5u+32CFhXM5lmVChKoQJKCdX9CWCOJYPnn0i6sLqwurI6DpTZkbaW8YahnC4tq9sIbmIvOvLB+KPB4fkU85ws8A6Je2bGvHqA55lOMI9nE9owE8GD9EWpP3pHIrx6tceYdFeOZkJU/FGZC3zh6PM1qJpRletaJ/WAwuG47NkgiX3mRQm0exX6zo7yhIzpKFmL76PvUR62O8/HRYiu/E/TRv9NsNXQsNLRJHPGxHsYeW7Xy/yE2Yyj67sjBl7dxa1kOvp8Dvkk4trqTkju0MzHH4JQ9C9kLdQZHLWTxMbjQ0ceiR1rVMbjQkVYr/9vA5pxhUT9En+Jb4mNwd+eQMUfUz6hujd7NyYFlcPw7nL7GHINTJ13ZRPQ1TUT3GNx4fNy+p/gxuAtyyKiJ+hnBqol3/ml1DG6YYIRYrFhV9gD17kKkQxZ2BN6xhVWegIrNh44BKq/njhw86mC3f3hEs/L7QVsn4cC+HNGQRzyibYO8UOTEyoe2SShVCx1DCV1znOoYHHtqSl5Cx+BC/FHyNQJ52ygP64W86qfLsSM+Bhc6doTD0TbCMyLwxMrCCLT1qzlrTAgXZSFvjRZtAMK4vPmX11tOFTbAYN7dom0x9k5FvUNXiavrgkPHMq1cRXkcUPKI7Y+Z5YU+G9NKV0OXxPA2UhwL2I1sJTehbZ64xnc/zfgQz5mEs+hnW84U9Cs8u1TEs4vAE4J1poAV6u82bxUzEvehckMB0hhujRK/34fe9Yiy+Khuuj2H7iyL6yYlzgrPpop4NkXiOa8invMEHt4K8rym2a243LwtZsGs5MmCbTWCl2V6NpV3qgLpUqccYraY/bR+6SdufPydv1ej+kYLv4s5DX+eKF/xVMSwGpr4RKo66aa2mBkNaotZyVMpwzH8Q/h1UX4NlCvSFwrW0pKwbIsZDp2TbTN4i9mt4ELxFrOpsF/nV8RzvsCjXKJazl/Dw+8Yj6K51VaskWPG6qAc5G3Fuqb5m6e+l8N3p+8LhCHy3AYcK4ezsYfl2vDFftnAyr8AZIq3Yg2LNl8ToHkr4GC8/lmdQ8NLaIzaRm0fzOIetRWLp5/DkMehnGGApXgeWtgaDuBZVhHPMoEn5WaYeoDmlHfYq9OmQ82/6pTnRfAb8wwPv2M8WH9bAM/tFfGoO19VWAinTOpEoPGsoj/VG9MvCL+faCmIL/i1I7Xgb21/QNASui2oRnmI5wGBR8G6NSGsmJuKLhKwivIr4VTPSLyMyl2VQ1qPgFujxO8vo3d5Uz2DPVlXZU+W6rdaN//QMRpn3rp53oeYZy8cq/dY4HvmMYfRQjvmsX5oZ/4w5WFkjaNu6krwGuUhfaETJWrFokfgUeZ3GN6x+R2B9+1YHDT4k/2hIx7Ssa7aKxJzCcY0gacoXQnNnJF4BJXLu9OtJuC2MnNH0Ls8M2f/T5boKzwnVsRzYiSeyWrPcEU8wwJPCNaJAlZXvMfBVt2Ud2VslsV1k7oaYipHEAxKtBrlv0ejvPpMYGiUt/IHHjtW7wewU473NCCse7LxecjHe4l+taO04nnk6BHQ4PcTLWVHwNidacXOJvGUAbmCUPFdSFN66B1vUNpM9cqcTVKrc+pKeOXHbcmph7zIxLtpovztBOt2Uc9o7wnURxhYjyWmRu9R2+4SuHnv5a8hHHYAhcMULuRHq/2FXIZpGN1fGAjJ4U0Cql2szXwjAMrWmhz8u4LF6TlW488Efm4fWs++HHrzLgnfoYlXbfhTlj/LeYc8wLp5/2PZjdQW/F/J4l1U/s4Wbef+t/Kzoe3c/7cKGowu/yxtQQOX2ZhDw86CBmE1F2+4eUvOXj/2NdjKcS9xT9wq4OQ9xg0vsSa9zB3WDsZj/ysJ8C3ftfl71HW7cd2mvH2OPCJsysE5LdPPQKZp889UbV29tRy+4NZVbF/Zrat5WtoKT8Wtq3mDtjIWXD+jujXxzj9PBIuaC7dTuX5xe0U8KkjEsPLcYtt+1kvlDwcDtW/OutU0AdM/HOxUW26Kfodrq2hjaDtkCPcwvGODfl9BWkMxZsSvgqPPL0jrFZNM67CgtY3rKtGmc6rWVYpNa1BimSsIFd/VsvGtxzy2kDxVuJD+LzOtib0jU939+EBOPZZsfjdNlH8+wcq7f7onB5/qUazHEqPq+f+fI+qENCBGgv2Tt1KXAtaDApZpJt6ZWEBTdovVTIPfT7SU1czYeyKt7S8UtNRFHocc1N2dLxR4FKz7E8IaSQTLP5d2YXVhdWF1YT3FYalDXnw3L46ffEXFCNRrx1ULCs9pFfGcJvCoKwtqOX8ND79jPIpmddc180198+HBAB6s/yC1Bxd9hpp/nzi4cqzGqb4P5n/zDlEr/1sItz54bH4bkc/WLqa5Hd+MQx+HDyeF7if3jx0GU74EHzbCvsY7wUN98DLqgxHI6xF1877R9gPog1dSH2Af4u6vPL1R+FhG8j4DO0L0WfnXinC4ou++HHzID+Tz7+Tge6OIroQut60od7u1+372VvfoG0+UnG4jWGqXO8pBzDdgsA/yTu78rujzGDlX/Wrl3xPZr4nsyW5Fr7RRkTU1DoXkAPuLLzLGPh8mWMMCVuiTzqpf1RWP3K8fCvSr2iQwDDC5X638Y5H9arxsR7+GDrGqfg0dYlXjN/brcPN3PZs4TvK1MCMC1jC8i+nXYSjDNtrKfyLQr1Y/1g5b+b/pADs8DAVi+hXLF+1XtsPYr3wVEI51w4Rnsmz0P4g+VzvFYw4FD8O7RItUvH74/BwydhX1M6pbo3e75sAyOP4dhlWZ5cPN//syHQJlllv5rwd2BgyL+v4JHSqbqt2+JQ/iBnf7KpNadLfvMPxmsQzhSXwV0IU5ZNRE/Yxg1cQ7zGt13UToKg0cob9HW/BQhHimoCyf8vytvHmged6Fweul8j8JjEKtZmtsrVt9ASr0tekXUR7Wuy8HD46OaPl5dLTyj0eOjoa7HaMj8ohHxxdDXo8oz/x+SJR/MZThqNJDkMcqjTx+EeEZEXiUp8tmE+uq2bfyxkPXCrWalbF8qa+bqa+PjQD9Bjujcu2IlGB7WBZCuuQf5k1IdpA39ay1nKBe8lfhQnbJPyFZwOjC/RQ1Qfnj6JzaF6DWs1V0zsopPLdXxHO7wMOwYvepWPk9moe01D4VtQoc2h8R+vIt0qN4g3dEMO5azl/Dw+/y7lvAvkq5chzyqEOrymXxoJ25n/C8ICGePJvFtqEqHrWyrMavqnjQPg0TnhcnxIO2bivU4zFR3Qb6EkGHTQEehvcFxoLo89YGv59oKYhvdArwMOHj9vEU4KWClrrI4/1xLxV4XirwKFh3JIRlfTs7m9jX8wmP8qUeCuCZH4lnQUU8CwSeAVGvqo4o3hiehxPiQZ1ZQHhemhAPwhoiPI8kxIOwVhOebYIG7w9ctHAMrk8vg7weUZe/fm7lf3X+WL2VTZgmg2grHsk0PvRlXyLawfgub+Iw+/dyqF/AHsl7VwxWK95dSbx7CeTF8M7Kfx149yziHbaLdfsVkPcw5b0S8l5KeY9CHsLAvAzagO9Y5rC+lRsQ9Xi8ehW8L9Bf0V+ON/j92cQ2lxmvXkX4sO3+Mb5Y+15dDt/ol+NfI/CpfsAvxyNPEb/BMh1TdvbllIe28VHKw3HtlZSHNqgB5RBmXpt4ByzSx/KN9D2f8tTOWfXV9AcpT33Ze7ZoM/u31ubpBMc/vGsHZaYnm8gX5gHqP+vqK1vA4s9hYv1XUhteSW14SLShjXod7YdOhl4rPbO2v1rQUhd52G+Yh3heLfAoWK9ICMvk38Ygk93XNrcoPbGTZ+EYLGynku81BM/KPgwXvLyo+VvNq9lPQfvBcvcKkefh79a84mC2aC/aiTK8w/pWTtmgUwmPsnUPB/CcGqDZ/seDsxgD4fiNlX8f+Uglx6T1xn8ck1jvX1sSdqzeG/wBgc/o6hd5vRG09H7qbR957IbHV9SovtHC7zi29TpR/lRR3nj1eqhfgFdrVEzYcKv7U19LeRjXNRrU/amvK0lfDP8Qfl2UPxfKFekLBeuKRLBQ31LAerAkLLvX9TVQn20S0vko4Sl6Fy3Wz7u/2PLVX8PD76YRzciP44jmorthsT6vJTxf4LH2oB8w1Pz7xOVkCzU9OMfDujzHs/IPwvj6lzTHi/VlOU5UtD/nR+I5vSKe0wWedsfuOU70qoR40Kc9nfC8OiEehDVEeF6TEA/CYv/rQUGDl9kvkh68FvKUXl7Z/NtL5Q8DPfjHgB6gjcP6OL49LNrB+L5GPlDJsU3GiXDsDfHuG8S7hyFP8Y5tiJUfAN59i3iHNpR1G/n6KsrDcYnHEuQV+6TK58F3IT+a+Yb1jL8VfaXoOJHB788qycfofPL1hI/llH3BN5TDNxoneqPAp/oB40TIU8RvsDhOhHaWx1S0jezX4XzjtZSHNqgB5VgXVJtCJ6V5b5HFNX7RdMi97vyC5qOIb3E2Pg/l1mIiHsavSP+QD+x3qRgDvgv5Xa8ielKMa2qezH5X0Xky1n815b1K4LH2YBxqqPn3Cbt4nKYHbSbWZZtp5b8L/d533Pj2Kz6r/mS/q2h/zo/Ec3pFPKcLPO32h9jvaoc/hG1rtz80RHhemxAPwmK/K08P9iE9eB3kKT1gv8vK3wd6sH9AD9AfwProdz0q2sH4Dm7iqDiOS7/LYLXi3Vzi3aOQF2NDrPx64N2hBWwI+hLsWyE/XkN5OCYjDMzLoA34jmUO61u5AVHP+Gv99UZ43w6/y+D3ZxPbXMbvivWDrH1vKodv1O96s8Cn+gH9LuQp4jdY7Hcpn0LZxjdQHs6dXk95aIMaUA7x5bWJ/S4l+wyrF94pP4vXDRY19cvr2hnN36znrMufonJqDLI+QN60Y32KY9ElY+6jcq3WgZUfFoqLqxjk9fCb5aJoPPOlCWFZvyoZYz+s6F6F+ZF4FlTEs0DgCa2dxsiWwqN4007/CNvWbv9oiPC8LiEehMV+WF4ceIh8iddDXkwc2MrPAF/iWvIl0FbwuP96gJdlE+3A6hx8zyE/rOQ4K/0w9ifyeHdDxFwuxDsr/6NTxuo9N8A71u1YX+u1lIfjNcLAvAzagO9Y5rC+lRsQ9Xi8KumnRPthBr8/m9jmMuPVmwgftt0/7Ie9uRy+UT/sLQKf6gf0w5TvhbDYD0M7y7ENtI1vpDwc19hHQxvUgHKs16pNIT/s1TmwYv0wK38/2Y2SfpO0Gwar66/F+Wv+SbUu7n8/nBBW118bw8Pvuv5aGjxl/LW3J/LXXgw+x7smwV97Twf4a+9N5K9tAN79EfFOxTYUX9lfQz+K/TXkFY+DReNmKr6yvcTN1Hj1VIqbqbiUso3sk+G4xnGzkL+WIm4WG+NinHl+3TmUb+X/FuJrn6G4GdKF+8FXHj++XNdfG1/3qRRfs35V5xrYXyt63nG+oFnhWVARzwKBp53n9rBtas2pKh7UefbXnm7rnHk+x48i1jlDPoeVnwM+x08D/lrMOmfIX7PyP5/Edc483v0ikb/285PH6v0qwDvWbfR92b501zmffLrrnPn+GtpZjq+hbUy1zvnKFm1if02dd2RYsX6YlZ/T9Kkqns2RdsNghe4XmSHa0w5/zeCn+mqF6rvQVyteLWhR+605vlbljN3DCWGxrUXY7K8VPXM2X9Cs8CyoiGeBwNPu+xzYX2uXX8j+Wjv8Qv8MEZ52nTuI9dcWHD8GF21xrM9h5V8BPsexTZgqRsTxHD7TzvhW5+A7kexuyXOL0u7yGcW88wAnE+/wfK2yacw7K38b8O404h3aWdZt5CvbFxxT2ZdDXvF+n6JzUqyfd7bT8v1T8fxGtL9m8NVZ0jLjlTonofbwVpw/jPprym9W/YD+GvJUnQ1gfw3tLJ8HQNvIe/7R1+DYCdqgBpRDfHltYn9Nyb6KceFZPo5xqXFphmhjgT6aHSuDBr8/m8jvMjKo4itqvPbX4M5t/m5eg3veuk0rNq+58fprl6zbsnHRTWtXNG7ZdH3jxkVr196ybuNGJBoRzYL3mI8Pl7HfLxfvEUarSy+KOO+vagHrCoKF9dkAvroFLP50jhrc+P/p2UQ67eKDaRFwUNHy6LqS6FKLLyEjj8J5I8HC+nkBlzy6VhAsdYCc/5+eTaST+RWCk2dAsY3PJbryDlP59MYWsK4lWOowlsF6UwtYNxEsNQnn/6dnE+lkfoXg+PTmFnRtILryNt/49JYWsJ5NsLD+WwjWW1vAuoZgYX2si/9PzybSyfwKwfHpbQG6/HM50fVWqP82ysP2nE94ik7SsP5kTdLOJzxvS4gHYQ1BPZ/3dqiPtjV0WMoG/3fA+3YETAx+P9FSEN/o4P8Owsft44DJOwUtdZHHi1LvFHjeKfAoWK9MCOvt1J68SdgjNAl7KeTFTMKs/BBMwl5BkzDk0duojcqPeanAV6N29YnyCK+Xyr+mSZP6zMfbRH0FG8fTUKBjRjZRv9qhIwa/P5soP2V05O2Ej9vHOvIOQUtd5HHQQuniOwQeBes1CWHxommejrw7kY5cADry+x2oI3+YQEfQh4rRkZILT9E6wgtPVXVE+bIhHXm7oKUu8nhjvdJFfMdyjbDekBBWrI58OJGOHAs68tE26ojxO1ZHrPynEujIW4CuGB2pEgxDeEYPvkP4qXREXf4R0pE3CFrqIg/nTJiHeEKL4wjrzQlhxerIlxPpyD6gI1/tQB3554I6omhvx9xLxa8Ohd95PFKyWxf1eWH1YYGnlYz84HhNT96HlfiTxKMLzSAjPwrISGjBc7IWVhdWxLNQ4JnshdV2bYRbSHhenxAPwhoiPG9IiAdhxV60lp0wBtenN0KespX8WWgr/3snQb0mTKUHeTFLXFh9qWgH45vRxFFx45FcWDVYrXi3I/Gu7DjzEPBuVoB3rNvo07ONR368nvLeDHkc97W8DNqA71jmsL6VGxD1jL/WX2+B9+1YWDX4/dnENpfxtd5C+LDt/uGF1beVwze6sKrmEm8W+HBhFXmK+A1WaGH1pZSHtvHNlId+8psoD21QA8qxXqs28Vqaoi+0wWaqNpmVXKANbjJTG9J5bMK6qm9uht+Yh3jUYWkF6+GEsGyNobvJbOK7TvCFeJPZ9uILnVnQF+Lx3MofBeP54knwhc7vAF/owkS+0E7Au2VdXyj0PGV8obeWwzfqC71N4HuzwJfnC6k17aeDL9Qj6MNyqHsqnpSJd7UAPsYxTdR9HtGNeWcTjqIxoLMFvW2M6/b8//a+Bcyuozjz3Jk7I4000iDbEByDLSA8jdCCAWODjV+SbNnyi6chZDSWBiMiS0YeYTvhIVm2ZBtsyW/L2PiObAeSXSBh8cKyJMCycSCQQGBDWAJZEkgC8S4xAbIQAqyPdGrmv//83afPax5Sn++b7965XV1VXV1VXV39OKH2NVfyuryGXiUXGxLzVNzAGByPT8cGxjPgt5o20fb6+uF2D72Sa3k9Rs+3twvppf60P5nah3kXeiMN7C+XzZfdT5l3+blvPyWvA96bg4v3U7o2LmPZrVn8kvrhHS/uhrG9gLsA5trsu7oMHOOpmwnOd6F9lQvfEV+SaNsz/HVdaK/6wXXB/LzEryPYR659purSrBCd9V0Qr/gp2qdqU3kKd7sH7i4Bp2il/+O+Z77E3mDvynCkcl6xpruNSJf3Jhd9ic6dghdFZ1lFOssC6SyvSGe5oOM7HBlia4qOks10H0C7tUY6iGst0WnqoBvnBnYLHlKb+RDNb9WhdzVe8KH3Dx8/We/DNL9FO+CxDi/WSwge28H0Pkq5gSYv1nPJ7r+S7NQBNJ/sDP52kN0nPLJj2/YdcEV53Epl6mU1LSpLoA2+A2jqMohD5QCa74KnuXAATY11yjfyATQcY/kAGvqgEYBDnK42+Q6gWd30cNXR2ffJw1Vnj1716pGNG9aPjG3YvOnC0bdsHb18rA2Y1cjBHp49MV4N5Xpa9H8PlV1H5a8ScPiEXDVQ5ZXYiC9JtOUY/rquGlAnunxXDajXMg6Jsi3wHcuQzl5BR+G6o0Zc/PqKeJWnm47vKs+mXrXDkd7B9upBV7TyaMBKhi9aMfgXQ7TyQ4pWcBbIO+33AL5E0Bt20PsJRXo4+lSN9AxX3irQv5HscOYasgpk8EeC7H5OskM/y7aNcmX/oq79Ua+955VuHP96xW++FVuWm5otVdy1EBzp8a6Fkvrh3bWgsogVr76YiPRUZKn6ASM9lKk6ieu7ypOvGkDfeCuVqRmG8kEjAMfyUm0qctXALkHHym6GevyK3NtEm1O7s9fcG9wOgNtFOG6Cspup7BYouw3wP3BKd9vQbtiu0XbZrlGP2a7VFRAme98rZREvv+J1Kfim447vxql0VO3kMXiVwcbZCc9k1ZWxPly7PbTVzOkeD2115R3zkiRuWxsEWlZmspmffeKYV8QHphnKp6+ZpIM87AcAvK5+UrNGn6xUP6mVMl6RQx+zm8rUNTXKx7D/UdfoKP1U/gbHY/M3eVloHudvzcHL8lRjhxqDfRl1Zf/sN9QNGr7sjtJ19hvqqnV1ZTyvBp2a9UXFlRnvVeus3+1E67frOtPXgG87w+Hb+griXJXhSW30SWCjSdLtC6wfK/qCtvIF2D/sC3w+OH2K+k22W98KfGimh+2sX8AjvjbBXwh9wCeF0B/xK5VVRrpozGP2kMp9K8UUKuOfwl1EuqdO52Bd1j2DvxL0+dez73X6Db5iVl1N6xtzfK8wx/qH2ivMfbsfZvMrzKfbr6GcQvwawptvUTvZ2J7VVf3KR7heya7oqVV49BE+H6l2jOStsD9KeQS0L7Z/dfVg2dfs8rihfBiP2Qj/TvBht5BslC774li18wd37fAKmO9UsMJ1u4d2R8Df56GtdtMyL0nitklliyabJuYbGBewLap+UjvtfLJS/TRE8CiborbL112r1w0p28VXHd3iGLexHSq/wfEAj/kX0djd9Gqva+xWOWDEy7HvPWC7HyLZKP+sVkrZfyC8OqHjm6/7cN3poe3TX0VbvX6SeUkEn/gKAqNlZSabJmy3zvmBkpXqJ3VqgG0wdOWZ7TNk5ZnHXdbPvNsqfeMu7vDg3R9qzdCne2qnBdox657aaaHs35db871ygv2GOo3Hdoa6ivrEuQKD/0PKFZTc8StzBXzKBfMZSr9dr6r7Cvi2Tzl8W19BnJ8JzBVYPzYRU2P/sC/w+eD0Keo32W6xb1yvVkVcahcq21l/onOW/KpWg/9zT64A/RHnNUN3wrheuZE+mCv4AeUK1OuEUri/JN1TeX2sy7pn8D8Cff4axRt1+A3OW6qckW/M8Z2uVesCvtObFefSwbkC3h1eMjfh3R2u5jt13HqW/oW+XhpzBXknIny5gib9mm89JE+uPHdXr75UPoL9gDpFwj5C0VO5MPQRPh8ZGrPgjt4PUa4A7cu3Lsb2j/rum1tz3KBOHqs5F58E/hn4sMUv6capdNkXx3YEPM7XOfep5us+XL48xbiA73hoI19Yl2m7bFLZosmmifkGxgVsi74cTfqEyEr10xDBo2yK2i7fsIjjO9s16jbmwFg/fXF++rDtuvKHf0ljd9OnxnluPQ68qH0FOA4g/BPh5PuxJJt9yeQTohP3C3g8Bc0+DHXi/gBcvj0NDwj4+z20kS+sy7SZT6unbHfilqjss07bHUcAwOvqJ4QPkZXqpyGCR9mofWe+E+zjVBZygh11XumnytGH7ivAHD3fIqF8oU/3OgIe7Zh1T41Zyv7Zb3SgjP0G6ij7Dexb9hvWn6irqE+cKzD4E7K+qHgbtswVPEA87gMelH7z3MrgzwPf9jKHb+sriPPlGZ68XIH1YxMxNfYP+wKfD06fon6T7VbdeNyi/xEXypRzBSajfgGP+NoEvxr6gHMF6I/2Ee+hN2pwnKFu9UnlfmnGx2Ay1W+sBbgLSPc6UNYr6rLuGfxloM+vzL7X6TfupTL0G4jDNeYoPVNrRTiGcj3zAxVvtAvOFRj+gWRqm8vkCpT9deA3zhVUeYtA+vegoKf6AXMFKFOkb7h8uYIm/VoHAEL8GsLz3B3byPaMPqJDZegj2H/c46GH4+o4tOFSsn3lI0NjFpyfn0K5gg7Asf2jjbP9o75z3IAydN06r3wYj9kIfwX4sBtINkqXx+E3HrvUG1QeBJj7qD2o678TgKvjof0+Af87HtrIF9Zl2i6bVLZosmlivoFxAdui6if1xgGfrFQ/DRE8yqao7fIbS9RNkMp274c23+AYt7EdOG6z7aq3gGE8MNdyBbeB7b6PZKP8sy9XUHS+jj7sgQBcvvmaT38VbeQL6zJt5tPqzaZcgeonn49VslL9NJRMtWu2wenMFbyvoVzBgoM8VxAy5qOuoj5xrsDgH6JcAepIAV2XuYIHiUfMZ4TM6w3+8+DbPubwbaG5AoP/b7MgV4D9w77A54PTp6jfZLvFvpmpXMHDgbkCzmvWnSv4XmCu4M9qyhX8H9DnL01DrgD9BuJwjTlKz1SuAMdQrmd+oOJcOjhXYPgHkqltLpMrCL1tv6LfnMgVqDmO6gfMFai5COKajbmCPLny3F3lNIvON9h/lMkVfK+hXEFSU64A9Z3jBt8b6h4EXlTMg2M2wv8QfFj/Cd04lS6Pw29NzNd9uDoe2u8X8O/z0Ea+sC7TdtnkdOcKMC5gW/TlaNInRFaqn4YIHmVT1HYfpDIc39muUbcxB8b62UmmtqNMroDjAXW2QfmEFvGL8L75Sd7eUZ6fqFhI7TXa7aCDPgHb9prsk/caLcnknBdTG+2K+r646X00HQGPusBnZzpQxnteUMZ4HonHBjzj8t0CbxhU+0PVPJl1r98Bz/vJDH4p9LHF7D599p3/KqrPar9RWX1G23gDtdXgnzm9+rxopvWZdbYDZZwTUvrcSqb6sCr5nK/OQv0//hDS/5Nnuf6ruYRP//NyJKz/GL/NhP5/soD+P+ChqfTf2ubSf8wnIvy5Hv1X8vXpf94aoU//f4fKsN5uBx3Uf+x31n+Df1Wg/hvtJvQfZcT675s3pU/RuQ6vCWD87tN/Xq+tS//fX/ENyz79t7a69J/fsGzwox79VzboO8dYdK0L2/AglWG93Q46Kp5X+m/wGwP132g3of91zl/z8gwcz6Nt+PSf1znq0v+bSf/xjDvnhvYKHL5z7L67K6wd6symOg/AZzbfAW/Avpnm3ipGUvcDG3wdc14fLp995t2NwbTV3RjMSyL4tHoNnv/qa/pcq5KV6qchgkfZKNvynXH3nSvx3ZWH58VYP9UZ91DbxTPuJ9Db5O/Owcvy9N1HiLSU/b+HyrCe704I31k19hvqvB/bGeqqWnvj+cZ9WV/Y+kYTb61k/ca1aNRvXrsz+IfAt+1z+La+gjgfDBxna7qrpt30XTV5fpPtVp1Na9H/iEut37Cd9Sd6rsv3shj874u4Tvkjvo/Dd+eGumuW/VH64Fr0VzI+1BndtQD3UdK9sncxfhX0+ePZ9zr9Bt+Hpe468I05vrcPqvtslD6bH6h4Bjx4LdrwDyRT21xmLTr0frqKfnNiLboj6Kl+wLVodYYWcfnWopv0a757fPLkymvD2Ea2Z/QR7AfUG57ZRyh6OK5iLP4Vsv28+3M4ZrlTtCPFu5zmG2hfbP/qbkDfOXa1Z47jhvuAFxXz8FsVDf6b4MMeDVjr88Wx4wK+AzB8f5A6Z+7D5Ttfr87tjHtod6CMz+mM0//KJpUtmmyamG9gXMC22IEytSYbIqsOwHD8j2cpxqks1HZ5fVudY1e2i/n3Rx3jNrZD3bPB8QDWxXgg5M670Dto+E4FtGu+n0atMaCfcd1P8W9gu4tO7MZZ9/0UPGcqej+F7y6+cQHf8dCO91N0w6t+CrmfQr3DRdkn5xjU3Snq7iSc07F+qrtlQsddvFvmxy/sxlv3PZC++2p5r2gd47rvLhb2G53sf9RV1CfOFRj8UVlfWPyJOlI1VzBOPOKZG6XfPLcy+OdnPKZ9fLTDt/UVxPmUDE9erqCmcbzd9Dg+LuA7AMN2i33D80c1lqJMOVdgMupPdJ6C7182+OdCH3CuoGy8oPJ37I/SB3MF52V8qHzuWoA7jnSvbJ7qQtDnF2ff6/Qbvtia962qMUfpmdobiGMo1zM/YH6lA783kSvoZN8HkqltLpMr6BA9bHv6cK5gvBy9iVyBisNVP2CuoAM0kT6eS06f6fZrvhxoB8qUXHnu3oH6ZfIByn/s9dDDcRVj8fPI9pWPDI1ZcL7xSBazKBtn+w89J8txQwfKOG4YB15UzOM6J3sR+LCNJJu679Tiffio6/cH4PLl2H3nwxTteKdWN7zqp5A7tUJtd5zKcHxnu0bd7iSTbd7oGLexHWothOMBrIvxgMoV8HsviuYDlM1znKZiX/XeAY593wq2ez3JppNMPnXk+ULm6z5cvvlaXp6PaXegLOb5dD+F5PnwvRe+92P77JNtHnUbx93rG8oVfJByBcon+HQvbz8N617oGRL2G0XzAUrX2W9Yf6KuGnz6cK7A4O+kXEHJe6RkrmAf8dgBHpR+u84EfwB8290O39ZXEOe9gbmCmvZvFz4LOg5lvQK+qN9ku1VjfIv+R1zqDBjbWX+ic5au8wLv9+QK0B91iHf0R5wDUXe7sz9KH8wVfJ5yBeg31gLch0j3VF4f67LuGfyfgz5/mOKNOvwG73HqQBnv+7OyJPHrmVrnNTilz+YHKs6lg3MFhn8gmdrmMrmCcaKHbU8fzhWU9JsTuQI1x+kIepgrQJkifcPlyxU06dd86yF5cuW5O7bR925g3xpGh8p8d/XjuIqx+OfJ9pWPDI1ZcL/CA5QrQPti+y+aD1Bza44b1H2y6m4ivk/2L8GHfZdko3TZF8fmzdd993uG3KlV5dyT774QrMu0XTbZ4H0TfU3fuatkpfop5E6tUNvlO+9UPkDZ7ngy2ebvOsZtbIfKV3I8gHUxHphruYJ/Advte2k3zk4y+cRcQXe9mCuYartN5wpYP+vKFbw55goK5woOz/piNucKnp3xmPbxExy+rWiu4MgMT8wVzFyu4NegD2YyV7Aq4yMvV3As6V7ZXMFq0OfnZd9jrkA+MVdA9GKuYGZyBavI9uvKFaydo7mCC8CHrSfZxFyB2yZjrqCY7daRK1jvGLexHWVyBcfS2I1t8u1B5jOCdZ5BwD0ZrjMIm8B2t5Ns6j6D4Nv/2AnAdYeH9riA73hoxzMI3fC+u/1wzOhQGY5ld1CZOgdU5QwC6+cdoh3qTOFgMtUe7gC8Tw84g+DTvbwzCL57R3xnENhvqHsHZuoMwm7KFaCOVM0VjBOPZc8gPAi+7RaHb+sriPP2wFxBPIMwVaZ1nUHoeHIF6I84z4H+qI4zCJ+hXIHrDML7SPfKnkF4GPT59yjeqMNvxDMI8QzCfuTZ58F6BkGtoSkfUccZhM+Q7SsfGRqz4BmEozxnEHxnfdn+p/sMwp+BD/sWySaeQXDbZDyDUMx2x6mszBmEbznGbWxHmTMI7wtY81Q+oUX8IrxvfpJ3nxrPT0LvU7vTQQd9ArbtouyT72F6JDCmrumunL6id+Wo+aAvD5I3H+Q1dfTdfLeOOoOmxgZc++6lsaEFcKcRr61kKq8t0bYhR32Fqw31h+H7CJQj/ODLDnxafILyLNCvawahTgI4EHdJnVmDbbVHxZMYOyl66TMgytoBvHzmJZ86e9/PjlvUovrGC//Getkn4E8T8CarfuJ9aRL0nK1s12hbGbcdy9D+jIfUZk9c081fX0n+QuSH+IcE/KsArkhfLEm6dQH13ex1N5TtpDLfPZhF88rsr9BvXwcwPA83+MNfNlnvGS/rxqny6jhuNXHfrA/Xbg/tjoC/z0Nb5a2Zl0Twie8+MVpW1uTY5ptXFb3fsiPgVT+peRjHXTuhbDeVhcZ5PLdTeWWln7tFO0Lvut0NeL9xXDdeFWv5dM8XWyjdU3talP2z36gzr8x2hrqK+sS5Y4N/IY33HahfQNdl7rhDPOJ9vIX25YBvO97h24ru9Tkxw5MX59a0jtRueh2pI+BVzlD5As4nqDmNyu+wnfUneq8C389u8CugDzh3jP6I895qz4byR3z3HuaMMHf8powPNf9YC3DnkO6pe+mxLuuewf8m6PN52fc6/QbnjtSdx74xR+nZkKiPYyjXMz9Q8S7Y4Nyx4R9Ipra5TO5Y2Z/am1/Rb07kjscFPdUPmDtW++YRly933KRf893nnydXzuWq9VLlI9gPoI9g/3GXhx6OqxiLv4lsP+8efV/Mcjfg/XIWsygbZ/uvM6/M44byYTxmI/wW8GHXkmyULvvi2Lw90r59s/sCcPnO1Nwv4Pd5aCNfnCveR/934LvVa3DPZ1/Te9mVrFQ/DRE8yqao7XaoLHQfC+4puNYxbmM71H3bHA9gXRUPXCfwqr2nrWSqHwrJHav7tVEe7BMwd8ExAdbb6aCjchDpw7ljg98TGFMb7Sb0HWXE+q58tu+dP3m5ep5fq3vKlb4bTbUH+Trg/eM0Ntws8LeoDHm9WbRN3TVtcIrOSyvSeamgw7hwPrgTcHH8bPAfpznrbYC3gP5cwvI3HIj7rpK4W4QvSXTcavgHE7c9D4iykBx1+0/u//TH3/yj833+xnfuTvmblwp4kxXaRgFZXax8BNrI/rZA2V1UhnZuPKgc9d6S/IXID/GrOHMlwBXpC4XrdTXhUr6/Cq7rSuKyPDz6wdsIlxpbMZdnMlks2nWdox7DuXLuSEfhv4N43Sl43SnarfbcG9ygqNdyfBod/s23lvFC4lnlYHd7eMb6vrHuhdSeXYBzbfaZyv1zjpww9gnW5bHB4D935mS9L1BuxbeWgzwvS7p5KdqfywLpnFyRzsmCTp16o/pzGdG5uUY6GB+cTHRuq5EO4lpLdO6skQ7iGiY6Ljv4W7KDrr0Eoi7H4gb/ZrCD73jsgPeN3AX4kmSqHxh20PsexWQlx1q5jsDxskt2j9TkQ9aA7L5fwIfgWMgxNcrjNirDuInfRaTmLGrt1pf/HhT1TL7WXzh3aSI/a/gHkqltLpOfVXMzFVtY++4pR28iP6v2Eal+wPysyhsgLrOxkDVY9I2cB8VYybVnKX1GAI7tWrXJ8hWLPfwNClysW8h7UdkjPuMTf0P8A8lUGy2jW2qOq2IhHpuwrhprLgY4LusVv7nGLe6Lqrh4XXsmYqHlFeksF3QOllhoOdE5VGKhp5w0iRf9e+h4bvDfXzVZ79cynE3GQs/OaMxkLHQsya5sLPQXILvnkex2AV9s2778IsYoHAuhrDjHqfJRKn+rcpwsN6zH41XJ2CQ4FjL8A0kl/ZgYr1SMqMarirHeRCyk1k9UP2AspN4XiLh8sdAuKkPfyPEOjmu8t9sXC+3KaZMvFtoFbUj/t73gHwfbOSOzHWW3pyfdZai3NyaTOFaR/WFbOQdVNB7A+rcRP3WMN8Yz7pPnHNTtgufbPTxjfT4nf5ugo8bptdlnKt8LT9L8oM/EuuwzDf790O+voj7D9rPvQ5457iran8sC6Zxckc7Jgk6TcQq2zejcUSMdtAPOQTUVD60lOnfVSEe93z3PDt5MdqDWg7Guaz34LLCDSz12wDmPvYAvSab6gWEHvS0Ud5Ucx2XcxbkUl+zGavIhzwXZXVHAh2AswfdUhZ5X4D1CKteizlypfRh8TgrrmXwr5miC4y7DP5BMbXOZuCs0DrL23VuO3kTcpfZqqn7AuEvlnRAXx13oZ3lMRd/oO8fN+Sn0QSMAx3bt24uz2MPfoMDFuoW8N5GDMvwDyVQbLaNbeffpcA7Kd/cPjjWcg7pT0LlT0FH9fFuNuDgHheuvHAupteDrPHSWBdJZXpHOckFnUNRrOT6NDv/GdJRsmo65OAfVRMyVPmuJznTloFzj+e8F5KB847nB/9nKyXof8IznITkoXyxk8B+exhyUS3YfqSkW+n2Q3Uc9smPbDs0z+eKkuB7nfQ7q9Tj0s778Asc7GGsUWY+7LadNHAshf7c5cOH5fpVzahP8lzL7Sm3tzylnhXk33Kf66pO74WIc1l1XxTsb4DvrRdHYaU+NuGIcNkmHfysShzWVk+I47GDLSan1yNTH/HNATgrrcixh8BdALPEv05CT+n/TmJNyye6nAXGYT3YG/0KQ3b8XiMNiTmqST/wN8ceclDsn5YvDZkNOSvHHuELjMIM/IoupKsZN0m8YrhivhefN+PxGlRhrd424Yrw2SYd/i/FaPXTKxGvHnTyJF8egovHaX66YrPfiDGeT8dpLye/ORLx2EsmubLz2MZDdKSQ73/5PdTe/iuU4XlP3WLaoLEnC8mZY/1DLm6nxaq7mzW6jMvSNHJPhuOY7SzkCcGwLZfNmoTkupumK61ZQucG//uRJnBdR3gz5uhlo/23Mrx00+TXeC4u4OV7bI+js8dBZJnhWdJZXpLNc0BkU9VqOT6PDvzEdJZvp3mt/sK1zumKO3yL/ptY5fTGHwV8EMcfbPfFaXeucV1O81uQ6p0t219QUr70MZLfLIzu27dBzh3GdM65z7keefSo/y/k137nDsuucN+e0ieM15M93h4z95ovDDP4+8hsl4xjpN3hfGvLD+j/dZyN3laPnPRuJ7eN47XbBC8/x0ofza0XPAiCd3TXiYl+LuDleU+dpd3voLBM8KzrLK9JZLuj4zu2G6Jaio2TTdFzI8VoTcWH6rCU6t9dIR8U5eTHHH1HMge9QDIk5DP6bZ0zW+7QnR8T5nDsAXyLoDTvoPUx+F+PAqn7XcOWdjfysYy4fejbS4D8Fsvs8yQ79LNs2ypX9C46pHMvVufcW67PcGrgPLTheM/wDSSX9mBiv1B1U6jxTxfnDRLym4mbVDxivqTvEEBfHa+hn+Wwk+sY7qQxjDc6doA8aATik52oTx2tK91WOy+BUjkuNS/NFGwv00eJQHTT8dd0nofIrarxe+Njf07PvW8c2bNwwdtWq0bHzt168ccO6s0evuvzUTevPH9kytmFk46nr128ZvfxyZBoJLYLfsRwfhrHvt4rfEUfe5RhFgvfbcnC9lnBhfXaAt+fg4gvi1ODG//clU/l8VfbZE4AHDc3F10XEl1p88Tl5VM6NhEu9+NznGJGv8wkX1ufFRUwWMZ8sLx8elwPFNl5KfCmHabjek4NrHeFyHVJP/+7JwbWJcKlJOP/fl0zlk+Xlw5P+3ZvD12biy7X5Jv17bw6u3yBcavOO4bovB9cbCJd6sTv/35dM5ZPl5cOT/nU8fKXPa4gvdcm+mqSdSXSKTtKw/nRN0s4kOp0a6XSgbC3US8vGoT76Vt8hJhv898HvTSRMDP8A8VKQ3sTgry6kVwGotf1+wcuQKONFqfsFnfsFHYXr5hpxjVN7XJOwpS/vprkHykImYQb/uzAJe1qGU8UenaSbnopj9gh6LWpXv4BHfPyS3WdlPKmX3HREfYUbx1NfomN+MtW+mrARwz+QTNWfMjYyTvS4fWwj+wQvQ6KMkxbKFvcJOgrXHTXi4kVTl40cX5ON3AI2cuIstJGX12AjGEOF2EiVS5AQn/GDvyH+umxExbI+GxkXvAyJMt5YPy7ojAs6CtfdNeIKtZFza7KR3wYbuaBBGzF5h9qIwb+6BhvBuDnERqokwxCf8YO/If66bERdEOezkbsFL0OijF+aVnRxHHHdWyOuUBsZrclG1oONvGkW2silBW1E8d7E3Evlr54F310y8r1Y5VmiPWqO9yxqj0tHrni55kfpSPrd5u+8sH4h6MhveXTEt+A5XQurx1Wkc5ygM90Lq01thDuO6OytkQ7iWkt07q6RDuIKvXR2N9nBe6BM+UrLF/HLTX94+mS9Wzx24MpZ4sLqHtEOpndnRqPixiO5sGq48mS3t6Zx5qsgu3sK+BCM6dnHq5euqzwm531VflW9zHBI1De4QVHP5Gv9VfKFpcELq4Z/IJna5jKxVujBzyZfkKr6ARdW1cvhEZdvYXUPlaFv5JcpqxedKx80AnBs16pNvJam+PNtsJmpTWYlF2i9m8zUhnQem7Cu6pvL4DuWIR3fhdJ1Xk6tXlYZN5lN/W02xEK8yexQiYW+WDAW4vHc4K+A8fzL0xAL/dUsiIX+V02x0OtAdt+IsZDvmTOx0H3l6E3EQh1Br0gspNa0D4ZYqFfwh3BoeyqflIjfWh56TKNH1H0L8Y1lZxCNojmgMwS/DeZ1e0Pta67kdXkNvUouNiTmqbiBMTgen44NjGfAbzVtou319cPNHnol1/J6jJ5vbxfSS/1pfzK1D1170NTeLewvl82X3U+5NweXbz8lrwPenYOL91O6Ni5j2VNPOfCZ+uHDTumGsb2ATwCYI7Lv6sUoGE8tJTh1+UnFCz2CbY9f7lNyw7z35T7qwGGqm/MSv45gH7n2mapLs0J0FnkK0dmifao2le9/oZcH7nYBp2il/+O+Z36hj8E+M8ORynnFmu42Il3em6xeLqQOzQ2J+gan6CyrSGdZIJ3lFeksF3R8hyNDbE3RUbI5WA+g3VojHcTFuYHdgofUZk4+ZRIv25pvvOBD7z87bbLeqRlOtUcf7RPrhx5AM/iVpxz4nI6L9VyyO/OUpKst6gCaT3YG/zcgu7MznEp2bNu+A66hB9B4b13RA2jqMohD5QCa74KnuXAATY11yjcWOYCGPmgE4BCnq02+A2hWNz1cdXT2ffJw1dmjV716ZOOG9SNjGzZvunD0LVtHLx9rA2Y1crCHZ0+MV0O5nhb930Nlu6j8VQIOn5CrBkpecRAc+Rr+uq4aUCe6fFcN3CF4GRJlW+A7liGdOwQdheu6GnHxKyriVZ5uOrPhFThNXQGwlug0dQVVaKT3zlMm8aI/DI1WDP6dEK1cneFU2Vzeab8H8CWC3rCD3q5TDnxWXAWXkR7PYl2rQNefknS1BWeuIatABn8xyO7dGU412rFto1zZv6hrf1RmiFe6i2apsX6RLDVG/E1Eeoa/riz1rUSP9ZQjvZKR5USkpyJL1Q8Y6aFM1Ulc31WefNUA+kbX1T6oZ8oHjQAc0nO1yRfp8XizQ9Cxspug3k4quyWZ2ubU7h44xU37BGpH0QzJCYKmonN99r1NbfzDUw58Wj9jvxXQrZMGiY7hQNwlVxNOCrVL10oK8qVWNtoBvPy/w09Z9i+dH7yH/bHx4rJZHosQ/gQBX3HMOXEQaCRE28rUeGhlfVBmPKRZyxPXdPNXciXqxBD5KdtH+IsBrkhfqHFlV0lcS5JuvVJj6A4ouyH7HjLfKmmDwfMtw1/XfEv5Xt98S8lsSJTxVbzXCzrXCzoK144acdkYoPqZ51s7BJ0dHjrLBM+KzvKKdJYLOmr8azk+jQ7/xnSUbJqe1/F86/oa6SCutUTnhhrpIC6eb+0UPKR++5unTOJFv4VzBqzrmjP0wpzhWxlOFVPckGh6OL7sEu1gen9/yoHPimOLnG/xbmeX7P7xlKSrLRi/hcjO4P/h1Ml6/5ThVLJj28YxiccRlMf1VBbnW8H0Ss+3St7kMTHfUvnIIvMtdVMUz7fQz/J8S70eQI1rHHOhDxoBOLbrkPmW4i/GQmGxUPrwNbdV4pcba8Tli1FiLNRNJ8ZCSSk6ZWKhJ586iRf9e9FYaNepk/WWZt+bjIWentGYyVjomSS7srHQm0F2zyHZ7QS+2LZD89IcC6GseF5f9FUlaiW4wRNzwbHQdJyYU+NVxVhvIhZSN3eqfsBYCGWq4iJfLLSTytA3cryD49puKvPFQjtz2uSLhbAu/t8nYK9JJtuLsKeeOlnnklPdtN5FfFwDZe+mslD7RBwoX9ftD6+lNhj8mRnfaa7xzDUaZ0/iX/tSuU9rx3yga2UF9PfTKV9PXzNJB/UlfTBvyvrii6kM/l0CHscUjg3fBWUczyl9xPjC9FHJy3hsQl7IQ4i81H6BUHmx3aO8biJcKv5FGfrkZTw2IS/kIUReCF9UXiYDJa9bCFfeHOccgjfc/Yn2CYavTfDrTz3wqW7l8fn4awRu9I0twoHtGBPtGKQyrJvi/ejzD3yfrjwPx5q3Ai+sC4i3TfBvOXWy3jUkm7wbtlm/VI4D8xY7qT04jt8egGuXh7bvVYCKNvLFe2R4b46KN5QfMNlU9AN9yg9gvor9gOonhA+Rleontc+M98aF5pxupbKQnBPqvNJPlX9y+Wy2B5zP8FxHzRN8uue7cULpnsqxKvtnv6FeL6psif0G9i37jbI74W/JZNbkTnjW73ai9du1w/394Ntud/i2voI474Lx6Elgo0mi19sr+oK28gXYP+wLfD44fYr6TbZb7Btea1Dr5ihTjglMRv0CHvHx3rz7oQ98MQHvLg/NgfvmfWYPqdwfzvhQOYG1APd7pHvqdjx1oyHfjvc50OcPZN/r9Bs3UJnao+Ubc5Seqd37/Npk343tJfedB+dSeN951RvbQ9d5KvrNiVyKOjmj+gFzKXmnN81XTbdfQzmF+DW11qT2ELI9o49gP4A+gv3H9R56OK5iLP4w2b7ykaExC+avn0z2j/bF9o82zvaP+s5xA8qQ4wb1yjj0QfyKc4P/Eviwb5NslC774li1h1W9eludTrsrANfNHtrqtPxdHtrq9fTMS5K4bVLZosmmifkGxgVsi6qf1DkVn6xUPw0RPMqmqO3yCTEc39muUbfxJOq3HeM2tkPleDkewLoYD8y1XMH/BdtNTuvGGXMFU/mMuYLusunMFbB+1pUr4D1iMVcw+bhyBYuzvpjNuYJfg/2OSxy+rWiu4IgMT8wVzFyu4Bjog5nMFZyW8ZGXK3gG6V7ZXMEK0OdnZ99jrkA+MVdA9GKuYGZyBaeR7deVK7AzAXMtV3AO+LBhkk3MFbhtMuYKitluHbmCYce4je0okyt4Bo3dofkAPq9/s+Bb2bzrrdGuvVz8NiWD3wC2+zaSjbIftf8v1H74zLOyHx8uX55C3Yi010Mb+eIb2NmW1Rn6BsdRabton2y7Pp+ZPiGyUv00RPAoG2WfPCbjOMS3ROE4xDaPuo3j7tsCxl21tynvdkm+vyN0n22LeER4ddZL2f+tVBYa17PfULe2KV1nv2H9ibqK+sS5AoO/gXIFJW9clbkCfkMA3luh9JvnVgbfAd92o8O39RXEuScwV2D92ERMjf3DvsDng9OnqN9ku/XdrB16gxvbWX/ijyF4zvweT64A/RHHGeqmSeWPfHeZYK7gjyhXoG7yTOH2ke6pvD7WZd0z+E+DPj9I8UYdfuMOKkO/wTdzqjFH6dmQqI9jKNczP1DxpsTgXAHfYl/1Jmdlf2q+U9FvTuQK1BuDXTdHK5mqm8x9uYIm/ZpvPSRPrjx3xzayPfvWMNBHsP+43UNPze/QR/h85G6BN+/mbLuvLSQfgDbO9o/6znEDypDjhruBFxXz4JiN8J8FH/bXJBuly744Vt3o73sjju9tvwqXL0+h3pJzj4e2eksO85IkbptUtmiyaWK+gXEB26LqJ/UGDZ+sVD8NETzKpqjt3k1lOL6zXaNu74U2/7Vj3MZ2qHwlxwM85u+jsbvpW5xdY7e62xHxcuz792C7PyHZKP+sbkBm/4Hw6s17vvm6D5dvfcynv4o28oV1mTbzafWU7ZpsmrDdOucHSlaqn4aSqXbNNhh6ozTbZ8iN0jzu/qTgvhffuIvrynyru2/fRfqwPH15VqV76gZ1Zf++3Br7DdRR9hvYt+w3+KZw1ifOFRh8/+kHPiu+yUfmCvjtdZjPUPrNcyuDf1LGY9rHA6drnH0FcQ5mePJyBdaPTcTU2D/sC3w+OH2K+k22W+ybkL1g6u0ybGf9ic5Z4p4XhP8V6APOFaA/4rxm6A33vHdKvWUjlfuJGR9qLWYtwB1Nuqfy+liXdc/gTwJ9fkr2vU6/wXlLlTPyjTm+t+aqdQGlz+YHKs6lg3MF/NankrkJ71uf1Hynot+cyBWoOY7qB8wV5L3pzJcraNKv+dZD8uTKc3dsI9sz+gj2A+rtcOwjFD2VC0Mf4fORoTELrnnaW3yUjfvWxdj+1Ru41dya4wb1RmE15+I3/J4BPuw1JBuly744Nm++zrlPNV/34fLlKdSbY+/10Ea+sC7TdtmkskWTTRPzDYwL2BZ9OZr0CZGV6qchgkfZFLXd91CZepuesl3Mgb3GMW5jO3DcZtt15Q+PprG76bdB89z6vcCL2leA4wDCj4DtjpFs7M3ESRKmEx0Bj283Zh+GOtEJwOXb0zAu4Dse2sgX1mXazKfVU7ZrsmnCdtHe2HZVPyF8iKxUPw0RPMrGylTeW9nne6ks5M3UqPNKP/POCvj2FWCOnt8Or3yhT/fyxizWPTVmKftnv4H2z34DdZT9BvYt+41O9j/qKuoT5woM/mrKFaCOFNB1mSsYJx7vAx6UfvPcyuDvAt92rcO39RXEeV1grsD6sYmYGvuHfUEHynoFfFG/yXaLfcM5HZV3QJlyrsBk1C/gEV+b4G/15ArQH91HvKM/4hhE5Y7ZH6UP5gr+C+UK0G+sBbi7SffQp/WKuqx7Bv9fQZ/vpXijDr9xN5Wh3+DYWo05Ss/UWhGOoVzP/ID5lQ783kSuoJN9H0imtrlMrqBD9LDt6cO5gvFy9CZyBfsEPdUPmCvoAE2kb7h8uYIm/RrKKcSvITzP3TtQn+0ZfQT7AfQR7D/2eujhuIqx+H8h21c+MjRmwfn5F7OYRdk42z/aONs/6jvHDR0o47hhHHhRMQ+O2Qj/KfBhXyHZKF32xbH3C/h9AHMPtQd1/f4AXPd6aD8g4O/30Ea+sC7TdtmkskWTTRPzjXEEALyufkL4EFmpfhoieJRNUdsdpzIc39muUbc7yWSbv+IYt7EdOG6z7d4jeMV4YK7lCr4JtvsoyaaTTD4huYJxAd8BGF+uYDwAl2++5tNfRbsDZViXaTOfVm825Qo6UBbiY5WsOgDDuQK0a7bB6cwVPNpQrmDvQZ4r6ECZa8xHXTX49OFcgcH/gnIFqCMFdF3mCvYRjx3gIWReb/BHnHHgM+3j1hkaZ2iuYIKHDM9M5go6AMC+YBzKegV8Ub/Jdot9M1O5giHoA1+uoEO8150reEHGR16u4Amke2VzBS8CfT4y+95krqADZZwrsLIk8euZyhUYnNJn8wMV59LBuQLDP5BMbXOZXME40cO2pw/nCkr6zYlcgZrjdAQ9zBWgTJG+4ZqNuYI8ufLcHdtYNlfQobIyuYIXkO3XlSvYXVOuoANlHDegDDlu2Ae8qJjH8LYJ/mXgw84j2Shd9sWxdczXfbh8uYIHBfwDHtrIF9Zl2i6bnO5cAcYFbIu+HE36hMhK9dMQwaNsitruPirD8b1DZajb48lkm89zjNvYjjK5Ao4H8s48c9yk9lj55id5e0d5fqJiIbXXaLeDjuts5WuyT95r9LrAmNpoV9T3xU3vowk9n6RiI97zgjLG80g8NuB9GFfQ2IC5qA7xqvaHqnky657rHSW8n8zgN4iY3afPvrtiiuqz2m9UVp/RNt5AbTX4y6ZXnxfNtD6zzqI+u95PjzRbyVQfViWfMzoL9X/bIaT/u2a5/o8nk0+I/uflSFj/MX6bCf0/t4D+j3toKv23trn03/Bx3H+nR/+VfH3674s/8/T/firDersddFD/sd9Z/w3+vYH6b7Sb0H+UEeu/b96UPkXnOiYTFb/79J/Xa+vS/+ML6L8v9lb6b2116T/f9WXwH/To/7jgwXeOsehaF7ZhH5Vhvd0OOiqeV/pv8A8F6r/RbkL/65y/5uUZOJ5H2/DpP69z1KX/S0n/8Yw754buEDjUWRXOG6nzf9YOdWZTnQfgM5t/Armhr9McWcVIvjsS65jz+nD57DPvbgymre7GYF4SwafVa/D8V1/T51qVrFQ/DRE8ykbZlu+Mu+u8GOqm7+4KpZ/qjHuo7eIZ98+e3I33zhy8Re9w5Tto1B2uyv59d0KUPavGfoPvQGJ94rVog/9u1he2voE6UkDX5Vo031WD5/CVfvPancH/AnzbIw7f1lcQ5/cDx9ma7qppN31XTZ7fZLtVZ9Na9D/iUus3bGf9iZ7r8r0sBv/TwLVovo+j7J0beC4V16KftOLAd3VGdy3AJSu62132LsZjVkC97HudfoPvw1J3HfjGHKVnQ6I+jqFcz/xAxTPgwWvRhn8gmdrmMmvRoffTVfSbE2vRKk+o+gHXotUZWsTlW4tu0q/57vHJkyuvDWMb2Z7RR7AfQB/B/iP0rn6MxZ9Etp93fw7HLOodTyneP8piFmXjbP/qbkBl47473DhuuAd4UTEPjtkI/wzwYSeQbJQu++LYvHPmfH+QOmfuw+U7X+87K6poq3M7zEuSuG1S2aLJpon5BsYFbIt5a7IhslL9NETwKJuitsvr2zi+++7Kw/z7CY5xG9uh7tngeIDH/ITGbt+dd6F3V/GdCmjXfD+NWmNAP+O6n+J0sN1Xk2zqvp+C50xF76fw3cWX5zeYdryfohte9VPI/RRon3zvDNon5xjU3Snq7iSc07F+5r1TzDfu4t0y11CuoO57IH331fJe0TrGdd9dLOw3OD5kfeJcgcGvz/rC4k/Ukaq5Ah7H8cyN0m+eWxn8b4Fvu8Th2/oK4nxzhicvV1DTON5uehzP85tst9g3Ie8qQplyrsBk1J/oPAXfv2zwW6EPOFdQNl5Q+Tv2R+mDuYK7KFeAfmMtwL2NdK9snuo9oM/vpHijDr/hi61536oac5Seqb2BOIZyPfMD5ldQF5vIFRj+gWRqm8vkCkLn7hX95kSuQMXhqh8wV4AyVff3+HIFTfo1Xw40T648d8c2lskHKP9xh4cejqsYi98VMN8IjVlwvvFblCtQ7zQpek6W4wY1n+Nxw7WnyXVOdh/4sIdINnXfqcX78IveqeXLsY8L+I6HdrxTqxte9VPInVqhtss5Bhzf2a5Rt3F/+UOOcRvbodZCOB7AuhgPqFzBdUl3WdF8gLJ5jtNU7KveO8Cx7yfBdr/ccJ4vZL7uw+Wbr+Xl+Zh2zPN1w6t+Csnz4XsvOFcQap9s86jbOO5+uaFcwUmUK1A+wad7eftpWPdCz5Cw3yiaD1C6zn7D+hN1FfWJcwUG/y3KFZS8R0rmCu4jHjGfofTbdSb4X8G3fdvh2/oK4vyHwFxBTfu3C58F9fng9CnqN9lu1Rjfov8RlzoDxnbWn+icpeu8wA88uQL0R5zXRH/EORB1tzv7o/TBXMERKw98V3OdtQD3E9I9ldfHuqx7Bv8rKyfr/YzijTr8Bu9xUjkj35ij9Eyt8+IYyvXMD1ScSwfnCgz/QDK1zWVyBcr+1Hynot+cyBV0BD3VD5grUHMRxOXLFTTp13zrIXly5bm7uvNF+QjfGgb7D99d/TiuYixuPsLnI0NjFtyvcBzlCtC+2P6L5gPU3JrjBnWfrLqbiO+TPRp82PNJNp1k8gmJY8cFfAdgfPd7jgfgqnLuyXdfCNZl2i6bbPC+ib6m79zNu1OL43/c+z9OZaG2y3feqXyAsl3MgbF+5u3ZZNtV7yjBeGCu5QpeCrZ7Lskm5gqm8hlzBd1l05krYP2sK1fw05O68cZcweTjyhX8etYXszlXsAV827DDtxXNFVyc4Ym5gpnLFVwKfTCTuYI9gbmCMUfMUTRXcCvo8xXZ95grkE/MFRC9mCuYmVzBnoZyBf+cxSxzLVdwN/iwD8RcwRTaLpuMuYJitltHruADDeUKxmjs9uUKkDffPKLqGQT1HkKOPz4KtvunJJu6zyD49j82fQbBt/cqnkHw3+3nO4PgyxXgOFfHGYQ/DcgVqDOFg8lUe8BcwUcoV1D3GQTfvSO+MwjsN3z5h+k+g/A1yhWUjOkbPYPwffBtf+3wbUXPIPxNYK4gnkGYKtO6ziB8LzBXwHkOlTuvcgZhcNWB73lnEB4l3St7BmFo1WS9H1K8UYffiGcQ4hmE/cizz4P1DAL6CPYD6CPqOINgPsLnI0NjFjyD8HuUKwjNFfrW66bjDMITwIc9m2QTzyC4bTKeQShmu3WcQWD9rOsMwqOeXEHVfEDZfQXqfCbHvseB7a4k2dS9ryBkvu7DVWVfAdOO+wq64VU/hewrUGv1Te0rYP2sK1cw1vC+At+dJL59BVXzAU3uK3hl1hezeV/Bm8G3vcbh24ruK3hdhifuK5i5fQWj0AecK0B/1PS+gusoV+DaV7CRdK/svoJ3gT5vzr7X6TfivoK4r2A/8uzzYN1XELqGUce+guvI9pWPDI1ZcF/Bmz37CqrmA5rcV3AL+LAHSTadZPKJ+wq668V9BcVst459BQ86xm1sR5l9BRtLzmNaxC/C+945oHyO785EFQv59jkwHfQJ2LaLsk9e+/n9wJi6ybX4Ot8dkDcf5HmyWq9R+m408+azF9LY0AK404jXVjKV15Zo25CjvsLVhvrD8H0EyhH+L2guifIs0K9rBqFOAjgQd0mdWYNttUfFkxg7KXrpMyDK2gG8fOYlnzp738+OW9Si+sYL/8Z62SfgTxPwJqt+4n1pEvScrWzXaFsZtx3L0P6Mh9RmT1zTzV9fSf5C5If4hwT8qwCuSF8sSbp1AfXd7HU3lO2kstC7bjkGLLrPbBfAuPaZfQ1iuUdoTKt7nxm/m6boPrPdHtp5eWumHfeZdcOrfgrZZ7YTynZTme+uWzUm5u0zY/3cLdqxC37jWG6X4DXFe2zAPjOf7uXtM2PdC91nxn7Dl48OnTvWtc/spzTez8Z9ZkNnHvhM+/jfHb6t6D6zXwbGuXGf2VSZ1rXPbEHWryp3jP6oyF236k7JvH1myzI+8vaZLTmzu91l95n9B9DnI7LvdfqNuM8s7jPbjzz7PFj3maGPKHLX7W0eeq59ZsvI9pWPDI1ZcJ/ZUzz7zNj+Q++69d3bUNc+s+PBh60m2cR9Zm6bjPvMitmub49L6D6z1Y5xG9tRZp/ZEhq750qu4JVgu5eQbGKuYCqfMVfQXTaduQLWz7pyBY+8rBtvzBVMPq5cwdasL2ZzruBd4NuudPi2ormC34Z5aswVdOOarlzBzlmSK/jdwFzBjTXlCv4T6POemCvwPTFXQPRirmBmcgW/21Cu4G+zmGWu5Qr+M/iwh2OuYAptl03GXEEx260jV/BwQ7mCG0vOY1rJVD8Uss/sTgGP8uD5CcqRYwKst9NBB30Cto33mRn8XwTG1Ea7CX1HGbG+5707uei+Pp4nq/tLlL4bzbz57OdobLgJ4G5MustuETis7FYo43et3SZ4tvbjnjdr/w6AMbxtgv87GBt+TDai3j1/C/wWovO4D3UHtQfPhd4ZgOsmD22fvija6j4M5iURfFo9ZSsmmyZsBfeOsq2ofvKd0fPtmUVZqT3BvCfzRii7icowH8v7PPFda7dSGer2bdBm1s+bRDt2wG88NuwQvKZ4LzquG++tAq9P99TYgHbMuneLaJ+yf/YbaP/sN3zvhMe+Zb9h/Ym6ivrEuSiD7z3rwKfNb1BHCui6zEVxjuMO4EHpN8/dDf7IjMe0j/vP0jj7CuIcyPDkjZvWj03M2bB/2Bf4fHD6FPWbbLfYN7cQrlsELpQpx1Qmo34Bj/jaBH8E9AHnotAf3UG8oz/i++L3CLrsj9IHc1HHZ3wMJlP9xlqAO4p0D31ar6jLumfwJ4I+H519r9Nv8DwV/Qafb1BjjtIzNRfAMZTrmR8wv4K62EQuyvAPJFPbXCYX5Yv704dzUSX95kQuSsW9qh8wF4UyRfq4Xpk+0+3XUE4hfi00N8T2jD6C/QD6CPYfezz0XOdPjifbVz4yNGa5BfCel8UsysbZ/tHG2f5R3zluQBly3IB5MRXz4JiN8KeCD3slyabueylvpfaoNUAfrts8tPPONTFtdc8F85IkbptUtmiyaWK+gXEB26Jvrp0+IbJS/aTOgHG+KdR2fe9lZ7tWuReln744P33Ydm8VvKp44GqBd6vAa/A7AFevwPGa7LNN8K8XsavhvEbwMAa/cZ/uFPDXAIzxsziZ6sc4V4713p59V/pucBX1fZHSd2wP6zvmBXsFPMvmOgGPeSPrW3XnF8+93w5lRnOQ8KC8U963P7+bn7y+Zf26FnCpvr0k+94m+Es9+qX0ZRv8xjL0yRz5WUw8YN3Fop7JV+mXwVXUr8VKv7A9rF8+fUkfls31Ah51yPp2iOBRTlaGdmk0BwkPynt/TPO8bjj0PS3Hp/HKv/E8AXG9ivjZUSMdxDVMdLZD2drsM233DvLbKJNeqpt+vzj73ib4+yAG2knzOKy/g+pb2fVgZ+df6K7PPvhqKNtKZagH6HNc7UT4Sxzt3A18nunJlRhfFe1uSNkd+r4Qv47wRf06+260ye2Ea7vApeYBHCP0J7oPDF+b4O/25Epw/LiGeH97Qd7VeKL8iNVN++Jflx34ruKAa4mmGsNUXw2J+tc4cPUI/tFuud97Ez0eMrzpBOYrlX9uE/z7oK9ecaHGmTh42O7gud8Bv4t4MPj/KPTF5wdQ/3cSToP/IOA8uyDO9Q6cf+CJNZSdXgu/FR1POZ5AOV5PZcg7j4vXAX2GfSPRxzLUc6abePjlMTWPXx5vrOyzMF59gvL+GFsU8NW9vr46S/Ab2lfbE3f7GJfVaydT9dFnIyiPz5ylcfYVxPmwGNNVrDIC+D/riEfSh+OR9GG/jD4D7XAHxSQ4zmwl/g3HnweuixiuamN961tqrMe28lifJxv2CdcKeOxHjrFxvHkqleE4u53obBd0yoylf7asG++OHLznEh95Md7rs+/sh7/p8cNKhj6ZqzkiypXXUbE/OKegdHa69RHbz/roa2v6FJ0Psz6q8UPpI8dZeXrj00fMS32SYjvkleceuzz85MXcYwRvPr7fAc8+3+D/xRP33CB48M0T3iXgbxA8LyYesC7TRrtEmayh9hj8TwL9cU05jyVK/1FurP8+GaUPy/TdAh5lZTIZIniUr9L/G6hM5ZF8NhtqG1Y3lcOd5Kvrzs+xrzb4+asPfIbm57bDb9OVn/P56iZ1dbbm51BXQ/Nz1wXEAls9/Ct93CH4V3kl7nesd3WSz9cOwZeax+zw0HleRTrPE3SazEEiTRXbcHuK5kKw/jXUnmtqbI/i2ehsg3prs89UV5+zerKOy7dhXR7vDP6M1ZP1lmXfF1N9pTehuuvKiaocUvq8Nplsf5I0EXPqddvpjDk5rsTxchvh2iZwoe7h2GkwCfHYhLzQnkPmjMpv+OSLNrEt+672mV9NZahvO4jONkEnNA7ZBm0dXpbP/9We9ubpx7bs+yxco5vxGGBb9r3sGh37S6SzDX5bQ/AYh6o5Nq9ZGfwrPbGj0gOf3uTN6YwfpRv87jeV52/Qh8xqvdlJZSrvGKo37EO2QX0co2389uXIWkn3OIn6jPCu9ZUdhKdFvy+A37HeMLWZYyTGvZbgrZ39DnjDx7HIb4KtHOnJiSmcI8TDzhweriUeDH6z4MEn//TxxYTzk6m2WMBu2i3CZ/zgb4h/INH6sTQJelosP6On9CB91Pkutie1VuLzgcrOFa6tNeKyuEHFsMuITtF5Edb3zb+WV6SzXNBpev61jOjsrJEO2sxyorOrRjqIay3Rua5GOoiL985sEzyk48RumuddD2Vq/OEzEAb/V2dP1ruF5nnoK3DMxPo47l8j2sH07sxomP/DPG4BfyTPORmuPNntJdmptRqsy7Iz+I+D7O7xyI5tW8UYi5Op8uCYHvOzvPaq8r/4G+ucypEPino8XmEeuMhcMcQ2EP9AMrXNZcYrlefGmJDPj9xYjt7E+ZGbBD3VD3h+BGWqzn+ajSk/yzkD9I3vojIc1zhPjz5oBODYrlWbLLZd7OFPxaEYu6l8C+vedMdK15aj542VVH6oaKyEMsQypDMbYiXkk2OlojlXrH+Nh87yinSWCzpN53ZjrBROp0ys9KWaYqXXw3j/FRrv0VeExErXinYwva/Ngljp6wXXE1h2Bn8yyO6bHtmxbcdYaZJP/A3xx1jJHSupeKPJWOnanDZxrKT4U/FO+ixNwp6QWArbV6DvnhKqm4a/rlhKxSUqlrL2XVeO3tJU1xZk9TCOfTV8V/ufsL/q6j+Vm5mp/ttRjp63/1TOqs7+Q9sq0n/KNp8J37EM2+OLK7H+dMWVzyQ626De2uwzHY8Hzp6sg3II3TNg8EfCGD+YfVd7BkL2tDS4zt+r1pywD3jNybd3OX2K7rvl/UpqjVft0eF53zZBp8y69amOdesW4L1Y1GXbRvidgg+D57M0DMPnXgz+6Eyn0v473LHfznXuxbUO+xTAOd3nXlDOfI4E6/nWYQ2uok08RdkEtodtQu3hVbGiweft4d2WfR8ieJaTsq/0WSNw+XjdUYFX7kfsK95vbLCol9ge1kuDP07opep/k3kT/e9bh1cy9a3D58mU812+vci+dfi8c/G+dXj0IQM0fjU9R+WcwbuBl17Bq+FtE/wKGINfS+O6zZeSJMxm1fwM51zbqD04N7spAJfPl+4W8Dd5aCNfWJdpM59Wr0HbkvvkcK7NtqX6CeFDZKX6Sd3rwndMhs6X301lIfNl1Hmln3XtoeGclfJVPt0LHat8502U/bPfUGOcsiX2G9i37Dc4D8L6xLlGg39j1hc2/0IdKaDrMte4m3i8EXhQ+s05RIN/G/i2DQ7f1lcQ58bAcdb6sYl72rB/2Bf4fHD6FPWbbLfYNyFng1GmHNebjPoFPOJrE/wV0Ad8pwL6oxuJ99D8HZ9XUmsIqdzvzvhQ563WAtw7SPfQp/WKuqx7Bn8v6PN2ijfq8Bu8txP9BsepasxReqbiMxxDuZ75AfMrqItN5MQN/0Aytc1l8lahOeqKfnMiJ75H0FP9gDlxlCnSN1zmq6bbr6GcQvyaypMPJVPbyPaMPoL9APoI9h+7PPRwXMVY/G6yfeUjtwm8KmbBdcgv0ZoY2hfbP9o42z/qO8cNKEOOG3YDLyrmwTEb4R8AH/ZRko3SZV8ce7OAx3sGb6D2oK7fHIDrXR7a6h7Rmz201f3GzEuSuG1S2aLJpon5BsYFbIuqnxA+RFaqn4YIHmVT1HZ3UxmO72zXqNt4L/1HHeM2tgPHbbbdGwSvGA9M196/unIFnwbb/Z+zPFfgy7fHXMEkP3k+ts5cAa7b+PYh1pErYP1U62/b4DffuIv7ffcG5Ap8utdUroD9xmzKFfzdHMgV/AR829/XlCv4bswVTJTNVK7gh55cAfqjpnMFT8galJcr+LeacgVHnjNZ7+eeXEFZvxFzBTFXsB959nmw5grQRzSdKzAf4fOR2wTevFzBbk+ugO1/NuUKloIPO45kE3MFbpuMuYJitltHroD1s65cwb959hXwnThqPVStW6o7Tvgcu8nupRmjab/z3cE7gE+jh/darXHgPBlwhtxZ+XbRBoPP2zvnu2d9p6feDsA7X9Baal9+6X8Mn+nUPEGL968Z7EqQ05oLNS8t5ifnaXCv99IW4UuSJGiv8BzZ631MHXu91f7Rtdlnakfnkx9RNob5Qn6/sMG/GsbOVzhwJom2W/ZNeOYP+fnIc7vxNnW/lbJd397IbVSGfXI18YD3RfcKeL7L0eB/A2zzzMbv92z9QI27ONfkcde3tzR9uC98+zNRJkPJ1PFqB+FS+qXiYdYb152xho/34m6APuC5/Taoz/sBry7I+zWCd7Zjtg2246sF3irvmDo3+2S73+IZW1UO1De2+vaxIz/KPvkOKay3Pfuu7MXgmrgnCtvD9lK37+J3TCl9trLtUGY0le+9GnjfS753u+AH+5b1C3H1Cj5ekX1vE/w1Hv3KG1eK3nNq/BS9K3Jb9l3pl8FV1K/DZvpMiPWtms9cTWXboIzPEqn3zKS8X0n6pcZJrGvviuJx8naPvlzvaWP6FB2j+D4BjL94jo31WJfUPnPjwZePTb+/luQwsXcrMF6oaV3w1KI5M8ydhOQ0fOuIKJMhgud+wf8Rl5ors970J7oPDF+b4N/viRdC9xWE8K78rrI3tKmjMntT83yOWXd6aHJdHHv6HfCu+eeHhbzYn7nOqbyScBr8Qx5/oMbUd8JvRe+x5PylunNBzR/QRxpuxlnRPk8ren7G19b0KXq2jMcP3/2nvvMzefkan/6jDs0j/cfx/B1E0xfHcl2k49J/w8e6+jmP/ufNyy8gnAb/hYK5L5/+58UIvhjJd3bZd6a2pvh8xUzH56z/vvgc/S/7VhXzhuo/6tC/HtuNF/ecKJ3N0oFT7pj7m4L6tR1+KxuDKh3y+d5tVKZiV+5H1zjD8xSD/4fAeMv4qqjPh8+0P+fzkCq+9flP3/lr5T/VeMn+8weB+RnOLV1dkPdQe0Ob+nZmb6aD2wGOx5urPTS5Ltq1a7wxfDw2/Mwz3mwH3jkfpMYbg/9Fwfm6b7zJm69zPgjlwmMR8r4t+67s0+Aq2ucRyj6x/WyfvramT9FcGY836A+3U9k2KONYZrugE6r/qENfzPS/mlyvXN8CXgx3r4Bs06fBHJb1yQDQt892AB9f/+Mff/Ujq19wKe8NTB/rowUV8B/1idEvvfwb//SNpvBf/4L2kpsuWnNmU/i/NO+RH33+4Uv2NIX/O/PPX9Hz0LuPaQr/XT8690U7nvi0f24K/+3/Y9mZ/3zB/z06D//i7Hs/lPdSnXnZZxvK+gW+NsE/O7OB1HaOpVilT9BLfzvBA9dyfCqekR/7bUDA9wp4o71AwFvZQihDH4swKC/ENQDlCH981nbrk/lQx+oPCfrzib7iG3/rIfiFAn6hgE/b+R/Ir2HbC4xbLaPdT/XxN6Rt69PpMy+Zyi/2o/Fkcp0v4K0MdYL1ZQH83itwzaN6Bn8G9SO2x+oPCfooi8TBN/7G/aj0e0DAp/I5ac0kz2V9zNu+sOV9v1jyH/+hKR/2n1/03BMXvfYZ25rCv+iPP3be3/7ksmfk4U/7eRHFWKhvRf0S71dCXBcn3XTago7t9yhpe78M4RPxDxAvZWwd8Rk9bh/fA90veBmisvTh97H0CzrKp0RcEVfEFXFFXBFXxDW3cY1EXAcFrkNBv6INxX6MfiLa41zFFfUr6uqhqKsxnojyim2Msp+ruKKuRp04FOUV9Sv2YxzTYhunk6+oX9GvRh8ddSIPV/Q50X9Fe4x+YjpxRV2NNhT1K+p9xBXtMeI6NPUr6n1sY2xj9Dl5uKK8Yj9G/Yo6MVdxxfEx2nb0ORHXdOI6FPQ+2lCUffTRUfZzFVfU1agTUfZR9nm4DoU2RnlFG4q4Dm6dqHhn2C/mE+6C9X9ud3r1wI9rs8+Up9ecN4k3/ZsHZb1UF9vRJvjnXThZ73UZzsUEY7wn4n+mnz4XE6zdwddTAG8f1U0fe7fMoKDZyj7nU72Ccg++683wDyS6TUuToGfirje+u5DbZ31pbR8QvAxRWfqwbQwIOurOw4irOq7hWYortvHgkNehwFfEdXDYY/QTEVfU1ejvp5Ov2I+xjVG/4tgxV/mKOhHlFfUr9mPEFW0o6sShKfvoV6MNRXlFXHm4DgX/FWUffXTU1WhD04kr+omoq9Eeo35FXNEXxjbGNkYbmru4orxiP0b9ijoxV3HF8THadvQ5Edd04joU9D7aUJR99NFR9nMVV9TVqBNR9lH2ebgOhTZGeUUbiriiTkRcEVfEFXFFXBFXxBVx+XBVvDPsqDbUSZ8/ueDAZ3qH2cUXTAIi/R5ogz2/nn0OirKW4zMBuvgbtxvLLs4+7Z63BVAf7zHDMqPDvzEdrL+A2tML9dZmn6mMfvMCTRPvssM28l12Bv9hkPumC7rb2EftQr7qkLP93g+/M90+gp1HsHhX4ADx2E911Wcej0OCDt+ht8DD/wDhaYl6g4luq/oM5bdP8Ou7A7AsHcT1BqLj0t1tpLsDUKZ013xMm+B3ge7uIN3F+qy7qH/DVNaGer3A1yMOe0O43xC/GfxCKmOfcA7BD2b/9wMuhLG6bYJ/d8Zn2i+Hr+lu24Cgl7btpgBfMgC0FxJtg/9P0B83U38soPZhGcqGbWAQeEHY9LnYIYO9wMcdF7hpsV2oNqY43nOBhkMeEI5xmF9AGfj8gtVbLPjK8z0DHhpqnFE02B+jzAaBvunGopzyQdG2RPzWI+AXONqbCNoLc/AOCDzKvy+ksj5Rxr4L24t+z+yMfSL7vW0ee3HZhNKrBR7eB4l3FacMeHhX8kP/4bN1+39hAO8uH8v9xD6WfSbDWF32Fx8TPpNxoi9UfcM4/xvgfBLhNJ1NAKe6t9bgFwt41Hu2ZeznxVQPeUdb5d98PisRPKTPxYIn1/+DAo+Lh4UCj/KbIfodapuo37/p8f8tx2eShMVPaiyZLXOML9Y0xzgS7sv+smeO0UT8br/zvME3x+D5JsseeWwillY65ptjtAhPv6jX5PxY9V0Tc5n0CZ1jfKemOcb3IZb8R9JdbE8/8YX6N0JlOMdoAV+PkJ9B/D0O/IhvQTLVVrGds2F+8sMS85Mf1zQ/ORz80E88MYv1pZozsP2UmZ8kwMfPPfMT0/u8+UnPhRoOeUA4xhEyP1HxsZo7sN0XmZ/0iXq+OdChND+ZJ+r55o7s97C9ZeYn3ykQ4xeZn7REPbZz5L3M/OTHHt55nJ2N85NjMrutc37yVMB5sMxPWA9nw/xkwIHTpd9l5idfJP32vSvG914ZjnMZD+s364G1FfUbYVi/Df6FHv1WcRvy1efAebxHv5Xc2/Abt2uhgFdzMzVWLaR6rhiff/PNPRLBQ/pcLHhy/a98pYuH+QKP6XevAyfTZH1IH9bvHkEH39uE+O0z7belif/Z9Xe//Nq7f/vI7y+h+tbG9FmQ0Vy0ZrIM29efdPcB8qvi9V7AW5bvk+674vrBF33oD/L4Lov/Awu/fNof3jf/N5rC/9Kn3/TEoz73lsGm8Pe1j9q79ENrz8nD/8zs++Vjm7eMDm/YNDx65ei6rWMbNm8aXjey7k2jw5u3jKzbODp8xZaRyy4b3XJCBj6fUFm3Lk2CnhaaTfH627teb1W8fmtiib5dqn7yiYqvc5tw92dAfeTF8PYSHNdJy1X6wmCMz5L9tKJiOz9u9Uu+zqzX2qVewedbxsUhq+X4NFxcZrQGkko60vLxroZUNZ3kVFbZVxEirib7BGWFfWIwVtZDZVivn8pUOnIe8OtL+6hU2C8Bx7Hw/bnZd5NPOd/UqmpzyWGJezhtAb/29NJn+mB6JH3mC3grw1AL+yF9MFXVK3DNo3oG/5zs06YwqCv4ekGmj/qaOPjG31guAwJebd9K5fM04NlCnOMAn0vHewQ+lbLvB34r2FuP8dIWvKitN2lY/aTs+2VbNrx1ZGz0FenoftamFTa2n54O7UyIp0MtaKNrfML2KBy9UF89qdwxvYz1liYhz1UTuHFLSq+AbNOnwbwk+ywban39j3/81Y+sfsGleaGW+ZdNm8c2vPGq4dFNb9k6unV0/fBlWy/euGHd8Bu3blqXxV0bN1q8dVRWZ2bjrW1nVou3kjMrxhHtiq+/lfGWslXTiZVQdyXRNJhVALMKYNLHF5OpZZAVVNYr6KvYxuimtr8Evh+Wfa82lk32WxNjmfncx2f/p37LpiOZ3zp3v6msyCzl/P2GsjKzk9MfMxMmx2Ffi/7nlU92V22Bhx+sh8NkNTd25ZlV3divZp9NuzHrosyNrdsy+lhHrR/etHXjxg1v3DC6hWaMT8jAZ9iDrajowVZUtITW/GSq6lT1YMxL+vg8z7xkMurbn9DJvlf0Eiumw0s8Lvs/9RJPzr53eYnTDyjiuaaHTIR9QUv8bgQr2vKKqrZsLrFpW35q9p1tefMYJ35ekEHOsBmvrmjGqysGEv0Vg3lpxiqIN004C+qeRTTLBhkVXdHKqhMa3x6mimdnepVVqySP4R9IKunDRJKHJ6rcPk54sOyxrC34VMkQk//+dRyA477l/TcY3ZxJZTixOwvwPxO+Pyv7XnHYWB0TJUnyjOxzNidKjgGebTh+LuBjXVfrtYYvHb6fmH2Xw/djQ09CDycbeCTvcfDC0T7PDvoE/sRDi3EiXNrWGiKH1VUjh+dnn01HDibjLSOb1m++9GAL8kt6tMqpXxUdKO/mCuQHPfUr8nZGxaihdZiDfvqoIN9i4McSlhs3jF21anTswv26tnLD6Mb17AJQSL7nUArubUhZP7pu86WXbb58dPhNGzaNHZ39OsOmuqqiqa46WObji+H7ENRJnxWAr0VlKwXdim1aUXFVvOewZCp9DHjSNtrg3ytgUZdwU5OSayJ+ayVul8muPYF2Hf785K+O+d8vuurYJ7x483lvveZ/v/ID7zji/mf/49ATv7/1ZW/96Tc2c1t6PLxX2aBe0TOtquqZLK/StGeydm4cO+CTcOUVYeeqTyppfz0V7U/6JGWLZRMHef4KfVJNYcfK6Qg7nooVkkk52cEFZcttgn0y1Dk8+15x1atfJUrs4UNWygfNF3y3BC7lU3GnxbMAL8MxP64dIC5dTOkszb6r8DtJwvta0WkJOnmbEmfaD1uypWk/rHTfeKiyqdP8whvTUH144+jllw+PvWlk05HZz9HNRzdPz7S4+cOxQlKPqs+0q7BwerryPcPDl79ly9iR2egww5Z8dkVLPnu2TCLPhPqhk0irw9Z6BNRJH1w1alHZakG3YpvOanISaf19ejncE/qG26mXJmGP1V1RvG6f1V0p6j7nZQOPPnjDO65NvvW+R2761+d84pRlS44+dcnz/ud7vnrUpi2vP/JRq4tbjAq0+UkTpzcym1VbjFqOzyTp7gd7WFfaol05T0udkmkTXgycC+BO1CpvEd44uEYcFVcofxkiY8Q/QLwU1fkW4TN63D4e8QYEL+rkHm9RL3uDYsQVcUVcEVfEFXFFXHMLV3/EdVDgOhT0K9pQ7MfoJ6I9zlVcUb+irh6KuhrjiSiv2MYo+7mKK+pq1IlDUV5Rv2I/Hoq4og1FnTgUZR/9arShKK+IKw9XnFvFNkYfHXV1ruKK+hX5iriiPU5nGyOu6HPiOBTbGNsYfU6UV+zHqF9zF1fMdcQ2Rp8T/UTEFfU+2lCUfbShiGs262qMJ6JORNlH2U8nrjgORXlFG4q48nDNdp2oeGfYRP2BcvV/YfUXlKv/c3VxubUlbeNTeiZ/T/8WQlmvqGvtaBP8T9qT9X4tq7CYYIz3RPzfErD81he7+7CnAN4+qps+fJPqQqqbPvOpXkG5B98Vh28oUm1amgQ9E3fFDRI9bp/1pbV9keBlSJSxbS0SdBYJOhFXdVx9sxRXbOPBIa9Dga+I6+Cwx+gnIq6oq9HfTydfsR9jG6N+xbFjrvIVdSLKK+pX7MeIK9pQ1IlDU/bRr0YbivKKuPJwxblVbGP00VFX5yquqF+Rr4gr2uN0tjHiij4njkOxjbGN0edEecV+jPo1d3HFXEdsY/Q50U9EXFHvow1F2Ucbirhms67GeCLqRJR9lP104orjUJRXtKGIKw9X1ImIK+KKuCKuiCviirgOdlwV7ww7qg110udmuFPtuXAZGtLvgTbYsyL7HBRlLcdnAnTxN2431jOW7J63xVCG95hhmdHh35gO1l9M7UE+8S67F7U1zT6giXX5LjuDfxvI/SXt7jZyHIp81SFn5q1H0O0n2AUEi3cNLiIeB6iu+szjcUjQWUB4F3r4X0R4WqLeYKLbqj5D+e0X/A4mmn/1GUoHca0kOi7dXU26i2VKd83HtAn+AtDdNaS7WJ91twfK+qhsHpT1Al8PEc/qPsZV4jf2uS1oI95VeDrBm332Ay6Esbpsz6/O+EzbcXhfd9vmC3opyGsdbcP+wDtBFxFtg38r9MfrqT/YR2KZmvsmyVS/xrBthwzWAR9r225abBeqjSmO0bYbri3gGEePkIHhUH7B6i0W9PJ8z3wPjQWinqLB/hhlpsa2oZzyxaJtifitJ3GPra7/hxy4Fd75Ao/y7+yzlT9n34Xt7YXfzM5CfaKyF5dNKL1a6OF9MfG+UPA+38O7kh/6j8UOOsj7EPG+2MMf/m/88d3ACP+47P/+RI8jVrdN8FcLn8k40RciXwMOnNcCzicQziXJ5KPGgh5q12ECfgnAGD+LiQesq3h/XNL94G+qf9i+lhCfbcGT6//HCTwuHpR/UX7zccSP8kWhtonjzovI//cRv+ozScLiJ5yb8RwDfQ2Pn0XncFif42SXT9rb1jRD5xgG/20Yj+8hX6HuIa9Tzva7b97A8wQeU9HntIjHJmJp9gdqLBsQPCmd4r5uEV71GcpvS/Db5NwrfULnGB+saY7xMdDdPyDdxfaw7qIP76cynGO0gK+HyM8g/h4PfsO3AOrN1vnJH5aYn3yypvnJN6Ev/7sn3rK+VH6Y7afM/ORPgY8/8cxPTO/z5idfCJyffKHC/ET5FN/cIUm0L/XNTwZEPd8c6FCanywQ9XxzR/Z72N4y85MPBszn7f8i85OWqMd2jryXmZ980mNjfTm8IyzLVvlM3/zEdCF0fmLw3/PMT4agnb2J24cwzv/jmZ/gvCBkfqLmMxiLs79Am1hC9ZD3oaT7wd9U/7Ae8nygLXhy/T8k8Lh4UP5D+c0h4kfF8KG2if5/r8c2e4l333tl2KYZD+t3j6M9qN8Iw/pt8L/w6LeacyBfrjlHq28SJ+u3GgPmwW/criEBr8YA5V+GqJ6ahyXiN9U/Lj+r9DtvXHKNmYqHQYHH9LvXgdPlv3FexvrdI+ikXWfvbTL/ju0MX3O88uwW8GK4ewVkmz4N5rBMjzBOsc92AB9f/+Mff/Ujq19w6RKqnz7W9gUV8B/1idEvvfwb//SNpvB/Z/75K3oeevcxefjNX14yOja8ZWTT+s2XDl981djo5fuy3+dTnWL9mLRwnC9ef9sb5jPCQvWTN9jadzn6k2vnJds/MZ88A+ojL4Y39WmHwfcjCB5tsTeZ6mN6iN/ecvyeYfXL2W1y5CDwmBDvOG9H3FimcmypPC7PvlfsjzMqyufIwxz0jbf0Ob0c7lZqj2lb3wH41Ni9NAl7OBYxHIi7ZD//KuqwPZwfQvwDSSW5t3jcNHrcPraDvnL0jmxRfaSndJT3BbBsMW7pd+Cyum2Cf1r2qdaJWDf6Bb/4m8GndI8m3vm9hurT8PJvnAd02bhLH4vSqdi/S1VMxHlBtcfD6M4rR/cpoXZj+AeSqX1exm7mET2XXlR8r+jSFtVHeojT+OEcNMs2/bO5SL8DF88rDP747FPlrNhuQt/JmurIC4h3Xr9Qn4aXf2O7Ubno+UklHaiqs0dW04mWfNdsElw/aakcu8ki7Y9T4Hcu6xV1TQ5tgl8B9WwMV+sH5tsWJHr/HeeScC7dK+D7iB+DPwv4eV32veJ7dxeqd8smgIufXgFjtFM5XpN9HxRwCZRxmw1+PvFTUDe8a3sV970G+2p+V27JvvG+Kxfbx756UTl6Sx+XTK5DYd+gnaPs1Bq38lsLqEzlyVCnfTa0OJkqU/bdao3JZ18GP5x9pnq8i3CG9oHBq/wgyq6f2qNyS6qtGF8a7oTgquVakl9N238D0OH2h+xJR3iWjcrhqVzwEMErPcM2DhKOBYIOxjinE7zh7k+03nAO1OA3Z5+p3O4j/lT/tAQvag7PObaQ8c74QLz4aXUMb/rMF/Dow+xBWSfJ1HGMcc2jegb/9uwT16ETqj8k6GNfJA6+8bcegh8Q8K6Y7q3Ac8Xc5RtaRLNo7nIH8cqxx9LE/4TmLjHXkOr247PvW8c2bNwwdtWq0bEL92cEV24Y3bgekbBy+p7pSGIqxeKBGpWzV8D3QDnC35R9pp24J/vOySqkl/72Xg9cy/GpeEZ+fErdK+CN9gIBb2UYBKKTRxiUF+LCSRfC35N9Wp+ggWJgwPQ5Uaz4dg3AjKtX/IbGfnv2fQB+M1xFA7b0UYGL0q0qtvCleY/86PMPX7Jnjif011VM6K+LCf1pTegfc5An9I+JCf39z9KQ8Qjxz7GE/jEtqo/0YkJ/6m8xoR/0xIQ+8RMT+t08zsKE/jExoa/HtJjQjwl9xB8T+t28xoT+JMwsTugvjQn9mNCPCf1Jnism9Ne1iGZM6CflGhIT+jGhnyQxoZ8+oQn9w7PvaUL/8tFN60e3DL9x85bhsZFLLv+VrGiGc/orK+b0V86lnP4i+I4XwLnqW9kKgW+Gc/s9hyVT6eNYn7bR1DM1PdO3y7ZseOvI2Ohj48kr9ivkys1bXvmYOnLahEcYK1fpFddTw/C9surw/YTss+nh+1ez76mlbxq9cmx45LLLUjsfHrk8s/wjM4gZNvhVFQ1+VUXF76mo+NLglRFw4I51VLLQjBydQ/p9COqkz0qghcFwBSc24UTLLsj4FsLMGdhYlDqDJ2XfJ53BuY/p7KmXXfaYKzj18gOOgT2AioeSZKpHCPEc+KgJFvI+P/te0oOsqupBnph9Nu1Bnpl9v3xs85bR4Q2bhkevHF33WPS/edPwupF1bxod3rxlZN3G0eErtjzmWka3nJCBzydU0+xOVs9nhIXqJ6tN9Uu6g36rXzJslO4EeTG8vQTHddJyn8up6CJWVGxn2+qXXHfotXapvAnyxGtJZdcxkdZAUklHWj7ekT9e/1F5Sx+u/oK4muwTlBX2icFYmW8/SD+V9Yk2zAN+1QFzHo7R9Z4FOI6F78/Nvpt8yvmmSd9Sdm5xWOKeT7SAX3tmY77vOdnnbM73PQ14tnDlOMDn0vEegc/y9movR0V76zFe1L4XlJfhF6HWK9LR/axNK2xsPz0d2pkQ6g/qX0/iHp+wPQpHL9RXTw2h1uqqodZLss+mQy3ba7NuZOPG4axjht+4ddO6/dHWhk1jo1s2jWxclkHNcIR1TsUI6xzT+pI7FvoqWs2UFX2XtZgWrIS6K4mmwZwJMGc6YM4CmLMAJn1UpLaCynoEH2oUW0VlbcGbumoTR7/Hw/cnQp30WQ28t6jsbCirKTNVNSL3ZqZMl08vh3vCls4oyZuNLjbZanB3WS/a+8SP9Bvin+7dZenoZGmrzAme/phDPP/A15WZO0ROEXuPaEmrm6OuMT5xwLGlsXWxRaEVIV5Xff6N+VV7udU6tdp71EP1egk30uaYhfnsTfyxJpb35vB8BvHsSgtVHO/PqTreW5zf9HhvdDduHlk/S0b1FRVH9RUV5zatiqOEzJsoPfPlRDAtOYPnLFZUHPEKz6t7qcx1zsLmDnXljsr2dUh6mUfUOvbhDiTVdNznL9XcMR0Rn5x9z0bEcx5zGSu3bL60e8LGg4gacLBcckfflXDSR+XH0bnZ77M9EfGM7HM2JyKOAZ4rDo4r5srgaCHg+g1bRh+L+N46un8CfMnoluG3bN08tmF005hJYj7UMoxFgm+rv7Bc/S6NSYgXxDtBMPtsi3otx/8h69wuS8XfBkWZ4bSjhcivtcOOgGJvvHV0y5hpgcnw8UCvTNhyRLn6sg8eD98NL4dXSQEa9qDl8MN9y56Aw7MC9FsuPlR/W18eAb89nsom+3Js8/CWkfUbrlxCXJZdvLL6ZaeMVr/sFFdpA45DvHjGYx7SNF4GyvGywDcOqrdkMIzyErxm3abfewNgldZYmRrvQvYYqvFReRyWO+qbwsVjN+tH1T46TNA03v4/67bMWRgiGAA=", + "custom_attributes": [ + "external", + "private" + ], + "debug_symbols": "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r5Knv0qeXjR5etGkwW1wG9wGt8F9+quks97OejvrxVd53g8mz/vB5OlFk+f9YOjbk8AN3MDFV/TtoW8PfXvo25PADdcXX9G3h749GXAHXHxF3x769tC3h7499O2hb08m3Mn1xVf07aFvTybcCRdf0beHvj307aFvD3176Nt/z3CL64uv6NtD354suAsuvqJvD3176NtD3x769tC3Jxvu5vriK/r20LcnG+6Gi6/o20PfHvr20LeHvj307cmBe7i++Iq+PfTtydMzZDw9Q+jbQ98e+vbQt4e+PfTtoW/PeHqGjKe/Cn176NtD357R4Da4+Iq+PfTtoW8PfXvo20PfnsH91eD+ir499O2hb8/g/mpwf0XfHvr20LeHvj307aFvD317RuA+/VXo20PfHvr2jAF3wMVX9O2hbw99e+jbQ98e+vaMCXdyffEVfXvo2zMm3AkXX9G3h7499O2hbw99e+jbMwpucX3xFX176NszCu6Ci6/o20PfHvr20LeHvj307RkL7uL64iv69tC3Z2y4Gy6+om8PfXvo20PfHvr20LdnHLiH64uv6NtD355x4B64+Iq+PfTtoW8PfXvo20Pfnvn0V5lPfxX69tC3h749s8FtcPEVfXvo20PfHvr20LeHvj2zw336q9C3h7499O2ZPA9Ongfp20PfHvr20LeHvj307aFvzwzcpxcNfXvo20Pfnsnz4Bxw8RV9e+jbQ98e+vbQt4e+PXPAHVxffEXfHvr2TJ4H54SLr+jbQ98e+vbQt4e+PfTtmQW3uL74ir499O2ZPA/Ogouv6NtD3x769tC3h7499O2ZC+7i+uIr+vbQt2fyPDg3XHxF3x769tC3h7499O2hb888cA/XF1/Rt4e+PZPnwXng4iv69tC3h7499O2hbw99e+rpRVNPLxr69tC3h749xfNgNbj4ir499O2hbw99e+jbQ9+eanCfXjT07aFvD317iudB+vYU91fF/RV9e4rnwepwOb+ibw99e+jbU9xf1dOLpp5eNPX0oqmnF009vWjq6UVTTy+aenrR1NOLpp5eNPX0oqkBd8AdcAfcCXfCnXAn3Al3wp1wJ9wJd8ItuAW34BbcgltwC27BLbgFl/P24v1gcd5evB8s3g8W5+3F+8Hi/WBx3l5PL5racDlvL87ba8PdcDfcDZf3g7XhbrgH7mG9h/XyfrB4P1i8H6wD98B9+qvU019lPb1oFu8HFz3DevqrrKe/ynp60aynF83i/eDi/eDi/eCiZ1j0DOvpr7Ke/irr6UWzeD+46BnW019lPf1V1tOLZj29aBbvBxfvBxfvBxc9w6JnWE9/ldVZb2e9vB9c9Azr6a+ywj6HfQ77zPvBxfvBxfvBRc+w6BnWYJ8H6x2sl/eDi55hDa7vYJ8H+zzYZ94PLt4PLt4PLnqGRc+wJvs8We9kvbwfXPQMa3J9i30u9rnYZ94PLt4PLt4PLnqGRc+win0u1rtYL+8H6duzeD+4eD+4FvvM+0H69ix6hsX7wcX7Qfr20LeHvj307aFvz6JnWJvri6/o20PfnkXPsOgZ6NtD3x769tC3h7499O2hb8+mZ9j0V/TtoW8PfXs2PcOmZ6BvD3176NtD3x769tC3h749m55h01/Rt4e+PfTt2fQMm56Bvj307aFvD3176NtD3x769mx6hk1/Rd8e+vbQt2fTM2x6Bvr20LeHvj307aFvD3176Nuz6Rk2/RV9e+jbQ9+eTc+w6Rno20PfHvr20LeHvj307aFvz6Zn2PRX9O2hbw99ezY9w6ZnoG8PfXvo20PfHvr20LeHvj2b+6vN/RV9e+jbQ9+ezf3V5v6Kvj307aFvD3176NtD3x769mz6q01/Rd8e+vbQt2fTX236K/r20LeHvj307aFvD3176Nuz6a82/RV9e+jbQ9+eQ3916K/o20PfHvr20LeHvj307aFvz6G/OvRX9O2hbw99ew791aG/om8PfXvo20PfHvr20LeHvj2H/urQX9G3h7499O059FeH/oq+PfTtoW8PfXvo20PfHvr2HPqrQ39F3x769tC359BfHfor+vbQt4e+PfTtoW8PfXvo23Porw79FX176NtD355Df3Xor+jbQ98e+vbQt4e+PfTtoW/Pob869Ff07aFvD317Ds+Dh+dB+vbQt4e+PfTtoW8PfXvo23PoRQ+9KH176NtD357D8+ChF6VvD3176NtD3x769tC3h749h1700IvSt4e+fdC3j9fzPDheTy866NsHffugbx/07YO+fdC3D/r28Wpwn1500LcP+vZB3z5eDW6D2+A2uA3u46tB3z7o2wd9+3h1uE8vOujbB337oG8frw43cAM3cAM37HNYb1hvWG/ghus72OfBPg/2ecAdcAfcAXfAHezzYL2T9U7WO+FOru9knyf7PNnnCXfCnXALbsEt9rlYb7HeYr0Ft7i+xT4X+7zY5wV3sd7FehfrXXAX3AV3wV2sd7PeDXez3qcXHZ++/efPMx+fvn2/P+dyf/485/Hp2z/zZj7P/PbVZ27MnTnMg3kywz1wD9zzcD99+2duzJ05zIN5MhfzYt7McBvcBvftq58/1318+vbPPJgnczEv5s18nvntq8/cmOF2uB1uh9vhdrgdbocbuIEbuIEbuIEbuIEbuIE74A64A+6AO+AOuAPugDvgDrgT7oQ74U64E+6EO+FOuBPuhFtwC27BLbgFt+AW3IJbcAvugrvgLrgL7oK74C64C+6Cu+BuuBvuhrvhbrgb7oa74W64G+6Be+AeuAfugXvgHrgH7oF7Hu6nb//Mjbkzh3kwT+ZiXsybGW6D2+Diq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4Kvgq+Cr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr4auCrga8Gvhr46tO3//xdS+Pdt6+fv2tpvPv29Xp/zrzzuHMx/3BXe8+b+Ye7fv5+lvHu279zY+53rjtfbr/fw/XVd77cfu5czJeb+71dX630v/76m//193/509//w5//6X/+zX/5P7//73//93/+x3/707/88+f//tv//tfvP/mHv/zpz3/+0//4u3/9y7/84z/9t3//yz/93Z//5R9//tnfvH7+5+eXxn9t9au3v/39ye3z8f/683eMnl8/f6Po+dvfp7Dvj6zXz0f26/dH2ueT+vz5UO6H2vtDe9zPqp+v13++3s+/nf5r9O+/N9uvef9x/vgOevvV74fGf/ym5veL/N6o7O8XGePXOD//uP7jv7Gerzt+9ftZ+48PZfzK/dB5/sXzq4+7fvbk9x3Lr9//s/9Y2u9bj1+/jxreG/XsVPav3w/M311qvzekzz926Pc1/30i8ceXmL+/Qr2/QP///QLP5rX1q/f7sfGfLGn+v69Be/Yv59d4/zvrP93yzz//61//9q//Fw==", + "is_unconstrained": false, + "name": "commit_private_user", + "verification_key": "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" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "285656119219400463": { - "error_kind": "string", - "string": "Field failed to decompose into specified 32 limbs" - }, - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3738765135689704617": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] - }, - "4456244908619624852": { + "14427754132438837229": { "error_kind": "string", - "string": "Preimage mismatch" + "string": "Function commit_public_user can only be called internally" }, - "5019202896831570965": { + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" - }, - "6418028854678020178": { - "error_kind": "string", - "string": "FundsNotSent" - }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "10090043878309646342": { - "error_kind": "fmtstring", - "length": 101, - "item_types": [] - }, - "10676044680617262041": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] - }, - "11732781666457836689": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "13649294680379557736": { + "15764276373176857197": { "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14101993474458164081": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "string": "Stack too deep" }, - "14225679739041873922": { + "16431471497789672479": { "error_kind": "string", "string": "Index out of bounds" }, - "14657895983200220173": { - "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" - }, - "15200354114977654233": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "15760694058516861966": { - "error_kind": "fmtstring", - "length": 128, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" - }, - "16446004518090376065": { - "error_kind": "string", - "string": "Input length must be a multiple of 32" - }, - "16954218183513903507": { - "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "1998584279744703196": { + "error_kind": "string", + "string": "attempt to subtract with overflow" }, - "17610130137239148460": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] + "2360858009427093503": { + "error_kind": "string", + "string": "InvalidTimelock" }, - "17843811134343075018": { + "459713770342432051": { "error_kind": "string", - "string": "Stack too deep" + "string": "Not initialized" + }, + "4736483829072576196": { + "error_kind": "string", + "string": "HTLCAlreadyExists" } - } - }, - "bytecode": "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", - "debug_symbols": "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6DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbT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cy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWjKeZnFzpkbzD5qbM7Xnoms3LTFzpvZ8peimJWbO1J4ryt205PmxQzctMbO4Wd1sbnY3Z2o8TXZT3Bxu6jJNS8wsblY3m5vdTU9NPDXx1MRTE09teGrDUxue2vDUhqc2PLXhqQ1PbXhqw1NTT009NfXU1FNTT009NfXU1FNTT01XanQcbhY3q5vNze4mucluipvDTU+teGrFUyueWvHUiqdWPLXiqRVPrXhqxVOrnlr11KqnVj216qlVT616atVTq55a9dSap9Y8teapNU+teWrNU2ueWvPUmqfWPLXuqXVPrXtq3VPrnlr31Lqn1j217ql1T408NfLUyFMjT408NfLUyFMjT408NfLU2FNjT409NfbU2FNzLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci0h1xJyLSHXEnItIdcSci1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHXEnYtYdcSdi1h1xJ2LWHX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4nxVnK+K81VxvirOV8X5auOrja82vtr4auOrja82vtr4auOr/brz7vYiN3In33l3Cxkuvtr4auOrzflqc77anK8256vN+Wpzvtr4auOrja82vtqdeQfzDuYdzDuYdzAvvtr4auOrja82vtr4auOrja8294Ob+8HN/eDmfnBzvtq5r+cd5p3MO5l33tfznsyLrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNrza+2vhq46uNr/a+v48294Ob+8HN/eDe9/fR5n5wc77anK8256vN+Wpzvtr4auOrja82vtr4ap+7zuf1IjdyJ9/X1XmFfLkHXx18dfDV4Xx1OF8dzleH89XhfHW4HzzcDx7uB08r8l3n0+558uCrg68Ovjr46uCrg68Ovjr46vT7ej746uCrg6/OuO/fg68O56uDrw6+Ovjq4KuDrw6+OtwPHu4HD+erw/nqcD94uB88+OpwP3g4Xx3OV4fz1eF8dSZcPr86fH51+PzqzPs+Onx+dfDVwVcHXx18dfDVWXAXXHx18NVZcBevKz6/Onx+dfDVwVen4BbcgltwC27BxVcHXx18dfDVwVcHXx18dfDVwVcHXx18dThfncPr6sDlfvAcXleH1xW+Oof30fXVeF1fjdf11Xi9fnsfjdf11Xi9ws9M8iIXefN3z81vX408uZE7eZAf7phPnuSHOx7W21ff/yDUePfbf/K5+e2r9Cc38sPN85hvX31yyJP8cFNPLvLD/e55jne//ZPfvvrkhzuf5/z21Sc/3O/O53j323/yw/3ufI53v/0nP9z1fsxNPje/fbWex3/76pMfbj3P+e2rTw754dazX29fffLD3c9ze/vqkx/uedb57atPbuSHe541f/vqkx/ueZ7z21ef/HDP85zfvvrkb+7XJ65PPjc/vvrJ7cnPWj2++snf3NUe7uOrnzzJi1xPfl6Hj69+8rn58dVqz3N+fLXa8zwfX/3kh9ufdXh89ZMfbn+e2+Orn1zkh9uf197jq09+fLXe75HHVz+5kx/ueJ7b46uf/HDf753HVz/54b5fz4+vfvK5+fHV1yeWT27khzuf9X989ZNDfrjzmevx1U8u8sOdb9b5Lb/77V+fED65kTv54X53j8e73/6TH+53J3+8++0/ucibfG5+fPWTG7mTBzlk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Gr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq4avGr5q+Krhq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46vOr7q+Krjq46v3v32+v53W+a7317f/zbTfPfb6/vfRZrvfvvXtw9PfrhjPDnkh5t3XuSH+/1vrMx3v/0nn5vfvprPc3j7aj7P4e2rT36483nOb1998sNdz3N7+2q1v/363f//h7/+6R/+8c9//H+/+1///vW//+df/+kP//Knv/zT53//5d/++edP/vGvf/rzn//0f//+n//6lz/88X//61//+Pd//ssfvv/sd6/v/3y/5P+urV+9/f7rh9vn+t99vRXSvy5+Hft+/+t3431l5ftK5etK+/zQ1xp//bd//9D3G+b7Uj2X9uv78fr3433/7dF/pf/8va9Fmev7j8dvz6C3X/25lP/8pObPg/T9a+yfB0l+5Xz/8frPf6Pu43495een9r1Uv0b/vnTuXzy/ep75Xz8L8PU7+9fX767P8F8nll9fp4cf9tfh4et/98/QX7/Xvn72efqt/U8foN9nVb/680Tb+C+u5betGl8LPs9vm/LF/XoT/rYha3yt7Hz+yvzvd6PdlRznV94LUv/l4n/+/G9/+/3f/gM=", - "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" - }, - { - "name": "commit_public_user", - "is_unconstrained": true, - "custom_attributes": [ - "internal", - "public" - ], - "abi": { + }, "parameters": [ { "name": "src_asset", @@ -4154,8 +4502,6 @@ { "name": "src_receiver", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4163,7 +4509,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -4179,8 +4527,6 @@ { "name": "token", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4188,7 +4534,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -4202,93 +4550,83 @@ "visibility": "private" } ], - "return_type": null, + "return_type": null + }, + "bytecode": "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ASEAAAECAScCIwABLQ4jIS0IASUnAicEIQAIAScBJwMlBAEAIiUCJy0KJyktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgopACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspJwInBCEnAikEIC0KFTQjAAAWcgwqNCcqJAIAKgAAL5UjAAAWhC0LISoEKjIqIQAqDyEqLQgBDwAAAQIBLQ4jDy0IASEnAiwEIQAIASwBJwMhBAEAIiECLC0KLC0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgotACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstACItAi0tDgstLQoVJSMAABffDColJywkAgAsAAAvJSMAABfxLQsPJQQqMyUPACoqDyUcCjUPAC0IASoAAAECAS0OIyotCAEsJwItBCEACAEtAScDLAQBACIsAi0tCi0uLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4KLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4KLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4LLgAiLgIuLQ4L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", + "custom_attributes": [ + "internal", + "external", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "commit_public_user" + }, + { + "abi": { "error_types": { - "206160798890201757": { - "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." - }, - "516370165797458160": { - "error_kind": "string", - "string": "InvalidTimelock" - }, - "2920182694213909827": { + "14415304921900233953": { "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3559210201980528457": { - "error_kind": "string", - "string": "Function commit_public_user can only be called internally" + "string": "Initializer address is not the contract deployer" }, - "5019202896831570965": { + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "10870837545714573535": { - "error_kind": "string", - "string": "HTLCAlreadyExists" - }, - "13699457482007836410": { + "15764276373176857197": { "error_kind": "string", - "string": "Not initialized" + "string": "Stack too deep" }, - "14225679739041873922": { + "16431471497789672479": { "error_kind": "string", "string": "Index out of bounds" }, - "17843811134343075018": { + "9967937311635654895": { "error_kind": "string", - "string": "Stack too deep" + "string": "Initialization hash does not match" } - } + }, + "parameters": [], + "return_type": null }, - "bytecode": "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LQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLS0KFSUjAAAZnwwqJScsJAIALAAAMa0jAAAZsS0LDiUEKjMlDgAqKg4lHAo1DgAtCAEqAAABAgEtDiMqLQgBLCcCLQQhAAgBLQEnAywEAQAiLAItLQotLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OCi4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4AIi4CLi0OEy4tChUhIwAAGxEMKiEnLSQCAC0AADE9IwAAGyMtCyosBCoOLCoAKiUqDi0IASUAAAECAS0OIyUtCAEqJwIsBCEACAEsAScDKgQBACIqAiwtCiwtLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4KLQAiLQItLQ4KLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQItLQ4TLQAiLQIt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", - "debug_symbols": "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" - }, - { - "name": "constructor", - "is_unconstrained": true, + "bytecode": "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", "custom_attributes": [ - "public", - "initializer" + "external", + "initializer", + "public" ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "constructor" + }, + { "abi": { - "parameters": [], - "return_type": null, "error_types": { - "2233873454491509486": { + "13455385521185560676": { "error_kind": "string", - "string": "Initializer address is not the contract deployer" + "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "5019202896831570965": { + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "14225679739041873922": { + "15764276373176857197": { + "error_kind": "string", + "string": "Stack too deep" + }, + "16431471497789672479": { "error_kind": "string", "string": "Index out of bounds" }, - "17618083556256589634": { + "2907544755768338616": { "error_kind": "string", - "string": "Initialization hash does not match" + "string": "Function get_htlc_public can only be called statically" }, - "17843811134343075018": { + "459713770342432051": { "error_kind": "string", - "string": "Stack too deep" + "string": "Not initialized" } - } - }, - "bytecode": "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", - "debug_symbols": "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" - }, - { - "name": "get_htlc_public", - "is_unconstrained": true, - "custom_attributes": [ - "view", - "public" - ], - "abi": { + }, "parameters": [ { "name": "key", @@ -4300,14 +4638,10 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "Train::HTLC_Public", "fields": [ { "name": "src_receiver", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4315,7 +4649,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -4329,8 +4665,6 @@ { "name": "token", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4338,7 +4672,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -4405,47 +4741,197 @@ "width": 8 } } - ] + ], + "kind": "struct", + "path": "Train::HTLC_Public" }, "visibility": "public" - }, + } + }, + "bytecode": "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", + "custom_attributes": [ + "view", + "external", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "get_htlc_public" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "10791800398362570014": { + "error_kind": "string", + "string": "extend_from_bounded_vec out of bounds" + }, + "11021520179822076911": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "12469291177396340830": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "12913276134398371456": { + "error_kind": "string", + "string": "push out of bounds" + }, + "13450089406971132036": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 144 + }, + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "5019202896831570965": { + "14067204867181196045": { + "error_kind": "fmtstring", + "item_types": [], + "length": 75 + }, + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "9174444391250494040": { + "15764276373176857197": { "error_kind": "string", - "string": "Function get_htlc_public can only be called statically" + "string": "Stack too deep" }, - "13699457482007836410": { + "16431471497789672479": { "error_kind": "string", - "string": "Not initialized" + "string": "Index out of bounds" + }, + "16792019527863081935": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 77 + }, + "17154023812102399658": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 128 + }, + "17803644318014042523": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + } + ], + "length": 58 }, - "14225679739041873922": { + "1998584279744703196": { "error_kind": "string", - "string": "Index out of bounds" + "string": "attempt to subtract with overflow" + }, + "3080037330898348111": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 132 + }, + "344423948968719440": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ], + "length": 98 }, - "17843811134343075018": { + "361444214588792908": { "error_kind": "string", - "string": "Stack too deep" + "string": "attempt to multiply with overflow" + }, + "4261968856572588300": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "4440399188109668273": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "7564993426627941149": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 48 + }, + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 61 + }, + "8992688621799713766": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9791669845391776238": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "9885968605480832328": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 + }, + "992401946138144806": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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", - "debug_symbols": "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" - }, - { - "name": "is_contract_initialized", - "is_unconstrained": true, - "custom_attributes": [ - "utility" - ], - "abi": { + }, "parameters": [ { "name": "id", @@ -4460,208 +4946,225 @@ "kind": "boolean" }, "visibility": "public" - }, + } + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "utility" + ], + "debug_symbols": "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3QbdmCXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJdQmOMQo30YhOPMQg5sPKkouDOIl0S7ol3SpLxiw8xCDmxVlthI2DOImLuIlGdOIhBpFug26DboNug26DboNug26DboNug26TbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptum25GN6Ob0c3oZnSrLBm70ImHWG6nMB9WllwcxElcxE00ohMPkW5Ot0O3Q7dDt0O3Q7dDt0O3Q7dDt0O3oFvQLegWdAu6Bd2CbkG3oFvQLemWdEu6Jd2Sbkm3pFvSLemWz238fsRBnMRF3EQjOvEQg0i3QbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TTejm9HN6GZ0M7oZ3YxuRjdmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJYsZslilixmyWKWLGbJYpYsZslilixmyWKWLGbJYpYsZslilixmyWKWLGbJYpYsZslilixmyWKWLGZJdWKO792ks1oxG43oxEMMYj6sLLk4iJNIt0W3RbfKkjkKDzGI+bCy5OIgTuIibqIR6bbptum26WZ0M7oZ3YxuRjejm9HN6GZ0M7o53ZxuTjenm9PN6eZ0c7o53Zxuh26Hboduh26Hboduh26Hboduh25Bt6Bb0C3oFnQLugXdgm5Bt6Bb0i3plnRLuiXdkm5Jt6Rb0i2fW7V1Ng7iJC7iJhrRiYcYRLoNulWWzFU4iYtYbl5oRCceYhDzYWXJxUGcxEWk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26ab0c3oZnQzuhndjG5GN6Ob0c3o5nRzujndnG5ON6eb083p5nRzuh26Hboduh26Hboduh26Hboduh26Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3fG72+xEHcRIXcRON6MRDDCLdBt0G3QbdBt2YJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklziw5zJLDLDnMksMsOcySwyw5zBL0vc4sDGI+RJYAB3ESF3ETjehEug26DbpVlnzf+DHR93pxEhdxE43oxEMMYj5cdFt0W3RbdFt0W3RbdFt0W3SrLFnfx63oe704iJO4iJtoRCceYhDpZnQzuhndjG5GN6Ob0c3oZnQzujndnG5ON6eb083p5nRzujndnG6Hboduh26Hboduh26Hboduh26HbkG3oFvQLegWdAu6Bd2CbkG3oFvSLemWdEu6Jd2Sbkm3pFvSLZ8b+l4vDuIkLuImGtGJhxhEug26DboNug26DboNug26DboNug26TbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26Lbotui26LboxS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJeh7XbswiPkQWQIcxElcxE00ohPpNuk26bbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptulmdDO6Gd2MbkY3o5vRzehmdDO6Od2cbk43p5vTzenmdHO6Od2cboduh26Hboduh26Hboduh27IEi/Mh8gSYLlF4SQu4iYa0YmHGMR8iCwB0i3plnRLuiXdkm5Jt6RbtttC3+vFQZzERdxEIzrxEINIt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt003o5vRzehmdDO6Gd2MbkY3o5vRzenmdHO6Od2cbk43p5vTzenmdDt0O3Q7dDt0O3Q7dDt0O3Q7dDt0C7oF3YJuQbegW9At6BZ0C7oF3ZJuSbekW9It6ZZ0S7ol3ZJuzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzBL0vX7f6rvQ93pxEj+3vQo30YhOPMQg5sPKkouDOIl0c7ohS06hEw8xiPkQWQIcxElcxE2k26Hboduh26Fb0C3oFnQLugXdgm5Bt6Bb0C3olnRLuiXdkm5Jt6Rb0i3plnTL54a+14uDOImLuIlGdOIhBpFug26DboNug26DboNug26DbpUlNgvzYWXJxc/NVuEkLmKdk7vQiE48xCDmw8qSi4M4iYtIt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdNN6Ob0c3oZnQzuhndjG5GN6Ob0c3p5nRzujndnG5ON6eb083p5nQ7dDt0O3Q7dDt0O3Q7dDt0O3Q7dAu6Bd2CbkG3oFvQLegWdAu6Bd2Sbkm3pFvSLemWdEu6Jd2Sbvnc0Pd6cRAncRE30YhOPMQg0m3QbdBt0G3QbdANWTIKnXiIQcyHuC8BDuIkLuIm0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt083oZnQzuhndjG5GN6Ob0c3oZnRzujndnG5ON6eb083p5nRzujndDt0O3Q7dDt0O3Q7dDt0O3Q7dDt2CbkG3oFvQLegWdAu6Bd2CbkG3pFvSLemWdEu6Jd2Sbkm3pFs+N/S9XhzESVzETTTi52ZReIhB/Ny8/m1lycVB/Nx8FS7iJhrRiYcYxHxYWXJxEOk26TbpNuk26TbpNuk26bbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptulmdDO6Gd2MbkY3o5vRzehmdDO6Od2cbk43p5vTzenmdHO6Od2cboduh26Hboduh26Hboduh26HboduQbegW9At6BZ0C7oF3YJuQbegW9It6ZZ0S7ol3ZJuSbekW9Itnxv6Xi8O4iQu4iYa0YmHGES6DboN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", + "is_unconstrained": true, + "name": "is_contract_initialized" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "10791800398362570014": { "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." + "string": "extend_from_bounded_vec out of bounds" }, - "576755928210959028": { + "11021520179822076911": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "Attempted to delete past the length of a CapsuleArray" }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "12469291177396340830": { + "error_kind": "string", + "string": "call to assert_max_bit_size" }, - "2920182694213909827": { + "12913276134398371456": { "error_kind": "string", - "string": "attempt to subtract with overflow" + "string": "push out of bounds" }, - "3206131020419630384": { + "13450089406971132036": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 144 }, - "3305101268118424981": { + "13455385521185560676": { "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" + "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "3738765135689704617": { + "14067204867181196045": { "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] + "item_types": [], + "length": 75 }, - "5019202896831570965": { - "error_kind": "string", - "string": "attempt to add with overflow" + "14576755381182599325": { + "error_kind": "fmtstring", + "item_types": [], + "length": 24 }, - "5727012404371710682": { + "14990209321349310352": { "error_kind": "string", - "string": "push out of bounds" + "string": "attempt to add with overflow" }, - "6485997221020871071": { + "15764276373176857197": { "error_kind": "string", - "string": "call to assert_max_bit_size" + "string": "Stack too deep" }, - "7233212735005103307": { + "15835548349546956319": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "Field failed to decompose into specified 32 limbs" }, - "8270195893599566439": { + "16431471497789672479": { "error_kind": "string", - "string": "Invalid public keys hint for address" + "string": "Index out of bounds" }, - "10676044680617262041": { + "16792019527863081935": { "error_kind": "fmtstring", - "length": 98, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" } - ] + ], + "length": 77 }, - "11732781666457836689": { + "17154023812102399658": { "error_kind": "fmtstring", - "length": 77, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] - }, - "13649294680379557736": { - "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" + ], + "length": 128 }, - "14101993474458164081": { + "17803644318014042523": { "error_kind": "fmtstring", - "length": 61, "item_types": [ - { - "kind": "field" - }, { "kind": "field" } - ] - }, - "14225679739041873922": { - "error_kind": "string", - "string": "Index out of bounds" + ], + "length": 58 }, - "14657895983200220173": { + "1998584279744703196": { "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" + "string": "attempt to subtract with overflow" }, - "15200354114977654233": { + "3080037330898348111": { "error_kind": "fmtstring", - "length": 144, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 132 }, - "15760694058516861966": { + "3380315280177356474": { + "error_kind": "string", + "string": "FundsNotSent" + }, + "344423948968719440": { "error_kind": "fmtstring", - "length": 128, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" } - ] + ], + "length": 98 + }, + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" }, - "16218014537381711836": { + "4261968856572588300": { "error_kind": "string", "string": "Value does not fit in field" }, - "16446004518090376065": { + "4440399188109668273": { "error_kind": "string", "string": "Input length must be a multiple of 32" }, - "16954218183513903507": { + "6565645037161677025": { + "error_kind": "fmtstring", + "item_types": [], + "length": 101 + }, + "7555607922535724711": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" + "string": "Preimage mismatch" }, - "17226037485472400844": { + "7564993426627941149": { "error_kind": "fmtstring", - "length": 132, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 48 + }, + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" } - ] + ], + "length": 61 + }, + "8992688621799713766": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9791669845391776238": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" }, - "17610130137239148460": { + "9885968605480832328": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "9921926525851912681": { "error_kind": "fmtstring", - "length": 98, - "item_types": [] + "item_types": [], + "length": 98 }, - "17843811134343075018": { + "992401946138144806": { "error_kind": "string", - "string": "Stack too deep" + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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", - "debug_symbols": "TJ3JjvU8c6Tv5V/34nDIgb6VXjR6NAwYNtDDyjffpQwmIzb+nvj9FoMilXFUUpbOf/zjf/zP//b//vm//Mu//a9//z//+Kf//B//+G//+1/+9V//5Z//y7/++3//r//3X/793/7+1//4x+/7P/vv/67/9I89/vFP/vef+Y9/yr//rH/80/j9/Xf//Xf+/df+/rv//ut///3+Wdz/5v3vwX/td/877n/n/e+6/933v3b/e8ezO57d8eyO53c8v+P5Hc/veH7H8zue3/H8jud3PL/jxR0v7nhxx4s7Xtzx4o4Xd7y448UdL+54ecfLO17e8fKOl3e8vOPlHS/veHnHyzveueOdO96545073rnjnTveueOdO96545073vj9GkbDbFgNu8EavCEasqFHHj3y6JFHjzx65NEjjx559MijRx498uiRZ488e+TZI8+/kefvg91gDd4QDdlwLqxfw2iYDT3y6pHXN/L4wBuiIRvOha+KAKPhG3l/8I2cH+wGa/CGaMiGv5HXX+WNr6QAo2E2/I281ge7wRq+kb8V+yoLkA3fyOcPvuICjIbZsBp2gzV4QzRkQ48cPXL0yNEjf5W2v/X5Sg1gDd4QDdlwLnwFBxgNs6FHzh45e+TskbNHzh45e+TTI58e+fTIp0c+PfLpkU+PfHrk0yOfO/L8/Rq+kdcHs2E17AZr8IZoyIZz4atBQI88euTRI48eefTIo0cePfLokUePPHvk2SPPHnn2yLNHnj3y7JFnjzx75Nkjrx559cirR1498uqRV4+8euTVI68eefXIu0fePfLukXePvHvk3SPvHnn3yLtH3j2y9cjWI1uPbD2y9cjWI1uPbD2y9cjWI3uP7D2y98jeI3uP7D2y98hfDW7/IBvOha8GAaNhNqyG3WAN3tAjR48cPXL2yFWD54PZsBr+Rrb9gTV4QzRkw7nw1SBgNMyG1dAjnx759MinRz43kea5ibR+v4bRMBtWw26wBm+IhmzokUePPHrkrwYtPlgNu8EavCEasuFc+GoQMBp65Nkjzx559sizR/5q0PKDbDgXvhoEjIbZsBp2gzV4Q4+8euTVI+8eua4n7YPZsBp2gzV4QzRkw7nw1SCgR7Ye2Xpk65GtR7Ye2Xpk65GtR/Ye2Xtk75G9R/Ye2Xtk75G9R/Ye2Xvk6JGjR44eOXrk6JGjR44eOXrk6JGjR84eOXvk7JGzR84eOXvk7JGzR84eOXvk0yOfHvn0yKdHPj3y6ZFPj3x65NMjnzvy/v0aRsNsWA27wRq8IRqyoUcePfLokUePPHrk0SOPHnn0yKNHHj3y6JFnjzx75Nkjzx559sizR5498uyRZ488e+TVI68eefXIq0dePfLqkVePvHrk1SOvHnn3yF2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw3ursHdNbi7BnfX4O4a3F2Du2twdw1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNWtegdQ1a16B1DVrXoHUNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DXrXoHcNetegdw1616B3DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQNRtdgdA1G12B0DUbXYHQN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uIibaEQnBjGJdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3RjlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZslhllS/4PhepjSqY7BxETfRiE4MYhLPxVkNhI2DOImLuInlhleUODGISTwPK0suDuIkLuIm0m3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk63ypJhhUZ0YrllYRLPw8qSi4M4iYu4iUZ0It2CbkG3pFvSLemWdEu6Jd2Sbkm3pFvS7dDt0O3Q7dDt0O3Q7dDt0O3Q7Tw3vDHs4iBO4iJuohGdGMQk0m3QbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TzehmdDO6Gd2MbkY3o5vRzehmdHO6Od2cbk43p5vTzenGLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsqWbM8b25dFY3ZuMmGtGJQUzieVhZcnEQ6bbptum26VZZMmdhEJN4HlaWXBzESVzETTQi3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3ZJuh26Hboduh26Hboduh26Hbodu57lVQ2fjIE7iIm6iEZ0YxCTSbdBt0G3QbdBt0G3QbdBt0G3QbdBt0q2y5Hvn76w2z8ZFLLdTaEQnBjGJ52FlycVBnMRFpNui26Lbotui26Lbptum26bbptum26bbptum26bbppvRzehmdDO6Gd2MbkY3o5vRzejmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3pNuh26Hboduh26Hboduh26Hbodt5bvb7EQdxEhdxE43oxCAmkW6DboNug26DboNug26DboNug26DbpNuk26TbpNuzBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzBL0vX7fcDLR93rxPKwsuTiIk7iIm2hEJ9Jt0m3SbdGtsmR54SQu4iYa0YlBTOJ5WFlykW6bbptum26bbptum26bbptuRrfKkmWFk7iIm2hEJwYxiedhZclFujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbeW7oe704iJO4iJtoRCcGMYl0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023QzujFLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6zBH2vKz5ElgAHcRIXcRON6MQgJpFum26bbptum26bbptum26bbptum25GN6Ob0c3oZnQzuhndjG5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdkm6VJfVld+h7vTiJn1t9dxn6Xi8a0YlBTOK5uND3enEQJ3ERN9GITgxiEuk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26WZ0M7oZ3YxuRjejm9HN6GZ0M7o53ZxuTjenm9PN6eZ0c7o53ZxuQbegW9At6BZ0C7oF3YJuQbegW9It6ZZ0S7ol3ZJuSbekW9It6Xboduh26Hboduh26Hboduh26MYsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLB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" - }, - { - "name": "lock_private_solver", - "is_unconstrained": false, - "custom_attributes": [ - "private" - ], - "abi": { + }, "parameters": [ { "name": "inputs", "type": { - "kind": "struct", - "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4669,14 +5172,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4684,14 +5187,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -4701,7 +5204,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -4710,20 +5215,18 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -4733,53 +5236,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -4790,25 +5262,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -4819,19 +5287,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -4842,19 +5308,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -4865,25 +5329,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -4922,8 +5394,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -4931,14 +5401,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -4946,14 +5416,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -4971,10 +5441,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -4989,14 +5463,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -5013,14 +5487,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -5038,14 +5508,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -5063,14 +5533,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -5088,14 +5558,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -5113,13 +5583,19 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } }, { @@ -5130,7 +5606,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, @@ -5198,8 +5676,6 @@ { "name": "token", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5207,7 +5683,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -5253,20 +5731,14 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5274,14 +5746,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5289,14 +5761,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -5306,7 +5778,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -5315,7 +5789,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -5355,8 +5831,6 @@ { "name": "note_hash_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5364,11 +5838,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -5381,7 +5853,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5393,14 +5867,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifier_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5408,11 +5882,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -5425,7 +5897,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5437,14 +5911,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5452,20 +5926,14 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { "name": "request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { "name": "pk_m", "type": { - "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", "fields": [ { "name": "x", @@ -5485,7 +5953,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint" } }, { @@ -5494,7 +5964,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest" } }, { @@ -5503,7 +5975,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator" } } }, @@ -5515,14 +5989,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "note_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5530,11 +6004,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -5547,7 +6019,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5559,14 +6033,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifiers", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5574,13 +6048,26 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier" } }, { @@ -5590,14 +6077,10 @@ "sign": "unsigned", "width": 32 } - }, - { - "name": "note_hash", - "type": { - "kind": "field" - } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5609,35 +6092,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 5, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5645,14 +6122,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5660,14 +6137,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -5677,7 +6154,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -5686,7 +6165,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -5717,7 +6198,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest" } } }, @@ -5729,35 +6212,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 16, + "length": 32, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5765,14 +6242,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5780,7 +6257,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -5795,7 +6274,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { @@ -5806,7 +6287,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5818,20 +6301,18 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_teardown_call_request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5839,14 +6320,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -5854,7 +6335,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -5869,35 +6352,29 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { "name": "l2_to_l1_msgs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 2, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -5905,7 +6382,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { @@ -5914,7 +6393,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } }, { @@ -5925,7 +6406,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -5937,14 +6420,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_logs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -5952,42 +6435,49 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "log", + "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log" } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData" } }, { @@ -5998,7 +6488,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -6010,14 +6502,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -6025,14 +6517,10 @@ "kind": "array", "length": 1, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", "fields": [ { "name": "value", @@ -6048,7 +6536,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash" } }, { @@ -6059,7 +6549,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -6071,7 +6563,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { @@ -6091,16 +6585,12 @@ } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -6110,53 +6600,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -6167,25 +6626,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -6196,19 +6651,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -6219,19 +6672,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -6242,25 +6693,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -6299,8 +6758,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -6308,14 +6765,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -6323,14 +6780,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -6348,10 +6805,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -6366,14 +6827,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -6390,14 +6851,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -6415,14 +6872,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -6440,14 +6897,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -6465,14 +6922,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -6490,221 +6947,78 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "databus" - }, + } + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "private" + ], + "debug_symbols": "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TE7M5MRMTszkxExOzOTETE7M5MRMTszkxExOzOTETE7M5MRMTszkxExOzOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEJOLOTEQk4s5MRCTizkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRKTqzkxEpOrOTESk6s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTERk5s5MRGTmzkxEZObOTETk7s5MROTuzkxE5O7OTETk7s5MROTuzkxE5O7OTETk7s5MROTuzkxE5O7OTETk7s5MROTuzkxE5O7OTETk7s5MROTuzkxE5O7OTETk48n5TEJEBEVwGVoBGI6C5gAJxkdwKpwhAwpT2D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3754P7jw1cJXC1/Rb4/FffvCVwtfLXy18BX99qDfHvTbY3Hfvng/uPDVwlcLX9Fvj8V9+8JXC18tfLXwFf32oN8e9Ntjcd++eD+48NXCVwtf0W8P+u1Bvz3ot8fCV/TbY3Hfvri/ot8e9NuDfnvQb49Pv/37/vOn315x8+VW3Xy5dX//21f1/v2Xu96//3K//5sD8dNv/8mXu+fNTb7cfT//7auffLn7fv7bV/3+9UlO8uX2XfvbVz/5cr9/0nz89Nt/8uWe+zW/ffWTL/fcz3z76idP8uWeO4e3r37yNzdfl3t99clNPr/ld7/9/qj3ePfbPznI39yvJ7ib8+a4uciX+/2DuePdb//ky/3+Cdfx7rf/5OurT77c7x+/E+9++ydfbtyv4frqk4t8ufN+bddXn3y5835t11c/+foqv3+WfLz77Z8c5MvNeXOSL/f+3X7327+ehm7e5CZfbt2v5/rqky+37mdeX33yJF/u/Tv/7rd/8uXev8/vfvsnN/ly1/06r68++XLXne311Sdf7r5rv7765Mvd9zOvrz55ky93vz//PPn6Ku/3xbvf/slBvty+fweurz75cvt+bddXn3y55872+uqTz5Ovr+p153x99clx8+VeX9X77/b11dcJ/+YiL/ImN/ncfPfr+uqTBznIlzvu17Df3LuuXeRF3uTLjbuW66uffH31yZcbl3V9VXFZ11efnOTLjTvz66tPvtz399H11SefJ19fffLlvr+/rq8++XLf31PXV59c5Mt9f39dX33y5b6/166v3vndb6/7/fXut3/y5da4eZKTfLn3++vdb//ky73/7nj32z/5PPn6qu7317vf/smXe7+/3v32T77c+++Rd7/9kxf5cve+ucmX2/drvr765Mvt+zVfX33y5d5/17z77Z9c5Mu9P+333W//5Mu9/+5499t/8vXVJw/y5Z5z8yQn+Zu7Xvdrvr76OvHevMl9853D9dVPvr5a93vz3W//5CB/c9f999G73/7Jl3u/X9799k/e5MuN+7VdX/3k66t1v3fe/fZPvtz79/ndb//kJF/uvH8frq8++XLnnf/11SefJ19ffZ08b77cede4gjzJSb7c+/3y7rd/8iY3+XLf30fXV+uend799k8O8iQn+XL3Xfv11Sdf7n5/fpPPk6+vPnmQgzzJSS7yIsNtuA33wD1wD9wD98A9cA/c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2XCb/cVX9NuTfnvmgXvg4iv67Um/Pem3J/32pN+e9Nuznv5V1tO/SvrtSb896bdnPf2rrKd/lfTbk3570m9P+u1Jvz3ptyf99qwB9+lfJf32pN+e9NuzAm7AxVf025N+e9JvT/rtSb896bdnBdynf5X025N+e9Jvz5pwJ1x8Rb896bcn/fak357025N+e1bCTfYXX9FvT/rtWQk34eIr+u1Jvz3ptyf99qTfnvTbswpusb/4in570m/P4nmweB6k357025N+e9JvT/rtSb896bdnbbib/cVX9NuTfnsWz4O14eIr+u1Jvz3ptyf99qTfnvTbsxpus7/4in570m/P4nmwDlx8Rb896bcn/fak357025N+e9bTF8319EWTfnvSb0/67bl4HlxPXzTptyf99qTfnvTbk3570m9P+u25BtynL5r025N+e9Jvz8Xz4Bpw8RX99qTfnvTbk3570m9P+u25Au7TF0367Um/Pem35+J5cE24+Ip+e9JvT/rtSb896bcn/fZcCTfZX3xFvz3pt+fieXAlXHxFvz3ptyf99qTfnvTbk357roJb7C++ot+e9Ntz8TxIvz0X56vF+Yp+ey6eB9eCy/0V/fak357023NxvlpPXzR/+u3f/z3z/Om3n/fvudzv/55z/vTbf/ImN/k8+e2rnzzIQZ7kJMNtuA234TbcA/fAPXAP3AP3wD1wD9wD9zzcn377T/7m7u//rnu+++2fPMlJLvIib3KTz5Ovrz4Z7oA74A64A+6AO+AOuANuwA24ATfgBtyAG3ADbsANuBPuhDvhTrgT7oQ74U64E+6Em3ATbsJNuAk34SbchJtwE27BLbgFt+AW3IJbcAtuwS24C+6Cu+AuuAvugrvgLrgL7oK74W64G+6Gu+FuuBvuhrvhbrgNt+E23IbbcBtuw224DbfhHrgH7oF74B64B+6Be+AeuOfhvvvtnzzIQZ7kJBd5kTe5yXDxVeOrxleNrxpfNb5qfNX4qvFV46vGV42vGl81vmp81fiq8VXjq8ZXja8aXzW+anzV+KrxVeOrxleNrxpfNb5qfNX4qvFV46vGV42vGl81vmp81fiq8VXjq8ZXja8aXzW+anzV+KrxVeOrxleNrxpfNb5qfNX4qvFV46vGV42vGl81vmp81fiq8VXjq8ZXja8aXzW+anzV+KrxVeOrxleNrxpfNb5qfNX4qvFV46vGV42vGl81vmp81fiq8VXjq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Orgq4OvDr46+Oo8vqrX46t6Pb6q1+Orej2+qtfjq3o9vqrX46t6Pb6q1+Orer3gDrgD7oA74A64A+6AO+AOuANuwH376vtnLdW7376/f9ZSvfvtX0+aN1/u98+CqXe//ZMvN955ky/3++ez1Lvf/pPfvvrJl/v984zq3W/feb+Gt69+8uVm3lzky837tb19lftvv373///hr3/6h3/88x//3+/+179//d//86//9Id/+dNf/unn//7Lv/3z55/841//9Oc//+n//v0///Uvf/jj//7Xv/7x7//8lz98/7Pfvb7/53tb/u5r5TF+//Wbx8+v/934+v46v77+d53f//rdfP/Kfn3/Sr++fmX8/Kao71+a95fG+5c67+9a358X35/3/adn/Mr4/Lkav+r+4/nbVxDjV9xfyv/8RdXnQ6J/zf58yNd08nz/4/Wf/8R+Pjd/xf1d/dsvzfw17y+d5w+eX5F3/cwkzvz19T/929LifE1kvt6DeiY1+9eo/kzp6y/UiPptQrG+/sj47SPq6xPW+wPif/oBz/DG/hVxfy3/iyXVf78H45nfPL/y/Wf2fznyn3/+t7/9/m//AQ==", + "is_unconstrained": false, + "name": "lock_private_solver", + "verification_key": "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" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "285656119219400463": { - "error_kind": "string", - "string": "Field failed to decompose into specified 32 limbs" - }, - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3738765135689704617": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] - }, - "4456244908619624852": { - "error_kind": "string", - "string": "Preimage mismatch" - }, - "5019202896831570965": { + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" - }, - "6418028854678020178": { - "error_kind": "string", - "string": "FundsNotSent" - }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" - }, - "10090043878309646342": { - "error_kind": "fmtstring", - "length": 101, - "item_types": [] - }, - "10676044680617262041": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" - } - ] - }, - "11732781666457836689": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "13649294680379557736": { + "15764276373176857197": { "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14101993474458164081": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "string": "Stack too deep" }, - "14225679739041873922": { + "16431471497789672479": { "error_kind": "string", "string": "Index out of bounds" }, - "14657895983200220173": { - "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" - }, - "15200354114977654233": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "15760694058516861966": { - "error_kind": "fmtstring", - "length": 128, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "16218014537381711836": { + "1998584279744703196": { "error_kind": "string", - "string": "Value does not fit in field" + "string": "attempt to subtract with overflow" }, - "16446004518090376065": { + "2360858009427093503": { "error_kind": "string", - "string": "Input length must be a multiple of 32" + "string": "InvalidTimelock" }, - "16954218183513903507": { + "459713770342432051": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "string": "Not initialized" }, - "17610130137239148460": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] + "4736483829072576196": { + "error_kind": "string", + "string": "HTLCAlreadyExists" }, - "17843811134343075018": { + "7920565393106506482": { "error_kind": "string", - "string": "Stack too deep" + "string": "Function lock_public_solver can only be called internally" } - } - }, - "bytecode": "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", - "debug_symbols": "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6DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOsTLpW6+MpUmg0TSbVtNusiZvOk3R1I5oR7Qj2hHtiHZEO6Id0Y5oR7TjtuO247bjtuO247bjtuO247bjlgMLl0CjaTatpt1kTd50mqKpHaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsd1g5rh7XD2mHtsHZYO6wd1g5rh7fD2+Ht8HZ4O7wd3g5vh7ej63x3ne+u8911vrvOcwmUjyRr8qbTFE236KvzR6NpNq2mdkQ7oh3RjmhHtOO247bjtuO247bjtuO247bjtuOWIxdHPRpNs2k17SZr8qbT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9ybuTd2bujd1b+re1L2pe1P3pu5N3Zsub+04PFk8WT3ZPNk9SZ4cnmRPiifdm2tJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy1priXNtaS5ljTXkuZa0lxLmmtJcy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaS7lnTXku5a0l1LumtJdy3priXdtaSfWiLPpK6kaclzEaebllhyenu+qnfTEktOb88ViW5aYsnp7bn63E1LaNoVT+pKmpZYsniyenJ6e75+dtMSS5Inhyent+cbbTctsaSupGmJJcv6mWmJJd2buDfTEvvZ8KR7E/dmWjJ/ZlpiSfem7s20ZP7MtMSS7k3dm2mJ/Uw8ubzRcXiyXD8j0xJLNk92T5L/bHiSPSmeXDVJ5fCkeyvurayapNI96d6KeyvsPxNPurfq3uqqSarVk+6turdK/rPhSfdW3Vv1mmxek829NffWvCab12Rzb829Na/J5jXZ3Ft3b91rsntNdvfW3Vv3muxek929dffWvSbJa5LcG7k38pokr0lyb+TeyGuSvCbJvQ33Nrwmh9fkcG/DvQ2vyeE1OdzbcG/Da5K9Jtm9sXtjr0n2mmT3xu6NvSbZa5Ldm7g38ZoUr0lxb+LexGtSvCbFvYl7E69J9ZpU96buTb0m1WtS3Zu6t1NL6jMpntQrOU4tmUnz1p7J6snmye5J8p8NT7InxZO6fnZqyUy6t+LeTi15/uzUkpl0b8W9nVoyfyaedG/VvZ1a8vzZqSUz6d6qezu1ZP5seNK9VfdWvSab12Rzb829Na/J5jXZ3Ftzb81r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ha/ot0dx/6rwVeGrwleFr+i3B/32oN8eVXCL/cVXha8KX9Fvj+L+VeGrwleFrwpf0W8P+u1Bvz2K81Vxvip8Vfiq8BX99ijOV4WvCl8Vvip8Rb896LcH/faoCXexv/iq8FXhK/rtUdy/KnxV+KrwVeEr+u1Bvz3ot0dtuJv9xVeFrwpf0W+P4v5V4avCV4WvCl/Rbw/67UG/PerAPewvvmp81fiKfns0968aXzW+anzV+Ip+e9BvD/rt0VwP9vN8MBpfNb5qfEW/PZrrwcZXja8aXzW+ot8e9NuDfns099v7eT4Yja8aXzW+ot8ezf2rxleNrxpfNb6i3x7024N+ezT327vYX3zV+KrxFf32aO5fNb5qfNX4qvEV/fag3x7026O5397N/uKrxleNr+i3R3M92Piq8VXjq8ZX9NuDfnvQb4/mfntP9hdfNb5qfEW/PZr7V42vGl81vmp8Rb896LcH/fZo7rf3Zn/xVeOrxlf026O5f9X4qvFV46vGV/Tbg3570G+P5n57H/YXXzW+anxFvz0m968mvpr4auKria/otwf99qDfHpP7V5P7VxNfTXw18RX99pjcb5/4auKria8mvqLfHvTbg357TO63T54PTnw18dXEV/TbY3K/feKria8mvpr4in570G8P+u0xud8+eT448dXEVxNf0W+Pyf32ia8mvpr4auIr+u1Bvz3ot8fkfvvk+eDEVxNfTXxFvz3otwf99qDfHhNf0W+Pyf32yf0r+u1Bvz3otwf99vj22+fNb+75zW9f/f76+fj02/f9+rev9v36t6/2++sv9/f3ican3/7Jv9yfq56bF3nf/P7+58nXVz9XNzf/cn+uUG4OcpLr5jv79dU3X+5YNy/y5Y77nq+vPvn66v4++Xj32785yJcbdx2ur775cvNyr6++eZE3+XJ/f59yvPvt3zzIl5vr5sv9/Y2V8e63f/Pl/v4GnXj327/5cn//fwjx7rd/83ny9VX9/ubpePfbv/ly+76H66tvLvLl9n1v11fffLl939v11Tdf7u//IDLe/fZvHuTL/f39ofHut3/z5d7P9rvf/nN6v3mSF/ly130/11effH31c3q/eZCDfLn3M//ut3/z5d7P87vf/s2LfLnnvs/rq0++vvo5dd88yJd77uzXV9/8y/05ad/c5EleN7+//yb/cvv+XLz77d88yHHz/Qxc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XzW+anzV+KrxVeOr5nzVm8/Vhsv1YG8+V5vPFb7qzc8Rvmp81fiqDz9H+KoP3MO8h3kP63yY97DOH1/9PiOYH1+98yAH+c09Nxf5cjtuvtzf342V7377N2/y5fbvM4t3v/2bL7fv93z76pOTXOTLnePmSb7c355nvvvt33ye/PbVuu/57atPvtzfzme+++3ffLm/nc9899u/+XL3+3su8iZf7r7f/+2rT77cc9/z21efnOTL/e185rvf/s2Xe+57e/vqk3+5P7tz83ny9dU3j5vvml9fffMv92dHbi5y33zf8/XVN6+bL/f66pvPk6+v5rhrdX31zZcbl3t99c1FbvLlxv0cXl998yZfbt73fH01877P66tvvty863B99c2Xe5+dvfvt3zzJl3ufo7377d98ue+fkeurbx7ky+373q6vvvly3z8711fffLnvz/P11Tdv8uXO+3m4vvrmy513/a+vvjnJlzvvXNdX3zzJl7su6/rqmy933+9zffXNg3y5585+ffXNv9z1ujNeX33zJC/yJp8/8rvf/s2DHOQkF7nJk7zImwx3wB1wB9wBd8AdcAfcAXfAHXADbsANuAE34AbcgBtw482tm8+T80V+c/vmICe5yE2efJ9Fhpvn+fp6keEW3IJbcAtuwS24BbeYt5m34TbchttwG25P8iJvMvNOuHOQg5zkIsOdcCfcCXfCXazzYt7FvIt5F9zVZNZ5sc6LdV5wN9wNd8PdcDfrvJl3M+9m3g13s7+HdT6s82GdD9wD98A9cA/cwzqfZ979epEH+eHuV5KL3ORJXnyfTYY74A64I8hJLnKT4Y5F3uRnnXe8yHADbsANuAE3Jpl5g3mDefHVzkFmnZN1TtYZX+2Em3ATLr7a+Grjq42vNr7aBbfYX3y18dXGV7vgNlx8tfHVxlcbX218tfHVxle74Tb7i682vtr4ak+4Ey6+2vhq46uNrza+2vhq46u94C72F19tfLXx1V5wF1x8tfHVxlcbX218tfHVxld7w93sL77a+Grjq33gHrj4auOrja82vtr4auOrja/O6+Ge1yAHOclFbr7PJC/yJsPFVwdfHXx18NUZcEeTJ3mRNxluwMVXB18dfHXw1cFXB18dfHU4Xx3OVwdfHXx18NXhfHU4Xx18dfDVwVcHXx18dfDVwVen4Bb7i68Ovjr46hTcgouvDr46+Org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Rb+96LfXos+w6DPQby/67UW/vei3F/32ot9e9Ntr0WdYm/3FV/Tbi357LfoMiz4D/fai317024t+e9FvL/rtRb+9Nn2GTf+KfnvRby/67bXpM2z6DPTbi3570W8v+u1Fv73otxf99tr0GTb9K/rtRb+96LfXps+w6TPQby/67UW/vei3F/32ot9e9Ntrc77anK/otxf99qLfXpvz1eZ8Rb+96LcX/fai317024t+e9Fvr03/atO/ot9e9NuLfntt+leb/hX99qLfXvTbi3570W8v+u1Fv702/atN/4p+e9FvL/rttelfbfpX9NuLfnvRby/67UW/vei3F/322vSvNv0r+u1Fv73ot9emf7XpX9FvL/rtRb+96LcX/fai317022vTv9r0r+i3F/32ot9em/7Vpn9Fv73otxf99qLfXvTbi3570W+vTf9q07+i317024t+ex36V4f+Ff32ot9e9NuLfnvRby/67UW/vQ79q0P/in570W8v+u116F8d+lf024t+e9FvL/rtRb+96LcX/fY69K8O/Sv67UW/vei31+F68HA9SL+96LcX/fai317024t+e9Fvr0Nf9NAXpd9e9NuLfnsdrgcPfVH67UW/vei3F/32ot9e9NuLfnsd+qKHvij99qLfXvTb63A9eOiL0m8v+u1Fv73otxf99qLfXvTb69AXPfRF6bcX/fai316H68FDX5R+e9FvL/rtRb+96LcX/fai316HvuihL0q/vei3F/32OlwPHvqi9NuLfnvRby/67UW/vei3F/32OvRFD31R+u1Fv73pt/fruR7s19MXbfrtTb+96bc3/fam397025t+e78G3Kcv2vTbm35702/v14A74A64A+6A+/iq6bc3/fam396vgPv0RZt+e9Nvb/rt/Qq4ybzJvMm8CTfhJtyEm8ybzJtwi3mfvmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ov56+aL+evmi/nr5ovxpuw224DbfhNtyG23An3Al3wp1wJ9wJd8KdcCfcCXfBXXAX3AV3wV1wn/vt/XqeD/brud/er+f5YL+e54P9eu639+t5Ptiv5/lgv5777f16+qL92nCf++39eu6392vDPXAP3AP3wD1wD9wD9zDvYd7n+WCP5/lgj+f5YI+nz9Dj6TP0ePpXPZ7+VY+nL9rjeT7Y4+kz9Hj6Vz2e/lWPpy/a4+mL9hhwB9wBd8AdcJ/+VY/BvMG8wbwB9+lf9Xj6Vz2evmiPpy/aI+AG3ICbcBNuss7JvMm8ybwJ9+lf9UjWOVnnYp0LbsEtuAW34BbrXMxbzFvM23Cb/W3WuVnnZp0bbsNtuA234U7WeTLvZN7JvBPuZH8n6zxZ58k6T7gL7oK74C64i3VezLuYdzEvvhqL/d2s82adN+uMr8aGu+FuuPiKfnvTb2/67U2/vceBe9hffEW/vem39zhwD1x8Rb+96bc3/fam397025t+e8fTZ+h4+ldNv73ptzf99o4Bd8DFV/Tbm357029v+u1Nv73pt3cE3Kd/1fTbm35702/vCLgBF1/Rb2/67U2/vem3N/32pt/ekXCf/lXTb2/67U2/vSPhFlx8Rb+96bc3/fam397025t+e0fBLfYXX9Fvb/rtHQ234eIr+u1Nv73ptzf99qbf3vTbOybcyf7iK/rtTb+9Y8KdcPEV/fam397025t+e9Nvb/rtHZyvgvMV/fam39702zs4XwXnK/rtTb+96bc3/fam397025t+e8eBe9hffEW/vem3dxy4By6+ot/e9NubfnvTb2/67U2/vfPpX3U+/aum397025t+e+cL7oCLr+i3N/32pt/e9NubfnvTb+8ccJ/+VdNvb/rtTb+9M+AGXHxFv73ptzf99qbf3vTbm357Z8J9+ldNv73ptzf99s6Em3DxFf32pt/e9NubfnvTb2/67Z0Ft9hffEW/vem3dzbchouv6Lc3/fam397025t+e9Nv75xwJ/uLr+i3N/32zgl3wsVX9Nubfnsnvkp8Rb+96bd3LriL/cVX9Nubfnsn14PJ9SD99qbf3vTbm357029v+u1Nv71zw93sL76i39702zu5HswDF1/Rb2/67U2/vem3N/32pt/e9fRFu56+aNNvb/rtTb+9i+vBevqiTb+96bc3/fam397025t+e9Nv7xpwn75o029v+u1Nv72L68EKuPiKfnvTb2/67U2/vem3N/32roT79EWbfnvTb2/67V1cD1bCxVf025t+e9Nvb/rtTb+96bd3Fdxif/EV/fam397F9WA1XHxFv73ptzf99qbf3vTbm357V8Nt9hdf0W9v+u1dXA/WhIuv6Lc3/fam397025t+e9Nv71pwF/uLr+i3N/32Lq4H6bd3cb4qzlf027u4HqwNl/tX9NubfnvTb+/ifFVPX7Q//fYYN19u3K95+yrq5iQXucmTvMibfP7In377Jw9ykJNc5CZP8iJvMtwBd8AdcAfcAXfAHXAH3Levfv9fuP3pt7/z21efPMhBTnKRmzzJiww34CbchJtwE27CTbgJN+Em3IRbcAtuwS24BbfgFtyCW3ALbsNtuA234TbchttwG27DbbgT7oQ74U64E+6EO+FOuBPuhLvgLrgL7oK74C64C+6Cu+AuuBvuhrvhbrgb7oa74W64G+6Ge+AeuAfugXvgHrgH7oF74J6H++m3f/IgBznJRW7yJC/yJsMdcAfcAXfAHXAH3AF3wMVXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE19NfDXx1cRXE18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC18tfLXw1cJXC19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1cZXG19tfLXx1aff/vt7W/rTb//93Uz96bf//l6k/vTbq26+3Fo3J/ly+52bfLm/v2OlP/32T97ky533Pbx9te57ePvqky933ff89tUnX+667+3tq9V/+dNf/a+//fM//u3f/dM//M+/+i//5+df//u///Pf/9s//ss/f/713/73v37/5O/+/I//9E//+D/+5l///C9//w//7d///A9/80//8ve/f/ZXr99//H7c/uuYf4rx1z9fPD6v/9efx9QVPy++Zv71n/4q36/M+n1l1c8r4/NFY/++FL9f9Pth/X1p3Zf26/f7xe/3+/3bP3tR8f17Pf7U8/eP84938HO/J+5L9R/fVH+/Sew/5f5+k5/dqvP7x/M//o31fN+ft3y/aj8vrT9l/L50nr94/hR15399F2D8vOPR3+HHz32tEX8MMH5uSY3Y36FH18/X3rc/xv/vN4jnXa0/xX2jI/+T1+qPrcqfBe/zx6b8cH8ekP+xITN/VrbvX+n/926MZyV/flzqvSDrP138z5//5S9//Zf/Cw==", - "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" - }, - { - "name": "lock_public_solver", - "is_unconstrained": true, - "custom_attributes": [ - "internal", - "public" - ], - "abi": { + }, "parameters": [ { "name": "Id", @@ -6751,8 +7065,6 @@ { "name": "token", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -6760,7 +7072,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, @@ -6806,62 +7120,192 @@ "visibility": "private" } ], - "return_type": null, + "return_type": null + }, + "bytecode": "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", + "custom_attributes": [ + "internal", + "external", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "lock_public_solver" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "10791800398362570014": { "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." + "string": "extend_from_bounded_vec out of bounds" }, - "516370165797458160": { + "11021520179822076911": { "error_kind": "string", - "string": "InvalidTimelock" + "string": "Attempted to delete past the length of a CapsuleArray" }, - "2920182694213909827": { + "12469291177396340830": { "error_kind": "string", - "string": "attempt to subtract with overflow" + "string": "call to assert_max_bit_size" }, - "5019202896831570965": { + "12913276134398371456": { "error_kind": "string", - "string": "attempt to add with overflow" + "string": "push out of bounds" + }, + "13450089406971132036": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 144 + }, + "14067204867181196045": { + "error_kind": "fmtstring", + "item_types": [], + "length": 75 }, - "10870837545714573535": { + "14990209321349310352": { "error_kind": "string", - "string": "HTLCAlreadyExists" + "string": "attempt to add with overflow" }, - "13699457482007836410": { + "15764276373176857197": { "error_kind": "string", - "string": "Not initialized" + "string": "Stack too deep" }, - "14225679739041873922": { + "16431471497789672479": { "error_kind": "string", "string": "Index out of bounds" }, - "15001264570739363109": { + "16792019527863081935": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 77 + }, + "17154023812102399658": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 128 + }, + "17803644318014042523": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + } + ], + "length": 58 + }, + "1998584279744703196": { "error_kind": "string", - "string": "Function lock_public_solver can only be called internally" + "string": "attempt to subtract with overflow" + }, + "3080037330898348111": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + ], + "length": 132 + }, + "344423948968719440": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" + } + ], + "length": 98 }, - "17843811134343075018": { + "361444214588792908": { "error_kind": "string", - "string": "Stack too deep" + "string": "attempt to multiply with overflow" + }, + "4261968856572588300": { + "error_kind": "string", + "string": "Value does not fit in field" + }, + "4440399188109668273": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" + }, + "7564993426627941149": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 48 + }, + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 61 + }, + "8992688621799713766": { + "error_kind": "string", + "string": "Invalid public keys hint for address" + }, + "9791669845391776238": { + "error_kind": "string", + "string": "0 has a square root; you cannot claim it is not square" + }, + "9885968605480832328": { + "error_kind": "string", + "string": "Attempted to read past the length of a CapsuleArray" + }, + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 + }, + "992401946138144806": { + "error_kind": "string", + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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", - "debug_symbols": "tZ3briW3za3fpa99UTpQB79KEBiO0wkaaNhBx97ARuB3/4uDEoe6jalVq+bsm+QzuxYpiSxJRR3m/z788+M//vj3T59+/ddv//3w49/+9+EfXz59/vzp3z99/u2Xn3//9Nuvp/R/Hw79nxhr/fBj/uGEFj/8WAGnJBxKXU4KJ6XjcGqTQjopg1Smf5uiyhqoTUplUg4ffowCKpPkcJJJxWXFZdVlNTu1SS051Uk9Oqm1clIOdVIMTv6vyWXJZdllWZz6JMlObVJJTm6tRifVrK2W2+EkTn1ST05tkBzRaWqREJxcFg+n7DQ1S3JZ0b9tIJmEdjZyWXNZo6xPQkmN2qCCkhrVSShpB4lTn6SRY6QtnjTCSjm1pAgqk7R8g7JTm6RxMOi0m7SWpQenMqgewcllwWXBZdFlUfVpNNWUJuXDSSZJcCqTNJ5TAWWnNkljw6jp31aQOPVJ2s6pgdqghtKDUHpQmv5oafqo4X0DSXCanmklOpXhhYY4MMpObRJaUn3U9Y1Ci3e0lZE49UkpOU1v9RxH6/Y8W7xLcHJZcVlxWXVZdZl2YWjx3tqkPjxzdmGHU5kUgpOYF07qkzQmB9VJ2jPkQ0m9nwNIJklyapO0pDkpaY+UM6gMClqqQdmpTdI+dpD201qCoO08qExKLksuyy7LLhOXqfdzVNLWHSROfVLVElRQm6TtLAeoTupTFrVGg059oqWPQWUNlJ36pOiy6LLksuSy7LLcJmmLD6qTtB6D/G+r/211WfO/bVNf0tiQrqSlKgfo/NeirXGiU52k7TxIJumoNki1JFCbpCPEIJdVl1WXNZc1l2k7D6qDsvZmg/qkkJzm32aN5yKgOgk1AqH0GhsYwUoF6XPaGlmjeFCZpONCDaDs1Cd1l/UpkyM7uSy4TEtqpCUdVCclcfK/zf632WXifyuuT8tc1R+CUiWQ/qv6F6PVoDpJe4YqIJmk4+oglyWXJZdll2XK+iSNiEFtkvZrRtX/tvrfNpc1/9s29VWUWf1WUaoK0n/VeK76Hg1Sa+q3mpPTKWta36qt1iKoTdJxoWVQnVRdpjPHBrvaHww669FgTUfdQVPWNE77ASqTtGeAvqbtbBRdFl2WXKbt3NWrTdt5kMu0HoPOenT8hcZz17bCqDZIJjWX6VtmpGNtL6A2qKPMII2NQTJJyzzobPHeQG2Sjn6Dzlbr2vZd+41BZZL2V+eQ8MOHfGhjhSMoBkijIibYA1VTVdLef1CZpG1zDinATOyOAk0CrI7q8oHaQuE4q5TDAanqDRF6GzAT8VWgfxa0Q5lYHTOlmVKhVEf7geUgCrE7al8+EYZRyBaJ1bFT2l0aj0gsjuEgCrE7osYD3XBU506ECW3fqO6dWBzlIGZidyyJSGU1EqmsUVmTicnq1oDFMQQipZHSSGk6iJnYHXMiNkfzZgcWR/OmYXaEs6JG9xm0ihFYHVHegULsjvDFQC2DftJkDGcTq2OmNFMqlAqlhdICvRpnGSFn2AKxOCLOBtaJgpdYP/xOFGJ3xEe0YYSGCiyO8MVAlKEBu6NVCGgVAhZ3Fr7jBrZIrI49Ed2b5XBvlsO9WcJBdG+W5N4s4t4s4t4sJRCF6N4sNRPdm6VFonuodEq7S+sRiZQGSoN7s0b3Zk2B6N6sORLdm/i2M2dVEaJ7sxb3JsbJkA6g6tWvpYwvvIndUeckhg1FT0kRUa0fNrmhfQcWR3TxAzOxO8IX+tmS8bE3EAE+kNJKaaW0UdooRcDoJ9yJdWJHrA8UIoqj8dsRMAO1bvoZdb43iUgpqmmIjlQ/Wk4UR3SkAyktlBZKK6V1kXZHnVZNbI69DBR8O04Ux0BpyMTuCL/pN9P59uPZBtRn9QtJ8JU4ELEzsDrqtHticUTHLwGYid2xU9pdii/MiZQGSuEWQ7hlYHXUuddEasjUgOiTpIjoG9gcrUJZ0coriogoqcA60Ubpgah8V0SrDxTHSGmkNFGaKM2UWtENu6MVHYieayA1VGqoi5QaGvWiQvohKQnlLQGIZzUeLGk6sDkidvS7TSyDaoiXYSClQqlQWigtlKLoA4XYHfGiG3Zq6K4Bn5sTXUMOrhffmaGoj7OVV4B4Vt+LjJdhoDaUfmye2B0xUygNqFL9JhMbhAc2R/1KnqhF1+88sfF4oEuRQbVnBeUdmIluDbnTic01YLI3kNLsZZDsJcOX6ESWoUQipZUlQ/9r2CjFXMOehVsGurTALXjWBmzDQCmiz57F2zKQ0uRNgo/ZgZlSvC32LN4WQ6FUvPlKyURKqzefjfOGjdLmzVd6IrrUxnn9ghcb5w0DpcGbr8ZIRJNoTNqQP5BSRKp+R59YHBGpA4WICml4VqumIaUWqXjWXGhIvZ3WsMqCP2sYZgZSGrwMLQjRrbWYiZQmLwMSwQMtUvGARSpQKEVfbc9iSBpY/QGLVENKWU2bKRhaNfGARaqizRQGepP0EIhe+R4PIqXJm6QnIaKa2ul2i1RDSsWbpIs3SUc1NQtyYnOslCJSm3ZiNlNoFdgdMdw2lAzDbTutlcMWvoAILk14nFgc0W1rsuJESKMiuu2egMWxUoqJgGY2yoH5pKYsio3dhuh/NRlR7MPcED2XJgdOhLQpIh40+XBicxRKsbClKYkSsLKlKYkTIdXyIkM8EVItZGjUgCU5k2JNbqBLMc5HzUqcWGc1I9aLTIqlLcNIKRbuNFdxLh5B2oAq1fXLsztTE7pYWZL2DxMp1YgaqBEV9QP6RCHOnquknImUCqVCaZk94ondsVJaKW2UNmro1Ntdmg9/FpnegYHSQGmkNFKaKE2UZkozpUKpUMq6ZdYts26ZdcusW26UWt0SsE+UIxMpDZRa3dQtY2g2pDRRmijVukX9pC0YmgdqgE+ktFBaKK2UVkpbJFZH7fAm9onlSETXUAKlwTWUGIkIZX2HCgJcv7ALhuaBOjRPXKRqOGqb4Wt8YnMslBZKK6Xarw9sgVgc+0EUohuu6s2JbqKGRHQTGKUnuomaAtFN1HwQaYI1rqxxZY2RyZ5Iw5UmKg03mmg03Gii03B3E+1IRDfRQiS6iRYD0U0gxT0xE90wxu6JNCw0ITRcaKLQcKWJSsOVJhoNN5roNNzdRD8i0U1gGJ/oJjCMT8xEN4wM+UQ3jBXiiTQsNCE0jHVqTfWccYg/EyAeOAfAiox61FRaPay8XTEcRCFqyTQlU5Fyn9gcE6WJ0kwpymuI8g4sjtjlMlCINIwKDaSJRhONJlDjgW4iHIHoJkI4iJnohgNrHFhjJPYnumGsMk+kYaEJoWGhiULDhSYqDVeaaDTcaKLTcHcTWHyemIluOIZEdMMxRqIbtlnFQDeM7MFEGs40ITQsNFFouNBEpeFKE42GG010Gu400d1wOhLRDdvUZ6AbRuZ/ohvGfCdq4u7sc/FsUkRfoinFikRC1B0TNaH31ITgiZA2RfSeA4WI3UeHom1sMmwTsQgwkdJAKYpuiKIPLI7oPQcK0Q1jkjORJoQmhCYwXgykiUrDlSYaDTeaYI0za5xZ47GZy9ANj+1chm54bOgyFKKbGHu6DGkiJyJNCA0LTRQaLjRRabjSRKXhRhONhjtNdDeMBMVEN4wVhYlCdBMlZqKbKCkRaSJHIk0IDQtNFBouNFFouNJEpeFGE42GO010N1zR7+guoIr9Y1G31FSb2eiOoIr8Q9QNPhX5h6hp44rdZAPRkQ5EIRuwOaJbGUhppbRSakU3LI5WdEOZiFTExEzsjiER3USLkVgdUyC6YaxfTKThTBOscWONG2uMrMTASsOVJhoNN5roNNxporvhfiSiG+4hEt1wj4Hohns6iEKkiZyJNCE0LDRRaLjQRKXhShONhhtNNBruNNGn4dPbkVgdQyAWx3gQhdgdUybSRE5EmhAaFpooNGz9Tle0Hb0HEBuIzzer2SRHIhDSpIii6+LCieKIog/ENuIKbI7oVgZSminNlKLoA4sjij5QHG37siENoyM1bDTRaKLTBDpSYDwC0Q1jXWSiEN1EZI0jaxxZY+xeGJgjkSaEhoUmCg0Xmig0XGmi0nCjiUbDnSa6G8b+84lCdBMpZKKbwMrKRDeBlZWJNJEDkSaEhoUmhIYLTRQarjRRabjRRKPhThOdhrubQNZnopuwudFAN5FjJLoJ29huiH5HV5iaTXJ0jarZJEfXqJpNcnSNqtledUN0K7qjsWHTw0D0JQPbRGRyJnbHkIjYF69vITY9TKQ0UZoozZRmSvEW6lpSwyJL1AWkhkWWqAtIJxZHq5shpY3SRincMjAT+0RL6gxsjiESq2MMRDeB9ZaJQqSJnIk0ITQsNMEaF9a4sMbYTziw0TAGCd0k2bClcGCntLvUkjoDIVVvVrx6mqJr2GIxEK/eQEoTpYlSOHZgcURnM1Ac0dkMpGF0NoaVJipNNJpAZ2PYaaK7YZv6DBSim2iscWONG2tsUx/D5IZtkqNJyWZzGN2+2WwOo6dnznWTQCyOdvriAGZid+yUdpf2IxObI8JzYHVEeA4sjgjPpu62jMtAcSx8oFBaKa2LtDtiqBvYHDHUDawDu+VsBhZHDHW6pNMP84VhdzRfGFZH84VhccxUZh4ypDKhMkxDDeEs3SfbD/NFVrTDMAJsE21eYoh5iSHGY11A6gGGdQGpYwfFQBgeWB3t1I5hcbTzGgcwE7tjo7RR2intLrXUiSGaWjf3dmzdn9gc0YMPxOkR9ZClTgbitE8Gdkd0bQMpFUqF0kJpoRQv+sDmiBfdED34QGroriEdmegacK5toFVInZWsvAWIZ9VvCR4a2B3tFA0QUTKwOlohDfmslUyDCyN60pW2jmzHRD23oittHSmOid1RCzmRUqFUKNUuaGJ1xGGkgbSGg0kDaVjbdyJNdDchRyI2xxCJblhiILph7H6cKESaYI2xujNQaFhootBwoYlKE5XKKk3gTJkuVHakOAb2SKwTsWlyIqWB0kBppNRqDEyBKI45EalBqEEoLdRQqLehbhrV1QopQDyg0VfDQRQi2kF7GIzoE5sjTm4dGrR2uE1XXrudbtO9492Ot+kaa8d4PBBhZIgwGlgm4qzARCF2R31NJ7pe5B/OjCewOKJRB1KaKc2UCqVCKY7wDRRid9S3e2CjhkYNndLuGvrhertVSJ3VrbwZiGcLsDsi7Aei8uqsjngYWB0R4Lqg2O1YnC4odgy3SffQdyyRpHj6LRzIAzh3svb9k+OxsCy8PG/H/QZXcl70o9F1yfJkORYWclnkZZHXRV4XeVvkCPnJnYyDlMZIHjhTD9ZInFc59WD8nmx1jGArfzLG8wJGjzu5kfGG6BKVciEjjgajg9W1q3BEdCe6zVsZz2ew+aUbF7L5YnAjI4gmd7IszyOOEvyFrZDOhVwXeV3kbZG3Rd4XOV4FY3zkO2cy6juZerCE4bzI06InLfrx/iT4CycYnBtZFrks8rLIyyKvixxdwGAcRZ1cyPDjZOrB+ofzIg9xYeq3WUGKxkK2ug9e5HmR50Uui1xWeSejX5/cyOZr47boaYuevsj7oqdTP3IAKeF9EStnNsbzxbiRzUeD0SZ4L8Tic3AhYyxPeF9srE6IbaxHpCTGWuaMOCl2EHxwI2MAnNzJmu50Xp63482DtTwZ9S1o88myMHSiHbBFw7mR8U5ltA++zM9clXJF/ORgrHXMaB/suJiM/mGykDHaTC7kvDwPX0xGedCeFUPO5Eq2I9vdWMjotwdjYiVoHxvuJRjj+WqsdRS0DzY/TkbMTK5kO5w/uJHz8jx8IWi3Bl9MFnJZ5GWR10VeF3lb5Bh3Jncyxh3jbvUdTD09HAuvcurBBorJGHcEfulW/mqM5+GLjvd38iKvi7wucvPL4Ebui7y7PNicYXIl2+H6wYUcF3lc5GnRkxb9OS+s5dREZQg4R+HcyHh3Ji9y1FczkMqNjPrqznXlSsYUaTLlOA3pvMhR38lCxns3OS/cySkt3Mh5sZUXW7LYwjR1cFlslcVWWXTWxRbGLE2knoy+ZXIhow/XDKtyXrg725xEU68nY5wt8JfNH/S0+MnoEyZr+1T4BYcpnFW/phhPxjs1uZLhl8nNGacdJ+M9qtEYtlBfmzNMbmS0/+RORuxNXp5Hv1fFuJBRx8mwW4w72epobPVCu2EfZ6poN5xjTLUbFzL65HYYy8Kqv6HuNo4Pxjfv5EpGDExuZMxbWjTG86hvtstHwIJ52mQh2xUkgws5Ls8j/lsxbmS0/+RFnhd5XuRo/8mFjPafLGTE2OSlDOj3BrfFVlts9cUW+gFjmz9Mpi3saJiMOUODf+1im9aM8Tx8avOByYu8LPKyyjvZ6jJ4kbdFbnUxNj8Ors6WE5i8yMMiD9RTI/XXdCys5eyIJZs/TM4Ld7IscviuR+NCroscY25Pxt3b0/IJg81fg6szdmg6N3JY5GF5PtJfuHRgvJvYkZk0QXiy1UuMO1kWOcamjnhA4n+8yw198uC6yO0aoMF897FtYTCy+6PfQHo/dWPUpTfjRo6LHPOlbnq0n8nHYVzJeZFrfDrLwp1sY4rpx5ViB3yKK3nyEY0ruS9yXIajWapzpDx8jIh2Tc/gsMjtgh5jG08HN3L28Sgiz5A19XUyLsDR3JdyIZdFjmtwNHl1ckXdTU8Vclvk+n5N1vfLuTpjbpA1Y6ZcyHGRR+jvxpiP2d8mIds8dnAl45tociOXRV6W5/FODca7g3l4xNJADsY61jtTjjMak7V/cF7kqMtg7R+ypueUhZwXeYataNzJdqFSMtZ2DvAjdlM6o16mx+bkgzsZ/V625+GXAF/jsgTnRR6EHI+FF3lKC6NsiBnkFpwXucBWNa5kxF5oxhobATGAtQNnfBOZLYxTk6tztu/ZZqzlRJ4t4mSm8yLXPsG5kdMixyVSk7VsyHfFjPdo8iIvsBWNZWH1KXJiEWdFMnJWEYdFJqNe+DY/QyAsLM7YUJCRN4s4G+K8yK1eg7WdkUOLYvUyRuxNFrLVa3Ahl0VeluetXvCjWL0GL3L0e4PR7yF3FzGXGIyFA+dCNt9140K2Og5u5JQX7uS8yPPyPGIS+bGINYTJZZGjD5ysdUcOKmIXgfMq72S8d8jnRMtXGNvCw2D07ZMr2fJCgxd5Wp63HJex5TDRzjgGkpFfitgtObkscruYbXAht0VudTFGf4g81cndGfsjnWEL5cG8whlti5hE7iIjfxWRu5iMepnfbY4xGHPgweYj1LGZjwYvcqvXYM9FR5tXTG5ky4cP7s42x5i8yENauJJt1aIZIx6M8a5NXuTmo8GNXBa51WUwfIS47eajwYtc50gZOTe7+s9Z/YX82JlmVn8h55awxjHZFmA6GHO/yULGO4VcXEJewnmRo16TsQ6TwRiLB9uizGAht7BwIfdF3pfn4S9jXBaIpbgwrgvMJke8TV7k8NFg+GjyIre6DFYfYaxJmFc4L/IKW8W4kuEv5PQScgsZecKEUxzOqJf66xxy08KVjPkS8ocJaxyT0yK3eg3G+iXKhtMakyUuXMm2Kj64kesir8vztjJujHjDPCphLSNj7pGwYzEj95iQl3Be5Ro/gna2OYYgfpCLyMj1JeQinBc5fDS5jm0Kwa4ZnGzbQwYLGXvfJhdyX+R9ed72KIBtByK+bZNtQRxsu4kGy8Ios/1tnvtZTsYOvsmLHGOu2N9iXjS4LnKMR2LP20apwYXc08LN2fYpTu7ksMjD8nyMC1O/pGPhRY/5pRs3clnk6LcL4gS7E51l4U7WOVJG3jIhRzEZ31DGyEs4Qw9iqdh1oYgxmycMxrfeZJQHsYR9hpMxr5ssZCvz4EJuixxzA+QJEw6OOlOO9QvnRsb3xeRCjtSDnYQZ354JNzNkfAMmG+snV7KVebCQMZ+ZrO2DXOLJjYzvu8mUI7fgvMjDIg+LPEI/fIRzn86VDL9MbmT4ZXJ13+HIp7Ms3Mm4xBX58DNjE73dmsUPGHsSnPPCKANiqVssoa16CgsvcowpNRsLWRa5oB3EmL7rhX7pGFMm04+9pYUbuS/y7s/bjYrOsnAnh0ZGbgR52nyYXyrY/DJ4kePbYbKQ8e5MbmS7WrcZdzLGx8EYHydXZ6xBOC9y5BmQI8qWZxgcFzn64cHoB5BDzrjRaXJe5Ii9wYi9wYi3ydhPKWBsfp/cybbV2Bh78yaLs53fnMzno21xRx1tDoB8dbY5APLV2eYAkxe51WVwJ8six1x6srYn8tV28aLzIkf/pls+lWHLygl/IfebcX4hY+w7v54gb8bYmI/2T3ZMZbCQ7TSNMb5b22D1RUebW55h8iLHd+tg+GjyIse36mRtE+RgM26jcF7keKeQg83Yt5CRg7XLGzNyoRn7FjJynhlzg4x5Qs52IAO2sp3IGFzJdvotGOu7g3xmxv6EjLxlxrrG5LLI8U4Nxjs1eZHDR4PhI+Q/Ty7OuKzRWfQSa5QNN0UJ8pknQ452wLqGIG+ZcSxTkGO0Kxtx1E9ZFu5kbBxNg6v+LdoNexQFuceMucHkusjbsbCQ+yJXHw3GQQVBHjLjpMLksMgDbKF9sDFR8B1xssox97ZbHgX5uowzl4IcXbZDl/j+zcVOvRvbsXdj7A9HnseufZRgclzLHUyOi7kHt0WOq8UnV2esWUyGjyZrmyAvlzFPcF7lsIX2wRXJglzcyZCjHbBmIfjuy8gtCPJg2Q5iRtODXb+D7VoNY+0rBDmxjLMHzotc+73BOHMgyJVl7H+YHBY5rk6ffPoR96rpkl0m426ryYWMCy0nV7Isclmex0WKg+EjfONnXBUxuS1y+Ggy6ghf4I4I50Wu/Z6zfLBb8U7GhbSTGxmXF03uZNxcM3mRy/K89nuCvJBdBemM8jfjTjYfGVu9unGdLMcRF1b9yI8J1imcFzmuuJ/cyVovZ+gXMC6MksGVbHdHDu5ku5vQ2C4nHLzKl+dxPdNg1Av5OsG8QtAvCeYVgvyVILcgeJcFuQVcZRnGNZGDcSnXZCHbBZ6DC1kWuSzPo16DcQvXsGv3khrbRaqDZWG0Lepld0lZ+bFO4bzII/xVjAs5LXKtiyCfNq6OHH+Lugy2q1YHNzJuS5rcyXWR1+X5tpSzLfr7YrdTj/0ID/oQwe0Ok/EeTZaF0T5o22Q328LXdnfz5EVe0A7duJDrItcYE+TZBNc/zL+125GNcZff5OZsN1pN7uSwyMPyfIwLU39Ox8KLHmH7jEuejUtYWBZm+9htkkNPX+x2yjFnGO0gB9tHwiIPbB/MGebfLuW3ayUns77YA+nMeoksclmeL3HhRX9d7NZFD/yCOYBgPUIwBxOsRwjmKoKTDJPDIkf/hjyn4IAj7oJXLuS0yOGXwXYn/eBGtvvnizH0I86RZxDkGAV5hsltkWMulO1vMRdCvlGQZxhcj2PhRkb/NrmSrfzBGHpQTuxtEMzPBdc1TJZFrj4SzG/HjZGYN44rIycvcvRvg9EPTC7OdkMk5qWCdQdBjlGwT1LEnsE8YfIi175akFcUXC4tyDcK9kw6L3Lt3yZrX+0sZLwvNo7YPGHyIsd4OhjjKXKAYvMEY5snTC5knf/gc/nE4oifBxnYHPFTFwO7Y6Y081nt7wYizMQYYTZ5kWOqMxlVQxjg4kdnl5cDU+7J1X5xRDcMJUf8lshAcdRwm1gcM6WZz+prL5jiFPxsg7OWG+k/uzXSuZNRn2J6UJ/BfZHjEwJpo3MVMi28yNEFDMZQOlkWRrt0sIYadmUUZBsGaqAN1DibWB21ehMprXxWh6CBVh0BW3WKMeRwif0wkT2Pu6GQECu4NmGgjjMTqyOKP7A5Zkozn0VNDJHMSobdEZ+qA6sjOjQkoEq0RSvFNH8cSpFS9FrYOVlw7cHkuMjxBYesY8HNB+NPkUgwtPUeID63BxZHJBEGUlr5bGXpKvU2WuuuIdtpLsPuaGtvhtURIYVMp11XmQzt4IohpfglKHs38Gt8k8sixyd1tYLYsRvD5ojNMIbYbzWwTBQ7MWRIaTiImeh67ZCDYaKG7I2B0X2gJKI3BrYgjMawbYuGjeYapZ2VtlyAseUCJrMx7IhiNPRCl+iNgbsKJnq1bUvjQEqFz0omUm+hNWxEin/++cOH+euUP/3+5eNH/XHK5ecq//a/D//5+cvHX3//8OOvf3z+/MOH//fz5z/w0H//8/Ov+P/ff/5y/usZ8x9//ef5/6fCf336/FHpzx/418fjP9XVmzj+XFc5qqs4u7yvlISNkiO6jjNRvKiQr1TEjYpzYaFMHfVcxXYlNX6lIz3WkSKOZ0LHyTE/0rGtiubCrBgh9IdVkRdUpXzvqkhzr7THXmmPVdTapopzcehhIfqmIgmbIq0i5wrosxU5p/APK7IL8xi9JrrprTwO812Q9uVlOVdxjoeV2Ueppvena/tDJdvq4PjsrE6Kj6vzikANr4jU695J+WF1dkoOHMMa8X62sSuR8HVtNuFasDUBOs4OfWnW9nWPGncFkdmocdFwJh6+1rAJ+IqNVfbanZlR6jg7pK90bGI1eUXOdSrXEOM3GjaBGnFLu1XknDA+1pEf60C2ECrOfN89DbomYg4Jcq8esc1C6NbXxzrqzqdxDrJnLqTe1FF8aDlnLfd0YKvTGK1je6gjHbvoih5c5ZaGnmcH1uVeGb6aMZTHfk0bv2ZsD7EQP/PXfFff05w6Px/NKTfdmjxCdUn+lo5XVAW/uzUGydzuvSk1eNdVN+9r6t9Xh07TZ11Kbfd01Jo4tj1+63N89k3Zabj2puw0XH1TsjwdXtvm7Ox4enzcnNvBVar35WUd5L8ZXPNmRlpqmuU4oytQR/h6kM+7ED2yDwhn4og6ar852ej10WRDNsP8uZ7gU+Oa0sNyyCY8dAP+jA/99fr0aPol2ylpPTglrfGxkm1tSvbatMetKrtALX22al6L8RcduwnpUdoMM91y3B5WZtObxnM91Cc/J8ebSrw6yv2ekt6SK+ntsZJ9m9SlTR47uGwd3GekpbaEayrv0NGKfyy0JUjep6PPEUZ/gfixjryb2+bZHmcCtNzSEYKPdHqmnDpaeocOflCeS8YPdWxfmsqp/rk88vClKe376jiHan5NHkt8hK/btG761YirQ8ZcfRkx0zfl2OvwcpwJ63hTR/eXLi0vbnpPe9QUvD1KfNwe+QXtkV/QHvk7t0f3D+PQl5nMt+1xWUeNd3WI6/jq6/q6jvPL3oeHY5kbfqujhe0MNfqXg95/Ty0pvUNLO6jlHLUea9nMAAL7VD1O/bg/3LbJkvhoj33T5CVtIi9pk/p8m+wnRZ5OPl+9x5Oitp16B/8a6l/FWr0+Xc0cq46cH05X9zqYLTxk6eC/0dFfMV3tr5iuXq9NiM+3SEy3dGAxan7fbVp1E6k+320cIeS4/OcheAmWFNt7FHi68syi3FEQPcLj6ol3KPA8YyzHIwVbNxQfaE/eJI+P9JQftn9/yRF7DVc8sdVwyRV7Dc/6IgSmbvRGjMe+eEEmP4SnU/khvCCXH8LTyfwQXpDNRww+l87fq7iUz99X5WJCP4QXZPTfUHItpb9XcjGnH+LTSf2timu5yq2Kq8nKEJ/P67/RptcS+28ouZbZ3yp5SW0u5vb3b83FxHyI/TsruZre3yu5mN9HguXJtyY9neHfqrj81qTnc/z7Nr2a5D9ekOUP6QVp/pC+c57/67nI8gX37Vwkb+YAMfsWiZiXb9pvCxJ2C0GxxOzzqlw2StLzCfaQ8wsy7GG3KHU5xf6Wlms59je0XEyyv9Uu17LsYbc6dTXNvldyMc/+hpJrifawXaC6mGnfKrmaan9DybVc+/4FupgoD7vlmJcouZpuD9Kezy+/oeRagvkNJdcyzPs2uZhyDyW+oE32Si62yV7JK9rkYtr9upJN3v0tJZcS71slVzPvofRXpJnfUHM1zxxqeD7RvFdSfMakO+jvKWm+M7X1XX9fnl8FCPUlywBvqLnun/oK/9RX+Kc+7Z/9NNLnKHo54eOxZ7foJOLLGlLiZgBr8RXTyN3KVToObjA/js2e7LabugnuTDUtktrjberbZimSvFn6Zoredi9Q5gt0Ttcfv0B7Jcz2SYq3lfhAKLuudqtEGhd8+t2SlKPw2yffViKuZB3X36fEd6qfr0+9qaQGfwdrbreVMBVTwl0lrE7td0vS/DBCbDncVuIR20TuKmn+jdx6uqmkB34L5vtKvE263H13Ot+dfvfdSfjJ4LFY2m42bMJV5aYkx5svYBJfW0rr4Zm/KNmOXzUx7Je3+Ns+Nh7lBcvQ8agvWId+o0LsZVvImwptM3fdA/9I63ss7yhJbxxJNyXZKjkXZHwb6Lkm/rg6u/WuVvIsSSvleLjlIe4S3lf3TeyrE7yDPFfsNuG2O2hVii/sltJ2SjYxSw/rrwguudlvIna7GHF4WujEx3OLvRLxjE6Wlm8qKf4C5nN99rGS7aLX4d39iUtetb1DR/Devob1IN23OnaZpcjVpljizXJI9XJIv6nDc6F1V469Y46DjsnPh0jZDOZ7JfVgrjqUTYi0F4RIez5EtgeeroZIe0GItO8dIp6417vmng+RGsPdEEkMkXq3P6ue+8+1b0qS6vNxttVxNc7683G2L8e1ONvreEGc1cQQ6fKCOOvlppLmp330xsDHSnaLTFdDZKvjYojk+nyI7MtxLUT2Ol4QIvz0zK2E50OkbVYN3ihJnSmxM/dytyvq0buinjbVkfx8nG11XIyzbbr/Ypzty3EtzvY6XhFntdEx5fk466neVZLEZ9/55vxMDlci60faX5SU3fdVOTyNpTdw5YfZ9bg9AlW7rwq1JQn8bVZ7r0R8IqB3D95TUn0n9rlWsFGxbZPIReYS1w+bb9tk7x/fWH7mTDZO3q5OXffP7ijUZf9slVz2T//+jRu4izXkm929RP84kbhVsushj7zs/S+Pv+nrRsnly0J2C0sXbwupuwX8q9eF1L5r1kv3hWxVXLswZFuVmFiVHG8qubhVMrb0nZVc3W+5V3Jxv2Vs21i9st9yq+Lafsutiqv7LePuVNbVKzu2bXpxv+UbyUVfiy01Pt5cGHfnslIMwQ+q6Q9xPkyIbw9m1eKrBLWFx/3ZVknjUkPbJTr3SsJy7q7dVcKVk1Z3Jdm27OGLOGfLHvlxy7ZdGjqxLHpP3yMt272sfP30R4gf7mVNx0aLVD98IXXZhCDxuo4zxej58CPc1BH8k/zs5+WmDndNicvU5l06on+ynVOSdE8Hr1ArqWx0bDq1lv0L5cSHX0p7HeLL7CfWmzr8rMKJ4Z4OrtSfH/XxsY6tX9gtngtR9/ySfb9NyctepnfpEO/ji6Sb5cCF2kNHu/m+FP/kO0eMxzp2Q83VGNvquBhjex3XYmyr4xUxVmLxNk0346Md3ge1Zdr8Ph2+Jl7WBNb7dPDYRl/88i4dvfj87giPdezu+7saY1sdF2Nsr+NajG11vCLGuu8pO/FefJwpPGbRlpzRu3REj9Mab8bpmX7zcsR6sxyJ5UjHTR3ZN2dXuTn/qOLfQ3X37qcX9KfpBf1pekF/mr5zf1rFrxA7m/emX4qnMuqZxX6oY3de66pftjou+mWv45pftjpe4Rdu1jjx5rvPoxl1992wW7m67Jf6Ar/UF/ilfme/1Mg2jQ+/X/bfhIF3a9dl8+a334S7+wPzkj5MtT76Nk27VZrMM5I5x/WcWHqPEq7T5iVQ36cEP55hSsoRNkquNkkrj5tkq8Ondfq7lI91bO9fF0/fJ/015HuJg85DsO14eHtQKtuOyPPDrR6PO+atjuoJ81bluKeDZ0Laulv5Lzp2E7u3L3pJ+2v/Llz0stdw5aKXtL8C8cJFL3sNVy56ecMXnplubfOBvdfhJzdOrPd0dD9D0tZE7PvK4ed2T2w3y+E7cPsRH8dmfTI269OxWZ+Ozfp0bNbvGpv98GOg/Sj3/NmPRH+melOHe7SHkG/q8InTqS7fmyjwqpuvFoC+HQN2x6yuThSavGCisFdycaKwVXJ1onC5STYThb2OaxOFfrxgovBGu3IvZf7qiOJ72rX48sC5yLZxzv7GUh7ivtcRxuzHgJYdC3c19HtdqXhnvK4LvEeD7/g/3+BnNaxdx7tq4QNCuzlZueTN8rQ3y9PeLE97szztzfK0N8vT3tx/pl3sJbZKrvYS+y95X7E+547xZjbA9yieOtLzOtrtcjCz0e5mNvI1HeEFbRpe0KbhBW0aXtCm4fk23Wdor7XpXse1Nr2so90uxwva41qb7lcSvBw1tXBzNSLwnrKbq/81+7UoNZeb5chp2VkVb9alsxzxZpZXEldW8s1yCPeeS073VhEvvi97Hdfel8s62u1yXIr1vY7n35fC87Slp3RvB8FFv4QX9GPhBf1YeEE/Fr5zP1bEZ1OlLL9s+a7dQxf9stdxzS+XdbTb5bjWpuU7+yV6OUqsD/vTN/b95eX8+brP9H27B7MvVj+jRfxosHK/Wxbp1BIe3teTt79YdfqHd0nIknx5137V5um5M7+ybgT+Rsl2Q7IvJ/R4d0+zb5vpVW6q4LboenfXezp421wIN5VcvJsb7nv8fXhpb/VWx9U7k99QUrhjtslNJRevkd4ruXhd+RtKrl1X/kZ1rl1XnsvuePC1X1bcqbj404o7FZd/W7F+72C9eF35vkEudUR7FZc6oqtu2XVE+wNanqOSUB9fwPSGEt/PKKHfPScZ3LenvrtKcHzDlMQc7irJVFI2bbI/CcsTjmHZR/yu07TRl0pPrPd0BN+bXdd997d1hJvliJF7GtNxtxw8Xfx4L9Ab5fC92TXK3bok9+39U/3X4mOr42J8vHEzwKX4uKwj3CzHxfi4fMvBJj725bgWH2/ouBQf+0s9rsXHVsfF+HjjcpFL8XFZR7hZjovxcfmilE187MtxLT7e0HEpPvaXC12Lj62Oi/HxxiVHl+Ljso5wsxwX4+PyhU2b+NiX41p8vKHjWnwcL4iP4wXxcbwgPo4XxMfxgvg4XhAfxwvi43g6Pvb33Wde87veQ/C+S/OzHxA5ldTHSra/RnC1JG8ouViS7a9W8NMwrFdhfvsL0XGXZu7cyiYbFWWXZfYk83or4LtU+AbguqSp36eiUUW9p4I3y9f1ct+//AjIpjnPtK9vLzw53fvRmfMvQ36Flmv3n0va5lOv3n++/S2sSxmIvYpLGYirv8i1U7H9KbxrFdmquFaRiz/It1Ox/S3OK/um9hqu7Ju6rKHf0nBp39Rew5V9U1c1PN439UYtLuyb2v7I7RVnbhVc8eVVBf2Ogkue3Cq44siLCh77cV+FC27c7wq9Nrd4Q8elqcUucX25HMfz5XjjMMy1Gc7unNPFGU45np7hlOPpGc5WxbUZTjmeneFIfcEE5w0l1+Y3byi5OL0p9QXTm/z07CY/PbnJT89t0tNTm/T0zCbdm9j8/fzPn3/59OWnz7/98vPvn3779b/n3/2pqr58+vkfnz+O//zXH7/+svzr7///P/Nf/vHl0+fPn/7903++/PbLx3/+8eWjatJ/+3CM//lbimf/nlJof//hQ9L/PmfGKafzv4L9c5MfzmcOFQT793A+n9Lf/9QC/h8=" - }, - { - "name": "process_message", - "is_unconstrained": true, - "custom_attributes": [ - "utility" - ], - "abi": { + }, "parameters": [ { "name": "message_ciphertext", "type": { - "kind": "struct", - "path": "std::collections::bounded_vec::BoundedVec", "fields": [ { "name": "storage", @@ -6881,15 +7325,15 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" }, "visibility": "private" }, { "name": "message_context", "type": { - "kind": "struct", - "path": "aztec::messages::processing::message_context::MessageContext", "fields": [ { "name": "tx_hash", @@ -6900,8 +7344,6 @@ { "name": "unique_note_hashes_in_tx", "type": { - "kind": "struct", - "path": "std::collections::bounded_vec::BoundedVec", "fields": [ { "name": "storage", @@ -6921,7 +7363,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "std::collections::bounded_vec::BoundedVec" } }, { @@ -6933,8 +7377,6 @@ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -6942,336 +7384,369 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } } - ] + ], + "kind": "struct", + "path": "aztec::messages::processing::message_context::MessageContext" + }, + "visibility": "private" + } + ], + "return_type": null + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "utility" + ], + "debug_symbols": "TL1JrgRJc6R5l1z3ImzQwXiVXhS6ugYQIIpADStevp6rmJrIhvnJz0wTdXNXCY9wfRH/8c9/+a//+f/89//0r//jv/37//rnX/7f//jnP//Pf/23f/vX//6f/u3f////73//67//j7//9T/++X3/J//+7/p//snxz7/43z/mP/+y//6x8I+Nf9g//5J//3D8I/CPxD9O/eP88I+Bf0z8Y+EfG//AKgerHKxysMrBKuP3u/8c95/z/nPdf+77T7v/9PvPuP/M+8+73rjrjbveuOuNu96464273rjrjbveuOuNu96868273rzrzbvevOvNu96868273rzrzbveuuutu96666273rrrrbveuuutu96666273r7r7bvevuvtu96+6+273r7r7bvevuvtu57d9eyuZ3c9u+vZXc/uenbXs7ue3fXsrud3Pb/r+d964/fBatgN1vC35lgfREM2nAvxt+7wD/4Wnt9/FbNhNewGa/CGv5Xn/iAbzoWvPQDfyvbBbFgNX83f4XyNAvCGv5XX+CAbzoWvZQCjYTasht1gDd7QK59e+dyV59dFa30wGmbDatgN1uAN0ZAN58LolUevPHrl0SuPXnn0yqNXHr3y6JVHrzx75dkrz1559sqzV5698tdfyz6Ihmw4F74eA4yG2bAadoM19MqrV1698uqVd6+8e+XdK+9eeffKu1fevfLulXevvHtl65WtV7Ze2Xpl65WtV7Ze2Xpl65WtV/Ze2Xtl75W9V/Ze2Xtl75W9V/Ze2Xvl6JWjV45eOXrl6JWjV45eOXrl6JWjV85eOXvl7JWzV85eOXvl7JWzV85eOXvl0yufXrl6MD9YDbvBGrwhGrLhAFb1YMFomA2rYTf8rbzHB94QDX8rb//gXPh6EDAaZsNq2A3W4A3R0CuPXnn2yvMm0pqzYTXsBmvwhmjIhptIa/0aeuXVK69e+evBfT6wBm+Ihmw4F74eBIyG2bAaeuXdK+9eeffKXw/a74Nz4etBwGiYDathN1iDN0RDr2y9svfKXw9afDAbVsNusAZviIZsOBe+HgT0ytErR68cvXL0ytErR68cvXL0ytkrZ6+cvXL2ytkrZ6+cvXL2ytkrZ698euXTK59e+fTKp1c+vfLplU+vfHrlc1fev1/DaJgNq2E3WIM3REM29MqjVx698uiVR688euXRK49eefTKo1cevfLslWevPHvl2SvPXnn2yrNXnr3y7JVnr7x65dUrr1559cqrV1698uqVV6+8euXVK+9eeffKu1fevfLulXevvHvl3SvvXnn3ytYrW69svbL1ytYrW69svbL1ytYrW6/svXL34O4e3N2Du3twdw/u7sHdPbi7B3f34O4e3N2Du3twdw/u7sHdPbi7B3f34O4e3N2Du3twdw/u7sHdPbi7B3f34O4e3N2Du3twdw/u7sHdPbi7B3f34O4e3N2Du3twdw/u7sHdPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j1o3YPWPWjdg9Y9aN2D1j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg9496N2D3j3o3YPePejdg949GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPRPRjdg9E9GN2D0T0Y3YPR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Ft0W3RbdFt023TbdNt023TbdNt023TbdNt023YxuRjejm9HN6GZ0M7oZ3Zglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJedlyfy9LJm/lyXz97Jk/l6WzN/Lkvl7WTJ/L0vm72XJ/L0smb8f3QbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SpLRn21SmXJxSAm8TysLLk4iJO4iJtIt0W3RbfKkjELz8PKkouDOImLuIlGdGIQ6bbpZnQzuhndjG5GN6Ob0c3oZnQzujndnG5ON6eb083p5nRzujndnG5Bt6Bb0C3oFnQLugXdgm5Bt6Bb0i3plnRLuiXdkm5Jt6Rb0i3pduh26Hboduh26HboduhWWTJ2YRJPYw0gjhGFgziJi7iJRnRiEJN4Hg66DboNug26DboNug26DboNug26TbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptum26Gd2MbkY3o5vRzehmdDO6Gd2Mbk43p5vTzenmdHO6Od2cbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdEu6Hboduh26Hboduh26Hboduh26nec2mSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZMpklk1kymSWTWTKZJZNZspgli1mymCWLWbKYJYtZspgli1mymCWLWbKYJYtZspgli1mymCWLWbKYJYtZspgli1mymCWLWbKYJYtZspgli1mymCWLWbKYJYtZspgli1mymCWLWbKYJYtZspgli1my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GcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySzB3OvGT+gu4iZ+bnsVOjGISTyNmHu9OIiTuIibaEQn1rFFYRLPQ2QJcBAncRE30YhOpNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26ab0c3oZnQzuhndjG5GN6Ob0c3oVllis3AQJ/Fzs7rkKksuGrGuyV0YxCSeh5UlFwdxEhdxE41It6Bb0C3olnRLuiXdkm5Jt6Rb0i3plnRLuh26Hboduh26Hboduh26Hbodup3nhrnXi4M4iYu4iUZ0YhCTSLdBt0G3QbdBt0G3QbdBt0G3QbdBt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdNN6Ob0c3oZnQzuhndjG7IklGYxPMQ9yXAQZzERdxEIzqRbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdEu6Hboduh26Hboduh26Hboduh26neeGudeLgziJi7iJRnRiEJNIt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbfKEsvC87Cy5OLn5vXvVpZcXMTPzVehEZ0YxCSeh5UlFwdxEheRbk43p5vTzenmdAu6Bd2CbkG3oFvQLegWdAu6Bd2Sbkm3pFvSLemWdEu6Jd2Sbkm3Q7dDt0O3Q7dDt0O3Q7dDt0O389ww93pxECdxETfRiE4MYhLpNug26Dbo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", + "is_unconstrained": true, + "name": "process_message" + }, + { + "abi": { + "error_types": { + "12037992570023391496": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "13455385521185560676": { + "error_kind": "string", + "string": "Storage slot 0 not allowed. Storage slots must start from 1." + }, + "14415304921900233953": { + "error_kind": "string", + "string": "Initializer address is not the contract deployer" + }, + "14427754132438837229": { + "error_kind": "string", + "string": "Function commit_public_user can only be called internally" + }, + "14924807131364042204": { + "error_kind": "string", + "string": "HashlockNotMatch" + }, + "14990209321349310352": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "15367606449725535591": { + "error_kind": "string", + "string": "Function add_lock_public_user can only be called internally" + }, + "15764276373176857197": { + "error_kind": "string", + "string": "Stack too deep" + }, + "16075137377171297093": { + "error_kind": "string", + "string": "HashlockAlreadySet" + }, + "16431471497789672479": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "16810041750452690220": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + } + ], + "length": 27 + }, + "17487453435310197877": { + "error_kind": "string", + "string": "Function refund_public can only be called internally" + }, + "1998584279744703196": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "2175217314894115242": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "2360858009427093503": { + "error_kind": "string", + "string": "InvalidTimelock" + }, + "2369193878689457446": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "2907544755768338616": { + "error_kind": "string", + "string": "Function get_htlc_public can only be called statically" + }, + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "4493654309393309420": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "459713770342432051": { + "error_kind": "string", + "string": "Not initialized" + }, + "4736483829072576196": { + "error_kind": "string", + "string": "HTLCAlreadyExists" + }, + "5029608433027800177": { + "error_kind": "string", + "string": "NotPassedTimelock" + }, + "7920565393106506482": { + "error_kind": "string", + "string": "Function lock_public_solver can only be called internally" + }, + "9967937311635654895": { + "error_kind": "string", + "string": "Initialization hash does not match" + } + }, + "parameters": [ + { + "name": "selector", + "type": { + "kind": "field" }, "visibility": "private" } ], - "return_type": null, + "return_type": null + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "public_dispatch" + }, + { + "abi": { "error_types": { - "576755928210959028": { + "10791800398362570014": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "extend_from_bounded_vec out of bounds" + }, + "11021520179822076911": { + "error_kind": "string", + "string": "Attempted to delete past the length of a CapsuleArray" + }, + "12469291177396340830": { + "error_kind": "string", + "string": "call to assert_max_bit_size" + }, + "12913276134398371456": { + "error_kind": "string", + "string": "push out of bounds" }, - "1004672304334401604": { + "13450089406971132036": { "error_kind": "fmtstring", - "length": 48, "item_types": [ { - "kind": "field" - }, - { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } - ] + ], + "length": 144 }, - "2920182694213909827": { + "13455385521185560676": { "error_kind": "string", - "string": "attempt to subtract with overflow" + "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "3206131020419630384": { + "14067204867181196045": { "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" + "item_types": [], + "length": 75 }, - "3738765135689704617": { + "14576755381182599325": { "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] + "item_types": [], + "length": 24 }, - "5019202896831570965": { + "14990209321349310352": { "error_kind": "string", "string": "attempt to add with overflow" }, - "5727012404371710682": { + "15711892660910782274": { "error_kind": "string", - "string": "push out of bounds" + "string": "Hint values do not match hash" }, - "6485997221020871071": { + "15764276373176857197": { "error_kind": "string", - "string": "call to assert_max_bit_size" + "string": "Stack too deep" }, - "7233212735005103307": { + "16216212843441549037": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "Proving public value inclusion failed" }, - "8270195893599566439": { + "16431471497789672479": { "error_kind": "string", - "string": "Invalid public keys hint for address" + "string": "Index out of bounds" }, - "10676044680617262041": { + "16792019527863081935": { "error_kind": "fmtstring", - "length": 98, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" } - ] + ], + "length": 77 }, - "11732781666457836689": { + "17154023812102399658": { "error_kind": "fmtstring", - "length": 77, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 128 }, - "13649294680379557736": { - "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14101993474458164081": { + "17803644318014042523": { "error_kind": "fmtstring", - "length": 61, "item_types": [ - { - "kind": "field" - }, { "kind": "field" } - ] + ], + "length": 58 }, - "14225679739041873922": { + "1998584279744703196": { "error_kind": "string", - "string": "Index out of bounds" + "string": "attempt to subtract with overflow" }, - "14657895983200220173": { + "2014890719615096298": { "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" + "string": "Field failed to decompose into specified 40 limbs" }, - "15200354114977654233": { + "3080037330898348111": { "error_kind": "fmtstring", - "length": 144, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 132 }, - "15760694058516861966": { + "344423948968719440": { "error_kind": "fmtstring", - "length": 128, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 - } - ] - }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" - }, - "16446004518090376065": { - "error_kind": "string", - "string": "Input length must be a multiple of 32" - }, - "16954218183513903507": { - "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ + }, { "kind": "integer", "sign": "unsigned", "width": 32 + }, + { + "kind": "field" } - ] - }, - "17610130137239148460": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - } - } - }, - "bytecode": "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", - "debug_symbols": "TL3LsjS7jpz5LnvcgyRIAOR5lR7IWn2RlVmZyqwljerltQJO0H2i87lq/3QEI+CZGYGV+Z///D//73/9X//tv/zbf////uN//POv//M///mv//+//fu//9t/+y///h//9//1P//tP/773//vf/7z+/6fPP/8a/4f/+w/EX//M/751/77H/vnX+P397/z73/t73/X3/+uv//1f/71/U/gfxL/s//+j9+/Pfjf87v/O+7/2v3fef933f/1+79x/zfv/971zl1v/H4No8EaZsNq8IZoyIbd0CuPXnn0yqNXHr3y6JVHrzx65dErj1559MrWK1uvbL2y9crWK1uvbL2y9crWK1uvPHvl2SvPXnn2yrNXnr3y7JVnrzx75dkrr1559cqrV1698uqVV6+8euXVK69eefXK3it7r+y9svfK3it7r+y9svfK3it7rxy9cvTK0StHrxy9cvytbL8PoiEbdsO5kL+G0WANs2E19MrZK+e38vhgN5wLX68BRoM1zIZv5fXBt/L+IBqyYTecC1/rAf5WnvaBNcyG1fC38pwfREM2fCt/O/b14Af29SDgW/l8YA2zYTV4QzRkw244F74eBPTKo1cevfLolb8eXOODaMiG3XAufD0IGA3WMBtWQ69svbL1ytYrW688e+XZK89eefbKs1eevfLslWevPHvl2SuvXnn1yqtX/npwzQ9WgzdEQzbshnPh60HAaLCGXtl7Ze+VvVf2Xtl7Ze+Vo1eOXjl65eiVo1eOXjl65eiVo1eOXjl75eyVs1fOXjl75eyVs1fOXjl75eyVd6+8e+XdK+9eeffKu1fevfLulXevvHvl0yufXvn0yqdXPr3y6ZVPr3x65dMrn7vy/P0aRoM1zIbV4A3RkA274Vv5r6nn14OA0WANs2E1eEM0ZMNu6JWtV7Ze2Xrl6sHzwWrwhr+VfX2QDbvhXPh6EDAarGE2rAZv6JVnrzx75dkrr5tIc40Ga5gNq8EboiEbdsPNuum9svfK3it7r/z1oOcH3hAN2bAbzoWvBwGjwRpmQ68cvXL0ytErR6/89aD/vZTMrwcBo8EaZsNq8IZoyIbd0CvvXnn3yrtX/now/IPV4A3RkA274Vz4ehAwGqyhVz698umVT698euXTK5+78vr9GkaDNcyG1eAN0ZANu6FXHr3y6JVHrzx65dErj1559MqjVx698uiVrVe2Xtl6ZeuVrVe2Xtl6ZeuVrVe2Xnn2yrNXnr3y7JVnrzx75dkrz1559sqzV1698uqVV6+8euXVK69eefXKq1devfLqlb1X9l7Ze2Xvlb1X9l7Ze2Xvlb1X9l45euXolaNXjl45euXolaNXjl45euXolbNXzl45e+XslbNXzl45e+XslbNXzl5598q7V969cvfg6h5c3YOre3B1D67uwdU9uLoHV/fg6h5c3YOre3B1D67uwdU9uLoHV/egdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3oHcPevegdw9696B3D3r3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B0D0b3YHQPRvdgdA9G92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3YHYPZvdgdg9m92B2D2b3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MPd6cRCNOImL6MQgJnET6ZZ0S7ol3SpLZhQuohODmMRNPA8rSy4OohHptum26bbptum26bbpduh26HboVlkyvXARnRjEJG7iacTc68VBNOIkLqITg5jETaTboNug26DboNug26DboNug26DboJvRzehmdDO6Gd2MbkY3o5vRzeg26TbpNuk26TbpNuk26TbpNuk26bbotui26Lbotui26Lbotui26Lbo5nRzujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tbptum26bbptum26bbptum26bbptuh26HboRuzZDNLNrNkM0s2s2QzSzaz5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSw6z5DBLDrPkMEsOs+QwSzD3OrPQiJO4iE4MYhI38TxElgDptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HbabWLu9eIgGnESF9GJQUziJtJt0G3QbdBt0G3QbdBt0G3QbdBt0M3oZnQzuhndjG5GN6Ob0c3oZnSbdJt0qyz5fhZvYu714iJ+bve30YKYxE08DytLLg6iESdxEem26Lbotui26OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HbeW6Ye704iEacxEV0YhCTuIl0G3QbdBt0G3QbdBt0G3QbdBt0G3QzuhndjG5GN6Ob0c3oZnQzuhndJt0m3SbdJt0m3Zglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJYNZMpglg1kymCWDWTKYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWTKZJZNZMpklk1mCudf62V/MvV4MYrntwk08D5ElwEE04iQuohODSLdBN2SJfYgsAQ6iESdxEZ0YxCRuIt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot6Bb0C3oFnQLugXdgm5Bt6Bb0C3plnSrLKkfUcbc68VF/Nzqd44x93oxieV2Cs9DZAlwEI04iYvoxCAmkW6bboduh26Hboduh26Hboduh26Hbue5Ye714iAacRIX0YlBTOIm0m3QbdBt0G3QbdBt0G3QbdBt0G3QzehmdDO6Gd2MbkY3o5vRzehmdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3RzujndnG5ON6eb083p5nRzujndgm5Bt6Bb0C3oFnQLugXdgm6491o/Oo97r8BBNOIkLqITg5jETaTbptum26bbptum26bbptum26bbptuh26Hboduh26Hboduh26Hbodt5bph7vTiIRpzERXRiEJO4iXQbdBt0G3QbdBt0G3QbdBt0G3QbdDO6Gd2MbkY3o5vRzehmdDO6Gd0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot8qSGIWDaMTPLWbhIjoxiEncxPOwsuTiIBqRbkm3pFvSLemWdEu6bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26Hbqd54a514uDaMRJXEQnBjGJm0i3QbdBt0G3QbdBt0G3QbdBt0G3QTejm9HN6GZ0M7oZ3YxuRjejm9Ft0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RzenmdHO6Od2cbk43p5vTzenmdAu6Bd2CbsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWYJ5l6/39ydmHu9mMRNPA+RJcBBNOIkLiLdkm5Jt8qS7xu0J+ZegZUlFz+37+ulJ+ZeL07i57ZXoROD+Ll9Xxk9Mfd68TysLLk4iEacxEV0YhDpduh2nhvmXi9+budXaMRJ/Ny+70WemHu9GMTaSSvcxPMQWQIcRCNO4iI6MYh0G3QbdDO6Gd2MbkY3o5vRzehmdDO6Gd0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdnG5ON6eb083p5nRzujndnG5Ot6Bb0C3oFnQLugXdgm5Bt6Bb0C3plnRLuiXdkm5Jt6Rb0i3plnTbdNt023TbdNt023TbdNt023TbdDt0O3Q7dDt0O3Q7dDt0O3Q7dDvPDXOvFwfRiJO4iE4MYhI3kW7MksMsOcySwyw5zJLDLDnMksMsOcySwyw5zJLDLDnMksMsOcySwyw5zJLDLMHc6/d98RNzr8DKkouVyqfQiJP452bf1xzPmnttDOKf29+z8sJNPA+/LPl7gl44iEb8c/t7Kl64iE783L4vv5g199q4iZ+bVTlfljQOohEncRGdGMQkbiLdgm5Bt6Bb0C3oFnQLugXdgm5Bt6Rb0i3plnRLuiXdkm5Jt6Rb0m3TbdNt023TbdNt023TbdNt023T7dDt0O3Q7dDt0O3Q7dDt0O3Q7bTbqrnXxkE04iQuohODmMRNpNug26DboNug26DboNug26DboNugm9HN6GZ0M7oZ3YxuRjejm9HN6DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26LbotujmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3pNum26bbptum26bbptum26bbptum26Hboduh26Hboduh26HboduhG7NkMEsGs2QwSwazZDBLBrOk5l5tjsIkbuLn9v1Z4qq518ZB/Ny+kfNVc6+Ni/i5rVqssuRiEj+3hcXOw8qSi5/bqsUqSy5O4ufmq9CJQfzcvI64suTieVhZ8n1yXzX32mjEzy1qscqSi0783LIOqLLk4iZ+bt/Pe66ae20cxM8td+EkLuLntqveypKLSfzcdu1ZZQmwsuTi53bqgCpLLk7i53bqgCpLLgYx36ZWllw8DytLsKmVJReNON+mVpZcdGK8Ta0subiJn9upM19ZcnEQjTiJi+jEICZxE+m26bbptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HaeW829Nv65zZ8VGnES14f4b50YxPxwF27iefhlSeMgGnESF9GJQaTboNugm9GtsqS6peZeGydxdbdYZcnFIGZ3S829Np6HlSXVLTX32mjE79gGcBGd+B3bqHK+LGncxO/YRh3QlyWNg/jtpFU5X5Y0LuLnZuX2ZUljEj83qyP+suTilyWNg2jESVxEJwYxiXRzun1ZMmfV+2VJoxE/t1n1flnS6MTPbf0Kk7iJn1u9DtXca+Mgfm71MlNzr42L+Lmt2vUMYhI/Ny+3L0suflnS+Ll5LfZlSeMkfm5ei31Z0hjEz63CseZeG8/DL0v+HpEVDqI11nhkbXpNR/493/qwrq3vBvKqOchGI07iIjoxiEncxPPQ6eZ0c7o53ZxuTjenm9PN6eZ0C7oF3YJuQbegW9At6BZ0C7oF3ZJuSbekW9It6ZZ0S7ol3ZJuSbdNt023TbdNt023TbdNt023TbdNt0O3Q7dDt+91ataboJqDbHRiEJO4iZ9bfhdqzUE2DqIRyy0KF7HcTmEQk7iJ52G9Tl0cRCNO4iLSbdBt0G3QrV6n9hcENQfZOIhGnMRF/Ny2FQYxiZ9bvbzVHOTF+SMOohEnsdyq3nqduhjEJH5upyqr1ylgZcnFz+3UaaksuTiJn9upxSpLLgaxjuJ7CaiJx/Wrdb98WPUOpWYb169K//KhMYhJ3MTzMGrdcvvyodGIk/i5jarhy4fGz21UkV8+NG7iefjlQ+Mgfm4jCydxEZ1YbrswieVWReZ5uH/EQfzc6t1BzTY2LqITg5jEz82qnC8fLn750DiI5VZFnklcxHIbhUHMxppXbKwVTuG3Qr3417xiYxCTuInn4dfzjYNoxEmk26DboNugm9W6Wfjd+/aiWrYqt0lcxG/ZeitSg4mNSfwO4vsbklWDiRe/5v67ngsH0YifW72DqcHERicGMYmbeB6uH3EQjUi3RbdFt0W3RbdFt0U3r3V3Ya1QG1XNXW+oatiwcRPPw2put8JBNOIkLuLnVp9ia9iwMYmbeB5Wc18cRCNO4iLSLemWdEu6VXPXB/AaNmwcRCNO4iKWWxQGMR9WG1+sFepcVMNerBXq6quGvZjEqrdO1jmNNUDY+NX7TXuuGiBs/Ny+h0qrBggbP7d6c1sDhKvextYA4ao3rzVAuBIrnIfV3Be/devWSw0F/kVs4bdC1rqjVqh1R61Q61Yb1w2ZGv/7S9DCRXTit0K9BtdI36qXrBrpW/XSXSN9jbVCGVcX1gtvjfQ1JnETv8rqk2mN9DUOohEncRGdGMRa9zuxNaa3dh1xNVm9zNcU3qoX9JrCazwPq8kuTuK3wqndqca5WCvURlWL1Cfpmotb9Zm55uIaN7Hcah/qsr84iPbWrcv+/v8uohODmO+I6zXt4nlYzXCRx1bNgAOqZrjII67Lvq6HmnVb9XanZt1W3XqpWbfGSVxEJwYxibU7u/A8rMv+Yrmdwj83r/dONevm329kr5p183obVbNuuGhr1q0xH37N4PWGqabaGo3oH9Zhfs3gdX+oJtX8+93rVZNqjbVCFTlrhSpyTuIiOvGvMq+3XDWp1riJ5+HXIo2DaMRJrHVrS1atUFvi9R/UwXv9B1W6J3ETz8Mo49qSGEQjTuIiOjGISdzE8zDplnRLuiXdkm5Jt6Rb0i3plnTbdNt023TbdNu1WF0EexPPw/MjDqIRJ3ERnRhEuh26nedWU2KNg2jESVxEJwYxiZtIt0G3arJ6311DYI1B/BarW3E1BObfPMKqITCvRzc17uV1y6ZGuLzeNdcIl9ejmxrhulhNdnEQjTiJi+jEICaRbpNui26Lbotui26Lbotui26Lbotui25ON6eb083p5nRzujndqo/rPXqNcDWeh9XHFwfRiJO4iE4MIt2qj2edwupjYPXxxUE04iQuohODmES6Jd023aqPV1191ccXJ/Fzq08SNcLVGMTPrZ7f1QhX43lYjX5xEI04iYvoxCDS7dDtPLca4WqsdbOwVtiF3wr16aDGshrPw2rei4NoxElcRCcGkW6DboNuRjejm9HN6GZ0M7oZ3YxuRjej26TbpNuk26TbpNuk26TbpNuk26Rb5YOPwkE04iQuohODmMRNPA+dbk43p5vTrfKhPuvVWFZjEGvd79W/Rq28PjvVqJXXB7EatWp0YhCTuInnYfX8xUE0It2Sbkm36vn6pFajVo2beB5Wz18cRCNO4iI6kW6bbptum26Hbodu1fP1IKNGrRoX0YlBTOImnoteo1aNg2jESVxEJwYxifshkuAUfivEr/Bb4XuY7TU+1ZjETTwPq+cvDqIRJ3ER6WZ0M7oZ3arnvw/QXuNTjYNoxElcxFrXP6w+/j5se41ENRqxVsjCRXRiEJO4iedh9fHFQTQi3Zxu1cdRZ6j6+GISP7fvjoDXSNTFep3POuJ6nc/avur5rIOvnr+4iJ9blnH1/MXPLeuCqZ7PMq6e3+VWPX9xEI04iYvoxCAmcRPptum26bbptum26bbpVt29a3eqj3ftTvXxrn2oPr64iLVCXRrVxxeTuImnsQaa/LsV4TW65N/nbq/RJf9uRXiNLjVu4nlYr90XB9GIk7iIn9v3yd1rdKkxiZ/bd3vBa3TpYvXxxUH83L77Gl6jS42LWG5eGMQkbuJ5WH18cRCNOImLSLdJt0m3Sbd67f7uuHiNLjUOohEncRHLrc5m9fzFJO6H1d0Xa4U689XHF2uFOkPVxxc38a/e+O5reI0jNQ6iESdxEZ0YxCRuIt2Sbkm3pFvSLemWdEu6Jd2Sbkm3TbdNt11udXnuSVzEcqtLbgcxieVWZ36fh6fcqvXOIBpxEhex3Oq0nCB+bqPq/Xo+RlX29Xx8t1m8xpEaB/Fz+26oeI0jNS7i5zaiMIhJ3MTzcPyIg2jESVxEug26DboNug26Gd2MblbrZmGtsAtrhVN4Hs4fcRC/er8HYl4jRo2L6MQgfm5W+/v1fFiV8/V8WNXw9Xzj5zZ/hd+6s1b4+jhmrVCPY/H/64NoxK+y7xu0vQaEGp0YxCRu4nlY3X1xEI1It6Bb0C3oVt096+Cruy+eh9XdFwfRiOvtQ7X0xSB+Fqu2r1r64nlYLb1qo6qlLxpxEhfRiZ/b9wzQayqosdyqhmppYLX0xXKrHqqWvjiJi+jEICZxE09jfRte4yAacRIX0YlBTOIm0m3QbdCtWvq7DeD1bXiNi1huWRjEJG5iuX19Ud+GF99zSK9vw4vv46TXt+E1TuIiOjGISdzE87Da/yLdJt0m3ar9v8/dXt+G1xjEJG7ieVjtf3EQy20WTuIiOjGISdzE89B/xEGkWwWI19msALnoxCCWmxdu4nlYUXGxVqgTW6FQH/BqsqtxE8/Dav/62FfTWhG169XzF5O4iedh9fzF74jrk1pNazVO4iI6MYhJ3MSqty7P6vmLg2jEcqvtq56/WG61UdXzF5PYsxRe01rAmtZqrHWjsFbIwlphF27ieVh9fPGrN3+FRpzERXTi51Yfz2oCq3ETz8Pq44uDWG6ncBIX0Ymf2y7j6uOLm/i51WenmsCK+mhUE1iNn1t98qkJrMbPrT4E1QRWYxCTuInnYfXxxUE04iTSbdFt0W3RbdFt0c3p5nRzujndnG5ON6eb083p5nQLugXdgm5Bt6Bb0C3oFnQLugXdkm5Jt6Rb0i3plnSrfKjPsTWt1biJ52Hlw6lrp/LhohEncRGdGMQkbuJ5eOh26Hboduh26Hboduh26Hbodp5bzXBFfZauaa2oj8o1rdVYK8zCTTwPKx8uDqIRJ7HWXYXvbNZcFra65rIajTiJdcRe6MQgJnHTgm7zRxxEI07iIvqrYQYxiZt4Xg3V8xcHkW7seWfPO3ve2fPOnnf2vK93pbpzJ5076dzJ6nnU4NxJ506y55097+x5Z887e97Z886ed/a8o+erhuBOBncyuJPBnayer1sRNcTVWDtZ61bPX5zERfxzy/pgXkNcjUncxPPw6/nGQTTi/LAa5+v5Rl7guyyqh/YmnofnR+SlgUYH8mQdnqzDk3V42R9e9ocn67yTVVNejYNoxElcRCcGsY7ia+ma52ocxNqoVVgb5YWL6MQgJnETz0P7EQex1o1CJwYxibVuHYWdh/NHHMR6CwicxEV0YhCTuInn4XpvWWsirHERnVhHsQvfW9b6OrfGQaxdP4WTuIjf7tRdnxok63+WxE2kW9At6FaNfnESF9GJdAtaVB/Xm//6trbGSfxKrztP9W1tjd+W1O2mmkpr3MTvxI5aofr44iB+G1W3emoqrXERnVhudQKqpS9u4nlYLV33gmoqLa22+mveRid+69YNoPpetsZNPI01q9Y4iEYsNytcRCcGMYmbeB5WS1+sxVZh/TMv3MTzsHrz4iAasYrMwkV0YhCTuInnYXXsxXLbhUacxEV0YhCzT0uNrTWeh+tHrGsnCv3tTrXpxSRuYi32XRr1TWl3S6pNLy7it27d5KsRt8YkfuvW7bwacbv/LHgCgicg6BZ0C7qFE4PI0x083UG3pEW+O5GJ227AIFbp+G838TysNq17eDXB1mjESVxEJ9ZG1fVQbXpxE8utTne16cVBNOIkLqITg5jETXxuNeLWOIhGnMRFdGIQk7iJdBt0q9fj748YvL4IrXES6850FDqx7kx7YRI3se7IfhdifRFa4+dWt0BrMq7xc6tboPVFaI1O/I5t1brV8xc38Tysnr84iEacxEV0It0m3SbdJt0W3RbdFt2q/euuZU3GZd2UrMm4rJuSNRnXOIhG/Oqt23k1GdfoxCAm8XOrG2w1GXex2v/iIBpxEsutaqj2vxjEJJZbXTDV/sD8ET+3ekWvybisG1Y1Gdf4udVdqpqMa/zc6n5UTcY1buJ5WPlwcRCNOImL6ES6bbptum26Hboduh26Hboduh26Hboduh26nedWk3GNg2jESVxEJwYxiZtIt0G3QbdBt0G3evWvt6w1RdcYxCSW2yk8D+s9wcVBNOIkLqITg5hEuhndJt0m3SbdJt0m3SbdJt0m3SoJ6l5mTcZlTajUZFzjt0INq9RkXGMSN/E8rHy4OIi17izk2ayex1ZXzwOr5y8O4nfE35/QeE3GNS6iE3ntBN2C107w2kleO8lrJ3ntJK+d5LWTvHaS107y2kkeW/V83fStybjG2p1at3r+4iQuYh1bnbfq+YtJ3MTzsHr+4iAa8XOrO8g1GdcY72RVo9d4To3DNZ6LUeNwjeOegKhxuMZJXEQnBjGJfbLi9xo9fq/R4/caPX6v0eP3Gj1+YxGdGMQ6CvuwWvriIH7rflNIUUNyuauyaumLTgxiEjfxPKyWvjiIta4XOjGISax16yjqxR1YLX1xEOulOQsncRGdGMQkbuJ5iDcCwBoMqD2rO3AXnfit+92cjRqSa9zEb91Tl1G1/8VBNOIkLmLtWZVT7X8xieVWW13tD6z2v1hutb/V/hcncRGdGMQkbuJ5WO1/kW6bbptum26bbptum26bbptuh26HbtX+py6Nav+Li1huuzCIf277VyfrS4LG01jfG7a/W39R3xvWaMRJXEQnBjGJm3geDroNug26DboNug26DbqNWvdr9Bqo299NvqiBuv3djIsaqGt0YhCr3izcxPNw/oiDWG6ncBIX8XMbVeSXBI1J3MTz8EuCxkE04iQuIt0W3RbdFt0W3ZxuTjenm9PN6eblNgqDmMRNPA/jRxxEI07iItIt6BblVmc+yi0Kz8P8EQfRiJO4iE4MYhLplnTbdNt023TbdNt023Tb5VYX107iJp6H50ccxHKrDjiTuIjlVpfnCWISPzfDYqexhu8aB9GIk7iITgxiEjex3L64quG7xkE04iQuohODmMRNpJvRzehWWfLNKUR9F1jjIjoxiEncxPOwsuTiINJt0m3SrbJk1kZVllxM4uf2TW5FDepdrCy5+Ll9tziivguscRIX0YlBTOImnoeVJRfp5nRzulWWrNrqypKLQSy3U7iJ52Flyff3IlGjfo1G/Ny8dqey5KITP7eo/a0subiJn9t3cyBq1K9xED+3rP2tLLm4iJ9b1hFXllxM4ueWdUCVJcDKkoufW73LrKm/xkn83OqtZU39NQbxc9tYbBPPw8qSeh9VU3+NRvzc6h1ITf01OvHP7dTrcU39NW7i+fA74pr6axzEP7dTuV5Tf42L6B9aYRCT+LlViNXU38UvSxo/t++eedTUX+Mkfm7fPceoqb/GICZxE8/DL0saB9GIk0g3o5vRzej2ZcmZtVFfllz8sqTxc6uoqKm/xkn83Fbt5JcljUH83Coqauqv8Txcvz6bNfXXaMT5zuaXJY1OjHc2VxI38byz6T/iIH5u383OqKm/xkX83LzO5pcljUn83Bz/7Xn4ZUnj51YBUrOAjZO43q5/WdIYxHy7Hpt4Hn5Zcnf9y5JGI86367mITvzcApjETfzcosr5sqRxED+3+ixd04SNi/i5ZZXzZUljEj+3SrmaJrz4ZUnj51Z3BGqasHESP7e6/1DThI1B/Nw2FtvE01jThOebzIj67rdGI35ulXL13W+NTvzcKsRq8rBxEz+3+nBVk4eNg/i51eesmjxsXMQ/t79PWLVa/RBDcwrvYix4yPVjDM3j42oE/BRu8xRexbPYhUP49Lu9mizco6qs9x0XF9GJQUziJp6H9Zstv3rLiR+5/dX7U/zKbfMUXsIuHMIpvIUP2X/C4uvi6+Lr4uvwrfo9hFN4Cx9y/IThW6c1THgK1w7/Cp0YxCRu4nlYv+Xy+x62B378ttmEy7Hu4uD3b5tdOIRTeAvjSOuK2T/hIQzfOuN7Ci/h8p1VW/22S3MKb+FDrt93aR7CJjyFl7D4HvE94nvE98D3O3b8Bi7qxw/bNm/hQx4/4SEs6wzUCV7CLow6vTiFt/AhIyguD2ETnsJL2IXF18TX4LuLD3n+hIewCU/h8q1XMfzobXMIp3D51mcG/PDtZSTM5fKtNwD47dvf9xA08OO3zfDNYheGb9WGhLm8hQ8ZCXN5CJvwFF7CLiy+Lr4uvi6+Ib4hviG+Ib4hviG+Ib4hviG+Ib4pvim+Kb4pvim+Kb4pvim+Kb4pvlt8t/hu8d3iu8V3i+8W3y2+W3y3+B7xPeKLnKlPnvi53OYl7MLMGZeccckZP8w3/Gpu8xA24Sm8hGv9en+L38NFduEHcX9e/w3y5/IUXsIuHMJJRs54rW/cf/zaLY4dP3fbHMIpXPvw/QFP4CdvLyNPLg9hnnf87G3zEnbhEE7hLXxYz80T8BA24cl6kCeXXVh8JU9C8iQkT0LyJCRPQvIknNdbuOyzyz677DPyBPW47LPLPkuehORJSJ6E5ElInoTkSUieRMj5vXkCln1O2eeU84s8uSz7LHkSkicheRKSJyF5EpInIXkSkiex5fxu2ect+7xln7fsM/LkG2AJ/FpuM/b5ez3C7+U2D2ETxvFWPciTyy4cwim8hc9j/HJuM3xPsQnjfZoXx+tr/FDu7xv3DfxSbvMhI2cu8zzmMOEpvIRdOIRTmOcRP5p72X7CQ9iEp/ASduEQxnF9+YbfyW0ewrV+fbjGT+X+6nM0fiu32YVDOIW38CEjfy4P4dUf1nI5MYhJ3MT3GQ+/jvur+5X4edxmE8YRRfESdmEcURan8BY+ZCTM5SFswlN4Cbuw+Ib4hviG+Kb4pvim+Kb4pvim+Kb4ImGirhYkTNaVj4QBI2EuD2ETnsJL2IVDOIXFd79HMzU72jiI72FJzY42LmI9LKkTWw+CLiZxE0/jxoMg4CAacRIX0YlBxO59/YVfxv3VPXH8NO6v7hHht3GbXTiEsU6tiRz4vmUn8KO3zUvYhUM4hbHbp/iQkQ+Xh7AJT+El7MLw9eIU3sKHjHz4ZnwCP4PbXFtfW1jPci4uohODWJYbXJY1K4Nfwr2M4Lg8hOtQazADv4b7q1tp+DncZhcO4RTewoeM4Lg8hE1YfBEQOBY0ds2l4Cdsm124/vuD/z6Ft/Aho7EvD2ETnsJL2IXFd4vvFt8tvkd8j/ge8T3ie8T3iO8R3yO+R3wPffHjts1DGL5WPIVXP4WsGdDGIL7HlPgp29/3x5eBX6391ROmmuzEg7+a7GwM4nscWJOdje9xYE127vpMX5OdjUacxEV0YhCTuInn4aTbpBuave4bHzT1wf8/droOBE0NRlNfHsLfOqNGc2po84/rDFSnNh9ydWrzEDbhWVw770vYhUM4hbfwIcdPGPXXuUCnXp7CSxi+dfYjyImao3gKL2H829rbDOHsx6aHz1UPn6sePletYc2/f1f7vbEG/v+zn6wePC0Fnof1gltPVmsws9GI9Wy2NqVecC86MYhJ3MRzMWtGs3EQjTiJi1hn77tVnDV4+cdWXFfHqP+mXnKbp/ASxjr+sWGdKB7CJjyFl7AL125/N8uz5i0fb+FDnj/hIWzCUxi+q9iFQziF4XuKD7m6c3yvl1lzln9ce1If8ZtTeAsfMrrz8hA24Sm8hMXX+yF71iBm4yb2Q/asQczGQayHtXVA9UDz4iI6MYhJ3MTzsB5oXhxEuiXd0K9WO5/YpboqNnYpi4ewCU9hrFNnql41x6yrvV41m4ewCU/hJVy7PWsz61WzOYW38HlcI5SPh7AJo/5dvIRdOIThO4u3MHy/rhzo7stD2IRxvFm8hF04hFN4Cx8y0uDyEDZh8bV+bJ41htkYxH5snsM28TzEuENtJMYdgEacxEV0YhCTuInn4aLbohtemWedHfT+9zVdOdD739P7HOh9MHr/8hCudVYdOF5pVx0jXmkvHzJeaS8PYROu3f4ed2QNTz524RBO4S18yPkThm/tA16lL0/hJQzfOvvo+stY/+vcGoT8uwxrT+q9cnMIp/AWPmR0/eUhbMJTWHxr9mAAg5jEmlCpYzo9oZI1E9lYEyq/QiNO4iI6MYhJ3MTzEHNMQLoNuqGXvepBz343I9PQs9+NxjT07OUhbMJYJ4uxzi4+ZLwiXx7CJjyFa7ej6sQr8uUQTuEtfMh4Rb48hOEbxVN4CbswfEdxCsN3Fh8yuvjyEC7fqH3DK/jlJezCIZzCW/iQ0fWXh7D41gt5hUpNOTY6sWa86rqIJG5izXjVRmIyCTiIRpzERXRiEJO4iXTbdMMre9TZQe9HXTno/e+v3tLQ+5cPGb1/udbJOnC8gmcdI17BL2/h83jiFfzyEK7d/m415cQr+OUl7MIhnMJb+JDxCv7d2MuJV/DLJjyF4evFLoz1s/iQ0fWXh7AJT2Gsv4tdGMd1ilO4fHfVhpQAIyW++zI5kRKXy3fX3iIlLpdvfX6ZSInL5btrr5ASl+Fbx46UACMlvj+gyomUuAzfOkakxGX41jEiJS7Dt44RKXG5fE8dI1ICjJQ4dYxIicvle+oYkRKXy/fUMSIlLpfvqWNESlzukdPE6CIwfsRBNOIkwrF2Ce8KLocwHGsH8K7g8iHjXcHlIWzCU3gJu3AIi2+KLz4LnNr5erdgv9rterdg9ZmiBhQfp/AWPuQj9R+p/0j9R+o/Uv+R+o/Uf6T+I/Uf7tv6/YSH8HrHWFOI9xhrDPHWXHOIzZUYzUPYhFn/GkvYhUM4hbew1G9Sv0n9ZsLia+KLxMAxzh+PcUr9U+qvZGhewi4s9U+pf0r9U+pfUv+S+pfUv6T+JfUv2bclvkt8bwLUMfrkMbrU71K/h3AKy3l3Oe+BfbPiIdxj0bliEhfRiVj7SxoMDtp33y1rcLBGoLPmBhsXsUarozCISazRaix2HtaL/MVBNOIkLqITg5hEum26HVxBVfDBTmcxdrrO0knhLXweY+zP6p11fQ/hH4/iEE7hLXzI6NTLtdt1Xw3jgM1TeAm7cAin8BZG/d/Vh3HA5iFswvBdxUsYvlEcwim8hQ8ZnX15CJvwFF7C4jt7wD1rGrBxE3vAPWsUsHEQa8C9Nr7+MOHiIjoxiEncxPOw/jDh4iDSzemG/v7GixPDfFZ3FjHMZ1ZXF/r4sglP4VrH6sDrddjqjiCG85qHsAlP4SVcu/0NfySG85pTeAsf8v4JD2EThm/tA163L7twCMO3zj5ety+Xb92fw3Bec/nO+rfo+rpD4+/vC7Jm8xqdGMQkbuJprKm8xkE04iQuYh3jBIdwCm/hQ0ZiXB7CJjyFlzB8vTiEU3gLHzIS4zL++1O8hQ8ZnX55CJtw1Vmf8DCod7lee60+nmLArnkK47+fxS4cwvX3IfjPN/E8rGatTxc1XNdoxPr7kCqq/oroohODmMRNPA/rrfjFQTQi3YJu9Y7b6h4exuOs7rdhPM7qnhnG45qn8BLGOrXz6FCv9dGhl014Ci9hF67drrtKGHdr3sKHjA69PIRNeAqj/l3swiGcwvCts4/X62KMu1m9D8G4m9WdJ4y7NU/hJezCIZzCW/iQ0a2XxRd/FOSFk7iI3yV2qt76A8OLSaw/QVqF52H9geHFQTTiJC6iE4OYRLoZ3dDL37BgYrjN6nUNw21WL8QYbmvewoeMHo9aE71c964SvXw5hbfwIdf76+ba7W88KzHK1jyFl7ALh3AKb2H41tWF1+vLQ9iE4VtnPxYZ3YpjR7deduEQRj2151uOF1182YRr/bozhJGyZheu9euuGEbK+t/KPm/Z5yO+R3yP+KKLLy9hOb9Hzu8R30OvjQ6tO20bHXp5CeNYVnEIp/AWrvXrrthGh14ewiYM3yjG+lmcwlsY63/nd+N18/IQNuEpvIRdGL6nOIW38CHj9ffyEDbhKVxr1ssihsmsXgExTNZswlN4Cbtw1Vx34zBR1ryFDxn9e3kIm/AUhm+dI/Tv5RBO4S18yOhfnDv072UTnsI4L7N4c9/w3huMV+rLQxjHUtdSyl6hxy+nMNYvX7zHBqP3L2P9uk62nKMt52jLOdriu8V3iy96//IhH7k2jlwbR3yPeB2+68BEWfN5jImyZqwJ5ruO83PhEK71D3gLHzJ6vO62nsF3O2eY8BQW3yG+Q3zR+5e38CHbT1h8TbzQ13XH96CvL29hHMt3zR/09eUhbMK1fr2RwMxZswuHMHy/axIzZ/bNpSVmzppNGOvv4iXswiGcwlv4kNH7dW8MM2rNJjyFl7ALh3CSq69n3SfDnNmse2OYM2sO4RTewodcPT7r/lh9weBjE57CS9iFQziF4VvnKA95/4SHsAlP4cVzh96/HMIpjPPy5VsNrvW+nSm8hF0Yx1LX0nl7tWtQ7fEQxvpZPIWXMNbfxSH/NoW3sPgO8R3iO0x4Ci9hFxbfIV7oawOb8BRewljzFOM+xiw+5PkTrpq/O40bE23NU7hq/u4ibky09b8N4RQW3ym+S3zXEDbhKbyExXeJV/X1HHXsPoRNGMeyipewC4dwnfdv6nDXfNvjQ46fMHyjGOvXdYXevxzCWL+uN/T+5UNG718ewiY8heFb5x29fzmEU3gLHzJ6//IQrjWtroF67Z643qqXL9drd/MQNuEpXDVb7Tl6/HIIp/AWPo8x+9Y8hOHrxVN4CbtwCKfwfucOs2+X0fuXhzDOyyyOt2+Ya2vewodsOJYo5l7V/NpjF8b65WspvIWx/ned1BRb/9s5hE1YfKf4TvGdIZzCW5jXRs2zPRYv9HXlzMBr+uUU3sJY87smB167K5cGXrsvL+Gqeda/RY9fTuGqeeK/P/y38RMewuIb4hviGy4cwim8hcU3xQt9PWuv0NeXQxjHUtc8+vryIaOvL9d5n3Vt4zX98hRewvCtaxK9P+u6Qu+D0fuXsX5db+j9y1N4CbtwCKcwfOu8o/eLDb1/eQib8BRewi5ca373frfhtfubTtqGXr68hF04hFO4av7urG7MwV1Gj18ewiY8hZewC8PXi1N4Cx8yev/yELZ37jA317yEXRjn5cs3zMTdfVtD2ISnMI4limWv1hY+ZLy+r/LF6/tlE8b6u1jOkcs5cjlHLr4uvi6+eH2/PITl2gi5NkJ8Q7zwmr7qGsNr+ve5bBte0y+b8BRewi4cwniaXNcDPstfPmR8lr88hE14Ci/hNzexMQE3vc4jeh+M3r88hHFctQ/o/ctL2IVDOIW3MI7rO3ZMzDUPYROewkvYhUM4yePNU2xMxuG4MBnXPIWXMI9rjhBO4S18yMiHy0NYjsvkuEyOy+S4TI7L5LjwueCy7OeU/cRkHI59ynEhBy6HcArLcU05riXHteS4lglP4SUsx7XkuJYc15LjWnJcLsflcp247KfLft4JuDp2l+PyLczrf8ZPWI4r5LhCjivkuEKuk5DrJOQ6CTmukONKOa6U40o5rpTjSrlOUvYzZT8xHZ91LPibmMtD2IRxXLP4TbxuzME1b2Hs25ct8+YGeAhj37x48t9iDu6yC4vvEd8jvpy03YuTtntx0navO2kLnsIujGsgig8ZnwUu41h2sQlP4SWMa+AUh3AKb+Hy/WbPN2bf5vdcbGP2rXkJ1/pR9eM9w+UU3sKHjPcMl4cwfGfxFF7CLhzCKbyFDxk58D2j2Zh3m1F7i/cMl7fwIeM9w+UhjJprz/Ge4fISduEQTuEtfMjIgahzhBy4bMJTeAm7cPDcIQcub+FDvu8lsnhx3/Ce4XIIp3CtmXUtbdkrfC64PIVr/ep9fKFecwjX+uiXLedoyzk6co6O+B7xPeKL9wyXXViujSPXxqGv/37C+PuMLF7CLhzCOJbvmsQ0Xf1NycY0XbMJV83fc8CNabpmF8ZeeXHKv93Ch2zia+Jr4mtTeAm7cAiLr4kX+jprr9DXl5cwjgX/fQin8Bau8/49B9z44rzmIWzC5ftNp2x8Qd78nm1tfEFe8xau9b/nQRtfkNc8hE14Ci9hF4ZvnXf0/uUtfMjo/ctD2ISnMNasawCfC3btLXr5sglP4SXswqi59hw9fnkLHzLuCVwewiY8heFb5wi9fzmEU3gLHzJ6H+cOvX/ZhKcwrrfqR/Q19g33AYrxBXbNQ7jW/J7TbczFYa8wF9ecwrX+9yxvYy7uMl7fL9f637Ozjbm4+2/HFF7C4jvEd4gvXt8vH7L9hIew+Jp4oa+/+bSN2bnmQ8ZfxlzGsYDx15Or2IVDuGo+4C18yOjxU/u/Bv/tMuEpLL5LfJf43r92BW/hQ75/7QoWXxcv9PWpvUJfX97COJbvmscX1TUPYROu816fF/BFdc0uHMKf76r325i4W7+6rqr3m014Ftf1Vr3f7MIhnMJb+JA3fOu87yFswlN4CbtwCCf5YM26Bg7+be3tceEQTuEtfB5jym7VczpM2TWb8BRewi4cwikM31N8yOMnPIRNeAqvd+7wZXPNIZzCuN6+fMMXyWHf8EVyzUvYhWvNujeOL5K7ezV/wkO41q97y/giueYlXOvXszPM2vW/TeEtLL5LfJf4LhOewkvYhcV3idf9Bova5/sNFuApvIRxLLO4cqPu+WO+7jL+zvVy1VzPATFf1zyFsVe1//g7tvtvQziFxTfEN8UXf8d22YSn8BIW3xQv9HU9i8TMXrMJ41jqmkdfX3bhEK7zXs8BMbPXfMjnJ1y+VvWg9+vZFmbzmkO41q/nQYnev3web/T+5SFswlMYvrPYhUM4hbfwIaP3Lw9hrOnF+LdRfMj2Ex7CJjyFUfMuduEQTuEtfMjo/ctDGL6neAovYRcO4RTe79zhS+Iuo/cvD2Fcb1kc3LeVwlv4kOs1fdW1jdm8u1e+hF241q9neZjNa97CtX49O8Ns3v23Ieco5ByF+Ib4hvhGCKewXBsh10aKb4oX+rqyBTN7zSm8hXEsdU3ivlz1OGbzmpdw1VzPATGb15zC2KtaH3/pjn+Lv1u9PITF94jvEV/cr7scwim8hemLmb3m2v8JduEQxrHs4i18yOjry3Xe6zkgZvaap/ASLt/vb0k2ZvNWPdvCbN5l9P7lWr+eBx30/uUpvIRdOIRTGL6z+JDR+5eHsAlP4SXswljzuwYwm7fqmR1m85qXsAuHcAqj5tpz9DgYPX55CJvwFF7CLgzfOkfo/ctb+JDR+5eHsPHcofcvL2EXxvX25Rtm9u6+4f38ZROewrVmPcvDbN7dK7xvv3zIeH2vZw2YzWs24Vq/nh1gNq//rZyjLedoi+8W3y2+eH2/PITl2jhybRzxPeKF1/TvecHBzN767vkfzOw1m/AUXsIuHMKVJ9/78IOZveZDxn28y0PYhKfwEq69+u7zH8zpNR8yev/yEDbhKbyEXTiExdfE18R3iu8U3ym+U3yn+E7xneKLv2v/Pque+011lw8Zf9d+Gb5ZjH0bxS4cwjiuXbyFDxn54LX//H7J8+P3S577DXaXxdfF18X3fr8keAsf8v1+SbD4hnjhdT/q2JEDl7dwHcv33ORgrq95CJtwnaOoHkE+XHbhEIZvXf/Ih+/e/sH8XrMJY/06v8iHyy4cwim8hQ8Z+RB13pEPl014Ci9hFw7hfIy5vvU9HzmY31vfM4uD+b3mEE7hLXzIeA/wPac4mN9rNuEpvIRdOIRTGL6z+JCRD5eHsAlP4fXOHWb/mkM4hXFevusTc31339D7l5ewC+NYVrHsFd7bXx7CqLl88d7g8hLGXkWxnKMl52jJOVri6+Lr4ov3BpensFwbLteGi6+LF173s64xvO5/zywO5vqal7ALh3AKb+HvWOpbhg++za55CJvwFF7CLhzCWL+O5X5TNHgIY/26HvhN0Wfwm6LP4DdFn8Fvij6D3xR9Br8p+gx+U/QZ/KboM/hN0Wcc8T3ie8T3iO8R3yO+R3z5TdHH+E3Rx/hN0cd+JjyFl7ALh3AKl+/3vOZgPvAycmPXf4PcuFzXz/1vpvASruvn+/uyg7nB5vwHP7Z78DvBF8/D+oLpi1jbi7FGFH9rfB8PDn799+J5iK+NrjrwtdFAI84P62DqV/guOjGISdzE8xC//gscRCPSbdENqfD95dnB9N/6nhodTP+tuqIx/dc8hZdwrXPqwPFO/9QxouMvm/AUXsIuXLt9aufR8Ze38CHj1f7yEDbhKQzf2ge82l8O4RSGb519fEoA413A93TiYOKv2YSn8BJ24RBO4S18yEd869up600Jfsv34iR+57xesfBbvheD+F1h9RanRgAbT2MNADYOohEncRGdGMQkPjfM/a3vuc3BfJ/X+z7M9/n3LOVgvq85hTe5Xuf9m6k8mNfz7/79wbxecwin8BY+5Hq/79/fMB18w12zCU/hJezCIZzC8K19mIe8fsJDGL67eArXv/2eURzM4jUP4fq3o/a2Orr5O20VAPUldY1BzIeBtWu/A2tUXfVzl/VyWeN2jUH81qgOrFm7xvOwfn67IqAG7RqNOImL6MQgJnETz8NNt0236lEfVXD1on93xA6m63zUGduHfH7CQxjr1I7Vq6xbnYF6lW0+jzEt1zyETbh2+7vzfvBtcs0uHMIpvIUPefyEUf8uNuEpvIThO4tDGL5evIUP2X7CQ9iEp/ASduEQFt/6rova/hq0u1jfLn1x/IOfBD81Zdc4iev7b+tA69ulLwYxiZt4HtZ3Vl0cRCNOIt0W3RZ277sCMWPnVv//6GOrA0EfX17CLlzrfPflD2bmfNYZr1fm5im8hF04hGu3670SZuaaD7lemZuHsAlP4SUM3zoXGcIpvIXhW2d//4TxLLOO/X6ffF2lmJ29vIUPGffiLw9hE57CS9iFxbe+j6permp8rvE01iBdfZf/Hw6iEb/Lpl4ga7iu0YlBTOImnof1ndMXB9GIdBt0w0Td9xeA507O1VV6J+e+v4g7d3Lu8hRewljnu0rxvXL1hPXge+WaTXgKL2EXxhPi2kzcWbu8hQ8Zd9YuD2ETnsKofxe7cAinMHzr3GGSBoxJmrpKMUXXbMJTGMdb+4Y7bpdDOIW38CHfJ/HgIWzCU1h860smUX595/TFJH5XWXVwfYvdxfrO6YvfVYaNrK+jvDiJi+jEICZxE8/D+jrKi3TbdMO30M86O+j9VVcOer8+IWF+rnkImzDmqOrAz5uXOpiZA2NmrnkIm/AUxpxWFLtwCKfwFj5k3H+/PITha8VTeAm7MHyzOMno+u9Zzok7/zqKQziFt/Ah3++ZBw9hE57CS1h88coMTOIm1itzHRNemYGDWK/Mv8JJXEQnBjGJm3ge1hfUXRxEujnd0Mte9aBn64kLJuTq2/sPJuSaTXgKv+nqg59mrcnjg0m45iFswlN4Cddu1912TMI1p/AWPmT8lcvlIWzC8K2r9P5mBNiFQxi+dXLv98aD4ft1ZdzvjQcPYRMu3/o0jCm6ZhcO4RTewucxpuiah7AJT+HvKqtQqSG6xiB+V1l1ZE3QNZ6H9UJeMVbjc41GnMRFdGIQk7iJ56HRzeiGV/Z6VpHo/e9vNk6i9+veN+bnLqP3Lw9h/A1SHfh8f2t0MA/XfMjrJzyETRh/a7SKsT7YhUM4hbfwIeMV/DJ8ax/wCn55Ci9h+NbZR9dfxvvYr3MxM9c8hE14Ci9hvH+u/b/v28F4/1z7fN+3g8sX5xHv2y+XLy5CvG+/XL649vC+/XL51msivvOuuXzrNQ4/r9oM3zp2vG+/DN+6lrYJw7eOEZ/WL8O3jnGHMHzrGPEp/nL5eh0jPsVfLt96TcF34TWXbyUz5u2ay7eetWPerrl8K70xb9f8NVFZ1bhd4yAacRIXEY5eHMIpDMddfMj4vH95CJvwFF7CLhzCKSy+Q3zxub6eLmPqzivzMXXnlduYumvewoeMu3GXpf4p9U+pf0r9U+qfUv+U+qfUP6X+Jfu2xHeJ73IeIz654xiX1O9SPz7RXzbhKSz1u9TvUr9L/S71u9QfUn9I/SH1h+xbiG+ILxIDx4hkwDGm1J9SP5LhsgvLeU+pP6X+lPq31L+l/i31b6l/S/1b6t+yb1t8t/jeBKhjRKfjGI/Uf6T+I9ftkev28Lzj2/GasW9WbMJft9eLZw3gNToxiFj7SxpM03nd7q9pulMvnDVM1+jEb416Raxvv2vcxC+f6iWqxusaB9GIk7iITgxiEjeRbpNu6OB6Z4TvuPOaT8B33Hm9p8DvrTYfMjr1cq2DNeu13bEJ9drevIUPGZ16eQjXbtfMAOblmpewC4dwCm/hQ0an1vsgzMs1m/AUhm+dfXTqZfjW1YLX/Mtb+JDxmn95CJvwFF7CLiy+9Ul916moT+oXz8P6pF7PFWrOrtGI3xVWjylryK7RiUFM4iaeh+dHHEQj0u3QDf39TS+MH8bp/PsTyk/UPn1/Q/kJUzFVLBW12vf3j38CL8ffQ+tPDBWmYqpYKlxFbf33yPoTqWKrOCJwI77FUGEqpgpUMCBcRahIFaggII4IvKQf7A5e01tUBQcLIBMO9q1uzn9PQD924RBO4S18yHUjoHkIm/AUFt8lvgiX7znXJ1LFVnFEIGBaDBWmYqpYKlwFKsAJQs602CqOCERNi6EC/wZXOVLiCsREi6HCVEwVX9Xxw0mtrGhRL9/xwxmu1+8nlgr8G1zl9RL+RKqoUZIfDgGzM1dgeKZFTbH8cPVhfKbFVFGDLD9sLyZoWoSKVLFVHAp8fd4TQ4WpmCqWClex67AhKjcCVWOsLn4JMVUsFa4Cq9XJwqxcjB+EqZgqlgpXESrq/AyD2CqOiMqAJ4YKUzFVLBU4ng0RKlLFVoEK6trB6N0TqAA7ulAB/s2aKpYKVxEqUsVWcUT4T8VQoRVUHvzuYVcePOEq6hq9x1N58MRWUdfoqDbDV/E9MVSYiqliqXAVoSJVbBVaQWoFib3GZVlvK8Lu/6V21HCk9ZHhiSOiPjQ8UasZWgYZYg6RKraKI+L8VAwVdX4MzXSmiqXCVYSKVLFVHAqM4oVNiKHCVEwVqGBDuIjvvce2A67F5g/CVEwVS4WrCBWpYqs4IuqtxxNagWkFphWYVmBagWkFphWYVmBawdQKplaA2Lm7g9iZBrFUuIpQkSq2iiMCsdNiqDAVWkGN8XmAXTiEv/EXx2XzRc7jQ/4CZ7uDh7AJT+El7MIhnMJb+JBDfEN8AzuL6zawf/f/gv3DocURkT8VQwVWw7WOwJg4nQiMFkcEAqPFUGEq6mysAbFUuIpQkSq2iiMCIdMCFeBsIWRaTBVLBSrAlYKQaYEKFsRWcSjwfX9PDBWmYqpYKlxFqEgV39WRBj7kiqXm7+rICTbhKfxdlTnALhzCKbyFD7lGf5uHsAlPYfE18UXarLpwMTAYKyGwfxtiqlgqXEWt5hVKGAMMhw/yocVUsVS4ilBRZ8Oxi3hb0uKIwNuSFkOFqZgqlgocz4EIFaliq0AFuFLipwIVYHuRGC1cBY4UG48saYEjxfYiS65AlrSAD8pJUzFVLBWuIlSkiq3iiED+tNAKtlawtYKtFWytYGsFWyvYWsHWCo5WcLSCoxUcreBoBcifwAWL/GmRKraKQ4FJyCe+5rPLzlbAnOMTqWKrwMp1wWOm8V79GGp8YqnAERhEqEgVOIIJcWQBvK9pMVRoBaYVmFZgriJUpIqtQiuYaopwiQXhKkIFDi4gtoojAm9YWpRPJISpmCqWClSwIeBzII4IxE6L8kmcU8ROi6liqXAVoSJVVAXIbnzPYAvETouhwlRMFUuFq8DSuFyQJ4mNR560WCpcRahIFTgEnBLkyRXIkxZDhamYKpYKV4EKcBqRJy22iiMCedJiqDA5wciTFkuFq8A1WhGPLxy8O+p4o9LCVEwVOLgNIZuIH/d94ogY8DkQQ4WpKB/c5MWXEr4FXEWo0AqGVjC0AgRKi6HCVEwVWoGp6f0EhD24n4CuGCpMBQ5uQOBzDg57poqtonxwoxszlk8MFeWDO9h+P+dgAcRGC1ehFSytYGkFS97bY9ryiaHCVGgFrqZIio1NRFJcgaRogYMLCFMxVSwV5bMTIlSkiq0CFeD8IFA2CkWgtFgqygd31/FFhk+kiq3iiECgtBgqqgLcq8f3GT6xVLiKUJEqtoojAklxcLng/QXugDvCocVWcSgwj/nEUIFDCIipYqlwFaEiVWwVRwQC5STEUGEqpoqlwlUETzAGNJ/YKo4IZAie5uCLDe+OYpLziVCRKnBwdfFharM3EbHRYqqADyrA+5AWoeLzSTwfwJcfvgX0NC49jUsrWFrB0goQKC1cRahIFVqBq6nLDcXAW48WriJU4ODqUsZM572HiKHOJ0zFrH9jEEuFq4gSOD+RusBWIbc0MQ36hFaQWgECpcVS4SpChVaQalpJkXh2gZnPJ5YKHBxaZoeKVLFVnBJojHrr8cRQYSpQAS7lAx9ciSdVbBXlg0ccGPV8YqgwFVPFUuEqqgLcAcf3Jj6xVRwR46diqDAVUwWWrsulpjn/xIIYKkzFVLFUuAocQkCkiq3iiJg/FUOFqZgqUEFCuIpQkSq2iiNi/XiCMUT6hKmYKnCNOsSWHV1HhP9UDBU4uA2hm+ihIlXABxX4ERE/FeWDz84YGO0FQk9j6GkMrSC0gtAKYqs4IlIvpNQLKbWCVFMkxd3R3CqOCLz1aIGDw6W85VEkxkCfCBV1CHgahEnQJ44IxAaenmAYtBc4pmKq0AqOVnC0ArxDabFVHAp8C+MTQ8VUUecHLyyY/Xxiq8DBVctg/POJocJU1BWCp04YAX3CVYQKVFCXMr6UMfH4BN/K+ISpKB88csEXMz7hKkJFqtgqjggEyhwQQ4WpmCqWClcRKlIEkgIPLfAbyjmx8QiHFqEiVWwVRwRiA48zMCz6hKmYKpYKVxEqUgUqwGlEoFyBQGkxVJiKqWLJCUagtAgVqQLXaOUoRkl7R3OqWCpcBQ4OF1/qJu6fiqECPqgA70NaLBXls3BVbT2NW0/j1tO4tYKjFRytAO9DWkwVeiEdvZCOVnDE9I6V4lP1nSttMVUsFTi4AYERrQlxROiYGr7IMfFQCbOnT0wVdQjr/hvXBUJFqtAKhlZgWoENFaZiqlgqtAJTUyQFnkrh2xyfMBU4uIBYKlxFqKgrBI9/MLD6xBGBtx4tUMGGgM+BcBWhonxwzxsDrU8cEQiUFkOFqZgqqgLcSsZc6xOhIlVsFUcEAqXFUIGlcUrwBgNPfDCk2gJvMFoMFaZiqsAh4JQgNlqEilSxVRwRCJQWQwUqwGlEoLRYKlxFqEgVW04wAuUKBEqLoQLXqEOE7Cg+y7TYKs4TA9OtWY/ABmZYsYkDM6xPuAr4HIhUsVWUTz3XGZh77QXGUGEqtIKhFQytAO9DWqSKreKIMK3A1BRJkSgUA60tUsVWgYMbJTC2mldMFUtFHUI9TRr4NsgnUkUdQuD8zCMLrJ+KoUIrWFrB0grwBystQkWq2Cq0AldTJEVgE5EULUIFDi4gtoojAknRoq6QeoD03XxSMVUsFagAlzICJXAlIlCuQKC0KJ97ThEoLaaKpcJVhIpUURXcrUKgXIFAaTFUmIqpYqlwFVgalwveYCQ2HuHQYqlwFaEiVeAQcEoQGxAYbn1iqDAVU8VS4SpQQUKkiq3iiECgtBgqjCcYA7FPLBWuAteol0BSYEcxHfuEqZgqcHAbQjYRM7BPHBF4H5KoAO9DWpiK8qnnTAMzsG8BVxEqtIKpFUytAO9DWgwVpmKq0AqWmuKtRz0zGhhuzXrXOTDc+oSpmCqWClcRKvBHQTDFsHuLI+L+Xc0VQ4WpmCqWCvy5GM4CAmXjbCNQrkCgtBgqcKRYDYHSYqlwFaEiVWwVOFJcFPhbuRZDhamYKpYKVxEqUsT9q1lsyNEjRe60mCqWCj3So0d69EiPHilyBwIDsU8MFXKkGIh9YqlwFaEiVWwVstf4lsonJjcEs7L3SDEr+0SoSBVypJiVbWF6pKZHaqZiqlgq9EhNj9T0SE2P1PRIpx7pHCp0r6fu9f0rW2zI1COdW4X0DyZin9AjXXqkS4906ZEuVxEqUoUe6dIjdT1S1yN1PVLXI3W9qlz32nWv8ZUeeKnG92U+MVSYis9n4g06vhuzvtHgE6liqzj1b3Ck9xexrxgqrIRDTFkA3/vRwlVoBakVpFZwf+IW4v7G7RVDhanQCraa3h/FDogj4v687RU4uA1hKqaKpcJL4Bq9P459RarYKqoCnFOMxU6898dY7BNLRfngTT3GYp9IFVvFEYEfx2sxVKCCCTFVLBWuIlSkiq3iiLg/fesQWCAgUsVWcUTc37m9YqjAIWyIqWKpcBWhIlVsFUcEfjUPb/Puz2O3MBVTxVLhKkJO8P3R3Cu2iiMCv5dZH/LHvD+Kix29v4p7RahIFbU0PlbcX8K+m3h/AveKqaJ8ECj317BbhIryQc/N0NMYehpTT2NqBakVpFZwfzL3ClehF1LqhZRawVbT+1VB2MT7XUFXuIpQgYPDpYzvBUIEYM71CVNRh4A3tJhzfcJVYBNxfvD1QL3AVnEo7u9jtxgqTMVUsVS4ilCRKtQUSYHPWfeXslssFTi4+29CRarYKuoKwYcUjMA+MVSYiqoAn2Xuj2bj88L91ewWW0X54L3//eHsFkOFqZgqlgpXgQomRKrYKo4IBEqLocJUTBVYui6X+zvaGxt/f0z3ClMxVSwVrgKHgFNyf1L3iq3iiLi/qnvFUGEqpgpUgNOIQGkRKlLFVnFE3N/mxQm+P857hamYKnCNJsSWHb2/vgtxf373iqGilj64+LZu4v2p3StSRfkcVID3IVfgfUiL8jm4qo6exqOn8ehpPFrB0QqOVnB/mveKQ3F/gLvFUGEqlopKinpIM/x+k+AVR8T9LsErcHBXVCLVI5Lh92sDrwgVdQjniq3iiEBs1N+gj/tVoncBfJdoi6lCKzCtwLSC+5O9V2wVR8T91d4rtIKppkiKg028v9Z7xVaBg6uWuT/K3WKoMBV1hdQw3MAI7BOuIlR8FdRv3X43Sn4lBsRQYSpmCYNYKlxFqEgVW8URgR8C+OEKwS8BtDAVU8VS4SpCRYq4P+WLy+X+Zi82/v5o7xWhIlVsFUfE/eVenJL7071XmIqpYqlwFaEiVaACnEZ8yf8V+Jb/FkOFqZgqlpzg+yPAV4SKVIFrtHI07o/8OsRUsVS4ilq6hlJG/GQT4/6k7xVDRfnUKNrAoOsTS0X51F+0jxihC6SKrUIrMK3AtIL7E8BXTBVLhavQCkxNkRQ1zTDuN5e2mCqWChzchKhEmtjE++XEEPfbia+oQ6jBqYFB1yemCmwizg++4LAXCBWpQitYWoFrBfeLiq8wFVPFUqEVuJoiKQY28f4q8BWmAge3IZYKVxEq6goZ2Gv8dEiLIwI/HtKiKjDUhkAxXIkIlBahonwM1ygCpcURgUBpMVSYiqkCFeAKQaC0CBWpYqs4IhAoLYYKLI3L5f42MDb+/jhwifvL4C2GClMxVeAQNoSrCBWpYqs4Iu7vBF8xVKCCAzFVLBWuIlSkis0TnPfHhiHurw1fMVTgGk2I4I7m/TXhK7aKIwI/LIjGuL8afjfx/nTwFa6ifCYqwK8Ht9gqyqe+PmDcHw+/Cyw9jUtP49IKllawtIL7U8NXpIqtQi8k1wpcTXHn9FaNO6ctUsVWgbvH2ET+osEnpoqlAveIYYq5tBapAnepcU7vDxtggfvLBlcMFVpBagWpFdyfN7giVKSKrUIr2GqK58H4bIYR2CdCRR0cPvLcEdgWRwQGTFrULXh8sMEI7BNTxVJRFeDzDwZdE58XMOh6BQZdn4DPgjAVU8VS4SpCRapABQ5xROCxcYuhwlRMFUuFq8DSdbncQVe8qb+Dri2WClcRKlLFdwgb7/Ax6NqiYuOJocJUTBVLhauIEgMiVWwVR8T6qRgqTE4wnti0WCpcBRqwgviOwN4dxWPjFqZiqsDBGYRuIqZNWhwRgUNABTFUmApsIq6q0NMYehpDT2NoBaEVhFaAx8Ythgq9kFIvpNQKUk2RFHhXc787tcVQYSpwcLiU8dQX74TuF6W22CpwHVRaYtD1iaECm4jzgy9Svgvg+1VbuAqt4GgFRyvgjyh9D6R/KoYKUzFVuApc5BviiBg/FXVw+MiDEdgnpoqlotoMH2wwAvtEqtgqqgJ8/sGg68bnBQy6PrFUwGdBhIpUsVUcEQiUFkMFKnCIqWKpcBWhIlVsFUfEwtIJgQWw8StVbBVHhP9UDBV1CPdsV2w8sVS4ilCRKraKIwKBgreGGHR9wlRMFUuFqwg5wZEqtoojItGAB2LJjqarCBWpAgeHi2/rJm5TMVXgEFDBdhWhApuIq2rradx6Go+exqMVHK3gaAVnqXAVeiEdvZAOKzCMwD6B8+MQOLiAcBWhIlVsFUcEAqUFUnlCmIqpYqlwFaEiVWwR/KH0T5iKqWKpcBWhIlVsFUcEfzH9E1rB1AqmVjC1gqkVTK1gagVTK5hawdIK7o8pLghTMVUsFTjbCVE7+sNFgcmRKzA50gJdjwvp5s4VUwWuqgPhukCoSBVagWsFoRVgyq2FqZgqlgqtINS03qHs+nxqmJR9wlTUwdXnEsOk7BOuIlRUy0xco8idFkfE/qlABTg/yJ2JQpE7LUIFfHAdIHdaHBHInRZDhamYKlABrhDkTotQkSq2ikOBgdonhgosfSBqgfrbJMM8bAukS4uhwlRMFXUI9ec7hnnYJ0JFqtgqjgj7qRgqUMGEmCqWClcRKlLF5gnGQG0LvJFpMVTgzA2IkB3FO5QWW8URgY889TDIMA/bm7iWCleBQ0AFeCPTYqvAJtZVhbHZXsD1NLqeRtcKXCtwrQBvZFqkCr2QXC+k0ApCTe9PNuOc3t9sviJVbBVYGpfy/X1mnMb7A81XLBU4hA0RKlIFDgHn5/5MMxa4v9N8xVChFWytYGsF98earwgVqWKr0AqOmiIpHJuIpGgRKurgHPuGpGhxKDAC+0RdITUqaBiBfWKqWCpQwYKAj0McEQiUFvAJCFMxVSwVriJUpApUkBBHBAKlxVBhKqaKpcJVYOm6XDDBumuezzDB+sRS4SpCRaqoQwicEsTGFYiNFkOFqZgqlgpXgQpwGhEoLbaKIwKB0mKoMDnBCJQWS4WrwJmrHMU4a+8oPvK0MBVTBQ4OF1/oJuKDTYsjAu9DAhXgfUgLU4FNxFWVehpTT2PqaUytILWC1ArwPqTFUKEX0tYLaWsFW03x1iNwWeKtRw0rGsZZnzAVU8VS4SpCRWXVxobgKU+LQ4Hvf31iqDAVU8VS8fn88oqt4oioQHkCR3ogVv1fEsJVhIo6WTUHaRhafeKIQGzUgKPhB+J7gYqNJ6YKrcC0AtMKLFVsFUfE/KnQCqaaIlBq+NIwzvrEVoGDq5bBOOsTQ4WpqMul5hMN46xPuIpQgQpwfhAbt1DERgtTAZ8NsVS4ilCRKraKIwLpkrhCkC4tTMVUsVS4ilCRIhAoG5cLYmNj4xEbLUJFqtgqjgjExsYpQWy0MBVTxVLhKkJFqkAFOI1IlyuQLi2GClMxVSw5wUiXFqEiVeDM1QsLxlnvjmKc9YmlwlXg4AJCNhE/WP/EUAGfhJgqlgr4bIjQBVLFVqEVmFZgWgHeh7SYKpYKV6EVmJriE0s9CDGMsz4xVSwVtXQ9uTOMsz6RKraKv4PDMw2radbHQ9iEp/ASduEQrs07OLEIkhZDhamoI8SHBky7PuEqQsXfEeJHMqyGXR8f8pcij4ewCU/hJYwdxEWNtyctjgi8PWkxVJgKHAe2CJlRTxEN46v74NpHZrQYKrAaLmpkRgvsF6pGZrQIFTgeXDjIjBZHBDKjxVBhKqaKr4Lzw/VVmfFEqEgVW8WhqMFWx7Hh21zvtmGU9QlXAZsBkSq2iiOikuWJUcIgTMVUsVTgQFHBCBWpAhUExBFhPxWoAIdtpmKqQAUTAhVsCFRwIKqCgQ2tmHniiKiYqd/L/sRUsVS4ivIZ2AO8O8GVjInXJ4YKU7FU/BXqiOr6MtfHh/yFiCPBa8D1sQlP4SXswiGcwptcbzUObp9jfPWJqWKpwPbgdEeoSBVbRR0f/n3+hIewCU/hJezCIZzkL1QcH5NqtvUxDu+KqWKpcBU4PFyzO1VsFUdERcoTQ8V3hHF5Ci9hFw7hFN7C53F9+evjIYzjSwhXESpSBY5vQxwRSJIWQ0Ud3w88hZewC4dwCm/hQ0ZO1AN9w1TrE0vFZ4GP7TXU+jiFt/Ahf59mHn9biHtPNfX6eAovYRcO4do9wzFUNhyDQ31yeWKpqLUWOIRTeAsfcgVI8xA24Sm8hMXXxdfF18XXxTfEN8Q3xBfhYdgYhEeLVLFVYP+quzHR+sRQYSqmiqXCVYQKVIBCc6s4IvZPBSpwCFMxVSwVLicaCdMiVWwVRwQSpsVQoVfX0asLb03wQBbf/frEVgGfygCMxB48ycNI7BOmYqrAkR4IVxEqUkVVgAcWGIk9eAyGkdgnhgpTMVUsFa4iVKSKrUIr+N61OJ5O1UTsYxP+mmni+L8keuzCXzPhaVqNzD7ewodcQdQ8hE14Ci9hFxbfKb4LO7sgsH/3/7JK4NCWqwgVKcKxGk5nfbw5eI6S9fHmCVcRKlLFVlFnAw/X8B2wTwwVpmKqWCpcRajA8eBsIX9aHBHInxaoAFcK8qcFKnAIVICtQv60CBWpYqs4IpA/LYYKUzFVaAVf/jie7tUA7eMU/i7LW/6XPc1f9Dz+Lst7vPXWpnkKL2EXDuEU3sLncQ3TPh7CJoyd3RC1f3jahKnYg5d1TMU+MVSYiloNj5E28gGvYRiEbYFPNS2GClMxVdTZwCMhjMg+ESpSxVZxRMyfiqECFRjEVLFUuApUkBCpoirAWzGMyLZAlrQYKkzFVLFUuIqqAM9tMC/7xFZxRCB/WgwVpmKqqEsTO1Vve5pDOIW38CEjefCUB5OyB584MCn7RC2FizO28CHXR6PmIWzCU3gJuzA2CvUhPPAEBtOyTwwVpmKqWCpcBQ4Qpnjz0mKrOCLw5gUPQzBH+4SpmCqWClcRKqoCPBnBHO3BkxHM0V6BOdonhgpTMVUsnkoM1T4RKlLFVnFEIIJaDBWmQiIIQ7VPpIqtAkdazXw0go5G0LkRdEX54IY2hmqfSBXY0ftvJATP/KkYKrSCqRVMreBG0BWhIlVsFVrBUlNkC5704HtlnwgVOLiE2CqOCGRLC1wuG8JUTBVLBSo4EOVTXwphGKptgfc2LcoHzwswVPvEVLFUuIpQkSpQAa4QvLe5Au9tWgwVpmKqWCpcBZbGKUG64KELhmqfWCpcRahIFTgEnBKkyxVIlxZDhamYKpYKV4EKcBqRLi22ivPExITtE0OFvRM8MXv7xFLhKnCNRgnERu3oxFDtE6ZiqsDSB4KbODE6+8QRgfc0BxXgPU0LU1E+9UxjYqj2LeAqQoVWYFqBaQUIlBZDhamYKrSCqaZIiok9WD8VQ4WpwMEZBD+qTHx77BNbRfnUI5CJadknhgpsIs6PfFiaP/mwNH/yYWn+XCtwrcC1gvthCeJ+WLpiqDAVWkGoKZLiYBORFFcgKVrg4BLCVEwVS0X5HDQGPgW1SBVbBSrA+fkC5Rtnh5gqlgovgWv0CxSKVLFVHBFfoFAMFagAV8iZKpYKVxEqUsVWcSjqe2W/8XwILOAQqWKrOCLGT8VQgUNIiKliqXAVoSJVbBVHhKGCDTFUmIqpYqlwFcETXNOyFFvFEYEMqYeLs75X9u3odBWhIlVg6br46ttj3yYuUzFVlM9ABctVhIryqedNs6ZluYCeRtfT6FqBawWuFfhS4Sr0QnK9kFwrCDWNWnrgsgwc3IRwFaEiReRPBVbD9uZSgdVgmlXOwJlDow9cVWj0Fq4CFeByQaO32CqO+KDR7/8Fjd7CVEwV3+evux91d6M5hPNxjbP28dc4ax9yjbNSTBXfWvXUdBoavh5zTEPD12OFaWj4K9DwLYYKUzFVLBW1mXXneBoavkWqQAU4NjS84djQ8IYjQMPXze9Z06yOWKhh1sdL+M9kJZZFSxuOHy1t+K/mT8VQYSqmiqXCVeAoN0Sq2CpQAc7Aqgom9gyZMLEzyISJQ/gyYSU25ouExy78Z4I/4Zk10tr8Nf1jOGBT0fMt6hjn/c+WCldRxzhxwOj5FltFHSPeBxkCoMVQYSqmiqpg4egRDS1CRarYKo4IhEaLoQI+2MHvfcNyHMHGP8Hm7KHCVFTRCxcm0qQFisa2IU1apAoUfU2PCKRJi6HCVEwVSwUqwFWHtw0tUsVWcSgmsqbFeJtT46zfX3ZBuIpQkSrKpu6mzomsuQJZ02Ko+DvQdf/9FzWPl7ALh3AKb+FDxluHuls7J946tFgqXEWoqCOsYe85kTMtjgjkTIuhwlSgAtSGnGnhKkJFVRDYL+RMiyMCOROoGjnTwlRUBXV3c06896i7knPivUfdD5wT7z1apIqt4ojAe48WVUHCFDnUYqpYKlxFqEgVW8URgRxqoRWEVhBaQWgFoRWEVhBaAXIocU6RQ1cgh1oMFaZiqoAPGi9TxVZxRCC8WgwRyJFESyNHWsC0rqqFBscNhIUGbxEqUsVWcUSgwVsMFaZiqtAKhlYwtIKhFQytYGgFphWg0etW1lxo57rfNBfauYaA5kI7tzgi0M64O7LQzi1MxVSxVLiKUJEqtoojYmkFSytYWsHSCpZWsLSCpRWgaXHbY6E1a8x4rtua+M9ua17hKkJFqtgq4FOX5UJrtsDxbAhTMVWgalywaDPcVVposxa44nHm0Ga437TQZi2WCldRPriNs9CALbYKVAAfNGCLoUIr2FrB1gq2VoB3Dy30Ctl6hWy9Qo5eIUevkKNXyNEr5OgVcvQKOXqFHK3gaAVHKvDfT8VQYSqmiuDF5zdD6uJzZAiuHUeGtDAVU8VS4SqC15vfDLli8xLzmyEQN0OumLz4HBmC682RIS02Lz5HhuA0OjKkxVBhKiYvMUeGtHAVwUvMkSEttgqtYGkFSytYWsGSa9TRmrhp52jNFlMFCsWO4lWzRahIFVvFEXHb+YqhwlR8FQzcWauJTwpXESpSxVZxSuB4qp2fGCpMBSrABbuXCleBClD1ThVbBSrA9XZ+KoYKU4EKcFlW0w7cIarhT4qt4lDU/Of3J/AQ5YN7DfXNp9+fwENMFUuFq0AFDpEqtoojYqCChIDpgShT3F+ogdDvL+UhytTuAqEiVWwVR0T19hNDRVWAmwc1MEpRFeCjew2MUoSKVLFVHBGVBwMfxmtslMJUTBWoAIVOVxEqUAGqnlvFEbFQwYaoCnATvwZOKaaKpcJVhIqqYF2freKIqI8ITwwVpmKqWCpcRajQClwrcK0gtIKADzYklgoXgajBJ8pA1LSoCvBZNhA1LbaKIwJR02KoqD3AB89A1Dguf0RNC1cRKlLFFoFAcTT6wWq4xA6OBxcSAqVFqtgqDkUiUFrA5wpTgeMJiKXCVaDqCoca5jT8cMNMJEULnLkFsbhviaRoESpSBXwOxBGBpGgh5yeRFC2mCq3AtALTCkwrQFJcgQ6OK7aKIwIdjLuRiQ5uYSqmiqXCVVRt+Pif6OAWW8URgQ5uMVSYiqliqXAVWoFrBa4VuFYQ8MFVhQ5usVS4ilCRKraKIyJ/KoYKrSC1gtQKUitIrSC1gtQKUivYWsHWCrZWsLWCrRVsrWBrBVsr2FrB1gqOVnC0gqMVHK3gaAVHKzhawdEKjlZwpIL9+6kYKkzFVLFUuIpQkSq2Cq1gaAVDKxhawdAKhlYwtIKhFQytYGgFQyswrcC0AtMKTCswrcC0AtMKTCswrcC0gqkVTK1gagVTK5hawdQKplYwtYKpFUytYGkFSytYWsHSCpZWsLSCpRUsrWBpBUsrcK3AtQLXClwrcK3AtQLXClwrcK3AtYLQCkIr0EzcmolbM3FrJm7NxK2ZuDUTt2bi1kzcmolbM3HfTAyIpcJVhIpUsUXcGDSIocJUTBVLhasIFaliqzgijlZwtIKjFRyt4GgFRys4WsHRCo5WcKSC8/upGCpMxVSxVLiKUJEqtgqtYGgFQysYWsHQCoZWMLSCoRUMrWBoBUMrMK3AtALTCkwrMK3AtALTCkwrMK3AtIKpFUytYGoFUyuYWsHUCqZWMLWCqRVMrWBpBUsrWFrB0gqWVrC0gqUVLK1gaQVLK3CtwLUC1wpcK3CtwLUC1wpcK3CtwLWC0ApCKwitILSC0ApCKwitILSC0ApCK0itILWC1ApSK0itILWC1ApSK0itILUCzcSjmXg0E8/NxAOxVLiKqqBm4udBJrbYKo4IZGKLoaIqwGjGQSa2WCqqAjxRO8jEFqliqzhPrB8ysQUqcAhTMVUsFa4iVKSKreKIQCa20AqGVjC0gqEVIBPrlvX6IRNbpIqt4ohAJrZABQlhKqYKVLAhXEWoSBFIvnp2uH5TV0O+tXAVtdrG+UG+tdgq6njq+dz6Id9aDBWmoiqoh3Xrh3xr4SpCBXywVciqjbOArGqxVOB4sACyqkWq2CqOCGRVi6ECFWB7kVUtlgocD3YUWdUiVWwVRwSyqsVQYSqmiqVCK0itAFm1cVEgqw7OD7LqCmRVi6HCVEwVS4WrCBWpQivYWsHRCo5WcLSCoxUcreBoBciqg9OIrGqxVRyKgaxqMVSggh/EVLFUoAKHCBWp4qvAfnfpI6Ky6olRYkGYiqlilTgQriJUfBVYTV8uDPg+cURUVlnd918Y8H3CVFQFdd9/YcD3CVdRFRiOp7Lqia2iKpjYxEqxJ4aKqqAG81Z9Ny7FUlEV1B30hTngJ1JFVTCxO/OIWD8VVcHC7lS+PTFVVAULu1P59kSoqAoch13v3544Iur9mzkKrfdvT5iKqsBRaGXiE66iKoi7dKrYKqqCwNKViU8MFVVBYOnKxCeWiqogsTuViU+kiqoAL0b1tbtPVCY+URUg8OsLeSmmiqpgY+nKxCdCRVVwe7sy8YkjojLRDtqsMvEJU/FVMH+4RisTn3AVoSJVbBVHRGXiE0OFqdAKjlZwtIKjFRxUgO09W8WhwKDzrOeaC4POT5iKqqCeHa763l4KV1EVIGowA/3EVnF4hWAG+omhwniFYAb6iaXCeYUYMrFFqti8QjAD3QKZ2KL2oJ6FrpqBppgqag9qbnrVN/pShIraA7v/Zqs4IioTJ2IQE9JPmIopZ24uFa4i5MzNVLFVHDlzlYlPDBUmZ25NFUtFVTCvCBWpoiqYKLQysYX/VFQFC4ddmfjEVFEVLBRamfhEqKgKkOSYoH7iiKhMnAu7E0OFqagKHEtXJj7hKqoCv0uniq2iKqiPigsT1E8MFVUBkry+U5hiqagKENH1ncIUqaIqSGxiZWKLysQnqoJEBZWJT0wVVQE+l2Ag+4lQURXsu/RWcUQgE283IhNbmIqqAG+CMZD9hKvAu8E6JfO+51sQpmKqWCpcRahIFVsFjqcuF8xd4xe5F+aunzAVU8VS4SpCRarYKo4I0wpMKzCtwLQC5BvebGMy+4lQkSq2iiMCn1xx5jCZ/YSpQAUTAj7YUaRYi63iiECKtRgqTMVUsVS4Cq1gaQVLK1hagWsFrhW4VuBagWsFrhW4VuBagWsFrhWEVhBaQWgFoRWEVhBaQWgFoRWEVhBaQWoFqRWkVpBaQWoFqRWkVpBaQWoFqRVsrWBrBVsr2FrB1gq2VrC1gq0VbK1gawVHKzhawdEKjlZwtIKjFRyt4GgFRys4UsH6/VQMFaZiqlgqXEWoSBVbhVYwtIKhFQytYGgFQysYWsHQCoZWMLSCoRWYVmBagWkFphWYVmBagWkFphWYVmBawdQKplYwtYKpFUytYGoFmolLM3FpJi7NxKWZuDQTl2bi0kxcNxMTwlWEilSxVRwRNxOvGCpMxVShFbhW4FqBawWuFbhWcDNxQwwVpmKqWCpcBSpwiFSxVRwRNxOvGCpMxVSxVLgKrSC1gtQKKhMXPhBiWP6JocJKYKsqE59YKrwE9qCSrxe4+XYgTEWtVoOuC4PvT7iKUJEqtoo6HnzgwOD7E0OFqUAFCbFUuApUsCFSxVaBCurgMCz/xFBhKqqCGqhdGJbHD6svjMTj188XRuKfOCIqxZ4oH3y8rO9jNvxw98Kw/DIcj8EHVVeKPREqUgUqQNV2RMyfiqGiKsCdOUzOr4lCK7jWRKEVXAufATE5v+ZdYKs4Iiq4nhgqTMVUURXg06FXcD2RvGDrG50ppEvqO50phgpTMVUsFa4iVGgFrhW4VhBaQWgFlVVr4dqprHpiqcBh4yxUVj2RKraKI6Ky6omhwlRMFUuFVpBaQaICXAe5VRwRyKoWQ4WpqAocu4OsauEqQkVV4LhgkWItjoh6/7ZwuxZ/CbAcl3Ll2xOoAA2IfGuBClAo8q1FqtgqDgX+RuCJocJUTBVLhasIFaliq9AKhlYwtIKhFQytYGgFQysYWsHQCoZWMLQC0wpMKzCtwLQC0wpMKzCtwLQC0wpMK5hawdQKplYwtYKpFUytYGoFUyuYWsHUCpZWgBisyeyFPxh4YqpYKpBIV4SKVLFVHBE3E68YKkzFVIEj3RBYDQL5hkcXgXxrYSqmiqXCVYSK8qm/xV6Ren5Sdyd1d5BVLUJF7U4NfS/8KcETRwSyqoVeIVsr2HqFbL1Ctl4hW6+QrVfIzSrUdrMK4mbVFXqFIKtubciqFkuFVqBZFZpVoVkVmlWpWZWaVfmTazR/U8VS4SqCteUvVWwVWoFmVWpWpWZValalZlVqVuWQ6yBvVl2xVchZwJ8sdG3IqhamQivQrErNqtSsSs2q1KxKzarUrMop10FOPQtTz8LUszD1LCCrcPsZfxrxBM7ChDgikFUthgrsAWpDVrVYKlxFqEgVW8URgawKHAKyqgWyCmcB79KQFPgDiIXHn/gDiCe2iiMi9GyHnu3Qsx1TxVLhKvSKDz3boWc79Gynnu3UK16TL1Ovt9TrLfV6u/l2II6Im29XlA8eD+APIBZmv/AHEE8sFa4iVKSKreKIQL61kHvEee+YXeEqQkWq2CoOxb53zK4YKkzFVLFUuIpQkSq2Cq1gaAVDKxhawdAKhlYwtIKhFQytYGgFQyswrcC0AtMKTCswrcC0AtMKTCswrcC0gqkVTK1gagX6rGBPrWBqBfN/M3VnCZKrOABFtxRMAva/sarUBXz/OP26jBhC6bAVtiNojqA5guYIuiPojqA7gu4IuiPojqA7gu4IuiPojmA4guEIhiMYjmA4guEIhiMYjmA4guEIwhGEIwhHEI4gHEE4gnAE4QjCEYQjmI5gOoLpCKYjmI5gOoLpCKYjmI5gOoLlCJYjWI5gOYLlCJYjWI5gOYLlCJYj2I5gO4LtCJwTl3Pick5czonLOXE5Jy7nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J27nxO2cuJ0Tt3Pidk7czonbOXE7J/KbB55a2fnNw8M0lrEfBr95eChGNZrRjWGEMY1lOILiCIojKI6gOILiCMpXyTzObx4uprGMLfCbhwsi6KAazSCC82+GEQZzEGAZW+Db7kUxqtGMbgwjDEfQHEFzBN0RdEfQHUF3BN0RdEfQHUF3BHzbzWrHwS8oepZUjR/fdi+KUY1mdGMYYUxjGY4gvor2wW8rHqrxVbQPflvxMAwq2tmj1BFfLGML1BFfFKMazejGMBzBdAR8D84itcHvJPo6/yVndDFSvu1ehDEFvtMudjxX5harzZW5i2GEMY1l5Ppk9dngNw8PxahGM7oxjDCIoINlbIFcdUEEG1SDCrwJujGMMKaREeQvNQa/eehZfTb4zcNDMaqRc5BPHh/85qFvRkquughjGsvYArnqohjVaIYjICOdwZFDNvNGDrkI4+/fjN/5N8vYQuaQh2JUoxndGEYYjmA4guEIwhGEIwhHEI4gHEE4gnAE4QjCEYQjmI5gOoLpCCYRFNCN73c54/wW4WIaS1j0w+ZbHK2B7zc2g98VPEzj+43N4HcFF5ldHjInVgLNc6SHZnRjGGFMYxn7A78reChGNVi5DlifAKxPfrb5jcBDMarB0TbIo+UD1wb1/heZDx6KUY1m5PpkHcqg3v8hjGksYwvtZxSD8SzQjG4MgwgamEJnCAN0YxgcgIknbVx8P2EaVT9hGvX8hOmgGPTDkpACCoHyc6RxsIX4GRyNZeQ04qIZ/CCKfjiNuAhjGsvYAqcRF8WoRjMcwXQEk6UnUD7oZ8fn16TBJ5gy+oduDCOPVvmUbI7Gyu1qNKMbwwgj16cS9V7G/sAzyh+KUY1mdIMIGghjGssggtwUlNE/ZAT5q5hBSfzIR/gPSuIflrEFUsBFMarRjG4MwxHU7+dvg5L4hy207+dvg5L4h2rws6cBujGMMKaxjC3wM8iLYlTDEXRHQKZoLBanEY3/wmlEY6ScRlw0oxscjQXmlCCLugZF7A/VaEY3hpHr0wuYxjK2wCnBRTGq0QwiYOXmMMKYBhGwd+YWFhF0UIxqNCMj6MwoOeQijGksYwv7ZxSjGs1wBPv7Wdo4RewX0/h+ljZOETvo+nniOEXsnB+cIvaLZnRjGGFMYxlb4PLzhSMojoBTj/wV8KAgfeTjKQcF6SOrzwYF6Q/FqEYeLR8bOSguH/xxpbj8gtOIi2JUoxm5PlmkNigufwhjGsvYQv8ZxSCCAprRjWEQATNKdjkgu3B+QDn4CKaKLxwX01jGFsguF8WoRjO64Qji+8npoBz8YRnfT04H5eAPxeDHzx00oxvDCGMay9gCP36+KIYjWI6AHBIsFpki2FVkiuD/Rqa4qEYzOBrD5mwjSzUGpd0PxahGM7rB+mwQxjSWsQXONi6KUQ0iGKAbwwgjI8gSikHR90NGwBVair4filGNjIALrBR9PwwjjGksYwtkl4tiVMMRtO+n4YMK8Icwvp+GDyrAH7ZwfpTMoc+Pkg+q0YxuDCOMaSxjC8MRDEfAuQtnQpR2D07ZKO0e+cyeQWn3BXnnohh5NC4uUqY98sk8gzLthy1whnJRjGrk+nDZkTLth2GEMY1lbIEzlAvGwweDM5SLZnSDCJhRsssF/bAPyC4XxahGM7pBP6wPeeeCkbIKfP+5IIIMlGLsh4yAi3EUYz9kBPkT2kEx9kNGwJVGirEfMoK8NzUoxn7ICPInWYNi7AciGKAaRBCgG0QwQRhEsMAyiIBhk5Eu/iIIrotRjP3QEgw7M9LDSDDszEgPM8GwMyM9cC7GobkNflGMajSjG0TAJLYwpkEEzE5mpIvMSA/FqEYzujGMMKbhCLojGPTD+gyOxpLkmVBwvYonsT8sYwuZkR48nvB4wuMJjyc8nvB4wuMJjyc8nukZnY5gOoI5NOy5NOzp8SyPJzPSQzWa4fEsj2d5PMvjWR7P8ni2x7M9nu3xbM/odgTbEez1DZvC6jNsCqvPECisfujGMMLQeCisftB4KKx+KEY1mtGNYYThCIojONmFYZ8cwrCrx1M9njqNZWiHUCT9wA4poBqcU9DpOas5GEYY9JMpjYLn4DosBc887GVQ8PwwjDwal7XmeWzKwTIyJ3IpjILnh2JUoxndGEYY01iGIwhHQKbgHImy5uBkjrLm4LIwZc0PWyAfXHA0ZifPUKIyB3mG8rCMLZAPLoqR68MFVoqXH7oxjDCmsYwtkA+4AM7T2x+q0QwiYO+QDy6IYIBpLGN/oKz5oRjVaEY3hhEGezTAMrbANRQueJ2y5otq5B7lEuIpa74YRhjTWMYWKOG7KEY1HEF1BGSXynjIIex4SpSDTzAlyg/N6EYeLX81Oyg3Dq4eU278UI1mdGMYuT75s9tBufHDMrYwfkYxqtEMIviBYYQxDSJgRjkPOeA8hMu1lBs/ZASdA5BduNp6yo07q0Bp3UUY01jGFiituyhGNZrhCKYjIFflj14H5cYPy9gCueqiGNVoRjeGQQQsFrnqYhlbIFddFIN/w+DILoAC4YdiVKMZRL3BEDin4CooJb0P3ch/w/VRSnofppGrzQXJU9J7QD64yNXmSuMp6b1oRq52/vB3nJLeizCmsYwt8F3mohjVaIYjaI6Abyxc4qU8N87gyCFnCOSQi24Mg6OxWOQD7rlSavvQjG4MI4xcHy4hUmr7sAXywUUxqtGMbhDBBGFMYxlEwN7hPOSCCJhRvpdwpZFS24duDCOMaSxjC+SDi2I4AkptuSB5Sm0vhpF7lCuNp9T2Yhm5R4Olp9T2ohjVaEY3hhHGNJbxRRCU2j4w1wc5oxl1UDYb+QuxoGz2YQt8l7nIo+WDoIMS2MiLmEEJ7MMytlB/RjFyffJGb1AC+9CNYYQxjWVsgfOQvBIclMA+VKMZRDDBEMgHZ0LIBxdhTIPYWJLhOSBTXDSDfjYYRhjZz2KBh1dheBXCqxCOIBxBOAIyxcUwvA/C+yAcwXSnpIDFriIFXAwjD72YN1LAxTK2QApY9EMKuKhGM4hgAPphu/CH/2IL/OFf7AP+8F9UoxndGEYYRMAO4TTiYn+gTvWhGNVoRjfy0HkdNigzjbz0GpSZPjSjG8MII4eQF2WDMtOHLZAPLopRjWZ0gwg6CGMay9gC+eCifAtMmelDM7rBylWwNaN8SbkoRjUY3ACeRNLGxTLohwj4KnJRDPqZwMs4vIzDyzgcwXAEwxGQUA5IKBfeSOGNFI4g3Gl8Z09BmekFaeOiGBz64Dt7CopJH6bBEA62QNq4+Otn/lifVXWA1YxuOILlCJYjIKFcbIGEclEMR7DdaWaK+WMSM1M87A9Uls68PRBUlj5Uoxk90cEwwpgGEeRWpuZ0Zq1HUHP60Az6mWAYYUxjGVuoP4MIFqhGM7oxjDCmsYTMFDOvjwZlprMw8ZkcHqaxjC1k2njIIRSWpFejGd0YRhjTWAYRsIzjZxSjGs3oxtACjzCmsYRg5SpomtHoxjDCYHBsvulJnMWoBv0QwezGMOiHXTW9jNPLOL2MyxEsR7AcwWpGN7yRljfScgTLnZIp2kEzujEMDs1W5gQjr4sFFawPxWAIGzSjGzmEvHocVLC+A0xjGY6gOILiCEo1mtGNYTiC4k7JFFluHJSzPjQjB5fXlYNy1ocwppE7JAuRg3LWizz1eCgGEQxAPwHCmAb9TLAFEspFMarRjG4QwQJhTGMZWyChXBSjGnnoxnbJE4zJHqW29aEY1WhGN3IIjSUhbVxMYxlbIKFcFKMaRMAyklAuhhHGNJaxtcAklItiVIOVY1+TKc6MrmVsYf8MBsfm257EPYww6IcIOA+52B8oTZ156yIoTT0HoDT1oRndGEYY01iGNhKlqQ+OoLhTMgVZjAcnPyxjC5x6ZDF28Hhk7psFj0d+GAZDOAeYxjJyCJ1/0346QCtGNRxBcwTNEbQwprGMLXRH0N0pmaIziWSKi2nk4PKqe/Dc4wsyxUUxcofktfXguccP3RgGEQxAP+xEEspFMeiHPUpCuejGMMKYxjKIgB1CQrkoRjWa0Y1hhECmGCwJJxiDiSc5XAwjjGksI4cwWBLSxkUxqtGMbgwjDCJgGUkoF/sDVa8PxahG+xaYqteHYYTBymUepZz1zCjlrA/N6AaDG0CTSNHqBWnjgn6IgPOQi2bQzwTDBwhjGo6gOoLmCDgPuahGM7rhCJo75dSDL+xUo06+uVKN+tCMbgwjjGmQlRvYAhdHLopRjWZ0YxhfbVFQpzqD1SahXBSjGjnSYHZIKBfDCGMay9jCqQpjQmYxqtGMbgwjjGksYRVNyPJIyTsX3RiGR7o80uWRLo+UvHNRjGp4pNsj3R7p9ki3R7o9Ur4ZAWpbH4rRvwmhgvWMlArWh2ksQyOlgvWhGNVoRjeGoZFGmcYyPNLqkVaPtFajGd2YmpDqkVZ9fqhTfSiGR9o80uaRNo+0hTGNZXik3SPtHmn3SLtH2j3SPgzPdfdc87scbtLwaOCHajSDkVbw1boHdaoPWzgZqYFiVIMZ7aD7AMMIwxGEIwhHoGr7CFXbR6jaPuJU2x84gulO+TKUN5SDotWHYjC4CZrRjWGwXdijJwkdLGMLJwmxppzicGeV0tSHYWQ/3EzlOcEPy9gfeE7wQzGqQQQVdGMYYUxjGVsgCV1w6A44wADL2AKnOBfFqAZDmKAbwwhjGsvYAtnlgggWqEYzujGMMOa3wDzm92ELnAldsEcDDM0opzgX01gGh87NR9HqnUS+GV10I/shoVC0+jCN7IfPHEWr9wDhZQwvYziCcAThCDjFuQjDGym8kcIRTHdKpjiTyO9yLsKYBoNjK6/vV3JBbetDM3II3F2mtvUhDCaR9eH3wfcAW9g/wxFsR7Adwe7GMMKYhiJY+nFgULQ6udlN0erDMBjc+TfTWMYWyBTcXaZo9aEazSCCDbIfboxSmvqwBRIK9w4pTX2oRjO6MYwwiKCCZWyBhHJRjGo0oxscOrcLFayTW8BUsD40oxvDCIMhsCSkjYstcKnlohjVaEY3iIBlJKFcTGMZWyChXBQtMAnlohndYI8G2JpRrq5cFKMaHJrNNz2JXJS9WMZfP4ubwxSgPhSjJthVy8u4vIzLy7gcwXIEyxFwHnLAeciFN9L2RtqOYLtTMsVgW/ILPkCd6kMxGNwBv0dvIIxprPw3B1soP4NJ7KDqAKUZ3XAExREUR8Dv9C62cJ4xcFAMR1DdaWaKxc1uilYfttAY3ATFqEYzemKBYYQxDSLIrUw56+LGKOWsD83Ifrh3SDnrQxjTWMYWMqE8EAE7ZFSjGd0YRhjTWEJwaLZLcAAmPsKYxjK2MH8GQ2BJZjWa0Y1hhDGNZRABy0hCuShGNZrRjaEFXmFMYwmbPRqgaUZ3N4YRBof+23yTAlQmcfKs14dqZD9542DyrNeHYWQ/eQN2UrT6DrCMLRRHUBxBcQSlGd0YRhiOoLjT8xSkBZrRjWEwuAoyIzUmkScJXBQjh5B3lyd1qg/dYBI7CB9gGstwBN0RdEfAc0oumtGNYTiC7k7JFJVJJFNcNIPBTTCMMKaRO6Qy13nqcZGnHg/FIAJiI6E0diIJ5WIa2U9jj5JQDkgoF8WoRjO6QQTsEBLKxTSWsQUSykUxqsGh2S6LAzDxJIeLYlSjGd1gCCwJaeNiGsvYHyh0fShGNYhggW4MI4xpLGN/C8wDWR+KUQ32aID5zSglsA9bqD+DQ2+gSaTQ9SGM7KcTAechF1vgPCRvwE4KXe8BWjWa4QiaI2iOgPOQi2VoI1EP++AIujslU5C4zgNZL5axBU498mbdPI9dJW2cx65eDCOHkHeXJ4WuD8tgEumHp5GcA/A0kotqOIJwBOEIuKZ6MY1lbGE6gulOyRT9IIxpMDg+MmSKAzLFRTFyh3Q+GJx6XHRjGETAViahDHYiCeWiGNnPYI+SUC66MYwwprEMIsgdQj3sQzGq0YxuDCMEMkXed54Uuq68BTwpdH0YRhjTWAZDyCWh0PWhGNVoRjeGEQYRLLCMLZBQLopRjfYtMA9kfRhGGOzRzKOUwN4Z5bvMRTO6waE38CTyjeWAtHGR/QQRcB5y0YzsJ28gTQpd3wG8jMPLOBzBcAThCDgPuaiGN1J4I4UjCHfKqUewLTn1yFs+kxLYh2Z0YxhhTCNzVWG1edbRAc86uihGNZrRjWHkJAaDI6EckFAuilGNZnRjGGFMwxFsRUCl7EMxqtGMbgwjjGnkXOeX/Hme9XpwHvd8UAwiCMCM/kAY02CkE2yBvHPBSBeoOoAeBD3PU2AvHEF1BNURnAdBH2zhPAj6oBiOoLlTzlCCCSG7XGyBM5S8ozaplH2oRjNyGfPu2KRS9iGMaWQE+XvAST3syhs7k3rYh2bQD/uAvHMRxjSWsQXyzgURsEPIOxfN6MYwwpjGEsg7k+1CdplMPNnlYhrL2AKnKxc5hMWScLpy0YxuDCOMaSwjI1gsI3nnohjVaEY3hhaYvHMxjfWBGtqVNxInlbJnRqmUfRhGGAwuNx/1sGcSqYd9qAZDIAJOZC6GwSQOMH2AZWgZKZt9cATVEXAic9GNYYThCKo75QwlbxxMKmVX3sKaVMo+DCOMaSxjC1xD+THXXEO5qEYzujGMMKbAS202g+OlNhfVoB/2jl5IMbteSDG7Xkgxu15IMbteSDG7Xkgxu15IMbteSDG7XkgxeziCcAThCMIRhCMIRxCOYDqC6QimI5iOYDqC6QimI5iOYDoCXvua9/QmdbcPuZU3/zcy0kXut/t/68Ywcr9tPllkpIvcb5uPGRnpgIx0UQz6YceTXTZ7lBdSlPNf9geqax9KYoJqNKMnBhhGGNNYxhbKzyhGNZrhCIojIAnl/cZJqe1mGSm13XmzblJq+9CNYaxEfgApm91512pSNvvQjG4MI4yZYOLbMraQ2eWhGNVoRjeIoIIwprEMImC1x88ggg2q0YxuDCOMaSxjC/EzHAFvweBqHnW3D93IHdLOvwljGrlHudJI3e0Fz6W+KEY1mtGNYYQxDUcwHUFml82pLtW1u7BYmUN2YY9mDnlYxhY2R+Mjszka22WHMY1l7A9Uyj7k+vB9jqfAPjSjG8MIYxrLIIL8MFFD+1CMahDBBl3IM5TNHShKYB+qkQfgXg4lsA+5wHxd5iGuD9NYAgmlHnA0AuUlFnzpotD1YRocjSHwEosDXmJxkRuW73MUuj40oxvDCGMay9gCL8K5cATDEZAcuLxJoeuu57/kAnPHhkLXh2JUI4/GlXqKVjf3WChavciP80MxqtGMXJ/GYs1hhDGNZWxh/YxiMB5WbjWjG8MgAvYOKeCCCPhokgIO9s8oRjWa0Y1hhDENR8CpRz7XY1L1+lCM3CGcCVH1+tCN3KOcSlH1+jCNZWyBU4+LYlSjGd1wBMURFOY6tzIlsJu/MpTAbu7YUAL7MIww8mjc+6CcdXPrgnLWh24MI4xp5Ppw44By1gtOPS6KUY1mdGMYRFDANJaxBU49uEbMQ1wfuD3N7JxX5DA7fH252MJ5ec5BMarRjG4MIwxHwGkE10Oobb3gNOIi99tkh3AacdGM3G9cxaEE9iGMaSxjC7ze4qIY1WiGI1iOgBJYEtcpdOUG3yl05VN/Cl0vujEMjpaZnAeynvIBHsj60IxuDCOMXB92FbWtD1vgAutFMarRjG4QwQRhTGMZRJB7h6rXByLooBrN6EZGwKeEqteHaSxjC1x6vShGNZrRDUfAg6D58sDjXR+WsRMsPa+3uChGTXBoHh590Y1hhDGNZWyBh0dfFMMRDEfABRVuplICy5uOJiWwvMJoUgL7UI1mUODIPoivjHFS9fpQjGo0oxsUUg4QxjSWsQVu+VwUoxpEwAeDWz4XwwiDCJhRsssB2YX7jeuUxDNVpyT+YBn7wyl0vShGNZrRjWGEkbmXS6KUwD5sgbMNLkhSAvtQjcy9XG2lBPZhGGFMYxlbqD+jGNVwBNURkEO4MUrVK286mlS98gqjSdXrQzO68f1s4/+fhe/3C5Pa1odqNKMbw2B9NpjGMrbAj/YuilGNZhABC3xewHUQxjQyAq7u7/MiHHBehFNBMarRjIyAGwcUxz6EMY1lbIHsclGMajTDEfC4Z64sUBz7MI3MvVwyoDj2IrPLQ+Zevr1THPvQjG4MI4xpLGMLPN71whFsR8C5C2dCPKqVNx1NHtXKK4wWlbIPxagGP8T8ge/nlouq14vyM4pRjWbwc8sGhhHGNJaxBc5QLorBeDZoRjeGQQQdTKFx7s/scKXkohrN6MYw+PZBp+f7z0F++xhMPN9/Dvj+M5hEvv9cZAT513lRHPuQEQwmhO8/FxnBYHB8/7kgggG2wPef/Au4qKF9IIIJmkEEDJurKxdEwLC59HqREQTD5rrLAdddgmFz3eUiIwiGnRnpISMIhs0VmYuMIBh2ZqQHImDYXKs54AH0lf8bD6C/qEYzujEMImASuVZzsQwiYHa4VnNRjGo0oxvDCGMay3AE2xFwRWayPlx3mSwJ110mq8B1l4v9gVLbh2JoPJTaPnRjGGFMYxkaD6W2D8VwBMURlPiGTXXtGTbVtXcI1ePhustFM7rh8VSPp3o81eOpHk/zeJrH0zye5vE0z2hzBM0RkJHOsMk7Z9jd4+keD3nnIoxpeDzd4xkez/B4hsczPJ7h8QyPZ3g8wzM6HMFwBGSXM2xyyBl2eDzh8cQyvOOnd8j0DuF6b1bp/EczMod0IjgvsTgIYwpkijwTWtTQ7jw/WNTQtn4wjDA4WoBlbIEzlE4/nKFcVKMZ3RhGGNNYxv5Ade1DMdiJAVifBVifDbZAPrgoRh6NExnKZnfW1SzKZh+2QD64KEY1cn0426Bs9mEYYUxjGVsgH1wQwQ9UoxndIIIBwiCCCZaxBc5dLopRjWZ0YxhhOAKuofCHn7rbC66hXOQO4SyAutuHZuQe5QSDutuHMKaxjC3wAq6LYlSjGY4gHAHZZbGVySGbxSKHbP5v5JCLbgwjj7YZNucUm+3COcVFM7oxjDByfTYfQM4pLrbAOcVFMarRjG4QAQvMecjFNJZBBLl3KKh9+B/B//+lgGq0RAU90UCuzzz/JYxpLGMLvIDrohjVaEY3HEFxBH+56n+gAyxjC3+56kMxqtGMbgwjDCIIsIwttJ9RjGrkv8n6g5U1tB+KUY1mdCOjLixwD2Hwb5jE0Y1h8G86mMYyWO38W0I97EMxcrXJvdTDPnSD1V4gjGksYwt8l7koRjWa0Q1HMB3BZH1Y+sUq8MlazCj/t9WNYYSRR6sMe+fRKuuzm9GNYYQxjVyfyid47w9Z9fqhGNVoRjeGwXg2mMYytlCIoINiEMEERHD+TTeGEcY0lrEF8sFFMarhCHgBV149XlTKPoSRe5S/2zx69mELvICLsw0ePftQjWZ0YxhhTGMZW+iOoDsCckje9V1ZHPsfFeSMNpa+b2H8jGJwNA5NDmlMFTnkYgvxM4pRjVyfvJW5sgT2wzDCmMYytjB/BhGwR2c1mtENImDvzBC4H8yfj04Oyfuaq5NDLroxjDCmsYwt7J9RDEewHcF2BNsRbEewHcF2BFsRjN/PKEY1iOAHiKCBYYQxjWVsgbxzUYxqNMMRcGeID8bgztDFNCgvZDzcGTrgztBF7gOyC2WzD83oxjDCmMYytpB558ERNEfQmOsOmNEAzGhmscEZykUxqsHRODQ5hIu/gxxyQA65KEY1mpHrw2XhwbnLRRjTWMYWyDsXxWA8CzSjG8MgAvYOeeeCCAbYAnnnohjVaEY3hhHGNBwBtStngalduShG7pCzptSuXHQj9yiXWiibfZjGMrawf0YxqtGMbjiC7QjISFzdD/IOl+2DvMOV+iDvXAwjjDwa31yDHMI38SCHXHRjGGFMI9eHy/bBucsB5y4XxahGM7oxDCL4gWksYwt8l+HGQfBd5oIImF5yyEUY9MPEk10u6IfpJbtcFCP74bpl8P3nohvDCGMay9gCGemiGI5gOILhCIYjGI5gOILhCIYjCEcQjiAcQTiCcAThCMhIXOINMtLFMrZARrooxt8HsHCdIkg157NAqrlYhj8yi0Oz45c/MssfmeWPDCc/XD0OTn4ulsEQ2OSc/JwDcPJz4Q/tdgTbEWxHsP2h3f7QcvJzsT/M38+oBuszQBjTYHATbIGzmotisEMWaEY3hkEEG2Q/fC2f5J2LYmQ/XD2e5J2LbgwjjGksgwiYKvLORTGq0YxuDCMEUg2XkicJhS9Dk4RyMYwwprEMhsCSkFAuilGNZnRjGGEQActIQrnYAgnlohjVaFpgEsrFMMJgj2Y+mGSKM6Ocu1w0oxscms03PYmkjQPSxkX2wzXiybepi2ZkP1wWnsvLuLyMy8u4HMFyBNsRkFAuquGNtL2RtiPY6nSdr0kbFKMazWBwFXCa9wPL0Mn2Im1waXyRNi6qwSR20H2AYYThCIojKI6g/oxiVKMZjqC6UzLFZhLJFBfFYHATNKMbw8h+8seOa3HucrGMLZBQNuuTCaX8CDQTysMwIlHANJaxhUwoD8WoBhGwQ0Y3hhHGNJaxhfgZHJrtEhyAiY9lbGH+jGJUgyGwJLMbwwhjGsvYwvoZRMAyrmo0oxvDCGNqgdcytrB/Bns0wNCM7jCmsQwOnZsv627vJGbd7YduZD/cOMi62w/TyH64i5B1t+8A5WcUwxEUR1AcQRlGGNNYhiOo7rTqsuPm1OMijGkwuNzKu+my427VaEYOIX/wufIBsx/CYBI7WD6ALnxu0saFI+iOoDuCc7n2YBhhTMMRDHdKpuAOxyZTXAyDwU0wjWVsgUzBvY+su/1QjWYQAVuZhML9kk1CudgCCYUbIZuEclGNZnRjGGEQATuEhHKxBRLKRTGq0YxucGi2y+YATPyuRjO6MYwwGAJLQtq42A87C2o/FKMazegGESwQxjSWsQUSykV5C7x/JJSLZnSDPRpgvxndWV37oRjV4NAbfJO4s4b2wzKyn0YEeR7yUIzsJ68E76yufQdo3RiGI2iOoDmCtoX+M4pRDUfQ3SmZ4sxo3wJp46IYDK6C74bl/o0wppFDyHtG+0faOCBtXDCJrE9UHSCa0Q1HEI4gHAFfXy62wCWQi2I4gulOyRSNSSRTXGyBTNH4yJApLqrRjNwhjQ8Gpx4XYUyDCNjKJJTOYpFQLpqR/XTGQ0K5CGMay9gfCgnlgggqqEYzujGMMKaxBDJF3sf4Dw4wQBjTWMYWSBsXDGGCajSjG8MIYxrLIIJcxkJCuShGNZrRjfEtcCGhXExjCeSQPD/YhUxxZpTvMhfDCIND5+Yrw5PIN5aLamQ/gwg4D7kYRvYz2FXDyzi8jMPLGI4gHEE4As5DLrrhjRTeSOEIwp2e8rUGmtGNYTA4tjLF8psZpQT2ohg5hMEBSBsX3WASz78JH2Aay3AE2xFsR7Cr0YxuDMMRbHVayRR5o2pXMsVFMxjcBMMIYxq5Q/L+z66cehxw6nFRDCLYIPvJuyK7klAuppH95DXvXUkoBySUi2JUoxndIIIKwpjGMrZAQrkoRjU4NEvCCUYw8SSHi2JUoxndYAgsCWnjYhrL2AIJ5aIY1SAClpGEcjGMMKaxjK0FJqFcFKMa7NEAUzPKd5mLLfBd5oJDs/mmJ5FvLBdhZD+TCDgPudgC5yGTXbW8jMvLuLyMyxEsR7AcAechF8vwRtreSNsRbHdKplgESgnsxTL2h8apR95n2jw5lur0zZNjH4aRQ8i7SbuRNi6WwSTm+lDoeg9QilENR1AcQXEE/BTnYhrL2EJ1BNWdkinybtKmgvVhGgxugi2QKS6KkTskbyD9RzO6MQwi2CD7ybsIm6rXh2JkP2dNSSgX3RhGGNNYBhEwVSSUi2JUoxndGEYIZIrFduEEYzHxJIeLYYQxjWUwBJaEtHFRjGo0oxvDCIMIWEYSysUWSCgXxahG0wKTUC6GEQZ7NPNoI1OcGeW7zEUzusGh2Xzbk8g3FkCl7EP2k3eTNpWyD83IfvI+06ZS9h0gjGkswxEUR8B5yEU1mtENR1DcKaceec9oUwJbOOukBPahGd0YRhjT4OdIp9Mt8POdi2JUoxndGAb9sAokFM4gOwnlohjVYKQcjYRyMYwwprGMLfBDP/648kzZh2o0oxvDCGMaS+BnxGdCwiMl71x0YxgeaXik4ZGGR0reuShGNTzS6ZFOj3R6pNMjnR7p3MLyXC/PNT/sOROyPFKyy8U0luGRbo90e6TbI93eVdu7antXbY90e6TbI90a6fj9jGJUoxndmN+EUDZ7RkrZ7EX5GcXQSCmbfejGMMKYxjI80uqRVo+0eqTVI60eaR1GGJprimN5OsSmOPahGs3464f3iW+eNssDITZPm33YAm8wzl/jbZ42+1CNlmCueQjLPcAwwnAE3RF0R3DenH5QjGo0wxEMd8qrSDlBH+dl6QfFYHATNKMbw4jEAtNYxhZ4Yylfk3hY7DybPFPNwzCyn7MPeGPpxTK2wJvTL4pRDSJgh/DG0othhDGNZWyBN5ZecGi2y3klOhN/Xol+sD/EeSX6QTGqwRAm6MYwwpjGMrZwXol+QAQLVKMZ3RhGGPNb4DjvVD/Ywnmn+gF7NMD4ZjTOy9IPprEMDp2bL5on8bwS/aAb2Q8JhefQPkwj++EzF83L2L2M3cvYHUF3BN0RnDenH4QxjWU4guFOz+OamMTzuKaDMKbB4HIr8+hZHjK1efTsQzNyCPlcnM1DaR/CYBJZHx7KdA+wBR7KdOEIpiOYjuC8Of1gGGFMwxEsd0qm4AQ9zsvSD4bB4M6/mcYytkCm4EsXz6F9qEYziICtTELhWw5Pm33YH3jaLG8A3zxt9qEazejGMMIgggqWsQUSykUxqtGMbnDo3C7zvBJ9gGo0oxvDCIMhTLCMLZxXoh8UoxrN6AYRLBDGNJaxBRLKRdECn3eqHzSjG+zRAFszel6WflCManDoDTyJ55XoB8v464e3hm+eQ/tQjJpgV4WXMbyM4WUMRxCOIBzBeXM6OG9OP/BGmt5I0xFMd3oeDsm2PA+HBOfhkAfFYHAHmZG45TPPIyAPprHy3xxs4bzO+IBJZH149Ow5AI+eveiGI9iOYDuC8+b0g/1hnTenHxSjGt2YGegAy9jCeVn6BMWoRjN6YoFhhDENIsitzNNmeVv05mmzD83IfrLObvO02YcwprGMLfCCwQsiqKAazejGMMKYxhLOy9I74ABM/Hkl+sE0lrGF80r0A4bAkpxXoh80oxvDCGMayyAClpGEclGMajSjG0MLfN6pfjCNJfDqwXw6xF7nZenM6HlZ+sEwwuDQbL7lSTyvRD+oRvZDMQ/PlH0YRvZDvctaXsblZVxexu0ItiPYjuC8Of2gG95I2xtpO4KtTs+jZ6mEOY+evejGMBhcBZmRqJ7hAbMPxcgh5JMRNg+YfegGk9hB+ADTWIYjqI6gOoLz5vSDZnRjGI6gulMyBYVg+7ws/aAZDG6CYYQxjdwhFPdtXvR1wJsDL4pBBMRGQqGajufQPkwj+6HOjufQXpBQLopRjWZ0gwjYISSUi2ksYwsklItiVINDs13OK9GZ+PNK9INiVKMZ3WAILMl5JfrBNJaxhfNK9INiVIMIWEYSysUwwpjGMrYW+LxT/aAY1WCPBpia0fOy9IN9UX+/87L0Aw69wZvEPwwjjOznr4rqD8vYAuchf5Vxfyg6QKlGMxxBcQTFEZw3px8sYwv1ZziC6k7PyzIqmMYytsBt478fM/whr9D+PU3hD90YBteIJ5jGMrhKvRLnNRoc4LxG46AajqA7gu4Izms0DqaxjC0MRzDcKfeDN3uH+8EX0/gbXP2xD7LA5CJvGz8UoyaY67yx89CNYUSC2IJ+2OTzZxSDftgHsxndGEYY01gGEbBD1s8oRjWa0Y1hhLA5NNtlcwAmfndjGGFMYxk5hJJLQqHrQzGq0YxuDCOMjKBUsIwtlJ9RjGq0b4FL6cYwwmDYmbgogT0zSgnsQzO6weAa0CRS6HrRfgZDIIJWjWYwiQMMHyCMaTiC5gi6I+jFqEYzuuEIujslUzQmkfvBF9VoBoMLkBmpsSm463uxBdJGmaAY1WASWR8eK30PMIwwHEE4gnAE3yvA/lCMajTDEUx3SqYoTCKZ4qIYObjKvyFTXHRjGLlDKh+MvAX8sIwtkFAqW5mEUtmJJJSLYdAPe5SEcrGM/aGSUC6KUQ0iCNCNYYQxjWVsgYRywaEX4AAbLGML9WcUoxo5BFabQteHYYQxjWVsgYRykRG0CqrRjG4MI4z5LXAloVxsgYRywbB/YGhGexjTWAaDy81HoeudxNGMbjAEIhhhTINJZFcNL2N4GcPLGI4gHEE4As5DLsLwRgpvpHAE051y6tHYlpx6tAnCmMYytkBCuShG5qqzcudlgQfdGEYY01jGFvjGEkw8l0AuujGMMKaxjP2BR8I+FKMazejGMMKYxjIcQXEExRGcN4keNKMbw2C1F8gZ5Q/lqYe9KAaf+g2a0Y3cVXxRa3z/uQeYxjIcQXMEzRFQ5XbRjG4MwxE0d8oZCl8iqZR9aEYOju8lVMo+hDGN/Mj0DraQlbIPxSAC1oe80wmUvHMxDfqZYAvknYtiVKMZ3SACdgh552Iay9gC34wuilGNPPRgu5BdBhNPdrkoRjWa0Y0cwmBJOF25mMYytsDpykUxqkEELCMnMhfDCGMay9jfAlNQ+1CMarByFcxvRqmUfdgCZygXDG4ATSL1sA9h0A8RcCJzsQVOZMYEWkbKZh+a4QiqI6iOgBOZi2VoI/X2MxxBc6fnLegNTGMZW+AMZSyQGYmvff286/xgGAxhg2ksI4cQrM951zkHOO86P6iGIxiOYDiC867zg2ksYwvhCMKdkimCSSRTXEwjBxfMG5nigExxUYzcIUE/XEO56MYwiICtTEIJdiIJ5aIY9MMeJaFcdGMYYUxjGUTADiGhXBSjGs3oxjDiAw+LrfMH8gCzgG4MI4xpLCOHMHNJqG19KEY1mtGNYYRBBB0sYwsklItiVKN9CzxIKBfDCIOVyzw6yBRnRvnKc9GMbjC4ATyJfLE5IG1c0A8RcB5y0Qz6mcDL2L2M3cvYHUF3BMMRcB5yUQ1vpOGNNBzBcKeceky2Jacec4NqNKMbwwhjGnmuzJVtylkvuMtzUYxqNKMbw/jrpy/WNO/lXOS9nIdi5EgXmyK/5fTFMua3nIdp5GItJpG0cUDauMgZXezR/P5zD5Dffx664Qi2I9iOYC9jf6Dq9aEY1ehGLtZqYBlbIKEwb0FCuahGM3K7nH5IKBdhTIMIck15CmxdC1SjGfSzwTDCmMYytsB5yEVGsH+gGs3oxjDCmMYSSCi7Ag7AxJM2LqaxjC2QNi4YAktC2rhoRjeGEcY0lkEELCPZ5aIY1WhGN4YWmOxyMY0lcIayOmiaUc5DLoYRBoNj8y1PIuchF9WgHyLgPORiGPTDrlpexuVlXF7G7Qi2I9iOgPOQi254I21vpO0ItjqlnLUwiZSzPvwdunGLhMe7PoQxjWVsIRPKQ0lUUI1mEAGBlmGEQQQFLGMLeQ2lkKuoh32oRjO6MYwwprGMLeSVksIfSqpeHxgpE9+GEcY0lrGF/jOY6wDVaAYRTDCMMIiA8fRlbCG/GRVOiyiOfahGM7oxjDCmsYwtBCNdoBndYKSsQoQxjRxpYffm16SLTEKN+5o8LPahGhkBNyx5WOzDMMKYxjK2sIiAz8IqRjWa0Y1h5Fzz3Zka2sIFFWpoC9+DqaF9qEYzujGMMHJNuepBDe3D/kAN7QMRdFCNZnRjGGFMYxlbIFeVg2Z0gxkdIIxpsKYBtlBZ0wmKUQ0iWKAbwwhjGsvYQiOCDYpRjWZ0Yxh/c/3j5CcfMFt/5MR8wGz98Qd5Zb3LQzWa0Y1hhDETDSxjC+NnZAScnFKR+9CMbgwjjGksYwvhXRXeVeFdFd5V4V0V3lXhXRXeVdO7anpXTe+q6V01vaumd9X0rpreVdO7anpXLe+q5V21vKuWd9XyrlreVcu7anlXbe+q7V21vau2d9X2rtreVdu7antXbe+qrV21fz9Du4oq3odmdGMYYUxjGdpVPK62cWuWx9U+dGMYuabUEvC42odlbCHPq3589aWK96EazejGMMKYxhLISNxv5Km2D83oxjDCYKQLLGMLnFddEMEG1WhGRkDxC0+1fQgjI+BGPE+1bdwT35xXcUubR9w+FKMazehCcIABisEB2DskoQsOMMHfEPb5D6H2VHupvb925p/bpgfmklTCrUqeTbtPe6m9v3bmEb5q8Vza265qN7W72kPt7Jjbolmp+yHXgLuNWan7kF/THnIY3OPh+bR8neTxtHfS9jL2Q+HxtA+5Hnm3svB42odmdP+bYYQxjSWQGfKmZuG5sw/dyEP/Pe7wD2FMYxlb4CzmIgc3GAJnMRfN6EZGkOdehQfXPkwjI8g7W4UH17ZBp5zFXBSjGs3oxjDCmEZGkLeFCvW8F+SMvNtSeHDtQzWakREEgyNnXIQxjWVsgZxxUQwiYLXJGRfsA2Z0EMFBGNNYxhbIM8HmI89cNINhLzCMMLLTyfRysnORnU4mkZOdi2JkBH9PG/hDM7oxjDCmsQwiYPdysnNRjGo0oxvMAVuMhNSYg5OQ+L+dhHTgHLKdQ7ZzyO7GMMghrNzJYgfL2B/KyWIbFKMazejGMMKYxhK4iJT3lQoFwQ/N6MYwWNMJprGMLZDSLoqREeTtgELd8EM3hpER5ClN4dG5D8vICPLKfKGi+KEYRDAAEbA+pLRFoKS0izCmsYwt/CWuzgD+0tZt9q85vmZ8zfma5I28jFt4wO3DFvJkhcXOFHKa9Wu2r9m/5viaHBuQBPLrQsm63X7+9/Y1+9f8GwRx/H34b3N+zfU192v+fehvk/4YMh/5i1yczerykb8YRka/WV0+2Jutywf74i9+loaP9WYL8LG+CGMay9h37ijXPc3yNevXbF+zf835TTkFt2fKeQAt53+FB9A+MB8TdIMxLPB/DOM059dcX3O/5t8H9TbL1+TYBJcfuP4juL8PXJz/037Nvw/bbf4/Cn+ostL2NtvX7F9zfM34mvRXwDJ2Iled+tqHYvREAxytg2X8xc/E8rf/TB9/+y+q0Qx6GWAYYUwtE5/hiy2EIwhHEI4gHEE4gnAE4QjCEYQjCEcwHcF0BNMRTEfAicDFuJ8v6nHPZ4V63IdlbIHTgIPN4nK0XYxq/H2kWee/j/Rtjq8ZX3N+zfU1921mmextlq9Zv2b7mv1rjq8ZX3N+TTbdBlsoPyNHmdfBS5bFfmiJDroxjDCmsYwt5N/ph2JUwxFUR1AdQXUEpI282FZ4zuzDFtrPKEY1iCBAN4bxtwKnOb/m+pr7Nf8SyG2Wr8mxJ2AMCzAGVqtvYfyMYuQYKuuY6eOhG8MI428UTGgmj54/RinUy15k8njI/iv/JqrRDPpn0CSPC/pnBjJ5PCzj748Ix/pLHbdZvmb9mu1r9q/JsZndxRiYtjwl6HnNp1Aw+9CMbuQYGpOQFyweprGMLfzlnMHY/jLObdav+TcK5ugv29zm+JrxNefXXF+T/jIvUB77UIxuEH0Hy/hbgfx4ZD3sbZavycwFaEY3mLkFwqDvDZaRI8mLQIUq2c5JK1WyPS/1FKpkO4mQKtmHbmQ/7HMqXjsXV6h47Xw2OxmBvzGUv3bOITsZgVPSzgnEIAJOIC62kBcWOpdQeOhrZ2NS5NoH4yEHXHA0YiMHsLSdHHBRjGpk1GyoTg64GEYY01jGFsgCF/TD7PCJ5hoMBaudyy4UrHaup1Cw+tCMbkyBj20wo3xsLzga08uHk+spFJJ2LqFQSPpQDSJg3nY3hhHqZ0//l2XsD9SbPpRvdvJZqh+a0Q3NAfWmZ9jUm16Un9G+/UZVaeeMl6rSzgk0VaUP01jGFvgAXhSDGSVqPoAX3cgIuD5EVWnnKtDgo8l1G0pMO5ddBn/G+cgMPrQXxch+5sEwwsijZfFpoZC0T9bn78vziezvj/NtciQmkA/sZMh8YC+WsQU+sJPx84G9qEYzujGMMKbAx3IRNR9LLmtQENq5eDH4WHKJYvCxvKhGM/6mg0n6O/m+zfia82uur7lf8+/je5vla9av2b7m19v6eltfb+vrbX29ra+3/fW2v97219v+ettfb/vrbX+97ddb1nSyjbKi8zbb1+xfc3zN+Jrza66vuV/z75N8m19v5eutfL2Vr7fy9Va+3srXW/l6K19v9eutfr3Vr7f69Va/3vh4cmWL6s0LPp4Xubu42kD1JlWvherNztUXajQ711iCL9hcScmyTHZ3PmP0NvvXHF8zvub8mutr7tf8+0jeJpEQMB8uLoJkqSUXvrLQ8jb3a/594G6zfM36NdvX7F9zfE36m2AaS+BTyrdfaik7l0yopRxcMqGW8mEay9hC/ll9KEY1mtENR7AcwXIEiwhY8LWF/TOKUY1mdGMYYUzDEWxFkM8W/VCMajSDCBoYRhjTWMYWCv10wNEG+H80PiZZVnmb62v+Pw6fsCyovM3yNevXbF+zf01izK2Wjwj9jwWKUQ3mYoNuDCOMaSxjC/1nFKMajqA7gvyDPbikQbHkwzQygsIC5B/si/yDPbi6kMWS/8Fq5B/swXf2LJb80A0iIJwRRkZQmfg8wx58/85iycKHJR8x+tpF7ap2U7urTQ+ZTCmGHJVhZRYZlZHk3/qHZuRI+IpOMeRDGNNYAlmEL+8UNg6+elPYOPjqPckVF9NYxhbIFRfFqEYzMgK+u09yxUUYGUFjMcgVF/vDIldcZAR8q1/kiotm5PJ02kPtUHv+tRvtpfb+2uWndlG7qk3HB90YRhhbqAyDqGozONoAwwgjRzJpL7X3124/tYvaVe2mdld7qB1qq9+mfpv67eq3q9+ufrv67eq3q9+ufrv67eq3q18yCldBFhnlohpM9wLdGEZON5dEFhnlIvct1zqypPEhvxw8FKMaGQHXRyh2fMgIuFhCsePgYgnFjoOLJRQ7PmyBXMRlFIodH6rxN/2F4fylotceaofaU+31tclCXKihZHGM819yJFxnWWShi2ksI0fCV+pFFrooRjWakUPhYCQhru0skhAXUxZJ6IIAcgRZsVjI6lmWWCgdytrD0s//vtTeXzsvDow4KEY1mtGNYYQxjWVsoTqC6giqI6iOgHTD5ZZNurkIYxrL2EJmmTNnmWVuu6n9N69cXMzaxNcOtemug2VsgZOYi2JUgwEH6AYDHiCMaeSSM8RMOKf9l3Beu6hd1W5qd7WH2qH2VFv9DvUb6jfUb6jfUL+hfkP9hvoN9Rvql+zClS1KGR+KwYQv0IxuDIMJ56PHmQ5Xg7IAspD4sgDyttdP7eyey1pUQD40oxvDCGMay9gCSenCEWxHsB1BJiVS+t5D7VB7qr3U3rdds2jytYvaueqLdlO7q83AKwhjGstg4C1BdrsoRjc4GoGRqfKiTqVE8oJMdVEMjkbUZJ28hFApd3zYAt+mLopRjVyUvFhXKXd8GEYY01jGFkhEF0QwQTWa0Q0iYOJJRBdEwPTybepiC5mKggAyFd12Vbup3dUeatNDT3AGs1hNzmAWy8QZzEU3hsFIWE3OYC6WsQVyzEVGsImNHHPRjG4MI4yMYDMevk1dbIGrNRdEwHhIMxfNIAKiJs1sth1p5uIvgsgvkZXaxoedINBMMw/FqEYzujGMMKaxDEVAbeNDMarRjG4MI4xpLMMRFEdQHEFxBMURFEdQHEFxBMURFEdQHEF1BNURVEdQHUF1BNURVEdQHUF1BNURNEfQiKCCajSjG/kjk0E71J5qL7X31+Y3aqdd1K5qN7UZYAMMI/NIPjH1A8Pg34xqNKMbwwhjCkE/Abws4UmJYYQxDZZlgi3Mn1EMb4zpCKY3xvTGmN4Y0xtjemPMrdjWz/DGWN4Yqym21Y1hOILlCJYjcIoqTlHFKao4RZXtrbm9CtursL0KJ0UR2/YqbK1CdYqqTlHVKao6RVWnqOoUVZ2iqlNUPSmqAq1CLT+jGNUgggW6QQQbhDGNZWQEhUOToi6KUY1mdGMYYWQEebG28mTWi6aPGQ9jjbyMW3kY60MzuqHNx8NYH6axDC99/xnF8NJ3L3330ncvfffSdy99X4a2fx3efCSuvHpdKSR9GAbTy7yRuApRj2VsgZR2UYxqNKMbw6AfNh8p7YCUdlEM+mHzkdIuujEMzvsYNmddF8vYAmddF8WoRjP4JkOg5yvcwTK2QOLKmwO1ni9qRM017Ith5MpVVpv0dLGMnNG8flTbT99K2q8Y1WhGN4YRxjSWoe9FrTiC4k651MR3NgpNH6bB4DrYAnknb0VUCk0fqpHbJW9SVApNH4bB9BIbeediGVsgCeVthUqh6UM1mpER5G2F2kg1jcUi1VxsgVTTmBBSzUU1mtGNYYRBBMwoqeZiC6Sai2JUoxnd4NAsCTmkMfHkkItmdGMYYTAEloTscrEFsstFMarRjG5kBJ1l5ITpYhrL2AInTBdFC8wJ00UzusEeXWBrRkkoF8WoRh66s/m2J5GEcrEMhpARUGD6UIzsJy/Y/YeWkdLTh2GEMY1lbIHznYtiVMMRFHf6l1C4vl6z5PS2/9LJa+c1+KBd1W5q57DynknlmawPYUxjGVsglXA1jQrVh2pkAJt2V3uoHWpPtZfa+2vnrbLbLmpXtdVvV79d/Xb129VvV79d/Q71O9TvUL9D/Q71yzlNZyU4p7mYBjdWmDvukh1wl2ww+VxjuqgGd3bolGtMF0SwQBhEcP5vy9jCXz4qfLCzZva1q9pN7a72UDt7yDtelXLZyFtZlXLZGPzfyCoX3RhGjuSMnq9hF8vYAsnnggiYCpLPRTO6MYwwMoIgNtLSxf5A8e1DRpB3gyrFtw/NyAjy7krlMbCR9wQqj4F9IIINlpER5N2CSlnuQzGq0YxuDCOMaSzDEVRHUB1BdQTVEVRHUB1BdQTVEVRHUB1BcwTNETRH0BxBcwTNETRH0BxBcwTNEXRH0B1BdwTdEXRH0B1BdwScKOXtlEoJ8MMWOFG6IAL2GydKF83oxjDCmMYytsD5VJZvVh4dG9wL4dGxDxwtwDK2wFnTRTGq0Qz6mcDrszw75KqLajSD2eHTSK66CGMa3iHLEWzvkO0dsr1DtnfI9g7Z3iHkqhPo9g7Z3iFbOyR+P4MINqhGRpA13jXIVRfDCCMj4G4MT5h92AK56qIY1WhGN4iggzDWt/RBeuJrcpCeLopRjfYtY9RuDCOMaSxjC05P4fQUTk/h9BROT+H0FE5P4fQUTk8UOQe3onj27EMzmF7mjSTE3SeeSvswjWVsgSR0UYxqNIN+2HykmotlbIELQ5uR8qXuohrN4A8/25/0dBHGNJaxBdLTRTGqMW5NTg1Kik57qp0lRezCvN9/2nm//7YZI/+AlHXRjG4MI4zsvdJeau+vTb7aB8WoRtZSsZIUIJ32UDvUnmovtfdrZ7H0axe1q9pN7a72UDvUnmovtdVvUb9F/Rb1W9QvqSmf1VApqX4II3cUd1R5Vu1D7ihuok7y1EUx8ntJod3U7moPtUPt+bXJQ1nwXymvDu7ZUl4d3KalvPohjGn8jWT+zqG3kCdDD8WoRktU0I1h/I2GywhZXf3aS+2/VWxMan67u+2idlW7qd3VHmqH2lPtpbb6DfUbDJr1DwZNpNGMbgwjjGksYwvzZxTDEUxHMB3BdATTEUxHMB3BdASLCNhgqxjVaEY3hkEEHUxjGUTARt4/oxjdyIoj9jEVR6e9X3tRcXTaRe2qdlO7q804DnIcpNUswv6wjC3kmdJDMarRjG4MwxEUR1AcQXEElQgaKEY1mtGNYRDBD0xjGfl5ynWlgPu2i9pV7aZ2V5u+A4QxDfqeYAuksItiVKMZjJ4ISGEXYRDBAsvYwiACttBo/i//D8BVlyzGvs38x5XpzvOjh2JUoxndyPC5Q0Ep9sM0lkEEBEkyuigGETAwktFFNzIC7l3w3NmHaSwjI+AWB8+dndxt4Omy8+wOUs7FMMKgnwHoh31DymmMh5TDpXpKtR+q0YyMgAvy1Go/hDGNjICL3vmo2f/oIDvlQm0+avY/JshO2SFZ0/1hGGFMYxlbIENxmkvF94M26z5J6WAYYUxjGXSay0iR90MxcthcCqTI+6EbwwhjGsvYQvsZxXAEzRE0ImBJSE0XYUxjGVsgNVGxSN33QzWakRFwmZK674cwMoIgalITlyl5Iu0FqSmryCtPpH0gAgIlaV10YxhhTGMZWyC/XRTDEYQjCEcQjiAcQTiCcAThCKYjmI5gOoLpCKYjmI5gOoLpCKYjmI5gOYLlCJYjWI5gOYLlCJYjWI5gOYLlCLYj2I5gO4LtCLYj2I5gO4LtCMh8XBbnUbqg8Sjdh2L8nSXkZcFGXfhtd7WH2qH2VHupvb92fle8bQa4AWntIIeRV2QaFeEPWyCtXRSjGs3IfvJqXqMinOlqVITfeWieFFLURTNyWbL2vVER/hDGNJY7dQT9ZxSjGs3oxlBsJ0UdTGMZW7GRoi6K4QiGIxiOQCmq/ZSi2k8pqv2G52B4a4ZXIbwK4VUgRZ3YwqsQXoVwBOEIwhGEV2F6FaZXYXoOpvfBSVEHXoXpVZjeB6SoC6/CcgTLESxHsLwKy6uwvArLc7A8B8v7YHkVtldhexW2V4EUlfcxGrXkD6xCB2FMYxnMQcZGLflDMarRjG4MIwwiWGAZmakyUVAwfhIFBeMzr/Q3CsYfhhGGFruUZWixS/0ZxahGM7TYFIw/hDGNZWjDl/YzilGN7GcxO6S3i2lkP4t5I70toia9XRSjGs3oxjDCmML4LmY0KscfqtGMbgyDfjqYxjIY6UiQxC6KwUgDNKMbwwhjGsvYAknsohiOYDqC6QimI5iOYDqC6QimI1iOYDmC5QhIYostRhJbfH5IYhdhTGMZWyCJXRSjGs1wBHkxfhBaXoy/7an234nOYKvkZTDaWWj+2n+XYfLhby3LzF+7qd3VHmqH2lPtpfb+2nmCddvqt6hfclbe32nUic+8LdGoE595Ab5RJ/5QjGpwtAE4Gv2QZQ7IMhfFqEYzcjU2s0j+uQhjGsvYAvnnohhE0EEzujEMIthgGrk0hfb+2nmF/baL2lXtv87Xj6XJpLR+LE0mpYcwpvH3w5zKYmROWj/izZz0UIxqNKMbwwhjGstwBLNqbJP/QqDrZxQjf4rIRltN7a72UDvUnmovtffX3j+1i9rqd6vfrX63+t3qd6vfrX73128Wer92Ubuq3dTuag+1Q+2pNqsQYAt8A9u0i9pV7aY2Kz0BR8pPTdZzF7JIlnO/dlX770h5+7RlLfdrD7X/xkDKzULu115q76+dV7hvu6hd1W5qd7WH2uq3qd/ObjzIz0Mh0swGK6/0N2q0H8KYQp6NrLyI3ai3XnlzulFv/TCMMKaxjFyNwtLw+b4oRjWa0Y1hhEEE7Cw+3xdbmD+DCNgpfPIv8gCV/UEaOCANXOQBKhOfpwwPf78fbKfd1R5qh9r0wXJsjkSQ+VKzxuci32l220PtPBITkS80u+2l9t8vIPOKd8uK69cuale1m9pd7aF2qD3VXmqr36J+8+vKyp9dNJ7mu7IIuvE035V3HhpP833YQv0ZHG2DPFreOGjUSj8sYwv5p/+hGLkaWRjbeJrvQzeGEcY0lrEFPtJ5J6VlzfSHajSDCBoYBhEw14PxMFWjGs3oxjDCmMYytsCH/cIR/H3Y62Dl/z7rr93V/ttmg/D/PuivPdX+22aD8ea76U87X01/20XtqnZTu6s91A61p9rqd6pfMkBjafKrwersofxqsPI3Eo0K6IdlbIEs0Dn05mjMzQ5jGsvYH6hmfsjVyHr2RjXzQzO6MYwwprEMIsj9TTXzQzGqQQQTdIMINghjGsvICDhxpZr5oRjVaEY3hhHGNJbhCP6yTOVrdhYzv3ZV+29n8s0zK5lfe6j9tzP5Vp9lzK+91N5fO3/yfttF7ap2U7urPdRWv139cgIxWEFyyjj/hfljaOSUizCmQObgyyuPIl58Sx2cDFwMI4xpLCNXI58q3qhDfihGNZrRjWGEQQSsFmcTF1vgbOKCCNgp5JIL+slUQLXxCqZqF6MazejGMMKYxjL2B6qNH/62E6FlsfFrN7X/tlPee2xZafzaofbfdsqblS3LjF97f+08f7jtonZVu6nd1R5qh9rqt6hf8kPe/GwUDS+uKFM0vLgnRNHwwzSWwBkFV2opAF5cJ6UA+CGMaSxjC5w3cH2a0uCHajSjG8MIYxpE8ANb4NN/UQwiYKeQFy6IYIJhhDENImBGOdc4IGNcFKMazejGMMKYhiPIUw4uMGXN8GsXtf92JldjIk85brur/bczubiVhcSvPdVeau+vvX5qF7Wr2k3trrb6XeqXsxAulVMRvLhqzVOU12Jo5JSLYYTB0XLVeSLy4o8YT0R+6MYwwphGrkbWmjeeiHzBucZFMarRjG4Mgwg6mMYytsC5Bt/WKfl9yH64rjDJJRdhTGMZW+B7CyvHE5cfcqTsQ0qCH4iAQMk/F0TAYpF/LoiAiSf/HJB/svS4URL8QARMIvnnggiYEPLPxV8EmwtwPHH5YSUYduafi8w/m4uLPHH5oSYYduafh55g2Jl/HoiAYY9pEAHDHlvg1YZcgKJC+IEIGDYvOLz4+yjO0x5qh9pT7aX2/tq8hplLQdQGP1Qj++aCD7XBD8MIYxrL2AKvb74oRjUcwXIEi35Ymc3RWIzN0Zj/XY1mdGMYHs/2eLbHszUentL8UIxqNKMbwwhDEVAJfIZNve8ZNvW+ZwjU+z6EMY1leDzV46keT/V4qsdTPZ7q8VSPp3o8dRmOoDmC1jTsFhp283iax9O20H9GMTye7vF0j6d7PN3j6R5P93i6xzM8nuEZHY5gOALyyhk22eMMOzye8HiiGs3wDgnvEF7jnmXQjZLehzyJmLT31+bk5bSL2vRxwJEW+JuZ3/kP+2tnJrjtv4GQ61bmgdtuav/1QA6lWve2Q+2p9lJ7f+3MGbdd1K5qN7XV71a/JydkxqT2dnNBl9rbzQVaam8fujGMPBqXOKmj3dz14snJD83oxjDCyNXg4idFtQ9b4JN/UYxqNKMbRNBAGNNYBhHkClNU+5ARcF2VotqHZnRjGGFMYxlbIFtcOILMFnwGqam97a72X/d8siiove2p9l/ffLCppj3tzBK3XdSuaje1u9pD7VB7qq1+h/ola3BngXLY3c5/Yf4YGrnhYhlb4CyCOw2Utm6u41La+jCNZWyBc4ULVoOPG+cKF83oxjDCmMYyiIDV4vziohjVyAi4fktp60NGwKVUSlsfMoJ+DpARcCWU0ta8v9GpbL3tonZVu6nd1R5qh9pT7aW2+i3ql2yUDxf5j2o0oxvDCGMay9gC2eiCCDaoRjO6MYwQyB95Hb5T8fowjDCmsYyMOq9gdipeH/g3AyxjC5wf5BXMTo3qQzX+om70mR/+2x5q/4Xc6J2XNJ/2Uvuv77yN1ClOve2idlW7qd3VHmqH2lPtpbb6neqX7xqDhSZL5HXRTnXpzsuanerShy2QJS7yaMF08IkPxs0n/mIZW+ATf1GMXI3gM8En/qIbwwhjGsvYH6gU3XllsVMp+lCNZhDBBMPICPISW6dSdM/zb5axBb5rXBSjGs3oxjDCcAS8/JE4efcjbV79eNp/3ZMGKCC97ab2X9+d2eOtj6cdak+1l9r7a/NGudMuale1m9rqt6lf8kNWDncKQ3deyewUhu7J/43vHBfdGAZHY6jkh7yo2Cn/fGhGN4YRRq5G1rZ2yj8ftsB3jotiVKMZ3SACVpTziotpLIMI2Clct7jYmhA+/RfFqAaxsSTLc0BeuFgGEeSnn+LLh2IwByzw9ipsr8L2KmxHsB3BdgTkBcCjfh+KUY1mDIMFDrAFPvAXDG6BajSjG9nPoh8+8BfTWEZGkHVVnQrMndcpO0/qfehG9pMXLTtP6n2YxjK2wFeMi2IQQQPN6MYwwpjGMrbApz6vlHaKLvdm4jlfuFjGFjhfuCgGQ2BJyAcX3RhGGNNYxhbIB5tlJB9cVKMZ3RhGaIHJBxfL2AKXLrPKuvMI3jujfOm4CGMa/w/9d3adWJ5E0sZFM3r+GyL4+2rxIYyZYFctL+PyMm4v43YE2xFsR0BCuRiGN9L2RtqKgOfxPuhcqZ0ziINhhMHgQNG5UivFqEbLf3PQjWEwiQNMH2AZOlvjEbwPjqA6AhLKRTeGEYYjqO70L1P8faMCzegGg1sgjGksYyfyg5F1mx+KUY2MIJ+c0LNu8+8bG5jGMrKfvNjYs6LzQzGq0YxuDIMI2CFjGsvYQvyMYlSjGRya7TI5ABM/i1GNZnRjGAyBJZnTWMYW1s8oRjWaQQQsIwnlIoxpLGML+6cF3sWoRjPYoxMszejeH7IG9EMx8tBZ4tqz3PNOYtZ7fphG9pPXSnuWfD6Un5H95OXRns/WfQcozeiGIyiOoDiCsowt1J9RDEdQ3SmZoh0sYwucelwwuAa4ZjXBMMLIIeQl4t5JGxdbIG1U1udcw+QAfPu4aIYj6I6gO4I+jWVsYfwMRzDcKZmCi0ydTHGxDAaXH5lOprgoRjVyh2SJb89S0Q/DCCMjaGxlEkpjJ5JQLqqR/XAlo5NQLoYRxjSWsQUSChd2OgnlohrN6MYwwpgCmaKxXTYHYOJJDhdhTGMZ+8MgbWSNax+kjYtqNKMbwwhjGkSwwRZIKBfFqEYz+rfAg4RyEcY02KO5rweZghnNAtEP3RhGHjovGvcsA32T2H5GMbKfTgSch1x0I/vJitk+WvgA01iGI+iOoDsCzkMumtGNYTiC7k7JFGQxnlb70IxuMLgGuLPEjPKN5YBvLBc5hM4BSBsXzWASz78ZPkAY03AE4QimI5jFqEYzuuEIpjslU3DtaZApLqrB4PjIkCkuhhFG7hCumw9OPS62wKnHRUYw2MoklMFOJKFchJH9DPYoCeVifwgSykUxqtEMImhgGGFMYxlbIKFcFINDD8ABAmyBE4yLYlSjGQxhgWGEMY1lbIGEclEMItigGd0YRhjTWN8CBwnlgIRyUQz26AShGeW7zMUytsB3GW4gxPAk8o3lYhjZDzcQgvOQi2VkP1xwj/AyhpcxvIzhCMIRhCPgPORiGt5I4Y00HcF0p5x68IU9OPXgm2tw6nGxjC2QUC6KUQ1qTNg7p0brYBhhTGMZWzh1XQdfDVAPEkqw2iSUizCmwUiZHRIKmCSUi2JUoxndYKQdhDGNZWyh/IxiVKMZX3VQn0UjneSdiy2Qdy480uqRVo+0eqTknYswpuGRVo+0eaTNI20eafNI+WZ04blunutT8cWEdI+U7HJRjWZ4pN0j7R5p90j7MryrhnfV8EiHRzo80uGRDo90eKTDu2p4rofn+tSCMSHhkUY3hhGGRxoeaXik0yOd3lXTu2p6V02PdHqk0yOdHun0SKdHuryrlud6ea75VQw3aXii7MM0lsFI84/R3F81ep+7Gd1gRhcIYxrM6Ab7OwD1pA/FqEYzujGMMKaxDEdQ3Clfhrh9vDjFuQgjB8dt3UUSutgCSegitwt3SRdJ6KIZ3SCCDuhngC1winNBP4yHU5yLZnRjGGFMgwgm2AJJ6KIY1WhGN4bBoXO7LC7KLiaeU5yLbgwjjGnkELizujjFOeAU56IY1WhGN4ZBBCwj2eViGVsgu1wUo2qByS4X3RgGK5cnc4tTnDOjnOJcVKMZDI7NtzyJfDO62ALfjEgoi29GF9VgEtlV28u4vYzby7gdwXYEWxFsTnEuilGNZnQjDH5JlZPIs18filENDj3B96u1TmXqwzIYQmbLTdq4KAZD2KDpALUbw3AE1RFUR1C3wC9nLopRDUfQ3CmZgpvdm0xxQKa4yMFxR3qTKS6a0Y3cIdxd3pyuXExjGUSQW3mTULgxukkoF92gnwBhTGMZWyChXBSDCNghJJSLbgwjjGksYwtkCu47Z0XqX7UVmMYytpBp46EYNcGSZNp46MYwwpjGMrawiYBl3MWoRjO6MYzQApNQLpaxH8aPHJI34sePTJEzOn5cXbkIYxoMrifKN4kji0s/NIMhEEEZRhhMYoDlA2yh/gxHUB1BdQS1G8MIYxqOoLlTMkWWdg5qUB+GEQaHBvySLi/cDJ6t+lANhnDQjWEwBNanTx9gGVsYjmA4guEIzi/8D7oxjDAcwXCnmSlKYRIzUzx0IweXd6RHVqd+mMYycofkd6aRFaofilENImArk1AKO5GEcrEM+mGPklAuilGNZnRjGETADiGhXCxjCySUi2JUoxkcOrdL1qv+1WyCYlSjGd0YRg4h7/qOrFf9sIwtlJ9RjGo0gwgaGEYY01jGFkgoLHAhoVxUoxmsXAFLM1q3QNq4KAaD68CT2MKYBkMggraF/jOYxABexu5l7F7G7gi6I+iOoC9jC8MbaXgjDUcw3CmZorMK/Ob/Ygv85v+CQ0+QGakzifyy/yIMhrDAMrZA2qisD08JOQfgKSEXzXAE0xFMR8BTQi6WsQWeEnLhCJY7JVM0JpFMcbGMHFzjI0OmuChGNXKHNOaaU4+LYYRBBBlbJaHkjdFRSSgX1aCfAN0YRhjTWMYWSChZpjAqCeWiGs3oxjDCmAKZIu87j8oJRt4CHpXkcBHGNJaxBdJG3vUdlbRxUY1mdGMYYUyDCBrYAgnlohjVaEbXApNQLsKYBiuXebSSKc6MjmZ0YxgMjs03PInxM4rBEIiA85CLbjCJ7KrwMoaXMbyM4QimI5iOgPOQi2Z4I01vpOkIpjs9TydkQs7TCQ+a0Q0OzVbmymk7R9sCzyC6YAgLVKMZDIF+eF7IPUAY03AEWxFQ9fpQjGo0oxvDUKeNTDEOilGNHFzekR6UwD4MI4zcIXl3eTROPS62wKnHBRF0QD8DDCMM+gmwjC2QUC6KUY1mEMEEwwhjGsvYAgnlohgceoM8QDDxJIcDTjAuilGNZuQQgiUhbVyEMY1lbIGEclEMImAZSSgX3RhGGNNYWmASygEJ5aIYrFwBoRnlu8zFMrbAd5lg8y1PIt9YLobBEIiA85CLZTCJ7KrtZdxexu1l3I5gO4LtCDgPuZiGN9LWRqIe9qEaHHoCDr3ANJaxBRLKRTGqQVZuoBvDCGMay9jCeVbqQU7iZHAklIthhDGNZWyBhHJRjGo4guYImiNojqA5guYImiPojqA7gu4IziOTO+jGMMIggvww9fPI5AGKUQ1GWkE3hsFIWR89THl0PUx5nOerHoQjCEcQjuA8TPmgG8MIwxGEO+UMZTIhZJeLbjC4AGFMYxksIx8z8s5FMapBBHx+yDt5Y2dQD/uwjOxnsQ/IOxfFqEYzujGMjGCxQ8g7F8vYHyiofShGNZrBoXO7UA9b8hbWoB72oRrN6MYwGEKAaSxjC5yuXBSjGs0gggmGEcY0lrGFk3c2KEY1msEeHWBpRkkoBySUi2IwuAU8iXyxuZgG/RABJzIHnMhcZD95A2mM4WUcXsbhZRyOYDiC4Qg4kbnYQngjhTdSOIJwp5yhcONgcIaSt7DG4AzlgDOUi2JUoxndyFzFle3zpNWLaSxjC+f1DQfFqAb9sCmoKbmYxrqvMRjje1XDGN+rGsb4XtUwxveqhjG+VzWM8b2qYYzvVQ1jfK9qGON7VcMYW/1+r2oY8b2qYcT3qoYR36saRnyvahjxvaphxPeqhhHfqxpGfK9qGFk8+9rqt6jfon6L+i3ql7OavO01grOai9yw3I4K8s4Fu2qCLZB3LthVC1QjAzjtrvZQO9Smj/wkUj9bucMTvLGh0+5qD7X/jrQInTc2nPZS+28KySJZOPvaRe2qdlO7qz3UDrWn2ktt9TvUbyaVmr91HZTO1t/5LzPB0DJ1PGwhU8cDRwvA0VijmMYytjB/RjFYDZZmNqMbwwhjGsvYwiICVmsVoxrNyAi4WZXVsh8yAm5JZbXsh2VsIU9MHopRjWZ0YxiOIN8QcdtL7f3aWURbuSGWNbSvXdVuf+1Cu6s91A61p9pL7f218wnPt13Urmqr36J+CzNLcJX5G4D5C1CNZnSDo2VKyDrXv6cbgGJUoxndGEauRiXq/F7zsIwt5GnIQzGq0QwimGAYYUyDCNgFfQt5flG5NTVJEhfT4ABMPEni4C9J1E5of6cXr13VbmrTB8tBguAGT5aoVq7AZoXqa1e180jn/9/VHmr/7U4u62Zt6msvtffXzqct33ZRu6rd1O5qD7XV71K/fOi57zT5aHNNcvLR5oI4BakPYcwPWXb699gLwNE66MYwwpjGMnI1uLOSjzH9UIxqNKMbwwiDCCpYxhb4sF8QwQTVIIINujGMMKaxjC2QIC6KUQ1HkC934HJCFqe+dqj9tzu4SJCVqa+9v3a+3IHrGlmW+tpV7aZ2V3uoHWpPtZfa+2sP9TvUb34rqf0g548bSxSmVu4LUZh6wQnERTE42gAcjc3BCcTFFjiBuChGNXI1uD1BkenDMMKYxjK2wAnEBRHw0eEE4qIZ3SACdgonEBfcq2BCKGE/+5sS9otuDCOMaSxjf9jndstBMarxt824VZEFp6891P7bZlyf3nlKcNtL7X3fqjOyIvW1i9pV7aZ2V3uoHWpPtZfa6reqX8pQ86fJ4xSbsr9PsSl/sU6x6cUWKDa9aF/lAo80PbfweaTpwzJUEMAjTR+KQUlCgGZ0YxhhTGMZW+DyJx9rnm36UI1mEAE7hUKxCyLYYBrL2MJ5SQwzyuXPi2o0oxvDCGMay9jCdAR5GsLXu3xi6ms3tf92Jte/8kGqrx1qz/tWnZE1q6+9v3aehtx2Ubuq3dTuag+1Q231u9QvL5jh9iWPQV3nc0xOOR9YcsrFNNZD8LhTah+D55pSBBg82PQhjGksYwsUructm+Dxpg/VaEY3hhHGNIggwBbO66UOikEEBTSDflqCIvRgqihCv2hGN4YRxjSWsQVyyYUjyPOHE1qeP9x2V/tvO+XtwciC09eeaq/7Vp3IatPbzvOH2y5qV7Wb2l3toXaoPdVWv0P9kh+CpSELBHuILJA/4QoeevqwjC3M72cR//H9PiB48OnDNJaxhfUz+FECs8hlyotmdGMYYUxjGUTA/qa046IY1SACdgp54YII+IyTFy6msQwiyBnlYakPxahGM7oxjDCmsQxHkKcc+bOKyNrT165q/+3M/LVFZOHpaw+1475VJ7Lq9LWX2vtr5ynHbRe1q9pN7a72UFv9VvXLWUjerAqeesqbfYLHnvLKnuC5pw9hTIHMkX/bggef8gvD4MGnD8MIYxrL4MeL+aksnGtcFKMazejGMMIgAlaLc42LLXCucUEE7BRyyUWes+cJQRSuXlxMYxlb4HvLRX5rGKwP31su8lvDYBX43nJBBATK95YLImCx+N5yQQRMPN9bLohggmoQAZPI95YLImBC+N5ykRHwV5SK1IeMgL+IVKQ+ZATkbSpSHzIC/gpRkfqQEfC3h4rUByJg2HsZRJDDplb1gQgmqAYRLNCNv/2W9zUiS1Vfe6q91N5fO09jbpu+N6hGM7Lvef7NMMKYxjK2wLWUi2JUoxmOoDoCrphkYUNQslr5o0PJauVvBiWrD90YRhgeT/N4msfTPZ7u8XSPp3s83ePpHk/3jHZH0B3BKBo210POsIfHMzwerpRcLGML4fGExxMeT3g84fGExxMeT3g84fGEZ3Q6gukIyEVn2GScM+zp8UyPh4xzUQzvkOXxLI9neTzL41kez/J4lsezPZ7t8WzP6HYE2xGQVxh2I3sw7PbTeNqvGs3oxjDCoJ8Ay/jLIHmvIniC620Xtava9DEBRzr/5e9IlaHkF5rbLmr/Hakywvw2c9td7b8cmHcOgmew3vZUe6m9v3aeptx2Ubuq3dTuaqvfpn5PTsiMybNWaxbTBM9arZwHNT75F8MII4/GCQGFpnzHDwpNH7oxjDCmkauxWBo++Qd88i+KUY1mdGMYRMCK8sm/WMYW+ORz7kSh6UNGkAUrQdXpQzeGEcY0lrEFssVFMRxBfj/qp93VHmr/7Y7OHsjvRre91P7blY1Nk1+MbruoXdVuane1h9qh9lR7qf31m4Wpr83MFsD8NcD8dbCMLXCv5oKjBeBoE0xjGVvgXOGiGKwGUXOucNGNYYQxjWVsgfsuWSkSFJw+VKMZfxG0LOkICk4fIsHs5PnFw0qcA+wE85bfggb/Pi+f3HZVu6nd1R5qh9pT7aX2/tpD/Q71m9mI96sF5acP3RhGGNNYxhYyGz0UgwhYoGhGN4YRxhQyf/Bmq6Cu9CGMaSxjC5k/eLdXUFf6wL9hhdcW9s/g37DL8/zgoRm5yqc91A61c5WZs/zw3/Z+7awObXwdy+LQ165qN7W72kPtUHuqvdTeX7uo36J+C6tBcJklWv5qMygPbVl5EJSHXmSWeChGHo2zCko9z+kDpZ4PW2g/oxjVyNWoRM0n/mIYYUxjGVvoP4MIKqhGM7pBBBOEkRE0ZjS/UfBKpaBW9CJrRR+KUY1mdGMYYUzDEeQVEb5J8+zV2y5q/21LvlPng1dfu6v9ty35rs5TV297qr3U3l87b7ncdlG7qt3U7mqr36l+yQ8NLOaPSBfzx0KvbgwjDI7GB4T8wN/uQX646MYwwphGrgZnJjxD9YBnqD4UoxrN6MYwiGCCaSxjC4UIKihGVlaedh4sb1UGdZ0PWyBhXBSjGs3oxjDCcATVEVRH0BxBcwTNETRH0BxBcwTNETRHQJLJO8HB81R531TwPNWHYlSjGd0YRhjTWIYjyALRLKH93y5qV7X/ClM5FcuHsb72UPtvA3BamOWkr73U3l87fmoXtavaTe2u9lBb/Yb6nczsAfNHpJxqcB5FDelDGFPghIILs9SDNq7FUg/6MIwwprGMXA2u0lIP+lCMajSjG8MIgwj48JNkLvYHnqv6QAQBqkEEC3RjGGFMYxlbIMlcFKMajiBvzXCKMvPWzG2H2n+3SDglyaetvvb+2nlrJus3I8tJX7uq3dTuag+1Q+2p9lJ7f+2mfpv6JduMg5w/rplTQ9rIuNSQXpBTLoqRR+OPOPWg56819aAPW+Ak5KIY1cjV4Jr55CTkYhhhTGMZW+AryAURNFCNZnSDCNgpfAW5IAKml4xxUYzsh5u/PBH1IfvhAuEkl1yEkf1w6XDyteViC2SZi2JUoxndGEYYjmA5guUItiPYjmA7gu0ItiPYjmA7gu0ItiPYioBy1gci6KAazejGMML4+1NEQqeA9XwUKGB9aEY3OPIA+sRQpnpRfwYjCFCNZjCCCYYPEMY0HEF1BM0RtGJUoxndcATNnZJcuIrM01EfqpGH5hY0T0d9GEYY2Q+XaxcJ6WILJKSLjIDLtVSkNi5i8hDVhzDohzUl7VxsgbRzUYxqNIMImCrSzkUY01jGFkhIF8Xg0GwX8glXaClPvSCfXBSjGs3IIXCBlfLUhzCmsYwtkE8uipERcI2Th6g+dGMYYUxjaYHJJ4CHqD4Ugw/gBvHN6OZE5WIZW+BEhaILHpV6JnGTNi6GwRCIgC9KF8tgEnNX8RDVe4BajGo4guoIqiMgoVxMYxnaSLs5guZOyRScGG++AV1MYxkMLrcyj0o958I8KvWhG+yDAGFMg0lkfUgb5wCkjYtiOILhCIYjGMMIYxrLcAThTskUfL/i6agPYfwdunPdmqejPmwhM8VDSRRQjWZ0YyRYn0k/BDq3sH4G/bBHVzWa0Y1hhDENImCHrC3sn1GMajSjG8Pg0H/b5f8XHw6wQDO6MYwwppFDyJ8Gzixhfci08VCMajSjG8PICPK3cZOHqD4sYwv1ZxSjvgWePET1oRvD4AO4E+2nGW3FqEYzGFwFnsS2jC10hkAEvRjVYBI78DJ2L2P3MnZH0B1BdwTjZxTDG2l4Iw1HMNzp+C4o/v/S/DOKUQ0GN8B3QXHyqNSHZbAPIkHauCgGk8j6zKYDzG4MwxFMRzAdwbkQCzhDuShGNRzBcqdkisKEkCkOyBQXObjKR4ZMcdGMbuQOqXww8tTjYRrLyAjyBsDkIao973tMHqL60A366SCMaSxjCySUi2IQwQDN6MYwwpjGMrZApsi7GzPLUv/epgmmsYwtkDYuipFDyHsls5A2LroxjDCmsYwtkFDyN5WTh6g+VKMZ3RhGaIFJKBfL2AI5JC/8TB6Vemd0DCOMaTA4Nl94EqMazWAIRBDDCINJZFeFlzG8jNPLOB3BdATTEXAecjEMb6TpjTQdwXKnZIozo6sbwwiDwbGV93fjcVKY+lAN9kGAbgyDSWR99vQBlvHd+pwUpj4UoxrN6MYwwpiGOyVT8IeFutOHbuTgsrRmUnf6MI1l5A7Ju06TutOHYlQjI8h7S5OHqPa8fTJ5iOrDMuiH8ZBQLopRjWZ0YxhEMMA0lrEFEspFMarRDA6d26VygtGZeJLDRTWa0Y1h5BAGS0LauFjGFvI85KEY1WhGRjBYRhLKRRjTWMYWSChngUkoF9VoBh/ADZZmlO8yB6SNi2IwODbf8iTyjeViGgyBCDgPOeA85IJJZFdtL+P2Mm4v43YE2xFsR8B5yMX+QK3qQzGq0Q0KswIsYwun0OyAwQ1AAdgEwwiDfXAOsIwtkDYG/0YlaLOdErSDZjiC6giqI6jTWMYW2s9wBM2dkikGk0imuFhGDi5/GDF5OupDMaqROyRv/0wqWB+GEUZGkLd/Jg9R7XlTZPIQ1Ydq0E8H3RhGGNNYxhZIKMEOIaFcVKMZ3RhGGFMgUwRLwglGMPEkh4swprGMLZA2JktC2rioRjO6MYwwppERTJaRhHJAQrkoRjWa0bXAJJSLMKbBBzDzKI9KPTNKfepDN4bB4CrQJFKf+lAMhtBAM7rBJHYQPsA0luEIqiOojoDzkItmdGMYjqC6UzLFIlCKVS+a0Q0GNwBl2gdb4CcvF+yDANVoBpPI+vThA4QxDUfQHcFwBPwY5qIazeiGIxjulEwxmUQyxUU1cnB5A2lSd/owjDByh+QNpP9YxhY49bjICBZbmYSy2IkklIsw6Ic1JaFcbIGEclGMajSDCJgqEspFGNNYxhZIKBfF4NBsF04wFhNPcgA83PShGNVoRg4hbwbNQdq4CGMay9gCCeWiGBlB3iaaPB31oRvDCGMa61tgyl8vSCgXxeADuEF8M0ot7MMytsB3mbzPNKl4vZPIN5aLYTAEIuA85GIZTGLuKipe7wG6l7F7Gbsj6I6gOwLOQy6msQxvpOEIhjvl1CPvGU1KWTtnnZSyPixjCySUi2JUgx9s0en5Qd3BMMKYxjK2cH5Qd0A/rAIJhTPIQUK5CGMajPQcbQsklItiVKMZ3WCkbIrzU7uDaSxjC/tnFKMazQhNyPZIyTsX+wMFsQ8aKQWxD83oxjDCmIZGSkHsRfkZxahGM7oxjDD2NyHUyt6Rkl0uqtEMj7R6pNUjrR5pXYZ2VbSf4ZE2j7R5pM0jbR5p80jbNDzXzXN9fsjLhHSPtHdjGGF4pN0j7R7p8EiHd9XwrhreVcMjHR7p8EiHRzo80uGRhndVeK7Dc81DTfhTHTzU5GIay/jrhzdjz+ChJvkwhhmzGd0Y+W8YaWakh2msxAZbB+BxJxfFcATLESxHcN4BfhDGNJbhCLY75S29fM+iYPYhjBwcX18omH3YHyiYfSiJBqrRjG4QQQf0M8AWys+gnwDVaEY3hhHGNIhggi2cd4AfFKMazejGMDh0bheer8qbiifPV33oxjDCmEYOgbN1amMveGXvRTGq0YxuDIMIWEZe2XuxjC2Mn1GMqgXmZb4X3RgGK5cnpxTK3hnlLb0X1WgGg2PzhSfxvNz7YAvn5d5EcF7ufVANJpFdNb2M08s4vYzTEUxHMB0B7wC/KIY30vJGWo5gudPzYCQm8TwY6aAY1eDQbOXz+CM2xXn80cEyGEJmy3Ve7n1QDIawQfsOsM7jjw6GEcY0lrGF8w7wg2JUwxEUd0qm4HsWJbAXZIqLHBxfXyiBfWhGN3KH8CWFEtiHaSyDCHIrU+jKe48nha4P3aCfAGFMYxlbOO8APygGEUzQjG4MI4xpLGML57XfbBdeCPFj4nkhxMUytsALIS6KURMsCW+2uujGMMKYxjK2wHsjKCei0PWhGs3oxjBCC0xCuVjGFsghfMmnBPbO6BpGGNNgcGy+7Uk8L/c+aAZDIILzcu+DMJhEdtX2Mm4tI4WuD8WoRjO6MYwwpqEIKIF9yEzBTZrNQxcvhhEGhwbn0YoLFKMaDOGgG8NgCBtMH2AZW2iOoDmC5gjOO8APujGMMBxBc6e8YYZ6PkpgH7qRg6NMjhLYh2ksI3cIxXCUwD4UoxpE0AH9DDCNZdBP7tFNQrkoRjWa0Y1hEAE75LwD/GAZWzjvAD8oRjWawaHZLryYikIwCl0fqtGMbgwjh0BVGIWuD8vYAq+suihGNZpBBCwjCeUijGksYz/8P0H5vQVePxLKRTWawcoVsN6MLkpgL0gbF8VgcB18k7h+5+XeB9NgCERwXu4NeHXMBZMYoOoAtRndcATVEVRHwCurLrbQfkYxHEFzp+fx0KzCeTz0wRbO46EPOPQEmZE6k3geAn0QBkNYYBlbOC/3Zn3OQ6A5wHkI9EEzHMFwBMMRnIdAHyxjC+cd4AeOINwpmaIxiWSKi2Xk4LJMblEC+1CMauQOacw1px4XwwiDCIiNhNLYiSSUi2rQD3uUhHIxjDCmsYwtnHeAs0POO8APqtGMbgwjjPmhnNd+b5AHyEKwRaHrQxjTWMYWSBtZFbYodH2oRjO6MYwwpkEEDWyBhHJRjGo0o38LXEgoF2FMg5XLPEoJ7J1RXm530Y1hMLgOPInn5d4HxWAIRHBe7n3QDSYxgJexexm7l7E7guEIhiPgPOSiGd5IwxtpOILhTs8LJoiaK6cXzegGV4+ZRL16YhW9emIVvXpiUeg6fnSaaeOhGT3Bmp5XT5wDhDENRzAdwXIE59UTB9VoRjccwXKnmSnGj8/CLkY1GBxbbHdjGGHMBHOdpx4P+wMlsA9EEIB+JhhGGPSzwDK2UH5GMarRDCLYYBhhTGMZW6g/oxh5aE6lKHQdeVK/KHS9yBOMh2JUoxk5hDzDXxS6PoQxjWVsof+MYhABy9ib0Y1hhDGNpQXuWxg/oxisXAOhGR3TWMYWgsGx+cKTGN0YBv0QQUxjGfTDrppexullnF7G6QimI5iOYIYxDW+k6Y20HMFyp2QKzmrOo1cvprEMDs1W5q4vZ0LnAasX3cghcBJMoevDNHIIlfXhkc4c4DyU9aIY1WhGN4YRxjSW4QiKOyVT5HezRQnsQxgM7vybZWyBTHGRO4QvNpTAPjSjG0QQgH4m2AIJ5YJ+FqhGM7oxjDCmQQQbbIGEclGMajSjG8PIQ3MqRaHr4KSeQteHbgwjjGnkEM5qkzYOSBsXxahGM7oxDCJgGUkoF8vYAgnlohhVC0xCuejGMFi5/GxTAntndBWjGs1gcGy+5Ulcy9gC5yF8raDQ9aEa9MOu2l7G7WXcXsbtCLYj2Iqgcx5yUYxqNKMbYXDo3JaUwA7OVCmBfahGM7oxjDAyV7Fy57GuF1vgsa4XxahGM7qRp/uTTrkEcrGF89bug2JUoxndGEYYjqA5guYIuiPojqA7gu4IuiPojqA7gvNWzQWWsQUqZS9Y7QJyRvlDeephL8LIDcv3Ux7X+rAF8g5fPCmbvQfg+89FMxxBOIJwBFS5XSxjC3wzunAE051yhsL3UyplH5bB4DJtUCn7UIxq8JFhj5J3LoYRBhGwPuSdTqDknYtqZD+DfUDeuRhGGNNYxv5AQe3I30AtCmofqtGMbgwjjCmQd/K3SYt62JG/TVrUwz6EMY1lbIHTlfz5zqIe9qEazejGMMKYBhFMsAVOZC6KUY1m9G+BKah9CGMa7NH840ql7J1RzlAuujEMBreAJ5EvNhfFoB8i4ETmohvZT7CrhpdxeBmHl3E4gnAE4Qg4kblohjdSeCOFIwh3et7/zZqe938fNKMbDI6tfN7yzTKet3yD85bvgxxC/iBqUQ/70IwcQrA+fP+5BwhjGo5gOYLtCKiHvahGM7rhCLY6pQR25M+rFiWwD9VgcAG6MYwwcofE6WcZW+BE5oIIFqCfDYYRRvbD31MeF/uwBRLKRTGq0YyMIEt2FiWwD2FMYxlbIKFcFINDN8ABmHiSwwFfbC6KUY1mMASWhLRxEcY0lrEFEspFMYiAZSShXHRjGGFMY2mBSSgHJJSLYrBHBwjNKF95LpaxBb7yTDbf9CTyxeZiGPRDBJyHXCwj+1nsquVlXF7G5WVcjmA5guUIOA+5mIY30vJG2o5gu1NOPRbbklOPLFZclLM+LGN/oJz1oRjVIFf9QDeGEcY0lrEFauov/m7wzazSWVnO+mEYYTDS3BRZtPr/vwQoRjVysbIOclG0+jAMZpR+sqbkHWAZW2iOoDmC5ghaM7oxjDAcQXOnJJR10IxuMLgFwpjGMtgu+cGgnPWhGNXICDZrStrIYqtFBevDMrKfzX4jbVwUoxrN6MYwiIAdQna5WMYWyC4XxahGMzg024W0cdaHtHFRjWZ0YxgMgSUhbVwsYwukjYtiVKMZRMAykl0uwpjGMvYHql7PAlP1+lCNZrBHJ1jfjC7OQw44D7koxt+hg4TCQ1zPJC7OQy6msfLfEEGeh1zkechDSVSgZaS29aEbjqA6guoIOA+52EL7GcVwBM2d5jeW4EYI5awPW+g/g8F1UI1mdOMvVwV7J8tZP0xjGVvIF948FKMaIztlgTOhPExjGYyUCYmfUYxq/GXl87U8q14/DCOMaSxjC/mWiwdmlE0+uzGMMKaxhMV4mKrF0fgAZg6JQqeZQx6mkUfjHhhPdL3IHBLcGaLQ9aEaOZ7CRsoc8jCMMKaxjP2BQtfgFiOFrg/VaEY3hpEr1w72N2/Utj4Ug34GaEY3hhEGIw2wjC2Qai4YKRHUajQjI+BWGfWwD2FkBNxE48GvD1toRDBBRsBdK54CG9wRyHrY/2ASWzeGQT/MAXnngLxzUQz6YQ76+LYyJbAP01jC+Bn5ceb6dT7e9cMwclNwoyqrXj8sYwtZpPZQjGo0oxssCRHEMrYwfwZTxQFmNZrRDUbKys0wprGMLayfUYxqNCP7IT1lCewHRsr6kGoOSDUXxciRUs9HCexDN4YRxjRypOezzWu5EvvHe7kuilGNZnRjGGFMgVSTt8o29bAP1WgGI61gGGFMg5EOsIX6M4pRjWZ0Yxi5plkKsKmHvSChXDDSDqrRjG4MI4y/GeW3vpuy2YctZNnsQzGqQT+Mh4SSdy83xbEXZJcLjrZBNZrRjWGEMY1lbCF+hiMIRxCOIBxBOIJwBOEIwhGQdxpTRd65aEY3mFF2PCcyF9NYxhbWzyhGNYiAQDn5uRhGGBlB3j/d1NA+bIGMdFG09CcjHTSjG8MIYxreb1v7jWfKRt473DxT9qEb2U/eFNyU2kbeFNyU2j4sYwtkpLwLtym1fahGM4iAQMlIeUdtU2r7MI1lbIGTn4tiVKMZ3XAEfyc/edlmZ6Htba6v+b/vReh/Oeo2y9f83+tioH/Z6Tb71xxfM77m/Jrra+7X/MtHt1m+5tdb/3rjlCfvO21qamOw4OShwYLndZiHajQjjzY4NF+OBpPBl6OLYlSjGd3Iuc+bapsnyT5MYxlb4CznohjVIAL2LNnmYhhhEAH7gmxzkRHk3bJNgW0EU0W2uahGM7oxjDCmsYwtbEfwl23405RVuLfZvub/vjfj+Msytxlf83+vm738l19uc99mVt3eZvma9Wu2r9m/5via8TXn13y9UWMbeV9tU0kbecF/U0kbcf5vYUxjCWSFvNv0Hxxtg2GEMY1lbIHzlLy9symrfahGM7oxjDCmQQQTbIGvRBfFIIIKmkEEzChnMBdhTGMZWyCnXBSDCJh4cspFN4YRxjSWsYV8SeCPmcqXBN52Vbup3dUeatMDS0s2yXs5m+raB86R2FyzG8MIYxrL2ML6GcXIGVsESs5YrCY542Iay9gCOeOiGIyUjx5nKBfdGAYRdDCNZewPFOE+FKMaRDAAEQQYRhjTWMYWOHdhTanIfahGM7oxjDCmsQTnIipyH5rRDfqZQLmoORdRkfvAeDgAueiiGYzn/JvhA4QxDUfQHEF3BCcXHVSjGd1wBN2dkmQ2k0iSuahGHjpv32xqdR+GEUb2k7diNrW6D1vgZOeCCNijnNJs9iinNBdh0A+bj1RzsQVOaS6KUY1mEAE7hFOaizCmsYwtcEpzUQwOzZJkdpk/Jj6zy0Vml4diVKMZPcGSZHZ5CGMay9gfqMh9KAYRNNCMbgwjjGmsb4Ep3L0gu1wUg5UrIL4ZpSL3YRlbqAyuA00idbcPw2AIRFCnsQwmMXcVFbn3AK0Y1XAEzRE0R9DCmMYytJGoyH1wp2QKvpRQavswjWVw6NzKfegbSh/N6AZDWCCMaTAE1sffkbq/I3V/R+r+jtT9Han7O1I/35EOwpjGMhzBdKeZKWZhEjNTPISRgyt8ZDJTPGwhM8VD7pDCByO//Dw0oxtEwPqQUAqBklAOSCgX9MMeJaFcNKMbwwhjGkTADiGhAEptH4pRjWZ0YxgcOrcLj56decNl8+jZh24MI4xp5BDy7sum1PaCtHFRjGo0oxvDIIIGprGMLZBQLopRvwWm1PahG8Ng5TKP8lDaO6O9GNVoBoPrwJPYl7GFwRCIYBSjGkxiAC/j8DIOL+NwBMMRDEcQP6MY3kjhjRSOINxpcGi25eTQCxSjGs0Ig6MxvSSHizxao1NSADcoKIGd3HmgBPahGBkBdwQogX3oxlA/fNDvf5nGMvaHrJRtPM97Z6Xsh2o0Q3NAPewZNvWwD5qdfPBr4+ntmwe/Tm5QUA872/kvwwhjGsvYAp/6C2Y0QDWaQQQTEAGD41PP1XDqYSeXubMetvH8+J31sA9Z2PaQ88aVYB78OrkWTXHs5Fo0D359mMYytkAKuChGjpRL1pTNPnSDCIitEwHzRnLgkjVls7MzO1mU0s//LYtSHoqRVwnOFuNezkUY9MP0kgIucqRcxaU49qEYOVIu3FIp+9CNHCmnRdTQPkxjGVsgU3B1NcgUF9VoRjeGEcYUyCFcd+XBr/18Shb/htlZ01hGRs21WuphHzLqYN7ILhfNyKj/9fZ1u9LkxpHvMte6IJnJJOlXWRjGWB4vBAwkYywtsDD07lun+zsku/qrqKhi9t7YpzWaEIvMjCTz9+ldfabN9h82/yjzjzr/aOPHM222/3iuQJ4/0vxD5h86/8jzD5t/lLE7z+TYYj9+xPlHmn/I/OP5v5OfP/L8w+YfZf7x0PonpT26wPYfj0hx/xHnH2n+IfMPnX/k+cdzR+35o00/nneK7x9x/vH80vL8IfMPnX/k+cdDGx85Mu2ZNtt/1PlHm348I8XfP+L8I80/ZP7x3NEfP8r8o84/nl/63IPn1eP7R5x/PL70UczQnjm0/cfjS59O5GdL2P7D5h+PFTy9w8/s2v6jTT+evPP9I84/0vxD5h/PFTxl9Mk73z9s/lHmH3X+0aYfj2S45/jf9sihledE2VaeftjnM7Y8/bDfP2z+UeYfdf7Rph9PP+z3j/j433lKyCN3pf+Q+YfOP54reJ5CtflHmX/U+UebfrQw/4jzjzT/kPnH1/+OPL15z1TbUp5b9WSk7x9t/Him2vYfcf6R5h8y/3ieaX7+yPMPm3+U+Ud97E54/mjTj0eD2f4jzj/S/EPmHzr/yPMPm388v/TBB8+M3P4jzj+eX1qeP2T+ofOP55fW5w+bfzy/tD1/1PlHm348uerpCX5m5PYfaf4h8w+df+T5h80/Hit43kefibv9R5t+PO9I3z/i/CPNP557/TxtnaTq2W32Ww60zj9mqcqzVOVZqvIsVXmWqjxLVZ6lKs9SlWepyrNU5VmqbJYqm6XKZqmyWapsliqbpcp+SNU///mnX37/259//ftf/vbXf/v7H7/99su//E//D/77l3/5X//zy3/9+sdvf/37L//y13/8/vuffvk/v/7+j8d/6b//69e/Pv7/33/9Y/unG+xvf/2P7f9vgP/5l99/+/rrn38a/3Y4/ldjfFi4x78etyhz6xAx1BeQeAxSv5zfD4jN0T4Air0AJLCK8PXyfi4imB1CoA8JjzfTD4yNGA8/RMGHpO9lbJLeAYq+/Pv5+N9/5G49/v3tWj0WkPkF2DdAreFoAeX43394vx7//nb7uLOA9uVL+3GU+WgB7fjffxQoP/79XOqtBeRvgO1udrSAiISxy3Ot97bgy+r+kKMYD5cg4BRaF6OYDpeAhPnZU/y5iM33LsdaCaQxPWYXPUC2uPqkEDHQGFu07ptdtvtmnDDkFQMIZSzfipnC+BLZr6KCMw36E718QwBy2eq3VLR2E8H6iYSQjiHQZj5K+p6buXlZDjczAapMKX+TbdrCrwNDdmwr6FC/5WILjg0E40VLHun1P75EyvGXAIz8yIV+csXmiekYtoMwpCftmy3i5jM9hECMWTpdzLYrG41Q9fsztqvBMQIQrRS6AU2b/esYml4gJCDW+9ax2srhIgTwZnpcLJ+L2J4SQ8Dvnkc5Pg8kFSXEbkFCO4IQRbxXpfOexkOIvHqmYutnWpbPtKJLkfULxdffYxlf1EF/yqPN7o9PyfHoUxSIZ6rfhyrhEACTRbMuFlGOzlTTMoEjiI0uuzVs7dgaqiIdsdR1ZNqMtF8H2o36fSAWBoFvIndBMmobktGmU91LhgIJbY9RiU+zmqeViO2+pSLeCV1RNnfeOFn6VDaPxTeCxnJsVjO6cZV+79xeQZNRjK9GMQMGjZu/pu+pxskexfS6Hzmty0eWVfmA36ISQv8WmW+g+29BN9BYBgnWNn3Lq+ZnW5aP4sGCeEceRT8/dsSmr3nbEWTqLX/zWNpWNe1IecEwIKsSrLNQsHlX8ysG+prHUKkf8l7lGCOh1/K3lFWNxwhITvuzPyewBsSmSfuhJJs0rl4QD5YKzdap0MqqqMNjbbHTWEOH0tCWDipMQLxKWD3YEpcPFupJ7B4h2Z4Hx8uAT6XyLeSbyw7IKFrHo9H7EyNVsA7ApNr6OnIIx4eCGax28tlu6tMdf89gBQipxfa9qybp2MYVYPOf45t+WOxY72E8AlZPjM2TfIhRwckU65r/NQ9yuhO+WsoKdrU84u1PDJ2cdm8Y6F6ZxwVmWKeUdgiCLG33OaU0y8ceA3Dpo3vxU8Qk3EPorjOL+RABSpf0RZjG41tHLeit0PUtm4GbC9KV/Mj3+HENq0DOK6LSWLMM73oJB5TewqpRgJpSu2nSNnvXd1/S0rqmNFnXlKarmtLyuqY0W9UUiEBpCpRQ03GFs6xyfK5t9aWApCvHfuXIX//Lt7SthNyvYCWAu/VjfOPh0crwNM+ezbR3VgdZ1Te8Do3f5m27xYTDdaAHaYravyWWePggfQxpPHbTtm+NkzJ5zuNO4yDI9hL8vjWozGGtN5C6/qp9zE5cfNbCXa1D+Wdh3T/zEUaSgYFOJqblmAiKMpFBkairURG8GbVryxYTAJth0HHSQ7eqswOn7EAKuqmnLusyh3+vgDxnR/+wL7kBkOYg6yl8VNatO7GTvWzIBVm3fjKpqB0fLwo3kbKedFnWkQfZQdYfiaTPD2mAPCKKFqVQhjNdZkdj3oFUdBvrH1NKrvdAqo1sB8vxGESCg6yj0BMn65hCdLpARKD9gky/9PSJLXBkAEShJ7mT2XY4E8g+gSCvXkKgsDbpjsZW7J72t34wElI9FngYaeC0X9qy9qMA1Lr2S5DWvTjTC+htM1CoYnNldTEVmXXOLoA07RQSagAgSExz7VuyWbp4/ByLKBI1Ih6zkInkKytpcVpJamAlyI3bSlfeEOLxWmDoOPZN2d0Pd8qryP7bo8Llx8usTF7+3flA3Xv0NfvBRVmPVwLfVSOOvW1PPd7Y7PD0j9nh7R/z8uM/ZofXf8zLz38MQb3/IQ1s/+VuI15Ts/Zi5nFXteW7Khb3OnzkYQoZvIk7CkhtF97umtYpm6e1CxilJztYKQADyWkI/SkSNE/5DvtNRcz6mG/+pNY0eXfeQQzpbleZ7c4Yj9UOhaVy7lHcnGeQCzcrG+/uEsDNCgamchsR2Nyme+9O4Au8xMskaOl4JSg4panHt3TTwgEi+5VgM971N0xXVttnVqLwVKcADccpQrEAYbXcbxNmIRwGPyMKT21um5RGDHVS4H38EyuOdlfTV3/k6XB2ICiEQMs89GpyMo91j7SbMELF2k0UoiLtJopQ0XYTBalIuwkhOLuJ5YM9F/M4l7J+LtXjXNr6ubTlc4EPrNgvq5ICuHujOFXK/YGVoPLDQBUrIShSRUtIy8sS0sxBQlpZlhAI4XDjfVS8/ngTteOH72OQz+E6tKct5Tztx1sCfYjLtjuFtGq7E4pVsbY7Bf287Y69ZGXzjxzfVxOKNW1eCZ2ueAXBOFB8QiErVoETCllxCpxiWFfghKqiOAXGEA4Un/qWysu9eUfxKUIfTRpJpU2PzwUVsNASEh0uASmWdQmpHhLS1iVk/RKAnt9Fe9i75IlYd8/vhEqkRL53VKbH9y7lOKGIVR4OvFxmOdW6A4FegF4LKWFK/dmD4P2IbTxmYjveD0SqpacjxNml8VXL8QqCzHd3aWQNAKKuv+4SqpViX3cJRa24193JOkgCkeRAIMi3QhIIdnuTBIJiViSBQAiKQLCQkb63hGJWrO8tiYek6rqkioekqoek6rqkqoek6rqkqoOkovK+HuCp0z33jVFh7RT52k3qIR/ZwU+V8rKfKmUHP1XKy34qDEHKBzLb1pexuSrjsYSgONNGh93mhoZAioOY5eohZs1BzGA9BidmqM6GFjN0tyPFDEI4GEz23Y6CVRfe7R4u84TCVbyM1HUZaQ4yAgupOBmBEA6vMuu1NqWk41cIClVN5ZNfsx6Ob/8FFk/HqQZzfE3LOwyUAiCjLcocN09t54QoyKv66GH1A2TOa9L9SlCxS6vfD7Ptz+O6Q3yN6M0OXtrVvBF8aQ4uFY9iquRRTZXWy6mSRz1VWi+oSusVVfgKEEcRQJoL5fYSgkJVvIR4XAGqxxWgrV8BmscVoK1fAdr6FQCTmfasN53atryRWcsOz11YFsU9d3FKRJEeV5liIm8XkVbX7QwqrWLtjKBoFWtnBEWraDvTHDzmEhzSACUspwFKcEgDlLCcBoghSOWFXd5GKNImCXkXMwcfgEQHH4DEZR+ARAcfgMRlHwCGoA73RP05ZpbokAQocTkJ8GQdrJA5mH9Jy+ZfkoP5l7Rs/jGEA4OMl9n2oC3HDAIbdAXtAaIwB5nswhOxpd4WopXjAJHgdnzfZ1tzOVYY5BLJPSc6z1dd2W+Hh5jKupiKh5jKupjKupjC+xRr6MTjFiPmcbhl/XCrx+G29cNt6xyEbGXo1TvbMsKx6qtDpYqoxxVV16+o6nFF1fUrqtpnNZc1MChM5WJgRg2fhnwcHBYUpSINDIpSkQbGo6BK1guqxKOgStYLqiTbRzlIRycT3SKmQDo8XlLm8ZKy9ZeUebykbP0lZevRVNg/trc+y2aHPYFRyqA+WOG5oTq3lo/7VrrI6odedL+9Hec69XwB5JH8+h2ySwAEVv5RvbMFhZa45tkQguy0jAqp6FbLqJkK12sZxabYBtr8qRx30MbiEXVEdEFjBykwO4WpuRdUQ8XV3GMIrmcz3o7cg5eC+lwIjEuVHmbb/pxkXewCSO1d8zeMBkBkXW9RVInUWwRB6m11aJFeHXqkVwe9pU8F6C0Uj9YTl0ubrpZv4gHDUmTzexRSIs8WlVCxZ9t0+WwbrEulG+BjGLZFsDSHdunSlvuln/CQdTKr7SaZ1dgGiZTjGmiFdVRZR7Ocyaezn0WCCb71m+62/cd3Kg3rtKphmVYhBKd6GtZpVcMyrWpwoFX+VO5eh1rvPbAFhO1YPGJcFw8UlyLFIy4zs8LyKVI80FOIFI9oDuJBn8pt8Rjv5BDqvRfZRnK9b2BQIGOw5R83EEmTg5ymdTlN63KaHOQ0rctp8pDTtC6nJ9JBeTBQr74Ue0+4mGRK0t3lcao49EFTGJYiexepOExKUVkelQL9QqUXlH8NZz30CymKS1nqR2Mq4DaF4lItTpfUcHiZgsfLDsJRgf39e9tQTXN5PA8RpfXKhe1v0FhaFVYc95VscVI9WgmEkOE/mBvL7iHSp/eDHC6kip1UvXdgKfXwYzwGWMGoEqV2EMJ6v1+bUtKvQXQzZZPRfoeA3Qt7veF2KAnsBtzSUerzOjBlPxMM9qRIo6NjS5PL7YqY0XOfNMP0aW7wk2ZdfenidaTeEe6ln+P7OhBIHo2UcwYgeGPVpibXrYGNrct8BiE4PkPxKQ8+e9mPl/G0+/3AMOxULjXYn66PCtqC1bMClrsgxQFE010QbsqY4lAVN2ZMUR0VO2dMUVCEGzSmKMyk/U0zh+4uQeQeVclabkL0JBd7GQtxZS/yz7IPrkH0pkF16qF4F8LQocIgJjcVS1GUSqXfRTaakHsymvK4E73El99W4jA1Teu6lNZ1Ka3rUop3o9/v4tzoZwHEboJIv0Rsf9a7INZXMr+br4GMoXib2/vunsjwJGjIHiDtJsjD8/J9UYx3QWzcNs1ug4zPKXclVjuxRq13j1jbqIIO4ab69fkB2fQmRB35ZXIXovsim65CvKTrXqOiPg0O6S6CsPi9FyZteRXQbKN7EDmYM8NoCGljMoowcTYGQnA2BkNQNuZkNzgbcwHEboKQNuYEhLMxGIS2MehSNWaNvkwJvQQi1vMQxGpbXgmceoovmuQY2IzCVewcWP5ZVo7fdjnCIuqRiHQcFYHLKGMkSw3Hj92MwhEl94ddmS3EfrwMCovIKG7dNnXyAOzXgZL/RnRX5hSxNwykNTGMYZ9brCkffQ3e1tqdeNt7Jvzz3su99oy37U87BsFOkSEk29/A15RRJVXrZi+GqfVgLHJlKezM4YzKqdihw1mg14qbOoxByLHDWRwKVbI4VABkWa4AyOJQAZBluQIAQ3AjVeHhkpNys0e/vawOFQBZlysAsjpUAGRdrgDAEOuHSw+qhRKisXeX0Mn/fgkkP+o2fmxIkZuUSE7KzrCoih2VDUFKv7luf9a7IG2AtLsgY8zM9me6CdJG89851fNaXCKHfuv8ChHabZj+iP76u96FSVMCyvbQON4Z1AeQnEmKILigLYbggrZ4P9jp7hlVWLHj3TOsseJGPZ6sY0hJbFNMfg+CZgHH7hho8TAsiCFS/5SWUr0VFsx1cqEhG4xhbAzyjTanj70f8HK0FUNQ0dZcPhxtfd2PuLCtecAAvTmBiT2it/2NbtGo4Io8HQhBno59+HRe9iOX+6ejE8xdY2E6YraWFdwK6voAa+i65YwFhHAwFpurZujOyziAt/1YzryCEBtD9+GE29853AMp06jkYvEmSJ1mCtR7XG+1DHltEm7KawnTBwWQApJb+DhMSuPBJGH2jstNkJhugshw80nLAGQ5BwuvI+uYZGvx3sdsW9lrfMJLeG7vjIKTdHq10cbUc9bxzmnZ1ktSIcZmdbpzvMicMtx4EA2xu+m/ZorcA4ndTa9zX889iMFJVpQhxhCUITYY2KIMMd6N1PlV0/x+fNsNdCFoodcbtWQABD21ehNLm0Zz7+T0ZBk2ljE7Ga59y3iVv06AvwbSKxdCvr2r3auWg4Wb0i49p1wFgBhq6+cCwiZRG6o84K5YEIK7YmEI6oqFd4NMoj7ZUi6J2lBYi0+ihnZmTDt+nSJ/oRAjldzviw2AWIJl2OPSGWWu5sg7EFSTmnsSdc0vs7n3IHnZRkAIzkagkBZnI052w6YMzAJ2o63uBpaPoXfJarkpZK2XHaVW7B6IpH5xlpfg3F5SUTSL6zdiKJbF9RvBENzl7mRPOy3Lq83cb0dBr5F+U527Pr99S13f0ba+o81hR6F/c/gEk84CttNbFMmSkScw5W8Uu7CMNHpJiKCiRTw5tjNyqAF8S163Uhhki7Pk4QSPx42BT2DqqMDIc1ubyzDjDjBnlV+FGTuTWzyOnBoaZxVHs8HNeTy3+8hX1tLitJYEdgY1C4yte0lSCGAtcC5W6Be9FCaX3tUPKiMa1Wq6eUYWhsRsT7oK9sU+DpPiGCodxcD2IpAk48aXAwBpOIwzojjpJoh011HUoDdBptqsPMXb30BQYEt1PEB1juheOZyRFJmkHu8rrBNPU4bYUJ99xhy6nJClphCCdESn9VfSSdE8+UqCXeroVxLsVMVNc7eChlKT09wNNRCMRbvOlMmA7VorWFnvH2RluX8QhOAab1hZ7x9kZbl/kBWH/kH8qRRwKtD+dv6Ibbo67jEqnJ3eTdUW1G431zH6n4f57bpfBxyOM3rdgHNBoR92mAwEKaNfTpm/5RLIJsXf99dNkuQmyGjnbPMc1msguV/qzUIAIIhUN73rPsHt72ktu/5wZzBzr7qppuEaTByT2Le/p5ShqzBjktIGmQEMPOreNnejv3RXXrrRshoMgMAm0d+bq3O+XL5gbjaCDYNg6y0yeLm1Tv1I9xgwCsWRQWv4iTNdwY9JGsegqC3FR9vDg9spp5sKGMN4gsaXV9I1kY95aE4stxUwppHUNReu7GHwvbNnqM35nRevrj3RdC5I3Dv48atkJMrNzSIvvkrC6BiRosP7KN192W8kPxJ2XgzY7nVT4KwryguMISifeEFxEwcI0q1+4lvoMfGv7TWwpShMaGMlZXZp7XQGgsQ85VGFY2nFIDacP3Pl6TWQmkf7jHx3JaQDCYKwDiS8kqku6ZWmdyC4Wotzk2AQ0k2CQUg3SUENBkk3ycm+dqmPL47ca1vCcfTJlnAczR8OADmJj/U9SUWPQ1sFekuoMExZD2yV9cBWcQhswchnyaOwyaLdCyYX6x9TSq43I9Jx9J+RpDdjsJzd0+XMbPwp1l82FU0nKCi25QLCpqQU1MmOS0mBEJyzFUNQzla8G6Sz9WRLOWdrUQdnK04EyT0pLZkACYEdBjk/aYHRLM5PWuDsK8pPCiE4P2mBk684P2lB8Q3OT1pQORTrJ+VPpYBTict+0oIaC5J+0pN1UH7SgmJXnGukoEp+1k8KQVg/KV4J6SfFIKSfFIOQftICW+nQftIzGNJPimFoP+kZDOknPTlqzk96AsL5SaEGcU49qMiknxRjcH7SAlvZcGRQ6rqfFK6D3FJ8tJyf9ERWWT/pCQzrJz2DIf2k+MpI+UlPbp2MnxQ/Wuc8ElChUupy7mCpy7mDpS7nDmIIj2zMVMfU6Jen4m5H0UCsKG3q3Tw/WssOBPlZUx/vJWlurH0JRPrr6OXReg2kjAGBLeR7IJvXTDst5gZAyrIHHK+jC9pGkGgdaEIxkyIEEdjXc0XjsLjXM4TgXs8Ygns947gg+XrGW8q9nmuw9dcz1n+dSkPjsdbVUD8MstmH7svPL17NHUjEMz7G1LUy67/uQNDNiqoMxetoI4rWXj5Gr3xMJ/jt2VkAiK7au4rKoDh7hyE4ewe3Y7vl9oqO19qj/XbgkvfQVc9KbIeni0F6I5349QY9AkmweDiM4uGsx58Dxy8Nb88WCzvOE67JoWdbTQ4922pa7tlWk0PPtpqWe7ZhCKqtF5aQOvrIh5fqtL2EoGZapRf+bk+kIWa7wVgVD8bqNk/C9IDfj4+vKCm2xf7Ia2l6Wb2DQFHtErI9nY7rOiocjJX7UzHnGeTCjmivlN1ii7Py7j8me3yMrX+Mh/6jmixa/1FJFan/Ghz0H7UXJPUfQnD6j+WDPBf0dKfPBaWwsOdiHudS1s+lfJSXt4tqHx+TAriIZGj+u+s6QeVHPkBaQlCEhJYQFHUiJQQOxWIlBIWuSAmBEKTmQgnpZZ2bVwPYuowbxunUMK4gGIemrdUcmrZWW27aWs2haWu15aatGMKBRVLfUpmb/L+xiEFWTSNSOzW5eT+X4iEhHvbf1u1/8bD/Zd3+l3X7j67u2+t03A+nl+r+6l5gO7M4dTObUwriDgQxYr/+52mkxTuEOVyYS3G4MKOAFXlhLh4KUz0ota5TavWg1LpOqXWdUqGQse/Uag7v1OohqXVdUquHpDYPSW3rkto8JLWtS2pzkFQ0vr37/uaMkzdGbebwgGgu8uFh+tuy6W/BwfS3sGz6MQQpH8hs2wgQlRoPJaShtoEbHXabGxoCyeti1lCoihWzhhoHsmLWUJSJFbPmIGYomEGKGYRwMJjkO7XhFnfsO7VFdZARFGeiZQROxOJkJBYPGanrMlI/+wqxXkxQSjp8hTQUpppGWatVObz9twRD1XGahz2+puUdBkoWly5kSadyotR0B4IcVWO4V9I5D0n3K0G9JckkWnyNqKOXUwQEn8q6C6Gl6qC8UNJY5YWuN055YfsWVnlRUIVUXghBKS++AsTRjjnN0wj2EoLHYJESIh5XAPG4Asj6FUA8rgC6fgXQ5SvACZlpz6rQuTZyT2ZohhX73G2wwIp67kI7I603l9YwRWbeLiIoUsXaGRRlou2MVgc7g2qsWDtzcr6k8sJgFau8KFhFKi8KVdHKi4JVpPJCCFJ50afoKAh6mUS9F7NcPA63ehzuug/APHwAtu4DsGUfwIn6k8xs6sDMlpeZ2Txed+Zh/m3d/JuH+S/r5r+EzzLIeJklm3JM3xgE9aLLo6dsDnOQyS48EVuvddFWjgNEDb6HdGpgfqwwyCUyeqDPs59F9tvhIaZlXUyLh5jWdTGt62IK71Osoaset5jqkE/V6nI+Vavmcbhl/XDLOgchWxl6F59tGeFY9WGQij3c5nFFbetX1OZxRW3rV9Smn9Vc1sCgMJWLgQnSx5uHfBwcbihKxRmYGFCYirMwG4aDoH5VW6xKanxE1VdFdUNZltUTjHUm0jFIW9PUBmQvIzEEhwfVhlJdjritH3EMHkcc4/oRx/XIKvoYLWG00XsZUHehMkutz83UoseVWdvXwCQApjQrBhSr4mqzTjDI4ixYvZd7lXmyl+t72a+kre8IyqtkdwRieOzImNieSjCwI7BhXG5hjDJp8ajU7BRlmmTScj1GQXGAIlM9UkJfhLoCpti7Ar7kvcrbWlAnAK4VTgxpuU3whoH8q2TjlxgETmVhO7+c4NA9W84FZhrwkvVQYMRF7GS5BeuJuHD9vbaFwMAA1eBrA0GXA6rDF8bgWnzFAENYXI+vGFD8iWvytWHAamuuy9eFsyngbDCpUH2+YoBhLK7R1wmrkFEbjML22DpZC9lk6wSF7LJ1ypNka6tTniSbUp3tDdeV6gyFa0uFrRnXRAlrANmY6gSE60wVA+ofyNpmFNlie1PhldD7Ck+Y6051JrVse6ozHLY/1SkO2aDqrJ3CmEm3sU08NPEGU2a5pgwYhbtswMIu9nGIGzu00WampduNHbjg37YlDfmruuMs29ypfbcQ9HKYm39NNHmts0Pp1mx7iSAXAhwv4oISzcKQtXoXpZTRNL4lhAJzXvshq93EaL3TxHxLv4axMeB4wlhGKMiKcU3jTza2jSYvLSF5Q3Jfe+Lr9gg/7pwBed9G9w2bTrjtvwZVaHHd93AS73gWljzR2vs6UDLh6PI2XZji/sGAAl95cHSeJT5q3aPAOq++IxJKOETBNdoSR7+5l4aEexMIa7RIckTNwKpNMw5sdlrJBRgb8wlMBTR6gc1EesXI9sC1o68RHD/voZq5K+ElCGpP1RwMDgShTUX7OApvcCAKbXBaWzc4CIM1OLCLHmtwYkgOBgduLGtwYDUOy0gRFWyR2oNLpCkagBAcDZR1aoW1zSwNVI8bY8RNBT1QaBrAKCwNRFiwxdEAxCBpAGLwNIAqtlgawBtL0wBU4OE/nNaxq9h4Pr0Pv0ZGNp3MY1P2N6TmUMQeI3qEcmqMC3tJNcYgtAK6PEIhCq/GEIVWY1i6RaoxwmDVOFUPNUa1W7Qaw431UOPWPcNtcoy9qzGabZVjTwHfXm35UI1PavNYNV6/lOO6OlaNxcWOwuiXCwqvxhCFVmNN62qMMFg1hoOhaDVGDQdpNYYbS6oxrKBMAyTNu/KuyKiWY4thdHsc5wFze0XGXRRYRc5h3R43D3vsooKwmMsFhVdkiEIrMgo3sYqMMFhFRhi8IqOSLlqR4cZ6KLKMqKREK0CR4fCf2ue8apsDk3tFFhdFRqEq1iJ7KLKPLbXyaRRekSEKrcglrCsywmAVuQQPRUY1XrQiw41lFRn2AZEeX40yef939dlfcW30Of1r5jCE2QWM3Klgzji6iFG+40NbuOkmhvUBmBaDA0a+i9H3w27vh/X9sNv7Ufq3lNv7MWPc3Y8xErzc3o/S96Pc3o/av6Xe3o8Z4+5+1M4gtdxeR+mN8+rddTzcRE9Svb0fM8btdfTxLg1wEOwixGb44VZEbApzRCGQEvvRlDRnrLyjIDeslZ/w8lv5LfwcMifvBIRLesQgZM7jSVsUJhiDIahgzAkEddmETzX2suny3kvBPo1CXzYxCnvZTGE9JgsxyMsmxKAvmyk6xGTxxrKXzewRA0lxOSaLG5uw2mMeMZCE8jV9UHjtgSi09qS4rj0Ig9UemPVJaw9q6UVrD9xY+qkGu4vk0bZhStbfF39v34NGacY+TE/inHlmexAoKFMF0LS1+9q1hHOsvkOzNo85vQTRS0xsKna5CBH6ne9wFScNW9K3sObw8q7YLQPWZeU2mnqqC0g7AqF72JQQgZThCqIxslGlgs8p6Bndy7sszpMw30Dg3OeUu4cjSmguMDEdby4eEDy2BXTDI50cLR5e6mNCcSXyYVA8vJ3Fw9uZNH8ahTeh6pFGkHQ9jQBisCZUPdIIUnZII8AbS5tQ2BwnDKrOcxl52H8PCn70F75O9ex7j2lCY7GkP4h1Hr5qOx7APXrYyzS6kpOX6ebxFG0uT1GfKzlC4ZkAotBMYLLOBAiDZQKEwTOBmQMTWFhngpNN6ReUlm5vbG8+1EpePxyAgXVHennbporxJkga/XEloF0tLmICUaKMSkitt1H68WzR6ttrma5s0m6vJY/azjyVMV5FsVGXX9vtLxr6Iwl9UV0PyEIMlpiqR0A2VYeA7MnGjtEdksvdTSGJCWKQxEQeDsSAd1DyWyAG+S3kXRiRLHyqsCSLH00syTYXkm0uJNtcSLa5kGxzIdnmQrLNg2QlrJMsxCBJFmLQEifBg2SbB8niTeGICWNwxMQeDiQ36CsnSRZikCRL+uwRycL3G0uyOLhDkqxED5LFKCzJnqCQJItRWJLFKCzJnqCQJHvyRSzJJgeSTQ4km1xINjmQ7MnGsiSbHEg2OZBsciBZGM4nSRZikCRLphUgks0e7oLs4S4QcSFZcSFZcSFZcSFZcSFZcSFZcSFZdSBZdSBZdSFZ9SBZcSFZdSBZdSBZXSbZk7S4UaBp+XAyDobIPcAz9/e5lKzIdZc7ASGbEOKCBe5sMQZ3tmzhBDpb8XCfiIf7RGAjQ5oCIAptdDAKa3QgCm10cINH1uhgFNbo4C9ijY6tN9WAGKzRMY+mGmIOTTVONpY1OnBTSKMDMUijQx4OJDdY3kmSLMQgSZYsM0UkGzxINriQbHEh2eJCssWFZIsLyRYXki0uJFtcSLY6kGx1INnqQrLVg2SLC8lWB5KtDiRbHUgWNsMgSRZikCRLNuWAN9nocZONHiTbXEi2uZBscyHZ5kKyzYVkmwvJNg+S1bBOshCDJFmIQUucBg+SbR4kizeFIyaMwRETeziQ3NJ6tgXGIEk2rWdbBI9AYPAIBGr0IFmMwpLsCQpJshiFJVmMwpLsCQpJsidfxJJsciDZ5ECyyYVkkwPJnmwsS7LJgWSTA8kmB5KN69+CMUiSjcvfgnvxkiR70hWYJVlxIVlxIVlxIVlxIVlxIVlxIVlxIVl1IFl1IFl1IVn1IFlxIVl1IFl1IFldJybcrJwJBJ5AMIHAk8kY0b6Xsck7mK+hqNSrRxPLOFndL6Otp55gDO5g2SkD6GDhEAjW4uBxFKzFMY/uABiFtjgYhbU4EIW2OBCFtjgYhbU4+ItYi2PrxbQQg7U45lFMq8WhmPZkY1mLY+v+BoxBWhxb9jecTMmhLA6GYCzO2YCrPqjUppGp7U1AYAfsOnovlFrAvFOFhVW19YYHLc7TEdNuU1BO+JiN2ObRiF9Vz7ulLE89qCjZih3GhCDIYUyy/CHq0LoIg7B10lrrp1HoamuMwlZba1tvXQQxWFPRXC4nzaF1Ed5YdnwDalxN9yrQttyroJrHDCPzmGGUXUaoQBRaezAKqz05rPcqgBik9kAMWntycOhVgDeW1R70DqWNaA7rk2fr+iizuj7KzGFKZPOggeZCAzF/GoWngejRvCjH9fcWxGBpIHq8t3JyeG/hjWWbF8ERcawRzWm99ywKCtENf6LHiIKcPo7Ca0/yGHSQZb1QBmKw2iMehTJZHApl8May2oO8huyggyzrgw6yrA86wBjcoAOIQQ46oDHyXQxu0AHG4AYdQAxy0AGNcXc/yEEHGIMbdAAxyEEHNMbd/SAHHWAMbtABxCAHHdAYt9fBDTrQBsWUG3SAQOhBBzl7DDrIeX3QAfwcdtABBiEHHUAQdtCB5dWnGobgBh2YQ6t2jz6z5tFnNpt9GoW/bJrHoINs64MOIAZ72TSPQQe5OAw6wBvLXjZROzn+qVbWtaeag/ZUF7kv9dMovPYUj2hBruvRAojBak/1iBbk6hAtwBtLP9XQo54ddJCrw6CDXB0GHeS6POgAQ1CDDk4gmEEHMP5CDjrIzWHQwQWQ40EHWMrIQQe5OQw6yM1h0EFuLoMOrsCAQQfY20INOogBBU/ISQcWlicdbOtwaHB+gsLaPwv50yi0FcUorBW1sB4ugBikFYUYtBXdVHTdiuKN9Zh1oKGOKekTG7xFDS0uzzqwuDzrYFMej8lhFpcTCGKIwYMMokfw39LHUXgySB4pBJbWUwggBksGySOFwJJDCgHeWDaFAEpK7ZsiQafrX9wbU5SfGGu/MsU6ZTvrLiMQDYPhNRnlFZI5AGiKC50DAEFoDZSPo/B6DFFoPUYlLaweIwxWj13qygylS9J6DDeW1WNzsYO6noZaPNJQi4v9Uvs0Cq896uGWNV13y0IMVnvUwy37kMpl7VH7sBUU6UERkSnLf28FIYiGkQQQLAFTiuJePij2ME7foaLxQXYFo/WZaNZSuYkxXFwtH2PoepkbxuCqSVjFgfWLDt0rThiWLHMzFIHjVRiisGVuJyhkmRtGYcvcMApb5naCQpa5nXwRWeZmKPrFGo2S1o0GwuAlDsW+aKOBN5Ysc8ObQhJTWe9dxh4OxIB3avJbIAb5LeTdHpEsfHqxJIsfgSzJVheSrS4kW11ItrqQbHUh2epCstWFZJsDyTYHkm0uJNs8SLa6kGxzINnmQLLNgWTT+mhRjEF+C+kIhU0fosNV9sxpTtJsCR40i1FYmj1BIWkWo7A0i1FYmj1BIWn25ItImi1xnWYhBkmzEIOXuOhAsycbS9Is3hSOmjAGR03s4UB6C+vtJzAGSbOhrtNsEA+aDR5DmUpyodnkQrPJhWaTC80mF5pNLjSbXGhWHGhWHGhWXGhWPGg2udCsONCsONCsrNMszlDlvgVjcN/CZsqirsLVof3YSUo1S7LqQrLqQrLqQrLqQrLqQrLqQrLqQrLZgWSzA8lmF5LNHiSrLiSbHUg2O5BsdiBZWw9+YQySZG05+IVrregZzh5DiIpL8Ku4BL+KS/CruAS/ikvwq7gEv4pL8Ks4BL+KQ/CruAS/ikfwq7gEv4pD8Ks4BL/KevDrpBiVGi+KIajxorhEmBwvikHI8aK4TQhpdGR9vCjbrgSdLewmwxod3NeGNTrVI2kKo9BGB6OwRgei0EYHotBGB6OwRgd/EWt0UO0Xa3SarRsdWINGSxxq700bHbyxrNFp6yM5MQZpdMjDgeQW173UGIMk2bjspcYN79iMC9x6jyTZGjxIFqOwJHuCQpIsRmFJFqOwJHuCQpLsyReRJFvjOslCDJJkIQYvcdGBZE82liRZvCkcMWEMjpjYw4GDjNbnhdT1eSG4dy1J9WE974PtoYt21Dyo3lyoXjy6W2AUmurFY1AHRqGpXjwGdZygsFQvHoM6qqxXgkMMlurFoxK8qkMl+MnGslQv63dQjEFSvaxnSuD2+uTQkbYejmTb/MNpSB5lIuqRWgercnmRzy4km11INruQbHYh2exCstmFZLMDyWYHks0uJGseJJtdSDY7kGx2INm8/tDHY2q4aUiyfJ8OKAzCDr6DGOTgO4jB7ShKK6KpHoLQVF88WltgFJrqMQpL9RCFpnqIQlM9RmGpHn8RS/V1vZU8xGCpvnq0kq/VoZX8ycayVF/XA2cYg6T6uhw4ezThPowk5t593UZbmBSuQGjrEHoIAVtEcavAENQqckNX6UcryCe/vuhulAsg1npjjHmG3zWQOpi+hXwPZDMRvQFmSOhzUBfN0MPVEqrcA+HaFGAIqkvBCQTTpACfS5l6Rmq4ebgvIHoXJA0QOT6X2JCnUFL7lniRqAdbcoIh3eKJ1HKMkT+LobF/i6Z483h7t8hU5h4w106m92pNW8D1Lsi0ktsgtd/Btz9vg/RbBAZBhorjdwzB8buhyeQpdnuZjjkEQ/S2R9uf7QgCzSog9wJCcHuBMohy6XuRy9y3dtcdEoPU0RC4Tht6EaSOYTbzRItrIOO5Oc9MuAjSRX3Du7uSFr8lZPvz9p60PEDA6aC0Ks3jwry9ShxAit4Esf76VcvhLkjp/F6QsMGKp6F9G8OC/mkNb0q/422fNjk37NpSuFZuDaFwrdyyQLcC18oNg7BN2NrnUehWbhiFbeXWHGJazSGm1VxiWs0jpoU3lmzllqV5KLKqhyJ7DDeGHdNJRdbkoMgQhFZBbZ9G4RUZotCK7FDG1RzKuJpLGVfzKOPCG0srMmryH/rDPod0fOnavgel76Te7DynaWTIdnfageARYCM1f/Jp70BOPqf79XIoDXwOCmvRn4PSb1w+J/b+79ufN++QWWL/GklyEySNlaTsAlLugvQJfK+Hcw2k9GdCKvc31sbGprsgaYBoQAq4XifUHIox23oxJraAZKzuxBaTsbpWPJJOMQobqztBIWN1GIWN1WEUNlZ3gkLG6k6+iIzV4Ylx5PWirg8+gBi8xFWHwQcnG0vG6vCmkMRU15Ny2cOBGA55fM0hj6+t5/FhfwFLsuKRENFcyqcwCk2yzYVkmwvJNheSbS4k2xxINsH+WBzJYgyOZDEGK3EbigfJNgeSPdkUiphOMChiog8HEVPAyURd0vQl9J7vgrSbINqjK1El3gUZLhQ1uw0yPqeEuyDdTbbxo9wF6YMfYw5oJcDrl3Ptnja9CTGegE3uQvRHcdNVCAt3V1F6KDHUexAWu5tB2vIq9PhQFY1L4A4VQ1CHegLBHCoJgQ4VQ1CHCiG4Q2VXgQ41w4aW2m+Js9MnxbSzCrKc5XKCQWWobBj5sxhclgveVOlWMskLm79tKvK4dqe6xXDkW8Tr0JEoM99f3tehYdlVmgKKa5GuUvw5OXVZ3ZyLh59zApL7nmSrAAT1MckaOkgO90C4nD0MQeXsnUAwOXuKAmtcvg2GoPJtFE2NylZGScXU9sfkAkYJ3WdcplvlDiMF5CBN2mdgJZ3J8A0EX8PGoy4nAAKMfuk7UmVKLMl2AaN2Sa8WEQZq6Blaz3CLUzMl3dMQEtRq37RcW0ELqSho2i1mKtOYd7l/NiXdlBLpZmaTErsJktMgsylH9Q0ERbFyG5ldzdpdkJ5yi0Gw5tRB8BrBSvK60CMMVujRIEla6K2uCz3q9GhjEJ6FnIHQw2Fp/SohIYKPgYl7/fpvYbrS/GQhMDw/UvdiaHPxnLzhQE9Gr0VoOczbEvYocLBs6KdcpgDhJUmJ0lORYwabi3z5HudTbGSsFgXnw6O0uyg19tdmjfdRSr+61mp3UUYWRm5J78rt5tgZnmedUmh/IrdQ/s2G/JvZbZwi1nGKxfs4bfha6/QcvqiPJbXuWpzmdf5EH2mUdhulDVdpyzdRYgjTSYUKceAOt5FfFcN0pbx6UnXyildJ93F6BvYXDpJk3tzXY3Pf0B3XepZiOTSyJw+H1h8OJYJLVIPTZnuiiIYp9BF3zpgTFAnffKVzEOYnKPCWK939UBR9UFt/gMQQlu9iEIO8i8WQ1u9iEXnGybtYDOrxAKHPBj1AsJTYuLlUvQcisX+PxGlXroKEdRAZFyBp4S6IDT9mPQaJMa6/p05AyPcU/BztXSZErTqA3BW2zUHcK2W1FrAneIB8N6cv9SlvzyG4lNIdgFJMwFKqxxnXT59xieNzgBrHBJsT9cqf+GVr7u5sDx1KBeIW0UhF6UytAbFsUpQR0YsO4mvRwZWVaK/f00lMfrIl0KD3gITKFK96M+gxlXWPYkzVwaCntm7QEQZr0FHXNtqgo8ou1qCjqBVt0PmzKehsyrpHEYOQHsWIZk+zxHYi9JwzMIqDvIqDvKqHvKqDvKq4eM8iquuivWdR87L3DG8t6T171Fmsec/wzvL+nbMTYl/XJzi01+AEh/Y3neDQ/qYzHNbfhCWY9TddQGm3UUh/E0S54G86k0DWT3SBwcF90MKif+fkEqY6bnKTg+f9EoYiXDVoNyXTOcf9zhryK/ahMq0BjJOviSMpFfmI8EpMh6Sku0t55LA/7XycUH6ylOKwsXV5YzGGx5bkOGq9oqItKfGjQp9HRmnOzdBC4Buov8bm/lZhb6AdQmR4Hd106EuKyRsGrEJodRQQhOkWdg3l0ZXzmxyn5J+La8nDyDeL93alXzi0odNBXX88ML5M8jA8NR7vLEZhdxajsDt7gsLJCtZBm95BU2XGuw6iUq9YeuLt11C7CUX3KGVdC+FKRhXCV6sFtBL4PT0NILb5IfOGgrpmsVYDdhgnrQbudM5ZDbglz3/6PJyUAtoSdP+zMmp4rMR2eMgnKN2qb39PxTNvKOiLcs9MTDkr+iIgtHG8vbf/3nTT31XgpIj8ktu9PHdzOt9m31GQK0E7OxWdYgNvKAlFs6SXaMwumrcanBTgi3c0wEyhIRSUsdUfLhm0DznB6F59i6CiCEtK7bdzCXPvgr2kJNSbcBPavpQ5d6W9fY6hUEf3s0qe/UV7ZU6hIHHjutVsKCg4kLthzrkedQg/+Z7QS0AlaJ4ukvvviagHbpya+k3h5J+gRAclTDF5KGGUdSWM6qGEqKcuq4QQg1PCE5mlT6e6nE5bPx2U08GfTorrpwMxHChSYjeDkgK4HiQUFUu5e4cS5iXUIp+XlGQekoIcTLSkVBdJaQ6S0hz0GErKCMEmQVyNAmMx11GzvC0L4oiHrIh6yAosDSNlRcxDVmB0jJQVHGFzYJXU91XS3Bb2jVXgdKSYRmRrinC/n4663A7U5XagDrcDdbkdqMPtQD1uB4jzYxs32ulZ+Xa5VhTjLr1HWZxv6F8xux0KIsl+o81zJ603jBw8rvk5elzzUQ4se83PLsqTXWg2O9BsdqHZ7ECzeZ1msbTRjzBzeYSZi8yag8yai8yai8yag8yai8yag8yag8wilq3deffS6v2NZWHBGP3cKC5yUlwuBsXhYlBcLgbF4WJQHC4G0KZbX8jm1Y9IUipkyG6PQ4MozUPe4EQvWt5q9JC3mtblDTXF4+Wt6rq8QQwPW0o/b1Eo7MrztlYXWXGJKzSHuEJziSs0h7hCW48r4EeL9QSIUhJ4tDTUDGZEcNWqgKcCbAGnscubTgG1lvcgOL2385vO/Rzb/rkOq35kNHTUqfuR6NtaUEn5iI5vf4JMPnzLqCPcHwHtCw6Gkf4HCclBlQV3PyRVWVCNGKnKgoSfVmVB3kRSlTEGqcrwghDb8FRpQZLSPCQlelwQJHpcECSuXxAkelwQJK5fEDAGKSmY3nRUykyFFG/0JtEjgivRIYKL7I+MHG4NU+Tn7aIiKBrG2h9BgSza/khKDvZHUGkWbX9OjplVZRgQo1UZBcRYVYb51rQqp7quyhCDVWWYPT7GIr70aXyTN/HwH4h4+A9E1v0HIh7+A5F1/wHG4M74hA1YuoYTwGi6RmVeJF2frISVNnW5HKjD5UBdLgfqcDlQ/TCjjMdcsinx9J1RUKlYDr1jag5zHMuuvCtb7/yurYAQlMAHVGfIOnVufFeeDLufjJa8c4nYfkuyi8BmB4HNLgKbHQQ2qwM9Rg8TmF2uObm6nPF6bpeYR26X2HpuF8ZgSQmZ0Ud7ue+FBMAEMBBGn7G5XGXN4SprLldZc7jKWv2wHtOGB4XCfAxP6EMwdW4G+f6gRJEw1vCgSBhreIqLwBYHgS0uAlscBLbUz5LS9r7vUpKmoYTvUlJd3l7V5e1VHd5e1eXtVR3eXnX97QVrjrSEMe1b5uK0K8Vcar3eVYuCYi6pMN+AKuYSFAEji7kwhkcJ8HYkvd9uLLCJH0QZZ7y9jO6iyBgikKce828oguiAPh5zOB779PHkvhKzCLcEteDLo/X+V7upwyq5MxSZItHTuKsdiqIQmJl+a3IJBmrOFYXANI2+Ai/pwPK2FtQ7oo0nS4jHjd4URsC4HmAKC8JyH0RrNt2r31zEGnCd9tQKo03laW8tNTBOVB0d1tTKMQ4U3vKI5TyPWjSio4azw7kGoRphUIHrJ6YwDsb1Z4IYZH8mhVEwsj+TogAW2Z9JI+yIRPYT488G9BM7kRKuQSgEYRuEnoGEdRCyt6cmti1nTndXwrUqPVkJ14GS/xwEAj9He9X55pCOYCX28ZVw/U55kLu6w/Y7VTQ3nO53ipdC9jtVcZgRcgLiccZkv1NFsSu63+nJUrh+p4oqudi7Dgo70f1O4UrIfqenF1qbLrSHo+AUBcD4azFC4Qa5nVxnS5+dsv0JRBb2ZWNvSro+1gZisDcldRhro7o+1ka1edyU6LOBbA8fPd2gx9YAxWYXdkSvHjYxBqKUMcygzI+4ayg2BsFYqXIXZfiarRa5/46b2542u/+OG6lU25suIxy4N73NrhVNt3d4uDJqMISiy7wPNWBjhTBYod5To2e39B8gyLSbg+8AxcF4e2oe+wpPuIyxmTXdlf4YZGoFq/e9GDFP96ZyX4viGHy/YQItEjj7paf9jJPWfXPRk15XPab21evqsFmcwjk/bMcsxa0WqesKLOmnvfG461brFauxpftdt8isLIXRLOvxymzT3emtDRIKvyYZcZuJbC923SrdKG7+MxC50fpxlO1lGIbA1bsoZTSILi0hFFiD249Z7SZG6y3A5sv+NYwYJk+tZYSCHkFqo7vuNDI5XtrYMTBuUyAocCjIV0cH1xZQSzNkQGz0RbPpjPcgigrDuOm8J+VYwwG+OSQKWAicEZ66V2V6te+fHojy8+DqPAt91LpHQXn5oW+JhGnC9xsK7tYzvPkiL9G5vTVFdE1TJLrxbLLWTdj2dzu+aWBx0x5UNhUks7BwotcDb89lO/4gaDf6rPDtT72JwW0sbERG2x6IwlqNDIvCXFBo24NRWNuTQ122PRCDtD0Qg7Y9GQWyWNuDN5a2PbDQmmWmDCu6SAXCDXI4MoAYJBlgDPJbzIMMIAqtxj6UkoIHGUAUmgySrJNBknUySOJBBskcyABuLE0GsOeWTV3MJ0dG3K8EYKiMggeZpvS8X5iKR/+ijGrCWFWGfVxoVcajEVgllI+j8KoMUWhVRqEoVpURBqvKCINXZdQikVZluLEuqty627nlDFQZFYVtJn+MOJnnEexV+aTjAqvKsLshp8q4VwKryuJzudb6aRRelXHDRlaVcW0Yp8oIg1XlHD1UGVV10aoMN5ZWZeQZTQMlzdvyrsyoOGwLknS7HKfM+He7jLtmscqc27pdhv2uaLsMUWg1RH0SfVB4ZYYotDLjAjFOmREGq8wwQEcrMyrtopUZbqyLMssIfUo00OEmo+ux1j43TNsc/XyzzNFFmVE4i7XM0UOZMQqthsU+jcIrM0Shlbm0dWVGGKwyIwxemVGZGK3MxTyUGbZ7kx6FjTIFB/btdjIq8dKeeKZzlMLsAkbudDCnNl3EKN/xoy0edRPDwiiICg4Y+S5G3w+7vR/W98Nu70fp31Ju78eMcXc/5jGTd/ej9P0ot/ej9m+pt/djxri7H7VTSC2311F66+R6dx0tfBuJdns/Zozb6+iD+hriINgqks4lxA0n2Wouw3MM+uGUlCpCgUk25SfM/Fa4jr+Hzf87QSEzLDEKm2F50u2OitNgDC5Oc4LB3TthIzX63glR2BujxfxpFPreiVHYe6fF9aAtxCDvnRCDvndacgja4o1l750nve7Ih5ul9aAt7lJHK5BLXMN81BCh8AoEUWgFQnVhrAIhDFaBYH0arUCoKyKtQKm4PNxgg7g8+m1NNQJvfXpM4Ay2PiVZ4pymZnsQKClT4dG0t9sNagcCGM56m3vLchOiV7bYVGNzESL0C+DxKk567qVefhhenhm7daCGiJrb6OWuLiDtEIRuRLhdioGcodhX1DGNW6WC70HdMEKvK7M4Xc/fQZCwxkfCynMpUUJzgYkJ7C50v7SxL6jbMWyLONweLR5f8g2FnMiHAm5oSFvS7OECtayfRuEtafbIM7C8nmcAMVhLmj3yDMwc8gzwxvKWFHY1DIOw88S1+/zBh0vu0JL2R79O7X72emywHKy/kL96lw0+2XMBbq7I3qtRW0T2Xm0uD1NzuRFb+zQKzwYQhWYDPCWMYwOEwbIBwuDZoGQHNoAby7IB3pR+UWnp9sb2ZjSt5PXDQRhYeaQXx32N+LiLksYYBAloX6uLoECUKKMYU+ttlH5AWyz79lqmu5u022vJo7w0T2WQV1FstAao7fYXDQ2SBL9oPVYLMVhqqh6xWmsOsdqTjR1D3CSXu5tCUhPEIKmJPByIAW+i5LdADPJbyBsxpFn4YqFpFr+eSJotwYNmMQpLsycoJM1iFJZmMQpLsycoJM2efBFJsyWs0yzEIGkWYvASFx1o9mRjSZrFm8JRE8bgqIk9HEhv0HVO0izEIGmWdOFDmoUhFppmcbiHpdnkQrPJhWaTC80mF5pNLjSbXGg2udBscqDZ5ECzyYVmxYNmkwvNJgeaTQ40mxxoFob4SZqFGCTNkqkGkGaTi9MgeTgNirrQrLrQrLrQrLrQrLrQrLrQrLrQrDrQrDrQrLrQbPagWXWhWXWgWXWgWV2n2ZN8uVHNafl47CHGGN2B5w5B13IZyU53JyhkR0Rc1cCdL8bgzpetrsDn6+JIiS6OFDMPIoAotOnBKKzpMfMwPRCFNj0YhTU9+ItY01PWe3FADNb0FI9eHKU49OI42VjW9MBNIU0PxCBND3k4kN5gJShJsxCDpFmyIhVh4IphlmZPqpdZmq0uNFtdaLa60Gx1odnqQrPVhWarC802B5ptDjTbXGi2edBsdaHZ5kCzzYFmmwPNwu4ZJM1CDJJmyS4e8DYLu6zQt1nc8YWk2Ro8aBajsDR7gkLSLEZhaRajsDR7gkLS7MkXkTRb4zrNQgySZiEGL3HRgWZPNpakWbwpHDVhDI6a2MOB9Cbr2RcYg6RZWc++wH3p6Nts8QgL1uRCs8mFZpMLzSYXmk0uNJtcaDa50Kw40Kw40Ky40Kx40GxyoVlxoFlxoFlxoNm0/i0Yg6TZtP4tuJMvTbO4qzBLs+pCs+pCs+pCs+pCs+pCs+pCs+pCs9mBZrMDzWYXms0eNKsuNJsdaDY70Gz2oKa0HBY8waDCgnjQRrQ+jTVVMK6j2uKgKDwkgLQ6YT0ZhR1WAI8Wdn6nrQ4ebMFaneLRQgCj0FYHo7BWB6LQVgei0FYHo7BWB38Ra3XKeqktxGCtTvEota3VodT2ZGNZq1PW/Q4Yg7Q6xcHvENaTUU4wuGSUk6lZfYyqTQNd25uMwP7ZdTRoKLWAaawV1lzV1rsitDjPbtzNvUqoq2sboxvbPLnxqyz6dS3NYXRC9GhTVFFkhOw3doLRLwY513gPg+tZdoJB7qrLQIro0eKhtvZpFLo0HKOwpeEtrJeGQwzSejWXUrQWHErD8cbSjSKgz48lg+YxqU1chjOJR5voFuOnUWgFwii0AsX1KaEQg1Wg6DEldDOS6wqEN5ZWIPOw6w295lgFQp3w2UltEIOc1IYxyG9xIQNzIYP0cRSeDJJH5/nmUP/VHOq/mkv9V/Oo/8IbS5NB9Zi53WR9qFJqLjO3m4sdlPppFF6BxGOoUtP1oUoQg1Ug9Riq1NRhqBLeWLqFLhyYSI5uaApvB9ToBohBjm7AGNzoBohBjm6gMfJdDG50A8bgRjdADHJ0A41xdz/I0Q0YgxvdADHI0Q00xt39IEc3YAxudAPEIEc30Bi318GNbhA4UJcd3QBR6NENDTVMo0c3NDjxi+zICr+HHd1wgkKObsAo9OgGacsPN4xBjm6Q9fl/oi79ctWjX24r5dMo/L2zeHSeb3W98zzEYO+d1SNs3KpD53m8sfS9EzYiph9u1aPFbPBQIPOYLt9q+zQKr0DVJY7QHOIIzSGO0FziCM0hjoA3ln+4IU8BO7qhNTiGkxvd0HDEiRrdICEABaJGN5xAMKMbziCo0Q1oJik5umFbB/IQcKMbroAczyg4kTNudMO2FGQ0uNENGwiaq8GNbthAkLCyoxsuwYDRDSfuF3J0Ayo74UY3SEAFQexDobg0a/e4REqI9mkU1pKeoJCWdENZjiFgDM6SYgzWkkpI6zGEk411Gd2goY6J8BMf7AOK8iD2Q0vKjG7YINAcJXJ0Q3XINdpW4jBTsLqMRKvqoccSP43Cs4FEDzYQXWcD0XU2EPVgAykObCAe6QUR9WRIte+KBJ3ugHFvThXZ9dpvTbFOCdq6z2BM2UOX1SE7APEBH9xM1UMLNX8ahddlzR66rHVdl7Wu67JWD13O0UGX1WM+aFIXY5jX54MmdUlWVRdjmMunUXgFysVDgSysK5CFdQWy4KFAJg4KlMunjaFID5SITOUJe2OIUTSM/IBgCZhUFBDzQbGadQSQxhfZFYzWZ71ZS+UmxvB3tQwwlvvyn2BQhTC06sBCGHVpwKEODTgkFPNQ4+JQGX6GwtXonaCQNXonKGSN3hkKV6N39kVcjZ6EulwZjjFYw1HFQ+KqORiO4lAZfrIpJDVVWacm8nAghtb1b9G6/i3qUQpdPWgWPwdZmm0uNNtcaLa50GxzodnmQrPNhWabB83GsE6zEIOkWYhBS1wMHjTbPGgWbwpHTRiDoyb2cCC9QW8kSbMQg6RZ0isKu3ZWlylT1eM2G6MHzWIUlmZPUEiaxSgszWIUlmZPUEiaPfkilmaTA80mB5pNLjSbHGj2ZGNZmk0ONJscaDY50Gxs6zQb2zrNkqFoSLPFZcpUcZgyJVFcaFZcaFZcaFZcaFZcaFZcaFZcaFYdaFYdaFZdaFY9aFZcaFYdaFYdaFaXafYkZ5VrUoQxuCZFbO4spFnz6J92kmfN0mx2odnsQrPZhWazC81mF5rNLjSbXWjWHGjWHGjWXGjWPGg2u9CsOdCsOdCsOdBsXR9NjTFImq3rITBcg0XTrDpMVJLoEgKLLiGw6BICiy4hsOgSAosuIbDoEgKLDiGw6BACiy4hsOgRAosuIbDoEAKLDiGwuB4COytU5WamYgyqTeVJETE5M/UEhZyZituJkKZH16dMsW1NYFgQtp2hw4K4BQ5pelLwSKLCKKzpOUEhTQ9GYU0PRmFNzwkKaXpOvog0PSksd0jGGKTpgRi8xMX1DslnG0uaHrwpnOnBGJzpYQ8H0ltaH02NMUiaTev+atwej6ZZcxh/IrCdPS/0yYVmkwvNJheaTS40m1xoNrnQbHKg2eRAs8mFZsWDZpMLzSYHmk0ONJuKAzU5jD+x9fEnuOUtSfdR1+k+rmeB4NbINN2LC91r8lA+iELTPUZh6R6i0HQPUWi6xygs3eMvYule1+vEIQZL9+pRJw5HKtF0jzeWpXtdz5zAGCTd6/pNFLfmJ2k2OIQnyREBkGajS+lI9Ei2gyaQF3pzoVlzoVlzoVlzoVlzoVlzoVlzoFlzoFlzodniQbPmQrPmQLPmQLO2TrMnc26oW/UJBjdUsK7fqjEGR/cYgx2Z5eKrDi6+6urR/QKj0HSPUVi6hyg03UMUmu4xCkv3+ItYum9xne5bXKf7Fj0krqkD3eONZem+xXW6b3Gd7tt6GC3iLq2t9XYGMYSBY1dQYhgSu523HaCIIIIT6cojUsstDI3te9SOplgOvwZnkrB7gnNA6D3JcC01TGu5h8LuCipUby2PduVzZxILl1CG0LY5HP6GkmHbl9Abj21/T6bjGg7XWuEEg2qtcIbBtFbYAlficD4nKOT5hBZczgfikOeDMbjzOcHgzgddznPr/bW2P9u0I3IJJY3OmRoOUQRmPWjvkZI0jvv5HkNQO8SobVx1ph5D7yAolau3R60y1rHdoi5gVP0myGoRYaAOXaH11sQxzBPa9iCA8at9k2xtBS0Edjoq/ZJfppbAcv9syvHZ4ASbbjM2IbF7GLnPYUhZ5FhGUJO83MZrslm7CzJpHwCBjcE5YUWNO7fHUhlPHgXjIDBMqLH3rw5VbsO0Ml10Jia4CFOkNxYOxeJtmDYeCjVUAINCiyW1fi22Ywt2AaTdBWnjkt8yAMFHPT2fqiSwK5Dya3dB5OnB/qZE6PI2DzQ65kjY67WV3q28zSQpe5JU2J146t6ugBG0ONgv2AeRtF8Ig7VfOTjYL9QGkbVfKPjF2y/6bAo6G9hquTfXj60B45Pzut04WUl3xaR5SNP7SsCeSD9hDfB00DuDnGiEV6KxN302QUJvUGDDENh6b1/T5jXsIBXcY1EIgN1XWHCVWxc1CwqkHq2E3FfErzX2xvo1Tgf8xq/QbpEvyRMQ7iEJQfh35NN39GkcshUjxuBaMZ5gUO9ROD+2jDBPPWZYdXhFluxghZGrjbXCCIO1wqU6WOHS1q1wDR5WmD6bck9GyEekOrwhkeOffkNiEO4ukJcltbq8IKvLk616vNjU4cGmDu81dXiuqY/Bqh7vcrgWWlLwF7GuBozi8kW01J6gkFKLShpYqeUx2k0MTmrNPKT2RFJYT4WuOyoU9TukHBUo/XK7KnxT/Wasp8k28W0ZaFRd6tZvc07q0VUPY3BBUYV1XlT4D+6H9efadvHIYD8iQKlBu/WbpD2GPQYKUPVC2NZuY/TD3aQ9HYIgVxh5N0IDI8Y0XktTpkhoPEK/s84D994QYL5Kz0yKee65f2kr0tiKJIcYorC+paV+stvf09m+SmleDv4jhCitP2q2v+eZVunta2Rd8yEGqflpOfB/4tAr/SkxDc3YIciqnEMESs5zWpdziEHLOR75RMo5ilam0F9VaZLRFBOPkfumppwBBvoW1f5Y3f6evuVdW9CriNUWiEFqC5zptc4fLzuSZ4fibkcymqlsqZ+vySxp5SZGWceYRwDtMOBomP7i1WmybIqZRsjd1/WSl3kFoXRvmYZjBHRz6R7Rmss9hD5ssc6ZlPcQTA4RkENHpWcdqtRjDIMh/WEPLOZDDFEUr4opdy5N08vnJyhxVbYwBiddJxiUfJ3tSO1ZzGkeK7WAYndRJPSHnIR6G8VGXnaRuyh5uB+y3t4XGdd1DdkFpd1F0T5tO25XhdsoY5iZmt1HGV9UbsuudnqMWm+ftPbZ39t1LdzVxVx7XEPvYtTU/bxyGyN0DF3GsHB7HT0SYFiTAYbF3sJK2vo6AEeWsMr2CIHjeojA3STaOs/zGHYPg+R4jMExPMQg+R3ea1oZo+BrvYUh1v2O25/HUo7vy7lHRK0c35cFVpxRzku4jFL6tb0GQctAPtRcvg+mzBQW6x4EJa1IHa+yOZz5thIUVh2JPDL7695BkJzFoCMaMtch7T4I7mztLoBUXx7NFx5VtXsftz/tGAM+M4eQbH/Dhzcq1GydlLeYzARSXr2YKOatD0/rU/fmLID9QhBGll7blWce2WMgSdvsS0+ML3N92BUM64L2khRxCaNJv4C0ef7o/v0fobeqP7y/PFd2F2WUDm1/15soafJ0b4R/LGoZtU3I3WTZfP/e+fAwBudJPMGgfImYSepUktXCYRpQRiGqFvt1psVjfxXGSN2Gt5TqHX9VrtOlu9lNSbMwfJo2Z768ywiKU5F+QIzB+QFzTB/1A77uSLy/r3mgpHQTJfaaoe1vRRqMBhPRp2MOp1M/ezovO5LL7dPRCeWYX1tb5TSIwEVH4JeUNKR1Hmr+LiFJV2NFGGOjRelnU2y6ZF1DKT3ha/vb4l2UwfRlTqS7Imu1DClpchxRjMhsxRKmDwq13YN5dkN+npCE+Q0sN0FiugmSe35wyhbvgWyfkPrL4MXxtAex5WwAPGAzxP4CnfthxF17AgwS+xN04zg9BJGMglgsTUMMkqZR83SOpvGGpE4Fmub7+NuGoG7j2kLvHDE3bPgJCrq/9vy17YJz+Bg+WchoYdHmZ87FzxkPnZDqfZSe/x3y/a1tPa02WABij+y59JQLFQiybEYxBGVH4aewaQYYhM0zyDBbgcwziGhq9ubj6Mno81Li3vWbs64zEsQgGSnbMiPhDbEpEFzQhiznBWb4Uuq3ga9K8Gkde0JC883IfLyM4sFkPh7GIC2wBgcM2H5wPIaTzru6FzNDnuThrZyiR2UnZTCjjtVdnNpXOjlvj5Op7ZjsiRXDVBkegqrtPsygxjmB4R0GVkNrRwkv+d95B4J6LIRuLNKGB0DgB41S5u3vucLt0r5YGNtrYbo6ypslLv8fcF5KKsUO9+YEJUl/IaTpCfcTlIIdbcPPlu6iyKjN1Lk28xrKlNeVp7SXd5Tq0Akeb+6IuiWpx5sbcRRihFTiUZApIuNB3rggBHfjys3hxgVB6BsX8vyzrA2bPLKtDTL0UJNFlRn1PCJL1SAGWVSZUdcVtqgyo0AXWVSZG/ZucUWV/NkcFw5gISE7G+SGA1VMNWMKKDF7NKezl0pxuQBSQvyWtDJ3R7gEwnY2wCC1h4g3rx0CgQ1Wx6P46+/Jhr71PoO9UVWH9dMp7nYVJuqAUdSJDW5vL8K1ounuGZFD7MJykwTcSJfrPYExyNYTBmNVXOsJizCCR7aeMFwhxu2qx6BDLK5BpjrR+XJ+TepjHsoTy20djKMp8AZ5rDz4mpP7TWlO3L52U+rZc3NW41vkG1+E+zqilNvXaQ2jwCFFj0t5ijefYBbCCOO9mI79hdocirXMoVjLUv4sBunjOnnZjva3Nrec/cm2Ir+ujaWUCNrIQJQvn8NYDJBajGJxBDhnX9c1lJq71NZ8ey2tBwRTCPEmCuvEOFnLlEf2Stp7FMkOD3WMwj7UMQr7UDep6w/1k83tChBf/G8Xt4Wk7ZNtIWmbPyJE24iiWE8t2tqS+x17C+7PMb18wZkfR0WVJP3nTWc+ydq6XHgY0ZDBav2GXue5HW87gopTSZ8OhOB8OhIcfDoSHHw6hiqP+Sga8jfnHoBOJsdHI4YKdlnPkKEQGOsZMtT/j/QMQQzSM2TQh0l6hgzGwDjPkMGaSNYzxJ9NQWeT111DZg6Nrk5WwjW9NNSZhn0hW1l3UmEU1kt1sha2ASdGIf1UJyi5m79NQwJAKXB8XJu6/rQk4J5/gkO6zU5waL/ZKQ7pODs7cc5zdobCuc6wNpENRqFas41bMQjrPUO9TlluqMnDe1bj+r7iE+bcZ2dSy/rPznBYB9opDutBg5dKzoOG76WMBy3iIc3cwyXC7EzpGaspzxlV5QJI6YWs0l66cV0A2Z7Y2vUnt0OQ7XmznNu1eQVWQ9FpPRSd1kPR0SMUHT1C0SU4NNOKgt4+OmWcx3IsZQJTmYaLtun8UNcLIKUX5MeXqQE7kG1TAAqZ7VbQIC0y2w1jsJlqSEysjOFiVuLxAaOReiUMB620e2ej1ktHtCg6m7ieiVjieiYixiDPBulNyt1ape3Kd0ysJTpIa3SQ1uggrbjGf/Q8/7pxHQ3UiyV7XOwVho+7q3pzus0yv7tmlQT7a0svXil6/Mp+3P1XfTElrc8kghikL6bA0i/SF1OQZ5j0xRQ0hIv2xfBnU9DZQCnpyeLbUvQeiMT+PVv4rdwGCesgYuOqN+UdvoFIIl1LOd1dybgySru9Eq4lPP85CAR+jnZbLnNU5X0l5eMr6cO/ZYujOYDc1Z3tXVE6SAUSq7D2crS1LgkyClpK6VFfKQbIXsVB2jCIxxmXOD4HsRKcaBTK5B7It3e211tIReKGxmeRbqCizcENBFfCuYHObkqjw/0mM4fJKAV3u21TzcY8ufsKChmUhO4fMmZVssOImJLXR8RADPaelB1GxJS8PiKmmMeIGP5sjrkeCwkZsiq2To0RFVawgSIIwsaJ8ErIMBEGIaNE+NVFh2XOHm9kNOVkX7hgygkIF0uJaE42yfUlLUdSMAYZSCmw9R1pQeG0e9qCwkZ+5K7qehzlRFzZMMoJDBtFOYNhgygnPsNRPGmgJ0qpAlF6g7MvlHwLhbxboBJo1vEYYXeWNnz2LR0XTUZ0Udo24VvkitXjOtttS1ATPJNvU5ptTi7dLQTOBZjKLudemqldACndgG1urnAIsl3e46dRoo0mxzY1FLqIUsbsqbm50U9QkGHv1rTMEaJLGNNMzFxvYsQw5VtM6vcTFBT9IxNc8ca2EYRoCcibwcaAPX9ycxMPy9EuYNjoGWU2nfAOY/NarUeIDXap6M0wRcqc6bcf/oYqaUgmQBsSq025xzZ7/9/sIOKk3FuzbC8vO1oJhBjB2e1PvQdB7QdsIcsyIwRhOa3G8GkUmhkxCsuMFY3TIpkRYpDMCDFoZqyoRSHLjHhjSWZMqXqwCcoo4LQnoVxqjgYwBEUDJxDch+g6DWAQWoFT/jQKTwMQhaYBWJNB0gDCYGkAlt3QNIDyxWgagBtL0wDsSj08W9M6ctx/DcrSkP6CVJmrQ/S1X1RCD0j6nVPFltUYzqRj1RgPtmMVUNqnUXg1hii0GqMMCVaNEQarxrAZF63GqGEUrcZwYz3UuHXXZcsZqDGKMOXYQ6t5cxkdqzFqQsSrcV63xsgJRKsxBKEVMH8chVdjiEKrMQx4kWqMMFg1hlVNtBqjiBetxriYj1Rj9D1pgKR5V94VGb3PN0d7t8cv3eH3ioxiibwiw2IvTpFh/RuryObhMayojMIHhVdkiEIrMho5xSoywmAVGWHwigzjZqwiw431UGQZoTOJ81iTN0VGcS+tvYGCtjl69maRXRR53U2Wmociu7j+a/04Cq/I1SOAUOt6AAFisIpcPQIItToEEPDGsooMW5/KGF4h0wzLtquurw125px6xI+PMbuAkTsVzKkwFzH6BI08DTm8hmG93cBLq/rbGPkuRt8Pu70f1vfDbu9H6d9Sbu/HjHF3P+bBfnf3Y0xYKbf3o/Zvqbf3Y8a4ux+1M0gtt9dRvgmx1rvraOHbRrTb+zFj3F5Hr3JrgINScehSAEHoxgANhUBK7EdT5uFkP0FBblgrP+FlEb3wOWzvyuLQuAGDsP1Fmy0HYyAEF4xpy15cCQ7ZKhiEvSa2FD6NQl82MQp72WxpPSYLMcjLJsSgL5stOcRk8caSl00JHjGQlpZjshIdYiAYhJZ7+TgKrz0QhdYe1OeO1R6EwWoP7LdHa49HM0O8sfRTDbH10J5k8+DytisWb6isS2LvKSBR59vWHoQtTZmnQZc9COp53Fto2NzL4xJEL36weULvNYjQ73zHq0Bx6hzSmOP18q7YLwN5BHKv5tK5icYCSDsCOZGyXguSytRS5F3KMmwgODpXqNTjz0H5xRZ63ZHFuYfGGwhsopP6XPkYN/PkAhPT8eZCb0sb2zLpzd7bgjI0JidHi4eX+u1rbPVhIOLg7cQgtPHL7dMovAnNHmkEzdbTCCAGa0LNI42gmUMaAd5Y2oSi5OAQBlXnuaFO2H8PSi3sL3ydmnrsdbihUlXpD2JNs9dkh6EehROtxOXLtHo8RdXlKVr00yg8ExT1YALokyKZAGGwTABnDtBM4DHCC28s+xTFm9IvKPNY24sYvUVJK3n9cBAG1B3pdVibKsabIKn21AwJaFerj5jA2XUySva03kbpx7NFq2+vZbqySbu9ljyKEPNUb3cVxUbB+DTF/OoXDf2RhL7IoaKrOVR0NZeKruZR0XWysf1FGyWXu5tCEhPEIImJPByIAe+g5LdADPJbyLswwoBPFZZk8aOJI1l9zOZZFfkTFJJkz1A4kj1BIUn2BIUk2TMUjmTPvogjWQ1xmWQxBkeyGIOXuLhOsmcby5HsyaZQxHSCQRETfTiQ3KCvnCRZiEGSLOmzRxgwpMKSLA7usCSbXEg2uZBsciHZ5EKyyYVkkwvJJheSFQeSFQeSFReSFQ+STS4kKw4kKw4kKw4kC8P5JMlCDJJkybQChBE83AXBwV2gQV1IVl1IVl1IVl1IVl1IVl1IVl1INjuQbHYg2exCstmDZNWFZLMDyWYHks3LJHuSFjcKNOcpfJcy60an2LkRzaVkRXIUc/EYOYQLFjijgzE4o8MWTsCzdXCfnFTYsEYHhbx4CoAotNHBKKzRgSi00YEotNHBKKzRwV/EGp1S141OqetGp1QPiavRwejgjWWNDtwU0uhADNLokIcDyQ2Wd5IkCzFIkiXLTBHJmgfJmgvJNheSbS4k21xItrmQbHMh2eZCss2FZJsDyTYHkm0eJBuDB8k2F5JtDiTbHEi2OZAsbIZBkizEIEmWbMqBSBb2TGFJFndvIUk2Rg+SxSgsyZ6gkCSLUViSxSgsyZ6gkCR78kUkyT46KiySLMQgSRZi8BKXHEj2ZGNJksWbwpEsxuBIlj0cSG66nm2BMUiSJRuYIZLNDoHAk053LMmKC8mKC8mKC8mKC8mKC8mKC8mKC8mKA8mKA8mKC8mqB8mKC8mKA8mKA8mKA8mmuk6yqa6TbFr+FtyLlyVZ3BWYJdnsQrLZhWSzC8lmF5LNLiSbXUg2u5BsdiDZ7ECy2YVkzYNkswvJZgeSzQ4kmx2IKSwHAjEEFQhEU3klWh/FmaZA4L47ncKhhD2YWMbB6j4IGNczTzAGaXDicuYJngFBGpyTaRSswSnZQ/3xcCnW4GAU1uBAFNrgQBTa4GAU1uDgL2INTk3rBqemdYNTk4fE1exgcPDGsganpnWDU9O6wanL7oaTITmMwTmBYAzO2SCmPkLTplmebb8bDTbArqP1QqnleBLnhoMSpWrr/Q5anGf4pd0XoZTwMcKvzRP8voqed0tZbpcVUdNbchYThOBmMWEIbhaTQ+ciDEKWSW/H9HEUttj6BIUstt5QljsXYQzSVEAM2lSksN656GRj2bYLqGaHbVWgKS63KkhwfBjbotljBtn2NfppFF57onpoTyzr2hPLuvZEj6TylIKD9kSHVgUJei1ZI5rS8lzEpOuTzHR9kpmuz05Rj0lm6qLAqX0ahaeB1DxoQNbfWxCDpQHxeG8lcXhv4Y1lacDMw4jK+pwD5NHiB5a4yL3GT6Pw2qPRQ3t0vU4GYrDaox51Mkkd6mTwxrLaA7MDuTkHmvLynAOMwc05OMGg5hxgDG7OAY+R72JQcw5OMKg5BxiDm3PAY9zdD27OwQkGNecAY3BzDniMu/vBzTk4waDmHGAMbs4Bj3F7HdScA0E5zuycAwjCzjnQVBzmHGwoy3MO8OeQcw5OQLg5BxiEnHMgcdnfiSGop9oJBNVcMnm0mU0u18QaPo3CXzarw5wDhVno7GWzLs85wBj8ZbOuzzk42Vi2uSTsgE8/1er6nAOpDtoDQWi5b+nTKLz2NJdoQXOIFjSHaEFziRY0j2hB84gWNOQaIOccKDSj5JyDDWR9zoE+8loODToz5+AEgplzcAbBzDlAE+zJOQfbMtbnHFwBOZ5zgKWMm3OgEtfnHGwg63MOFHY9o+ccXIIBcw6wt4Wbc4CqN7g5B9vXrM85yB7dzbNDd/Pta9qnUWgTilFYEyppPVYAMUgTCjFoEwoHwbAmFG+sx5wDDXVMSJ+o4C1kCCeNUHMONoj1OQfZYWiYws675GXaHFJvMAitw6KfRuGZQDySB0TWkwcgBssE4pE8IOqQPIA3lmSCiNyFqfZNkaDTxS/u7SgakhVrvyzFOuU56y4XECUm8nqMxhSQKXQonZBOoYMgtAZq/TQKr8cQhdZjVMvC6jHCYPXYpaBMUFM7Wo/hxrIWPXq4lCQvO2RTdHApYRBa7i18GoXXHvNwyIqtO2QhBqs95uGQFXNwyOKN9bCCIj0csjlu46EVhCAaRvg/WAKmtHwcxWrWESQaH2RXMFofhmYtlZsYw7nV8jGGLRe4nWBwdSSs4qDCxehQ4HbCsGSBm5TmocIQhS1wO0EhC9wwClvghlHYArcTFLLA7eSLyAI3QXEv1mhUWzcaCIOXOBT1oo0G3liywA1vCklM1daJiTwciAHv1OS3QAzyW8i7PSrWg08vtooYPwJZkm0uJNtcSLa5kGxzIdnmQrLNhWSbB8lqWCdZiEGSLMSgJU6DB8k2D5LFm8IRE8bgiIk9HEhuUtZJVso6yZKOUNTuwTwmMZlHAzaNHiSLUViSPUEhSRajsCSLUViSPUEhSfbki1iSTQ4kmxxINrmQbHIg2ZONZUk2OZBsciDZ5ECyab3tBMYgSZaMOyOSzR6TmLLHJCYVF5IVF5IVF5IVF5IVF5IVF5IVF5JVB5JVB5JVF5JVD5IVF5JVB5JVB5LVdZLFeanct2AM7lvY/Fg4uNnBJ3uSSM2SbHYh2exCstmFZLMLyWYXks0uJJtdSNYcSNYcSNZcSNY8SDa7kKw5kKw5kKw5kGxdD3xhDJJk63LgC1dYsSSbPCYPqUvgS10CX+oS+FKXwJe6BL7UJfClLoEvdQh8qUPgS10CX+oR+FKXwJc6BL7UIfCl64GvkxJUprPjCQTT2fGkMJibKXoCws0UPWkOQhodXZ8XyzYpgePumkO2Be5mQxqdHDwSpjAKa3ROUEijg1FYo4NRWKNzgkIanZMvIo1ORhVfpNGBGKTRgRi8xKGm3qzROdlY0ujgTeGICWNwxMQeDiQ3WfdRYwySZGXZR43b3LEkqx5DQnJyIdnkQrLJhWSTC8kmF5JNLiSbXEhWHEhWHEhWXEhWPEg2uZCsOJCsOJCshHViWh8SostDQk461pJUH9dzPtjOuTB7OThQPW6xzFK9evS0wCg01avHeA6MQlO9eoznOEFhqV49xnPkvF4CDjFYqs8eJeA5O5SAn2wsS/V5/Q6KMUiqz8t30JOm+iTJBodwZFgOR+LZC/QMJI/EumwuJGsuJGsuJGsuJGsuJGsuJGsuJFscSLY4kGxxIdniQbLmQrLFgWSLA8mWZZI9GU5DzUCydU95acv+6RMMbtwdxuB21CO9L7qk9+Xq0dYCo9BUj1FYqocoNNVDFJrqMQpL9fiLWKpv6w3kc1tvIA8xeIlrDg3kTzaWpfp1YjrBIKnegZjQbBvLvee6jZYwKVyB0NYh9BgCFSGRq4AQ5CrQVTrX7+k66UV3o1wAsdabYsyT+66B1MH0LeR7IJuJ6G0vQzr+HMmo9ZCEHq+WUOUmCtek4ASDalJwhsE0KcBnU6ZukRpuHvALiN4FSQNEjo9mI05AifJo3/g8YIl6sCUnGNKtnkgtxxjtsxga+7d8uUjvHW9vFJnK3APm2sn0Lq2ptLtMMq/kNkjt9/Dtz9sg/SYBQdoyxbdlhpcMSzsfnZV+mG7AIRijtz3a/mzHGGl1N04wqP1At6Fc+m7kMres3fWGxBhdSrc/b2LU0U64TqdyDaOOSTjzOIxLGOPROs9buIbRdWWDu7mOFr8lbPvz7n60PDCOzwUNMt7cJv3Kvb1r1jGK3sOw/npWy+EmRummoSAZgwN5utpuUg86rxny6W93+r4jFibXiF1aCdcDznS5BxzKF2dbwEEMtneb5fBpFLoDHEZhO8A95Gnx+Q4xyOc7xKCf75YdOsDhjSU7wKHBBLwSoxIWVolPVkIqsS23M24Ofc2bR1vz7a7yaRReic2jmbHZejNjiMEqsXl4fa04NDPGG0sqMbLmOYQxgCId37K2z0GDkFPvjZ7TNF5kuy7tQJBLoaSR0D95wncg+Gu6MzCH0tDXmMfXlM9+TezN4rc/790a82PUxhNDktzDSGMdKXtglJsYfU7f67lcwij9RZDK7T21safpJkYaGBqApNp6ohzG4PznLLECjOYQ12seYb2HZ3md4CEKG9Y7QSHDehiFDethFDasd4JChvVOvogM6xmaqMNeKRAGe6WAk31YiSuolI2+UuCNJcN6eFNIWoIYJC2RhwMx8npBOcYgv4V8gAIM6B4gKRa7KUiKLdGDYjEKS7EnKCTFYhSWYjEKS7EnKCTFnnwRSbElrlMsxCApFmLwEpccKPZkY0mKxZvC0RLG4GiJPRyAYbgTQxc0fQnR55sY7R6G9thJVIk3MYbDZLsx38UY31LCTYzuENuYUW5i9IGQMYfjdSA3R861e9T0HsJ48jW5idAfwE0XESzcXEPpEcZQbyFY7N4EaatrUCBVsnqaEIE6TYzAnCaHgE4TIlCniRC40yTXAE4TJ8Fqvw7OXp0U047/0SAmMukFY3AJKwVPo1nH4JJecHZyN4dJXrh7v6cZnm3PaYjhyHEIl6Eja2a+p/xkGXndDVpQtIp0g8KvedTwPr9m8x0efg3GyH1Hsh3viCgcEZk1dJQcbqKQKXzqkMKn6yl8SFC55BuIQKXeoCQAbg0QgVoDbFzX+nWrtTn+uIthYoxxk25zO6MdxuYshhnioU+H3f6e3rPXcFgZDQ4yGpZlVODLr05PvyqgURRG6ZlEXyhyiILSRFg5wRiknEjzkROIQ8oJxuDk5ATjUE7+dfvx65//8se//f63P//697/87a//vf17//yC+uMvv/7777/9+Pmf//jrn6d/+vf/+1/f/+Tf//jL77//5X//23/98bc///Yf//jjty+kr3/2S/jxf/7Xdglq9qfUWiz/+qdfZPtPNr9HTtvf8cc/3m4n2/8t+vUfxcd/1DZPw9f/lX/959ci/x8=" - }, - { - "name": "public_dispatch", - "is_unconstrained": true, - "custom_attributes": [ - "public" - ], - "abi": { - "parameters": [ - { - "name": "selector", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "return_type": null, - "error_types": { - "206160798890201757": { - "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." - }, - "516370165797458160": { - "error_kind": "string", - "string": "InvalidTimelock" - }, - "772057049813214347": { - "error_kind": "string", - "string": "HTLCNotExists" - }, - "2233873454491509486": { - "error_kind": "string", - "string": "Initializer address is not the contract deployer" - }, - "2570651705007895968": { - "error_kind": "string", - "string": "HashlockNotMatch" - }, - "2722406262643068352": { - "error_kind": "string", - "string": "HashlockAlreadySet" - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3559210201980528457": { - "error_kind": "string", - "string": "Function commit_public_user can only be called internally" - }, - "3564161243949231814": { - "error_kind": "string", - "string": "Function refund_public can only be called internally" - }, - "5019202896831570965": { - "error_kind": "string", - "string": "attempt to add with overflow" + ], + "length": 98 }, - "6012086182631426650": { + "361444214588792908": { "error_kind": "string", - "string": "NotAnOwner" + "string": "attempt to multiply with overflow" }, - "6144404149669079610": { + "4261968856572588300": { "error_kind": "string", - "string": "AlreadyClaimed" + "string": "Value does not fit in field" }, - "7233212735005103307": { + "4440399188109668273": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "Input length must be a multiple of 32" }, - "9174444391250494040": { + "4648451262681811962": { "error_kind": "string", - "string": "Function get_htlc_public can only be called statically" + "string": "Public data tree index doesn't match witness" }, - "9323748002447105156": { + "7555607922535724711": { "error_kind": "string", - "string": "NotPassedTimelock" + "string": "Preimage mismatch" }, - "10492081608786484886": { + "7564993426627941149": { "error_kind": "fmtstring", - "length": 27, "item_types": [ + { + "kind": "field" + }, { "kind": "field" } - ] - }, - "10870837545714573535": { - "error_kind": "string", - "string": "HTLCAlreadyExists" + ], + "length": 48 }, - "13699457482007836410": { - "error_kind": "string", - "string": "Not initialized" + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" + } + ], + "length": 61 }, - "14225679739041873922": { + "8992688621799713766": { "error_kind": "string", - "string": "Index out of bounds" + "string": "Invalid public keys hint for address" }, - "15001264570739363109": { + "9589626482238399944": { "error_kind": "string", - "string": "Function lock_public_solver can only be called internally" + "string": "Non-zero hint for zero hash" }, - "16870384257694633552": { + "9791669845391776238": { "error_kind": "string", - "string": "Function add_lock_public_user can only be called internally" + "string": "0 has a square root; you cannot claim it is not square" }, - "17618083556256589634": { + "9885968605480832328": { "error_kind": "string", - "string": "Initialization hash does not match" + "string": "Attempted to read past the length of a CapsuleArray" }, - "17814817983036354427": { - "error_kind": "string", - "string": "Function redeem_public can only be called internally" + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 }, - "17843811134343075018": { + "992401946138144806": { "error_kind": "string", - "string": "Stack too deep" + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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", - "debug_symbols": "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" - }, - { - "name": "redeem_private", - "is_unconstrained": false, - "custom_attributes": [ - "private" - ], - "abi": { + }, "parameters": [ { "name": "inputs", "type": { - "kind": "struct", - "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -7279,14 +7754,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -7294,14 +7769,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -7311,7 +7786,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -7320,20 +7797,18 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -7343,53 +7818,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -7400,25 +7844,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -7429,19 +7869,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -7452,19 +7890,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -7475,25 +7911,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -7532,8 +7976,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -7541,14 +7983,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -7556,14 +7998,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -7581,10 +8023,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -7599,14 +8045,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -7623,14 +8069,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -7648,14 +8090,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -7673,14 +8115,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -7698,14 +8140,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -7723,13 +8165,19 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } }, { @@ -7740,7 +8188,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, @@ -7790,20 +8240,14 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -7811,14 +8255,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -7826,14 +8270,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -7843,7 +8287,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -7852,7 +8298,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -7892,8 +8340,6 @@ { "name": "note_hash_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -7901,11 +8347,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -7918,7 +8362,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -7930,14 +8376,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifier_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -7945,11 +8391,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -7962,7 +8406,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -7974,14 +8420,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -7989,20 +8435,14 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { "name": "request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { "name": "pk_m", "type": { - "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", "fields": [ { "name": "x", @@ -8022,7 +8462,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint" } }, { @@ -8031,7 +8473,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest" } }, { @@ -8040,7 +8484,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator" } } }, @@ -8052,14 +8498,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "note_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -8067,11 +8513,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -8084,7 +8528,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8096,14 +8542,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifiers", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -8111,13 +8557,26 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier" } }, { @@ -8127,14 +8586,10 @@ "sign": "unsigned", "width": 32 } - }, - { - "name": "note_hash", - "type": { - "kind": "field" - } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8146,35 +8601,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 5, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8182,14 +8631,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8197,14 +8646,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -8214,7 +8663,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -8223,7 +8674,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -8254,7 +8707,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest" } } }, @@ -8266,35 +8721,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 16, + "length": 32, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8302,14 +8751,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8317,7 +8766,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -8332,7 +8783,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { @@ -8343,7 +8796,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8355,20 +8810,18 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_teardown_call_request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8376,14 +8829,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8391,7 +8844,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -8406,35 +8861,29 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { "name": "l2_to_l1_msgs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 2, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -8442,7 +8891,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { @@ -8451,7 +8902,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } }, { @@ -8462,7 +8915,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8474,14 +8929,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_logs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -8489,42 +8944,49 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "log", + "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log" } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData" } }, { @@ -8535,7 +8997,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8547,14 +9011,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -8562,14 +9026,10 @@ "kind": "array", "length": 1, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", "fields": [ { "name": "value", @@ -8585,7 +9045,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash" } }, { @@ -8596,7 +9058,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -8608,7 +9072,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { @@ -8628,16 +9094,12 @@ } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -8647,53 +9109,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -8704,25 +9135,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -8733,19 +9160,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -8756,19 +9181,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -8779,25 +9202,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -8836,8 +9267,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -8845,14 +9274,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -8860,14 +9289,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -8885,10 +9314,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -8903,14 +9336,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -8927,14 +9360,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -8952,14 +9381,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -8977,14 +9406,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -9002,14 +9431,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -9027,343 +9456,356 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "databus" - }, + } + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "private" + ], + "debug_symbols": "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gm5Jt6Rb0i3plnRLuiXdkm5Jt3xu1QPXOIiTuIibeIhGdGIQ6TboNug26MYsSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkySxJZsgsHcRIXcRMP0YhODGI+TLol3ZJuyJJTuImHaEQnBjEvzh+yBDiIk7iIm3iIRnRiEOk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26Tbptui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26XboduiGLPHCRdzEz238Co3oxCDmw8qSi4M4iYu4iXQzuhndjG5GN6eb083p5nRzujndnG5ON6eb0y3oFnQLugXdgm5Bt6Bb0C3oFnRLuiXdkm5Jt6Rb0i3plnRLuuVzwxO6Lg7iJC7iJh6iEZ0YRLoNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuh26Hboduh26HboxSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySxaz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C7oF3YJuQbegW9It6ZZ0S7ol3ZJuSbekW9Itnxv6Xi8O4iQu4iYeohGdGES6MUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLMEfa/f13Us9L1eXMRNPEQjOjGI+bCy5CLdJt0m3SbdKkssC43oRB4bs8SZJeh79Vk4iYv4uX3PD17oe71oxM/te4TwQt/rxXxYWXJxECdxETfxEI1It023TbdDt8qSWIWTuIif2/eM4oW+14tGrLPkFAYxHyJLgIM4iYu4iYdoRLoZ3YxuTjenm9PN6eZ0c7o53ZxuTjenW9At6BZ0C7oF3YJuQbegW9At6JZ0S7ol3ZJuSbekW9It6ZZ0y+eGvteLgziJi7iJh2hEJwaRboNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuh26Hboduh26Hboduh27MkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsQd/r9+z2hb5XYGXJxc8tZ+EkLuLn9j0HeaHv9aIR/9zmr9y+LGnMh1+W/H3QWjiIk/jnNr9HYqzqe208RPtwFzoxiJ/b+KZTfa+NgziJi7iJh2hEJwaRboNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuh26Hboduh26Hboduh26Hboduh25GN6Ob0c3oZnQzuhndjG5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdXpbs38uS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", + "is_unconstrained": false, + "name": "redeem_private", + "verification_key": "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" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "12037992570023391496": { + "error_kind": "string", + "string": "NotAnOwner" + }, + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { + "14924807131364042204": { "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + "string": "HashlockNotMatch" + }, + "14990209321349310352": { + "error_kind": "string", + "string": "attempt to add with overflow" + }, + "15764276373176857197": { + "error_kind": "string", + "string": "Stack too deep" + }, + "16431471497789672479": { + "error_kind": "string", + "string": "Index out of bounds" + }, + "1998584279744703196": { + "error_kind": "string", + "string": "attempt to subtract with overflow" + }, + "2175217314894115242": { + "error_kind": "string", + "string": "Function redeem_public can only be called internally" + }, + "2369193878689457446": { + "error_kind": "string", + "string": "HTLCNotExists" + }, + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "4493654309393309420": { + "error_kind": "string", + "string": "AlreadyClaimed" + }, + "459713770342432051": { + "error_kind": "string", + "string": "Not initialized" + } + }, + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" + { + "name": "secret", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 } - ] + }, + "visibility": "private" }, - "1186437190978851533": { + { + "name": "ownership_key", + "type": { + "kind": "array", + "length": 32, + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 8 + } + }, + "visibility": "private" + } + ], + "return_type": null + }, + "bytecode": "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CyooACInUSkOKicpKiQCACoAADTWJQAAPlktDiUiLQ4pIS0LJiUtAiUDJwAEBBglAAA9my0IBScAIicCKQAqKRQqLQ4oKi0OJyYAIhRRJS0KJRQjAAAYahwKIRQAACoIFCUvCgAlABQtCyIlLQIlAycABAQYJQAAPZstCAUmACImAicAKichKC0OFCgtDiYiACIhURQtChQhIwAAF+MtCwgmLQsUJy0LIigtCyUpDCohKCokAgAqAAA1fCMAADXSACInAisAKishLC0LLCoAIiYCLAAqLCEtLQstKwAqKissLQInAycABAQFJQAAPZstCAUqACIqAisAKishLS0OLC0tDiYILQ4qFC0OKCItDiklIwAANdIAIiFRJi0KJiEjAAAXCS0LCCYtCxQnLQsiKC0LJSkMKiEoKiQCACoAADYCIwAANlgAIicCKwAqKyEsLQssKgAiJgIsACosIS0tCy0rACoqKywtAicDJwAEBAUlAAA9my0IBSoAIioCKwAqKyEtLQ4sLS0OJggtDioULQ4oIi0OKSUjAAA2WAAiIVEmLQomISMAABZjLQsIJi0LFCctCyIoLQslKQwqISgqJAIAKgAANogjAAA23gAiJwIrACorISwtCywqACImAiwAKiwhLS0LLSsAKiorLC0CJwMnAAQEBSUAAD2bLQgFKgAiKgIrACorIS0tDiwtLQ4mCC0OKhQtDigiLQ4pJSMAADbeACIhUSYtCiYhIwAAFXgtCxIcGCocJB8AIgICIQAqIQMiLQsiHBwKHCEGACofIRwOKh8cIiQCACIAADcfJQAAPlktDhwSACIDURwtChwDIwAAFEAtCwccGCocJB8AIgICIQAqIQMiLQsiHBwKHCEGACofIRwOKh8cIiQCACIAADdkJQAAPlktDhwHACIDURwtChwDIwAAFCUtCyIlGColJCYAIhwCJwAqJwcoLQsoJRwKJScGAComJyUOKiYlKCQCACgAADepJQAAPlktDiUiACIHUSUtCiUHIwAADgMtCyElGColJCYAIhwCJwAqJwcoLQsoJRwKJScGAComJyUOKiYlKCQCACgAADfuJQAAPlktDiUhACIHUSUtCiUHIwAADegtCxwiACIiAiYAKiYHJy0LJyQcCiQiACcCJgEALQgBJCcCJwQFAAgBJwEnAyQEAQAiJAInJwIoBARDA6IAIgBP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", + "custom_attributes": [ + "external", + "internal", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "redeem_public" + }, + { + "abi": { + "error_types": { + "10791800398362570014": { "error_kind": "string", - "string": "Non-zero hint for zero hash" + "string": "extend_from_bounded_vec out of bounds" }, - "1589673740894288059": { + "11021520179822076911": { "error_kind": "string", - "string": "Hint values do not match hash" + "string": "Attempted to delete past the length of a CapsuleArray" }, - "2920182694213909827": { + "12469291177396340830": { "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "string": "call to assert_max_bit_size" }, - "3305101268118424981": { + "12913276134398371456": { "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" + "string": "push out of bounds" }, - "3738765135689704617": { + "13450089406971132036": { "error_kind": "fmtstring", - "length": 58, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } - ] - }, - "4456244908619624852": { - "error_kind": "string", - "string": "Preimage mismatch" + ], + "length": 144 }, - "5019202896831570965": { + "13455385521185560676": { "error_kind": "string", - "string": "attempt to add with overflow" - }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" + "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" + "14067204867181196045": { + "error_kind": "fmtstring", + "item_types": [], + "length": 75 }, - "7136043998373234005": { + "14990209321349310352": { "error_kind": "string", - "string": "Field failed to decompose into specified 40 limbs" + "string": "attempt to add with overflow" }, - "7233212735005103307": { + "15711892660910782274": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "Hint values do not match hash" }, - "7764445047318889914": { + "15764276373176857197": { "error_kind": "string", - "string": "Public data tree index doesn't match witness" + "string": "Stack too deep" }, - "8270195893599566439": { + "16216212843441549037": { "error_kind": "string", - "string": "Invalid public keys hint for address" + "string": "Proving public value inclusion failed" }, - "9199403315589104763": { + "16431471497789672479": { "error_kind": "string", - "string": "Proving public value inclusion failed" + "string": "Index out of bounds" }, - "10676044680617262041": { + "16792019527863081935": { "error_kind": "fmtstring", - "length": 98, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" } - ] + ], + "length": 77 }, - "11732781666457836689": { + "17154023812102399658": { "error_kind": "fmtstring", - "length": 77, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] - }, - "13649294680379557736": { - "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" + ], + "length": 128 }, - "14101993474458164081": { + "17803644318014042523": { "error_kind": "fmtstring", - "length": 61, "item_types": [ - { - "kind": "field" - }, { "kind": "field" } - ] + ], + "length": 58 }, - "14225679739041873922": { + "1998584279744703196": { "error_kind": "string", - "string": "Index out of bounds" + "string": "attempt to subtract with overflow" }, - "14657895983200220173": { + "2014890719615096298": { "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" + "string": "Field failed to decompose into specified 40 limbs" }, - "15200354114977654233": { + "3080037330898348111": { "error_kind": "fmtstring", - "length": 144, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] + ], + "length": 132 }, - "15760694058516861966": { + "344423948968719440": { "error_kind": "fmtstring", - "length": 128, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 + }, + { + "kind": "integer", + "sign": "unsigned", + "width": 32 + }, + { + "kind": "field" } - ] + ], + "length": 98 }, - "16218014537381711836": { + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" + }, + "4261968856572588300": { "error_kind": "string", "string": "Value does not fit in field" }, - "16446004518090376065": { + "4440399188109668273": { "error_kind": "string", "string": "Input length must be a multiple of 32" }, - "16954218183513903507": { + "4648451262681811962": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" + "string": "Public data tree index doesn't match witness" + }, + "7555607922535724711": { + "error_kind": "string", + "string": "Preimage mismatch" }, - "17226037485472400844": { + "7564993426627941149": { "error_kind": "fmtstring", - "length": 132, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" + }, + { + "kind": "field" } - ] + ], + "length": 48 }, - "17610130137239148460": { + "7864183510978589985": { "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - } - } - }, - "bytecode": "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", - "debug_symbols": "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", - "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" - }, - { - "name": "redeem_public", - "is_unconstrained": true, - "custom_attributes": [ - "public", - "internal" - ], - "abi": { - "parameters": [ - { - "name": "Id", - "type": { - "kind": "field" - }, - "visibility": "private" - }, - { - "name": "secret", - "type": { - "kind": "array", - "length": 32, - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 8 - } - }, - "visibility": "private" + "item_types": [], + "length": 20 }, - { - "name": "ownership_key", - "type": { - "kind": "array", - "length": 32, - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 8 + "7995966536718645961": { + "error_kind": "fmtstring", + "item_types": [ + { + "kind": "field" + }, + { + "kind": "field" } - }, - "visibility": "private" - } - ], - "return_type": null, - "error_types": { - "206160798890201757": { - "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." - }, - "772057049813214347": { - "error_kind": "string", - "string": "HTLCNotExists" - }, - "2570651705007895968": { - "error_kind": "string", - "string": "HashlockNotMatch" + ], + "length": 61 }, - "2920182694213909827": { + "8992688621799713766": { "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "5019202896831570965": { - "error_kind": "string", - "string": "attempt to add with overflow" - }, - "6012086182631426650": { - "error_kind": "string", - "string": "NotAnOwner" + "string": "Invalid public keys hint for address" }, - "6144404149669079610": { + "9460929337190338452": { "error_kind": "string", - "string": "AlreadyClaimed" + "string": "Note contract address mismatch." }, - "7233212735005103307": { + "9589626482238399944": { "error_kind": "string", - "string": "attempt to multiply with overflow" + "string": "Non-zero hint for zero hash" }, - "13699457482007836410": { + "9791669845391776238": { "error_kind": "string", - "string": "Not initialized" + "string": "0 has a square root; you cannot claim it is not square" }, - "14225679739041873922": { + "9885968605480832328": { "error_kind": "string", - "string": "Index out of bounds" + "string": "Attempted to read past the length of a CapsuleArray" }, - "17814817983036354427": { - "error_kind": "string", - "string": "Function redeem_public can only be called internally" + "9921926525851912681": { + "error_kind": "fmtstring", + "item_types": [], + "length": 98 }, - "17843811134343075018": { + "992401946138144806": { "error_kind": "string", - "string": "Stack too deep" + "string": "Attempted to read past end of BoundedVec" } - } - }, - "bytecode": "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HwYtCAEfJwIiBAkACAEiAScDHwQBACIcAiIAIgYCJQAiHwImQD8AJgAlACItDh8SLQoLAyMAABHNDCoDGQYkAgAGAAATASMAABHfLQshBi0IARIAAAECAS0OExItCAEcAAABAgEtDhMcLQoLAyMAABIGDSIAA4BMAB8kAgAfAAASuSMAABIbLgiATAADIwAAEiYMKgMeHyQCAB8AABJxIwAAEjgtCxIDLQscBi0LGBIKKhIDHCQCABwAABJWJQAAQe4tCxoDCioDBhIkAgASAAASbCUAAEHuIwAAFX0tCxwfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABKkJQAAQgAtDh8cASIAA4BQAB8tCh8DIwAAEiYtCxIfGCofJCEAIgYCIgAqIgMlLQslHxwKHyIGACohIh8OKiEfJSQCACUAABLsJQAAQgAtDh8SASIAA4BQAB8tCh8DIwAAEgYtCxIcACIcAiIAKiIDJS0LJR8cCh8cACcCIgEALQgBHycCJQQFAAgBJQEnAx8EAQAiHwIlJwImBARDA6IAHIBOACYAIgAlBSiATQADABwtCgsGIwAAE1gNIgAGgE0AIiQCACIAABN+IwAAE20BIgADgFAABi0KBgMjAAARzQAqHAYiDiocIiUkAgAlAAATlSUAAEIAACIfAiYAKiYGJy0LJyUtCyEmDCoiHickAgAnAAATuSUAAEISLgIAJoADKACABAQAISUAAEEYLgiABQAnACInAigAKigiKS0OJSktDichASIABoBQACItCiIGIwAAE1gtCxIcDSIAA4BMAB8kAgAfAAAUDSUAAEISLgIAHIADKACABAQAESUAAEEYLgiABQAfACIfAiEAKiEDIi0OCyItDh8SASIAA4BQABwtChwDIwAAEMotCAEiAAABAgEtDgsiBSIABoBNACUHIgAlgE0AJwoqJwYmJAIAJgAAFHclAABCJC0KCxwjAAAUgA0iAByATQAmJAIAJgAAFO0jAAAUlS0LIhwtCyEiDSIABoBMACUkAgAlAAAUsiUAAEISLgIAIoADKACABAQAESUAAEEYLgiABQAlACIlAiYAKiYGJy0OHCctDiUhASIABoBQABwtChwGIwAAEDEAKiUcJw4qJScoJAIAKAAAFQQlAABCAAwqJx4oJAIAKAAAFR8jAAAVFi0K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FCctCyIoLQslKQwqISgqJAIAKgAAOFwjAAA4uAAiJwIrACorISwtCywqACImAiwAKiwhLS0LLSsAKiorLC4CACeAAygAgAQEAAUlAABBGC4IgAUAKgAiKgIrACorIS0tDiwtLQ4mBy0OKhQtDigiLQ4pJSMAADi4ASIAIYBQACYtCiYhIwAAGLotCwcmLQsUJy0LIigtCyUpDCohKCokAgAqAAA46yMAADlHACInAisAKishLC0LLCoAIiYCLAAqLCEtLQstKwAqKissLgIAJ4ADKACABAQABSUAAEEYLgiABQAqACIqAisAKishLS0OLC0tDiYHLQ4qFC0OKCItDiklIwAAOUcBIgAhgFAAJi0KJiEjAAAYBi0LByYtCxQnLQsiKC0LJSkMKiEoKiQCACoAADl6IwAAOdYAIicCKwAqKyEsLQssKgAiJgIsACosIS0tCy0rACoqKywuAgAngAMoAIAEBAAFJQAAQRguCIAFACoAIioCKwAqKyEtLQ4sLS0OJgctDioULQ4oIi0OKSUjAAA51gEiACGAUAAmLQomISMAABcHLQsSHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6GiUAAEIALQ4cEgEiAAOAUAAcLQocAyMAABXNLQsGHBgqHCQfACICAiEAKiEDIi0LIhwcChwhBgAqHyEcDiofHCIkAgAiAAA6YiUAAEIALQ4cBgEiAAOAUAAcLQocAyMAABWtLQsiJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA6qiUAAEIALQ4lIgEiAAaAUAAlLQolBiMAAA8cLQshJRgqJSQmACIcAicAKicGKC0LKCUcCiUnBgAqJiclDiomJSgkAgAoAAA68iUAAEIALQ4lIQEiAAaAUAAlLQolBiMAAA78LQscIgAiIgImAComBictCyckHAokIgAnAiYBAC0IASQnAicEBQAIAScBJwMkBAEAIiQCJycCKAQEQwOiACKATgAoACYAJwUogE0ABgAiLQoLISMAADteDSIAIYBNACYkAgAmAAA7hCMAADtzASIABoBQACEtCiEGIwAADr4AKiIhJg4qIiYnJAIAJwAAO5slAABCAAAiJAIoACooISktCyknLQslKAwqJh4pJAIAKQAAO78lAABCEi4CACiA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", - "debug_symbols": "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" - }, - { - "name": "refund_private", - "is_unconstrained": false, - "custom_attributes": [ - "private" - ], - "abi": { + }, "parameters": [ { "name": "inputs", "type": { - "kind": "struct", - "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -9371,14 +9813,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -9386,14 +9828,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -9403,7 +9845,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -9412,76 +9856,43 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ - { - "name": "last_archive", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", - "fields": [ - { - "name": "root", - "type": { - "kind": "field" - } - }, - { - "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, + { + "name": "last_archive", + "type": { + "fields": [ { - "name": "in_hash", + "name": "root", "type": { "kind": "field" } }, { - "name": "out_hash", + "name": "next_available_leaf_index", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -9492,25 +9903,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -9521,19 +9928,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -9544,19 +9949,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -9567,25 +9970,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -9624,8 +10035,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -9633,14 +10042,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -9648,14 +10057,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -9673,10 +10082,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -9691,14 +10104,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -9715,14 +10128,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -9740,14 +10149,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -9765,14 +10174,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -9790,14 +10199,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -9815,13 +10224,19 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } }, { @@ -9832,7 +10247,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs" }, "visibility": "private" }, @@ -9846,20 +10263,14 @@ ], "return_type": { "abi_type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -9867,14 +10278,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -9882,14 +10293,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -9899,7 +10310,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -9908,7 +10321,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -9948,8 +10363,6 @@ { "name": "note_hash_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -9957,11 +10370,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -9974,7 +10385,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -9986,14 +10399,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifier_read_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10001,11 +10414,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -10018,7 +10429,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10030,14 +10443,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "key_validation_requests_and_generators", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10045,20 +10458,14 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator", "fields": [ { "name": "request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest", "fields": [ { "name": "pk_m", "type": { - "kind": "struct", - "path": "std::embedded_curve_ops::EmbeddedCurvePoint", "fields": [ { "name": "x", @@ -10078,7 +10485,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "std::embedded_curve_ops::EmbeddedCurvePoint" } }, { @@ -10087,7 +10496,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest" } }, { @@ -10096,7 +10507,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator" } } }, @@ -10108,14 +10521,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "note_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10123,11 +10536,9 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::note_hash::NoteHash", "fields": [ { - "name": "value", + "name": "inner", "type": { "kind": "field" } @@ -10140,7 +10551,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10152,14 +10565,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "nullifiers", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10167,13 +10580,26 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::nullifier::Nullifier", "fields": [ { - "name": "value", + "name": "inner", "type": { - "kind": "field" + "fields": [ + { + "name": "value", + "type": { + "kind": "field" + } + }, + { + "name": "note_hash", + "type": { + "kind": "field" + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::nullifier::Nullifier" } }, { @@ -10183,14 +10609,10 @@ "sign": "unsigned", "width": 32 } - }, - { - "name": "note_hash", - "type": { - "kind": "field" - } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10202,35 +10624,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 5, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest", "fields": [ { "name": "call_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10238,14 +10654,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10253,14 +10669,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [ { "name": "inner", @@ -10270,7 +10686,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { @@ -10279,7 +10697,9 @@ "kind": "boolean" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::call_context::CallContext" } }, { @@ -10310,7 +10730,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_call_request::PrivateCallRequest" } } }, @@ -10322,35 +10744,29 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_call_requests", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 16, + "length": 32, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10358,14 +10774,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10373,7 +10789,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -10388,7 +10806,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { @@ -10399,7 +10819,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10411,20 +10833,18 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "public_teardown_call_request", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest", "fields": [ { "name": "msg_sender", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10432,14 +10852,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "contract_address", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10447,7 +10867,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { @@ -10462,35 +10884,29 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::public_call_request::PublicCallRequest" } }, { "name": "l2_to_l1_msgs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", "type": { "kind": "array", - "length": 2, + "length": 8, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [ { "name": "recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -10498,7 +10914,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { @@ -10507,7 +10925,9 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } }, { @@ -10518,7 +10938,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10530,14 +10952,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "private_logs", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10545,42 +10967,49 @@ "kind": "array", "length": 16, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::private_log::PrivateLogData", "fields": [ { - "name": "log", + "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log::Log", "fields": [ { - "name": "fields", + "name": "log", "type": { - "kind": "array", - "length": 18, - "type": { - "kind": "field" - } + "fields": [ + { + "name": "fields", + "type": { + "kind": "array", + "length": 18, + "type": { + "kind": "field" + } + } + }, + { + "name": "length", + "type": { + "kind": "integer", + "sign": "unsigned", + "width": 32 + } + } + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log::Log" } }, { - "name": "length", + "name": "note_hash_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } } - ] - } - }, - { - "name": "note_hash_counter", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_log::PrivateLogData" } }, { @@ -10591,7 +11020,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10603,14 +11034,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { "name": "contract_class_logs_hashes", "type": { - "kind": "struct", - "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray", "fields": [ { "name": "array", @@ -10618,14 +11049,10 @@ "kind": "array", "length": 1, "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::side_effect::counted::Counted", "fields": [ { "name": "inner", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::log_hash::LogHash", "fields": [ { "name": "value", @@ -10641,7 +11068,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::log_hash::LogHash" } }, { @@ -10652,7 +11081,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::side_effect::counted::Counted" } } }, @@ -10664,7 +11095,9 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::utils::arrays::ClaimedLengthArray" } }, { @@ -10684,16 +11117,12 @@ } }, { - "name": "historical_header", + "name": "anchor_block_header", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::block_header::BlockHeader", "fields": [ { "name": "last_archive", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -10703,53 +11132,22 @@ }, { "name": "next_available_leaf_index", - "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - } - ] - } - }, - { - "name": "content_commitment", - "type": { - "kind": "struct", - "path": "aztec::protocol_types::content_commitment::ContentCommitment", - "fields": [ - { - "name": "blobs_hash", - "type": { - "kind": "field" - } - }, - { - "name": "in_hash", - "type": { - "kind": "field" - } - }, - { - "name": "out_hash", "type": { "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "state", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::state_reference::StateReference", "fields": [ { "name": "l1_to_l2_message_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -10760,25 +11158,21 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference", "fields": [ { "name": "note_hash_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -10789,19 +11183,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -10812,19 +11204,17 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [ { "name": "root", @@ -10835,25 +11225,33 @@ { "name": "next_available_leaf_index", "type": { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::partial_state_reference::PartialStateReference" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::state_reference::StateReference" + } + }, + { + "name": "sponge_blob_hash", + "type": { + "kind": "field" } }, { "name": "global_variables", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [ { "name": "chain_id", @@ -10892,8 +11290,6 @@ { "name": "coinbase", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [ { "name": "inner", @@ -10901,14 +11297,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { - "kind": "struct", - "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [ { "name": "inner", @@ -10916,14 +11312,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -10941,10 +11337,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { @@ -10959,14 +11359,14 @@ "kind": "field" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::block_header::BlockHeader" } }, { "name": "tx_context", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext", "fields": [ { "name": "chain_id", @@ -10983,14 +11383,10 @@ { "name": "gas_settings", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_settings::GasSettings", "fields": [ { "name": "gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -11008,14 +11404,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "teardown_gas_limits", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas::Gas", "fields": [ { "name": "da_gas", @@ -11033,14 +11429,14 @@ "width": 32 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas::Gas" } }, { "name": "max_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -11058,14 +11454,14 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } }, { "name": "max_priority_fees_per_gas", "type": { - "kind": "struct", - "path": "aztec::protocol_types::abis::gas_fees::GasFees", "fields": [ { "name": "fee_per_da_gas", @@ -11083,360 +11479,194 @@ "width": 128 } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_fees::GasFees" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::gas_settings::GasSettings" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::transaction::tx_context::TxContext" } } - ] + ], + "kind": "struct", + "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs" }, "visibility": "databus" - }, + } + }, + "bytecode": "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", + "custom_attributes": [ + "external", + "private" + ], + "debug_symbols": "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oFvSLemWdEu6Jd2Sbkm3pFvSLZ9b9cA1DuIkLuImHqIRnRhEug26DboNujFLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkkSW7MJBnMRF3MRDNKITg5gPk25Jt6QbsuQUbuIhGtGJQcyL84csAQ7iJC7iJh6iEZ0YRLoNug26DboNug26DboNug26DboNuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuh26HbohS7xwETfxcxu/QiM6MYj5sLLk4iBO4iJuIt2MbkY3o5vRzenmdHO6Od2cbk43p5vTzenmdAu6Bd2CbkG3oFvQLegWdAu6Bd2Sbkm3pFvSLemWdEu6Jd2Sbvnc8ISui4M4iYu4iYdoRCcGkW6DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh27MksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySwSwZzJLBLBnMksEsGcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksksmcySySyZzJLJLJnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcySxSxZzJLFLFnMksUsWcyShSxZhYM4iYu4iYdoRCcGMR8uui26LbohS3bhJh6iEZ0YxHyILAEO4iTSbdNt023TbdNt023T7dDt0O3Q7dDt0O3Q7dDt0O3Q7dDN6GZ0M7oZ3YxuRjejm9HN6GZ0c7o53ZxuTjenm9PN6eZ0c7o53YJuQbegW9At6BZ0C7oF3YJuQbekW9It6ZZ0S7ol3ZJuSbekWz63/fsRB3ESF3ETD9GITiw3K8yHyBJguWXhJC7iJh6iEZ0YxHyILAHSbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3RbdFt0W3RbdNt023TbdNt023TbdNt023TbdPt0O3Q7dDt0O3Q7dDt0O3Q7dDt0M3oZnQzuhndjG5GN6Ob0c3oZnRzujndnG5ON6eb083p5nRzujndgm5Bt6Bb0C3oFnQLugXdgm5Bt6Rb0i3plnRLuiXdkm5Jt6RbPrfz+xEHcRIXcRMP0YhODCLdBt2YJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFnizBJnljizxJkl1Yr69zFI4SEa0YlBzIeVJRcHcRIXkW6DboNulSXf923MakxtzIeVJRcHcRIXcRMP0Yh0m3SbdFt0W3RbdFt0W3RbdKssmafQiUHMh5UlFwdxEhdxEw+Rbptum26bboduh26Hboduh26Hboduh26HboduRjejm9HN6GZ0M7oZ3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3fK5Vatr4yBO4iJu4iEa0YlBpNug26DboNug26DboNug26DboNug26TbpNuk26TbpNuk26TbpNuk26Tbotui26Lbotui26IbsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJglgSzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBLglkSzJJgliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWYK+1+mFh2hEJwYxHyJLgIM4iYtIt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023Q7dDt0O3Q7dDt0O3Q7dDt0O3Qzejm9HN6GZ0M7oZ3YxuRjejm9HN6eZ0c7o53ZxuyJIsNKITP7f6fi/0vQIrSy4O4iQu4iYeohGdSLegW9It6ZZ0S7ol3ZJuSbekW9It222h7/XiIE7iIm7iIRrRiUGk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HboZvRzehmdDO6Gd2MbkY3o5vRzejmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkk3ZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJYJYMZslglgxmyWCWDGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWTGbJZJZMZslklkxmyWSWoO/1+07dhb7Xi/kQWWKFgziJi7iJh2hEJwYxHxrdjG7Ikl/hIm7iIRrRiUHMh8gS4CDSzenmdHO6Od2cbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdMvnhr7Xi4M4iYu4iYdoRCcGkW6DboNug26DboNulSX7FBrRiZ/btsJ8WFlysdy8cBIXcRMP0YhODGI+RJYA6bbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26Xboduh26Hboduh26Hboduh26HboZnQzuhndjG5GN6Ob0c3oZnQzujndnG5ON6eb083p5nRzujndnG5Bt6Bb0C3oFnQLugXdgm5Bt6Bb0i3plnRLuiXdkm5Jt6Rb0i2fG/peLw7iJC7iJh6iEZ0YRLoNug264d7rLlzETTxEIzoxiPkQ916Bg0i3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023Q7dDt0O3Q7dDt0O3Q7dDt0O3Qzejm9HN6GZ0M7oZ3YxuRjejm9HN6eZ0c7o53ZxuTjenm9PN6eZ0C7oF3YJuQbegW9At6BZ0C7oF3ZJuSbekW9It6ZZ0S7ol3ZJu+dzQ93pxECfxczujcBMP8XM7+FknBvFzO9/lAfpeLw7iJC7iJh6iEZ0YRLpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HboduhndjG5GN6Ob0c3oZnQzuhndjG5ON6eb083p5nRzujndnG5ON6db0C3oFnQLugXdgm5Bt6Bb0C3olnRLuiXdkm5Jt6Rb0i3plnTL54a+14uDOImLuImHaEQnBpFuzBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixB3+v3dR0Lfa8XF3ETD9GITgxiPqwsuUi3SbdJt0m3yhLLQiM6kcfGLHFmCfpefRZO4iJ+bt/zgxf6Xi8a8XP7HiG80Pd6MR9WllwcxElcxE08RCPSbdNt0+3QrbIkVuEkLuLn9j2jeKHv9aIR6yw5hUHMh8gS4CBO4iJu4iEakW5GN6Ob083p5nRzujndnG5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXd8rmh7/XiIE7iIm7iIRrRiUGk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26HboRuzJJglwSwJZkkwS4JZEsySYJYEsySYJcEsCWZJMEuCWRLMkmCWBLMkmCXBLAlmSTBL0Pf6Pbt9oe8VWFly8XPLWTiJi/i5fc9BXuh7vWjEP7f5K7cvSxrz4Zclfx+0Fg7iJP65ze+RGKv6XhsP0T7chU4M4uc2vulU32vjIE7iIm7iIRrRiUGk26DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HboZvRzehmdDO6Gd2MbkY3o5vRzejmdHO6Od2cbk43p5vTzenmdHO6Bd2CbkG3oFvQLegWdAu6Bd2Cbkm3pFvSLemWdEu6Jd2Sbkm3lyX797Jk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GvPhlyVmtS1fljRO4udWhV6P2Ws8xM/N64C+LGkM4ufmdWp8WdI4iJ/bd3/91GP2GjfxEI3oxCDmwy9LGgeRbk43p5uXW62OG9GJ5VY75PkwfsTPLWv5vixpXMTPLWv5vixpNKK/LYwg5sMvS+4W5iBO4npbmJt4iPa2sLLkYhD/3LxipRrJGgdxfngKF3ET/9x84GeN6MT4cBTmwy9LGkevejWSNS7i7lWvRrJGI3qvejWSNebDypJa9Woka5zE79gGcBMPsY6tpjOdGMTv2GYd0JcljYP4reSs6XxZ0riJn9ssty9LGp34uc064pUP94/4ua0a7MuSxkX83OravhrJGo34udW1fTWSNebDL0u8oq0ayRon8XOr5KpGssZD/Nzq6rUayRqD+LnVJWs1kjUO4udmNdiXJY2b+LnV1VU1kjU68XOrCqhGsotfljR+blYb65O4iO96p5rDDv7futa4OIiTuIibeIhGrPmWRQQxH+aPOIiTuIib+K3O98nrqUayRid+bl4rWflQWI1kjXVswElcxM/t6+Q71TLm9SJRLWON+bCS4OIgTuIibuIhGpFug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26Hboduh26HboduRjejm9HN6GZ0M7oZ3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3fK5nd+POIiTuIibeIhGdGIQ6cYsOcySwyw5zJLDLDnIklNoRCcGMR8iS4CDOImLWG5ReIhGLDcrDGI+RJYAB3ESF3ETD9GIdFt0W3SrLKk3xdWS1ziJn9vXoXKqJa/xED+3uoCrx+HdX0M+ZOEifiN8DSinWvIajejEIObDyoe62KuWvMZJXMRyq0lWPlw0YrnV1CsfLubDyod6u17te42TuIh/blEX09W+F7+a75cE8TVVn2rUu/glQeMgzg/rNPqSIH51FFHj1nSixi23LwkanRjEz62uzKtRr3EQJ/FzGzXfr/xj1HS+8o9RhfOVf9Qb/nquXYyyyGysTr7GQZzERdzEz+1rqj7VydcYfRpV+97F8SMO4iQu4iYeohGdSLdBt0m3SbdJt6/m42vdONXq13iIdUCr0IlBzIdfzTcO4iQu4iYeIt0W3Va5WWE+3D/iIE7iIn5uq474q/lGIzrxc/v6bE49zO7id/3Q+LmtmtmXD1G3b+phdo3ldgoPsdxqOseJQcyH9iMO4iQu4iYeIt2MbkY3o5vTzenmdHO6Od2cbk43p5vTzekWdAu6Bd2CbkG3oFvQLegWdAu6Jd2Sbkm3pFvSLemWdEu6Jd3yuVXvYuMglpsXLuImHqL1S1K1MTYGMR8iS4CDOImLuIl1FF8UO/IBWPPNwklcxE08RCP6w0qCuudY7YZ3HRaPePGIq+YvOvFb3+/PIE61G16smr84iG83qwmxcRMP0YhODGK+OaDmgYPI3ayaxxyq5i8eIt1Y886ad9a8s+adNe+seTeeO8aVNK6kcSWr5jEH40oaV5I176x5Z807a95Z886ad9a8O/cNNQ/kSgZXMrhvVfMXuZKseWfNO2veWfPOmnfWvLPmnTXvyX1LrmRyJZMrmVzJqvk9C4NYK/m9BlTTZOMgTmIdmxVu4iEa0YlBzIfjRyw3L5zEqvlRaF2F9Xi5qM+E6/Fyjflw/ohvh6rtsnERN/EQjejEt0PVdnlx/YiDOImLuImHaMQ6ii93AvkAHMRv3LqdV22XUTfuqu2y8RCN6MQg5sPKh4uD+O4mBe4eAI3oxCDmQ9w9AA7iJC4i3YxuRjejm9HN6OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbd8bvn7EQdxEhdxEw/RiE4MIt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt023Q7dDt0O3Q7dmCXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZIvS+z3ssR+L0vs97LEfi9L7PeyxH4vS+z3ssR+L0vs97LEfj+6DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboduh26Hboduh26HbrVO5SvJc+q17IxiPmw3qFcHMRJXMRNPES6Gd2MbkY3p5vTzenmdHO6Od3ep56GXsuLQcyH+CwUOIjltgsXcRPL7RQa0Yl1bFaYD+sdysVBnMRF3MRDNKIT6ZbPrR4Z1ziIk7iIm3iIRnRiEMvNP6x3KF97pFVfZuMkLuImHqIRnRjEfDjpNrs7z+qRcY2L2N15hh7Oi0b8zhKvA6oezov5sHo4Lw7iJC7iJh6iEem26FbvW77Ppa36MuNr/bTqy4yv7dKqL7PRifGw3ot8fY5WvZZhNW7dlbhoRCcGMR9WzVutTtX8xUlcxE08RCM6sdx2YT6smr84iOVWe1w1f7HWdxQeohGdGMTPzWt9666E1/rWXYmLk7iI+/bhWfVahtfMquYvOjGI+bBq/uIgTuIibiLdqrpr6tUTGd9ndVY9kY1OjNsmatUTebF6pi8O4iQu4iYeohGdSLdBt0m3SbdJt0m3SbdJt0m3SbdJt0m3RbdFt0W3RbdFt0W3Rbe6E1mpUT2Rjfmw7jRUalRPZOO8vbdWPZGNm3iINe53KlefY8C4eqYT/+8ibuK5rbWGPseLTqxO37Konmlg9UxfHMRJXMRNPEQjOpFuRreq2O8mlFXvYnxPF7DqXYzv6QJWvYuNQcyHVYXfAxat+hEjatWr3i46MYj5sOrtYq1vLV/V28VF3MRDNKITg1huX71VP2LjIE7i5/Y9wMCqH/FivVh+nwlbNRY2TmL92ircxG4bNjQWXnRiPKzbeQmsEWo6aDzOQiM6MW7bsFWz4MVqPL5YjcdROImLuImHaEQnBjEfVuPxRbptutXL4vcxuVUDYCT+329bqlqqAbBxECfxb4T8HuRg1dSXv1r1r3AufoXTOIiTuIj7w1pqO0QjOjGI+dB/xEEst1p1X8RNPMRyqz12J5bbVwzV1Je/OvjYxEM0ohODmA/zRxzESaRbdmu4VVNfoxG7Ndyqqa+xW8OtmvqsLjirqa9xEhdxEw/RiE4MYj4cdBt0+6owv4YDq/a9/BoOrNr38ms4sGrfu/i9ADYOYo1wCmuEGncGMR+uH3EQJ/Fb31GrszbxEI3oxCDmw/0jltsunMRF3MRyy0Ijfm5fM7FVS15jPvxqs/Fzm7U6X202LuImHqIRnRjEfFh1fJFu1i3ctm0RN7FbuG2bEZ1YrfdemA/R6A8cxElcxE08RCM6kW5Ot6g1q72oOp51alQdT/yAE4OYD6tiZx3QV5u56gT/arPRiUHMxmqda/zW93s8iVXrXOMibuIhGtGJQaz5fttSrXONgziJ5bYKN7HG/UqvGt/y+4jPqvGtcRMP0YhODGI+rIq9OIh0W/1nEFaNb42H2H8GYdX41hjEb+frDV41vjUO4iQu4iYeohGdGES6HbpVbdaLcDW+ZV0TVONbfh/8WTW+NebDqsKL3wi7tqVeIb+GfKtmtsYg5sN6hbw4iN/67lq+eoW8uImHaEQnBjEfRrnV2ReDOImLWG61Q1WFF8stC50YxHxYr6anVqdeTS9O4iJu4iEa0YlBzMbqdmvsPw+y6nZrXMT+8yCrbrdGI9YftZzCIObDejW9OIiTuIibeIhGpNugW73G1q2/ambLukVXzWx58ANGdGI8rIqti5FqUMu67KgGtUYjOjGI+bBeTetOTjWoNU7iIm7iIRrRieVW21KvpsB6Nb04iOVWe1wVe7HGXYVODGI+rIq9OIg1bq1v1fHFOopaybr+vVhuNZ2q7ovlVktd1Q2s6q47RNWK1lhuWbiIn1vdDqlWtMbPrW71VCta4+dWd3KqFe1iVXfdB69WtMbPre64VCtaY7nVAVV1Xyy3OqCq7ovlVgdU1Q2s6q77BNWK1lhudUBV3Rc/t7ojUK1ojXVNUAdU18oXg5iN1YrWOIif28VF3MRy24VGdGIQ82G9Hl8cxElcxE2k26BbXUHXu+ZqRcu6DVCtaFnXO9WK1niIRnQi5zs538X5Ls53cb6L812c7+J8F+e7uDqLbotuVfM4oKpuHNDmfDfnW9V9MR9WdV/kfA/nezjfw/kezvdwvofzPZzv4XyNq2N0M7pVdeOAqo5xQMb5OudbdXxxErmbzvk65+ucr3O+zvk65xucb3C+wfkGVyfoFnSrisUBVW3igJLzTc43efYlz77kbiZ3s155651EtYwB4/3xqsX741UL/PEqcBFr3Cz8Rqj7RoE/SAUO4iR+I3x/sWr13aONh/h9zFhvzKs5rDGI+bA+sL04iJO4iJt4iHSbdKsqzJpO1Vvd3KqGr6wbVtXw1WhEf1ivsXWJUq1dWRcj1drVeIhGdGIQa31rZlVvFwdxEhdxEw/RiOV2CoOYD6veLv65/X1gV3tYXxLavIpn8RY+wibswiGc5Pqy0OYhPIXFtzo2Ri1VdWxcNOK3tXX/AN1fF/NhdWzUjQt0f12cxEXcxEM0ohODmA+Tbkm3xOrVqZZYpVr5xCrhZ/JxdXU9HsIYJ4oxThaHcJLHT3gIT+Fa7SrQ6tl6fIRN2IVDOMn1xcHN8PXiKbyEtzB8Z7EJw7fWYYYwfOt3F3xrffCH5XWI+MNy4CJu4iEa0YlBzIfvD8sNTVwX6VbfIfz7/jbHqovr8RE2YRcO4STXVwk3D+EpDN9a/7OFj7AJu3CQUenfU2otUemXXTiEk4xKv4x51n6h0i/j52vv4ic8hPHztZ6xhLfwt3+rhqxivejEb/8WxsuHVawXv/2ruzRor7q4iJt4iEZ0YhDzoqO96uIgTmKt9nc/y3+o6O8elP9Q0d/dJP+hoi8P4SmMcWpMVOi3CP5DhYJRoZeH8BRewrXa380X/6FCL5uwC4dwklGhl4cwfHfxEt7CRxi+WezC5btr3erbvn+7fr6+7rt5CE/hJbyFj7AJu3AIi291S53a0uqWujiJ3yn23RFxdEtdPMTvFNt1cNV5eTGI+bA6Ly8O4iQu4iYeIt2MbqjlXWcUXp2/G01ePVB/XDvoR9iEnYwax4GjlnGMqOXLR9iEXTiEa7VPnfn5Ex7CU3gJb+EjbMKYf60DXq8v5+OB1+vL8N3Fk4xqrWMfqNbLS3gLYz6nmMc7UMVgVPFljG/FU3gJY3wvPvK7JuzC4jvFd4kvqvjyFF7CW1h8l3ihQr/bWD5QoZencI1ptT6o0MtH2IRrfMP4IZxkvJ5eLt+v/ckHXje/W08+8Lp52YQxfu0vXjcvJ9l+wkN4Ci9h+Na+4/X3sgm7cAgnGTV7eQhjzDoHHL9ba4vXYjDq9PIQnsJLuObsteao38sm7MIhnGTU7+UhXL5ee4T6vbyFj7AJu3Bw71C/xRP1e3kI4xzOYnvrNnHtfTmEk4xX6u+mn8/BtZqo8ctHGHMuX1xjXw5hrNV3nszJPZpzCE9h8Z3iO8UXtX/ZhUOY58Zc4rvEa/GqY95XZ7ALhzCOpXjzqmPuJbyFsb9gE3ZhrFWt/+bVzjw/4SEsvkd8j/ii9i+bsAuHsPiaeKGuvdYKdX3ZhGvM78arT9T15SSjri/X+N9dVJ+4rr68hLdw+Uadk6j9qPMKtQ9G7V/G+HW+ofYvL+EtfIRN2IXhW/uO2gej9i8P4Sm8hLfwEcaY3zmw8Pr73QDzhVq+vIWPsAm7cM35uw3mCzUORo1fHsJTeAlv4SNcvt9dKV+o/cshnGTU/uUhPN/eLdT+5S18hFE7X74t1DXWDa/pl6fwEsaxzGJZK9T45STj9T3LF6/vl6cw1moXyx5t2aMte7TFd4vvFl/U/uUhLOfGkXPjiO8RL9T1rxiv6ZeH8BTGsZxi3CWrdTYXDmHs75cVCzV+eQhjrWr9712y+l3U+OUjLL4uvi6+nuT4CQ/hKSy+IV6o66xjR12DUdeXvzHHr875quvmJbyFT3Gd2/Wa3uzCIZzF3zlZLVp/vIqX8BbG+LvYhF04hJNctd88hOF7ipfwFj7CJuzCIZzkiTG9GL8bxS4cwkleP+EhXHP+7uJ7dXc93sJH2IRdOISTXLU/vvuBXl1ej6fwEt7CR9i4d9uFQzjJqPfvjrhXO1ev2znCJuzCOJY6l0zWyqbwEsacy9eOsAljreo8Mdkjkz1y2SMXXxdfF1/fwkdYzg2Xc8PFN8SrPq+qmKlHqDUeohFxHHU+1kfMFUn1tLTGScTG1i+iuC8fYSwSft75q0HMRrR9XRzESVzETTxEIzqRFiji70ayHxTx5S1c8/9uuPpBEV924RCuTf5urHo9GO3xEJ7C5fs9EskPCv3rH/SDQr8cwhj/O7kOCv3yEJ7CS3gLH2H4nmIXDuEko9AvD+EpvIQxZq35we/W2p4hPIWX8BY+wjXnuo16UNCXQzjJ9WLePISn8BIu31V7hEK/bMIuHMJJRqFj71Dol6fwEka9ZHFw3TzJKOjLQxjHUudSyFqFCbsw5ly+keT8CWOt6jxJ2aOUPUrZoxTfFN8UX7yYX87H1Tf2eAhP4S2M9T/FOBYrTjJewC8P4Sm8hLfwuR+Le7WINToxiPmwmrMvDuIkdpODG0r++3TCDSV/OYSTjJKvu+mGkr88hZfwFj7CJuy3L8HRb3YxH9Zn4RcHcRIXcRMPMd4RbzkahMHlITyF5WiOHM2RozlyNDcMwCGcZOMBGQ/IeEDGAzIekPGAqvXsIpfPuHxoTqkjdjkalPrlLXyE5WhcjsblaFyOJuScCDknQs6J4AEFDyh4QMEDCh5Q8ICC50Ny+ZLLh+6VOuKUo0k5w1PO8JQzPHk0/vsJD+EpvIS38BF+B3SbzIBBfAd0m8yAgziJi7iJ1ajphUHMh5UEF3EoWdwdoI4us4tGrHX6Op/dkQSXk4wk+DqeHZ1m+NXqNLu4iHRcdFx0fD2n7q/n1P31nHo9IK2RbpsWuGqvz+QcL/iXQxjz/15MHLV/eQhP4drn+kTKUfuXj7AJw7c2By/49QmW4wX/8hTG+DV/vOBfPsIm7MIhnGS84NenRI4X/MtTeAlv4SNswk5GhdenKdVy9se1tnjBv2zCLhzCScYLfn2C5XjBvzyFl/AWPsIm7MLwrT1CrRcHav3yEJ7CS3i/vQvU+mUTdmHsy3chE3jBr3ULvOBf3sJHGMdixVyrwEX95SGM8csXF/WXtzDGj2KT33XhEBbfJb5LfPHKf3kJb+EjLL5LvKqqsVT1yn5xETcR42Vx/zGFo80NeH7Emmx9VBco7stLuCZbH8+h1e3+qhGdSMdDR6OjDeIkLuIm0s1ogSKujwjRwNY8hTF//PwWPsImXJtcH88FXsovJxkv5ZfhWycgCr0+cgoU+mUTxvh1cqHQLycZhX55CE/hJQzf2mgU+mUTduEQzsdodWsewjVmfWyH9rZRH6Whve0yruAvD+EpvIRrzvXxGdrbmk3YhUM4ySj0y0MYvqd4CW/hI2zCLhxv79DedhmFfnkIY19WsXHd8I79cggnGe/Y6+MztKvdtcItuMtHGOOXL17ML4cwxv/OE7Sr3d89skdH9uiI7xHfI754Mb/swnJuHDk3THxNvKqqZ51idaV+0YlBxHjF1UdeNwDqgWKNm1iTDbAJu3BNtj6Lq963+6vxIw4iHYOOQcc4RCM6MYh0S1qgiOvzwEQRXzZhzL9OcBTx5WyOH4r4cm3yd7UfP7xaX17CWxi+VozxvTjJKPTLGD+Kp/AS3sJH2IRdGL5ZnGQU+uUhPIWX8BY+wjXm9xldoNNtfJ+bBTrdmrfwETZhF645Z605ChqMgr48hKfwEt7CRxi+tUco9MshnGQU+uUhPLl3KPTLW/gIY1/WxyhirBuu1C9P4SWMY6lzyWStcEV+Ocl4Mc/yxYv55SmM8es8cdkjlz1y2SMXXxdfF1+8mF8ewnJuhJwbIb4hXlXVo5a53nlfHMRJxHh1PtYfjoxaprrbfjGI32Tn9yFcoLmteQjP4lG8+lfraV6Nh2hEJwYxH9Z77ouDOIl0G7SoIp7fh3+BJrnL8yeM+e/iKbyEt/ApPsUm7MIhDN+az8L4XryEtzDGj2ITduEQTvL+CQ9h+GbxEt7CR9iEXTiEk1xFPEfte70qz1FrW4XbHMJJroJuHsI151Frbkt4Cx9hE3bhEE6yw7f2yIfwFF7CW/gIG/fOXTiEkxzYl1W8uW5xhE3YhXEsdS6lrFVO4SWM8cs3j7AJY/w6T1L2KLlHaIZrHsJTeAlv4SNswi5MXzTJNX9VXXFSPXKNh2hEjPedj9UIVw/DieqDa5zEmuz3IVygC675CNdkZw1ef8l5fzWI+XDRcdFx0bHur13cxEM0It0WLVDEE7yEtzDmv4tN2IVDuDb5++At0BHXPISnMHytGON7sQuHMMb/Tq6JQr88hKfwEt7CRxi+tdEo9MshnGQU+uUhPIWXcI25at/rVXmuWlsU7uUpvIS38BGuOa9acxT05RBOcv6Eh/AUXsLwrT1CoV82YRcO4Xy8UOi1dwuFfnkKL2HsyyqOt27oiLuMgr48hHEsVsy1Qudbswtj/PLFizkYL+aXMX4Uc4/Q+da8hcV3iu8UX7yYX07y+gkPYfFd4oUX8O+mfqAjbn735gMdcZfxAn55CE/hJbyFz32sWlRDXKMTg5gP8Wwy4CBO4rnPnIxqfmt0Ig6mDhIFD0bBXx7CU3gJb+EjbMIuLL4mvi6+Lr4uvi6+Lr4uvi6+Lr54VGCdt3hUYGE9xvPiIMKzCuQ9QTDWe4JgrPcEwUC/3PxuKgb65S4jDS7jgGpn8BTB+lU8RRC4iXRMOiYd8RRBYDZuPEUQOIiTuIlYGCsO4SQjAb5PPAJ9cc1TeAljQ7L4CJuwC5fv9zcysZEA31352EiAy0u4xv/uZMdGAlw2YRcO4SQjAS7DdxVP4SW8hY+wCbtwkJEA3ycbgf63eWpt8Sp/2YVDOMl4lb+MOdea41X+8hLewkfYhF04hOFbe4QwuDyEp/AS3sKHe4cwuOzCQb4BUOcnCh3rhkK/fIRNuMa0OpdC1gqv/pencI1v5YtX/8tHuMa3Ok9C9ihkj0L2KMU3xTfFF6/+l7ewnBsp50aKb9Lr4JX9u1EcB6/s3wcQcXAJf/kIm7ALh3CS69Gi363OqEekNU7iIm7iIRrRH9YTt79741Hdco2TuO5jdOO8p/rGeU/1jfOe6hvnPdU3znuqb5z3VN8476m+cd5TfeO8p/rGWXRbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TbdDt0O3SrC4Dv/nhUh10jzgovPsJ2Hw8d1V/XGEScEl8soLuuuRxrw+opwBcXcRNxun2RgE656TXV7zX+ZJ3B30t84yJ+Y9QtzOqYazTit0Z1/6za6BrzYT2X/+IgTuIibuIhGpFuQTcU+vcJTKBHbnpNHgWNVURBX3bheIxeuPl9ehPof5vfJzBhKOLLJuzCIZxkvIB/n3oE+uKap/AS3sJH2IRdGL6nOMm4tL88hMu3TlTDC/vl8v0+pAjDC/tlE3bhEE4yXtgvD+EpvITFtx6hWLeGqm+u0YnxYe1PPUIRWI9QvDg+rM2sRyheXMRNPEQjOjGI+bAeoXiRboduKO665Y7GuFk1iMa4Wde2hjq+PISnMMaJYoxTO47rdTBq+fIQnsJLuFa7bu+jFa7ZhF04hJOMl/fLQxi+debj5f3yFj7C8K3dx8s7GC/RlTCGir58hPG7tbao6Mvftm38SDbiaWoXBxFjWzHG8OIaIwvzYT0B8eI3Rl02V/ta4yJ+J1pdk9cz0hqN6MQg5sP5Iw7iJC4i3SbdUKP1YUu1ro1VnzVU79ofj+IlvIWPcBR/Z3Q1pf1xrd6ewkt4Cx9hE/biWvkdwkmuC+7mITyFl/AWhu8sNmEXDmH41u7bTxi+tek2hZfwFj7CJuzCIZxk/wmLbz11uF6iqqOtcRO/Pa98r3a2Rid+Z1i9KNZT1y5+Vdw4iJO4iJt4iEZ0It2CbnUJvkadgVXHq+5Uo5ltDfyMC4dwPkbT2qoXBDSnrcp+NKc1u3AIJ7lemZtrtetOPhrYmpfwFj7CJuzCIQzfb7PQ2NY8hKcwfLN4C9dN7+/ExKPX6vwI3DYHTuIibuIhGtGJQcyHm271GntqDvUae3ERv1Ol3sZWA1ujEf0+jD2qq60xH9Zr7MVBnMRF3MRDNCLdDt2qd61ORnSp1bmILjWcZtXPctGJ8dDfB8PVlobPTasrrdGITgzi+5S2GtIS50o1rVycxEXcxEM0ohPLrc4pfLxdiI+3gYNYbrXH9bDEi59bfZRTnWmNRnRidfvU6tRfmBVWU1rjIE7iIm7iIRrRiUH8zp26VKo2tsZB/M6dugaqHrbGTTz3YexRDWyNTgxiPqwX6YuDOImLuIl0m3SrD8Xq06V6yFo9BT6qH60e8h71kLXGQzRijVAHtLvhKaoTrXETD9GITqyGp1mYD6vj9OIgTuIibuIh1nxrW/DQf2AQ82F1m67a46rYizXuKayZ1cHXI0svDuIkLuImHqIRnRhEutWLp9UO1YvnxUn8dt7ws5t4iHYfxh7VZtYYxHyYP+IgTuIibuIh0i3bLX946H8UVt/ur7D6dkfhIRrRH1Z/yXeXPqtprBp7s3rGGg/RiE4MYvUZ24f1QfTFQZzERdzEQzRiuc3CIObDejW9WG5eOInlloWbeIhGrD/yqNXBH3kA8yH+yAM4iJO4iJt4iEakW72aZh1xvZoC69X04nfuZB1QvZpeXMR9H8ae1UbWaEQnBjEf2o84iJO4iHQzutVr7Km9qDo+dWpUHZ/6garji5t4iP1XQlkNYfWXM1n9YI2LuImHaMRvfa3qol5NL+bDejW9OIiTuIibWG61LXjoP9CJQSy3b4+rgayxrhIneAsfYRN24RCuq9OvDSIHroov19Xp9wqbeMhaM3x38RaG7yk2YfhacQjD99sn9JU1wzeKpzB8s3gLl+/3opXoK2su31XHWO+Fm8t31THW/arm8l11jHiPfLl8Vx0j3iNfhm8d4zJh+NYx4r3zZfjWMe6fMHzrGPGe+vL6HrRcQ9Y3zV48RCM6MYhwrFXCu+nLQ7gcK/vQjda8hY+wCbtwCCcZ76YvD2HxNfHFu+Z6RUHX2arXBnSdrV3HhXfHl6fwEt7CMn+X+bvM32X+LvMPmX/I/EPmHzL/kHUL8Q3xjeQx4n0xjjFl/inzx/vlyybswjL/5PzRgdY8hKfwEt7CR9iEXTiExReJUceIR7PhGPFoNswZnWfNIZzk+ROW+U+Z/5T5T5n/lPlPmf+U+U+Z/5T5L1m3Jb5LfJEAOEZUOo5xyfy3zH8P4Sm8hLcwxrdiE/6qvcK7etIa82E9KfUixvZijBHFNUYNV88/vZgP6/mnlcjVdNY4iV8+VcRXx1njIRrRiUHMh/XN8xcHcRLp5nS7FfwlGVrOVl0KoeVs1VUEWs6al/AWrnHqUgMtZKsuJdBC1jyFl/AWPsK12nUdghay5hDOx2ghax7CU3gJw3cVH2ETdmH4RnGS8ZpfVyVoM2uewkt4Cx9hE3bhEE7yFN/6WoIqpOo+a1zEb8+ruqr1rNGI3xlWZVl9Z435sL5H/uIgTuIibuIhGpFui26o77o6Q4PZspo86thqnqjjyy4cZLw+f+8jE49QW1Y7jtfhyybswiGcZLwOf58BJ3rKmqfwEt7CR9iEXRi+pzjJeN2+PITL12v38bp9uXy91gGv25fL1/G75eu1PvVFBTjB64sKgPVFBRcHcRIXcRMP0YhOpFvQDYnhVU1IjMtTeAlv4SNswi4cwvl4IzG+T4JzIzEuT+ElvIUPGZX+fWaZaCdr3sJH2IRduOb5/ela4jFrl/Ha+30OmmgPaw5h/Px3rqI9rHkIf/tXgVHdYY2b+O1f1V+1hjU6sfavDrq+ewBY3z1wcRAncRE38RCN6ES6bbrhijtqB1HRWZNHRWfNExV9OYSTjMrNWnlUaNZqo0Ivu3AIJxkVerlWu+4W4CFpzUt4Cx9hE3bhEIbvl5ZoEmsewlMYvrX7eL2+/PnuX61bXVnvH37ehUM4yVWtzUN4Ci/hLXyExbe+sKCCtp6z1piN9Zw1/zp3sp6z1jiJdUJb4SYeohGdGMR8WF8vdHEQJ5Fug24Dq/edUXiq2q73kXiq2v7Vz8wpvIS3MMap41oYJ4uH8BRewlv4CNdqf3/Nk3h6WnMIJ7muu5uH8BRewvCtzdpH2IRdGL6zOMn1Ve8Vq9Xn1WhEJ2KMXZxk+wkP4Sm8hLfwETZhFxZfE18XXxdfF18XXxdfF18XXxdfF1+Hb51rAd86d2IIT+ElvIWPsAm7cAgnOcW37qtja+u++sVF/O5W4pyu++oXjfjdG0UBVBPKxWysB681DuIkLuImHqIRnfjc0GO2v79PS/SS7e9jvEQv2f7+PCvRS9bswkFGxdd9QPSG7br3h96wZhN24RBOMpKg3rehN6x5Ci/hLXyETdiF4TuKk4wkuDyE4VvrhiS4DN8oPsIm7MIhnOTzEx7CU3gJiy/+dKSWDX86AnTit+d137U6yy7W3feL3xmGDay77xcXcRMP0YhODGI+rC/Jvkg3pxsyoe7Sopds1x1Y9JLtuuuKXrLmITyFa5y662qo5brTaqhlMGr58hCewku4VrvuwKKvrNmEXTiE8zEepNY8hOG7ipfwFj7C8I1iF4bvt4aO6r48hWv8+kDOUfWXa/x6b+qo+ssuXOPXm+xqP2vG6//lITyFl/AWPsIm7MLiO8V3ie8S3yW+S3yX+C7xXeK7xHeJ7xLfLb5bfJESdY8BXW7NW/gIm7ALfz3R9RYXDWw4ndHA1ryFjzCGPMU85dGo1jyEMWUrXsJbGFOuUxWXCfd3XTiExdfF18XXp/AS3sJHWHxdvBADdZvSEQOXl3CNeWo9EQ+XTdiFa/y6OYhnsl1GbFwewuVbNwfRrrbrrT7a1ZpdGOPXfiEeivHsteYhPIWX8BaG7yk2YRcO4SSPn/AQnsIY04vxu9/aokWteQhP4SW8hWvO9W4cz15rduEQTjJK//IQnsLlW2/m8ey15iNswi4cwvn2LlD6l4fwFEbtZDHWv9YNL/6Xk4wX/8s4llksa4Uav2zCmHP54i3C5SSj9ut2Ib5z9P6uyR6Z7JGJr4mviS9q/3IIy7nhcm64+Lp4oa7rEgCPY2sO4STjEqBuCwZqvK5x8Di25iOM/bViFw5hrFWtP2ocv4savzyFxTfFN8U3TdiFQ5gXvHgcW/MUxrkaxSbswjVmvV7gMW2XUdeXh3CN//0RTOIxbc1b+AiX7/e3SYnHsW2vuaH2Lw9hjL+Ll/AWPsIm7MIhDN9v3/E4tuYhPIWX8BY+wkZGXX9/iJN4HNuu26Z4HFvzETZhFw7hmnPUmqPGLw/hKbyEt/ARNuHyjdoj1P7lJKP2Lw/hKby4d6j9y0fYhFE7X77hG0bvuuE1/fIS3sI4ljqXXNYKNQ5GjV/GnMsXr++XlzDWqs6TkD0K2aOQPQrxDfFN8UXtX57Ccm6knBspvvm8vm90xj2tK4aKqWKpwAEdCNxISohQkSJQ7N/fA31iqJgqsG4OsXWAo8JU6AyGzmDoDOZPxVAxVSwVOoOppij4wIKg4lsMFTX0d1P8E0vFVnFUlM93Y/wTriJUpAjkw3ej+RPwWRBbxVEBnw3hKkJFikBOtBgqpgrMAGcIsqLFUWEqXEWoSBFIjBYYGqcLXvMTC48QaJEi8LLfYqiYKr5DOD9sSUXEE0eFqXAVoSJFVIA8MUpgGytCnlgqtoqjwlS4bDCCpEWKQJS0QAHivEZQ3BXFVUILVxEqcHB18uHxb3cR0df3xFaBQ1gQpsJVYBE3hGwj2vueGCp0BkNnMHQGCJQWpsJVhAqdwVRT9OpgRW8bXwtT4SpwcHUq35Y91M/t2WuxVOA8MIijwlRgER0idIAUsX8qdAZbZ7B1BugGaHFUmApXoTM4anpwkmMRz1ZxVNTBjR+EqwgVKaKS4owBMVRMFUtFzWDgVDb4YLMsVKQIhw+Ox4eKqWKp2CqOClOBGeAMQaC0SBEIlBZDxVSxVGwVGBqnS2IALHxOFUvFVnFUmIo6hIktqdh4IinQ2/fEUDFVLBVbRc1gDghT4SpCRYoYPxWDG4z+vyeWiq0CBZgQyRVF498TQ8VUgYObELKI6PJ7IlTgEDCD9VMxVGARN4Rs41xbxVGhM1g6g6UzWCli/1QMFVOFzmCr6e0dMogUgdhoMVTg4A7Eayz6hKlwFTgP7gApArHRAouI37n9RVcsFVuFzsB0BqYzsFCRIm6f0RVDhc7A1RRJMbGISIoWKQJJsVAySIoWU8VSUWfIQmHg0qOFqXAVNYOFUxmBsnAmIlBaLBXwwTmKQGlhKlxFqEgKtCA+gRkciKliqdgqjgpT4SpCBJJiOQQGCAhT4SpCRYpAbLSoQ9g/iKliqdgqjgpT4SpCRc1g1zbi8XZPDBVTxVKxVRxu8EKgtHAVIQIZMhNiyYrureKoMBU4uDr58D2vvYhnqJgqcAiYAa5DWhwVWEScVUe38eg2Ht1G0xmYzsB0BrgOabFV6IlkeiKZzsDUFElxMFG0PLXYKo4KHBxOZbQ3HYj4qRgqcB4YxFKxVWARsT/4+4EewFWECp1B6gxSZ8Be5k8sFVvFUaEzSDFF7+HZATFVLBV1cOcHcVSYCldRZ8gZECkClx4thoqawZkQ8FkQpsJVwGdDpAgESouhYqpYKrYKzABLhUBp4SpCRYpAoLQYKqYKDO0QGAALj3BoMVRMFUvFVlGHYNgSxEYLVxEqUgQCpcVQMVXUDAzbiEBpcVSYClcRKlI2GIHSYqiYKlCACeGyongv0yJF4L1MCxwcTj7XRcQ7lhamAoeAGeA6pEWKwHWI4awK3cbQbQzdxtAZhM4gdAa4DmkRKvRESj2RUmeQaopLD8NpiUsPXHVuXHq0SIqDS48WQ8VUsVTgb2UC4qgwFa4iVKQI/B1Ei6ECPgsCZ6JDmApXESpwpBgNgdJiqJgqloqt4qjAkW4IVxEqUsT926YrhoqpYqnYKlwWZOmRIneuQO60GCr0SLce6dYj3XqkN3eucBWhQo/06JEePdKjR3r0SI8e6TkqdK2PrvX9K0csiOmRIl1aLBVbhR6p6ZGaHqnpkZqeVa5nletZ5XqkrkfqeqSuR+p6pK5H6npWua516FrfP4nEgoQeaWj9hNZPaP2EHmnokaYeaeqRpp5VqWdV6lmVeqSpR5p6pKlHmnKk9vupGCqmiqXC7h+lf+zCIZzk+426CdF/sP7xFj7C34EMvCFBX+cToSJL1CskvkP3/n49ZqF5Cov3FO8p3u9LNT924RBO8hLfJV74rh68CblfntvCVeCAsLD4vp4r8IU9LYaKWeJALBVbxVGBGRgEfLA792s1rxgq4IPjud+secVWcVSYClcRKjADnBL3izevGCqmiqViqzgqTAS+yQcX0/erdHExfb9Lt8VRYSpcRaioQ8CF8f1G3RZDxVSxVGwVR4WpwAywjff7OK9IEfcbOa8YKqaKJRuM7/lqcVSYCuxcBeD9hl2s6P2K3RZLxVaBgzMIWUTHt3ldgZxoAR+HmCqWCvgExNEBTIWr0BkMncHUGfC7Oj8xVSwVW4XOYKopnsuCNcSDWS5P4SWMYRPC74NlPg7hJCMv8O4DbZ9PTBU1d7ytcHxD5/39I2zC4r3Fe4v3+/LOj4fwFF7C4nvEC7GAdxz3+3hbDBU4IPwOYqHFVnFU1OmAC/n7tbwtQkWKuF/qifP2fnsnTrv79Z1XHBXwwQl5v8HzilCRIu6XeF4xVEwVmAFOifsFn1ccFabCVYSKFHG/5vOKGtpxiuB7/hwLjyRokRT3i3lbDBVTRR2Cb4it4qgwFa4iVKSI+62fV2AGB2KqWCq2iqPCVDg3GE9DfCJFID1aYOcWxOGK3u/xbeEqQgUOrk6++529dxHx9YAttgr4YAb3Kz+vcBXwCQjdxq3buHUbt85g6wy2zoDfCfoJU+EqQoXO4Khp5QTuBONbfptN2IUxLAQes/YDT+ElXHOPK44KU1FzD2xMPdWpfz/JeGrbZfF28Xbxfl8S+vERNmEXFt8QL8RCYMUQCy2OChwQ6gOx0CJUpAjEAjq97tf/tpgqlgrMAOft/ZZQnHb3a0KvSIr7bb/ombpf99tiqlgqtoqjwlRgBgkRKlLE/SrRK4aKqWKp2CpqaLRj3W//RTvW/frfFkvFVnFUmIo6BDRM3C8BbpEi8DXALYaKqWKp2CowgwNhKlxFqEgR9ztGrxiywUiPFkvFVoGdWxApK3q/RvSKoWKqwMEZhC4i3ou0CBXwwQzuV4teMVTAB2eV6TaabqPpNprOwHQGpjPgd4/+ifvlo1foieR6IrnOwNUUz2XFJuDBrGA8mfXyEMawOI3xHFasHx7EetmFv7lP9K+hQ7UFvrSkxSiBjcEjWfH7eCbr5S0s3ineKd7vy0g/zuaBxz82D+EpvIW9JjchQkWKwJceVP/ZQNvqE1PFUrFLHIijwlS4CswAc7vfRuoQU8VSAZ+AOCpMhasIFSkCX3fQAjNIiKliqdgqjgpT4SpCBL7QqHqvBppT60sfP2EqXEWoSBH4WqMWdQgDW4IvNmqxVGwVR4WpcBWhAjPANt7vMb1iqJgqloqt4sgG42uOWriKEIGvTqiGyfG731aKFb1fV3rFUWEqcHA4+UIXEd+I0GKqgA9mcL/C9IqjAj44q0K3MXQbQ7cxdQapM0idAb/j9BNbhZ5IqSdS6gxSTAefxf6JpWKrOCpwxzch6q4qFnHwieyfGCrqvu73hy6fWCq2irqzXO8Exn0CZQ/gKkKFzmDqDKbO4D6d/YqlYqs4KnQGU03xGa5jEfEZboulAge3IY4KU+Eq6ra5Y63xYcwV+DCmxVCBGWBu+Mil3vMMNKc+4SrgExApAh/1thgqpoqlYqvADHCG4KPeFq4iVKQIfNTbYqiYKmrowOmCz1ICC4/PUloMFVPFUrFV1CEEtgQf9bZwFaEiReCj3hZDxVSBGWAb8SlLi6PCVLiKUJGywfiUpcVQMVVg5xaEy4rio94WSXHbVlvg4AxCFvE2p7YwFfBxiFCRItAhUm9pxm1OvQOMqWKp0BkMncHQGeCj3hahQk6k28PaQmcw1RRJgRej+3DKFqEiRaAppN5HjXm/xmVDbBVHRR1C/cXMuM2pLUJFHUJif9Dtfgfg1798YqrQGWydwdYZ8DtgPuEqQkWKODqDo6ZIisQiIilauAoc3P2dFIGkaDFU1BlS78oG2laf2CqOCswApzICJXEmIlBaDBXwwTmKQGmxVRwVpsJVhArMAGcIAqXFUDFVLBVbxVFhIiop7IfTpS4wDG8E0Jz6xFFhKlxFqMgStSVoTn1iqJgqloqt4qgwFZjBgQgVKWL8VAwVU8XiBuNpmU8cFaYCO1e1jbbVu6JoW31iqdgqcHAGIYuI5tQW66cCPpjBmiqWCvgExNEBTIWr0BksncHWGeyhYqpYKrYKncFW04OhE6KGrj9rGWhbfWKp2CqOClPhKuoy/O4c3stcgfcyLYaKqWKp2CqOivgHvir64yTjwTuXy2RjAfhFzZ9YKraKo8JUuIpQkSLwfqeFziB0BqEzCJ1B6AxCZxA6g9AZhM4gdQZ4v4MXerS2PrFUbBXYahQPvgYSL6Z4wuYVeMTmEzilJsRUsVTglFoQRwcwFa4iVOgMhs4Ad1NaTBVLxVahMxhqWpcnhvfkaG19YqrAwRnEVnFUmArUi0OEihSBOGqBGQQEfDBRhE4LU1E+9edMA1/7/ESKQOi0GCqmiqWiZlB/2zTQAfuEqXAVoSJFIJtaDBUYGqfLwQBY+JMi7KdiqJgqlgocArbEjgpT4SpCRYrwn4qhAjPANvpSsVUcFabCVYRssKeI+KkYKnCOHgiTFQ1XESpSBK5iEKroZu1FxFVMi6MCPpgBrmJahIryqQ+eBvpc7wDoc31iqlgqtoqjwlS4ilAhJxL6XJ9Q0/uNswZhKlxFqMDB1amMBtaJt4ZoYH1iq6hDqD90GmhgfcJV1CHUH7gMNLD2ALjv2mKo0BksncHSGeC+awtT4SpChc5gqymSYmERkRQtTAUODuuGpGiRIpAULeoMWfDBVUyLpWKrwAwCAj4JkSIQKC3KZ+McRaC0WCq2iqPCVLiKmsHGGYJAuQKB0mKomCqWiq3iqMDQOF0CA2DhEQ4ttoqjwlS4ChwCtgSxcQVio8VQMVUsFVvFUYEZYBsRKC1CRVKgGfWJoWJyg9GM+sRWcVTgHK0cRQ/qXVE8WvSJqWKpwMEFhCwi2lCfSBG4DtmYAa5DWkwV5VN/GDTwVNI3wFFhKnQGU2cwdQa4DmkxVEwVS4XOYKkpLj2qj2+gJdWqoW2gJfWJqWKp2CqOClOBrMKC4COeFikCH/G0GCqmiqViq/jzCcM5UV9N35zkL00e4yhxQnyREdUONqrn9LEJ1y4drB7yokWKQF4cmHx50b//xcXjJSzeLt4u3u7CIZzk+AmLb4gX0uNc4SpCBQ4I9YH0aDFUTBU4N1AFSI8WR4WpqBlU/+LAQ0qt+hcHmlGfmCrKp/oFB5pRnzgqTIWrCBUpAlFSnV0DbapPTBVLxVZxVJgKF4H0wHmILlPD/qDL9AlT4SpCRYpARlRb4cCjSZ+YKpaKreKoMBWuAjNIiBSBKGkxVEwVS8WWDUaUtDAVrgLnaL2K4GmlvaK46GixVRwVNTTSA/2pvYi46GgxVJQPPr1Df+oTW0X54BMy9Ke+AXQbTbfRdAauM3CdAS46WiwVeiK5nkiuM3A1/XICfxA3qiP1MQ4NpysuRlocFabCVYSKFIE4wad6eJrpE1MFZoBpIk5aHBWYwYZwFaEiv2Ork60aWh8P4Sm8hLfwETZhFw7yqPEneArj6BxiqzgqTIWrCBUpAtcp+PgQT0Z9YqqoGVQX5MDDUZ84KjCDgHAVoaLWtza4npD6eAhP4SW8hY+wCbtwkJEv+JQOjaxPLBU4Pqw98qWFqajjizt0qKgVxgeaeGzqE0MFZnAgloqt4qgwFa4iVGAGddbjwapPDBVTxVKxVXzrjDet1fWKZ6yM6nrFozVGdb0+HsJTeAlv4SP87ePECn/XMY9DOMnfdQye0jLqi8YfT+ElvIWPsAm7cJCRP/goFp2vTywVWDuc68ifFqYCu4cCQ/60qN3DR5foiX1iqKgZ4ENN9MQ+sVUcFabCVYQKzKCWGD2xTwwVU8VSsVX8zWDjdbT6Yzdeh+sprfVA2+8T+J/wEJ7CS3gLH2H7OMAuHMJJ/vJnn8tDeAov4S18hE3YhYO85fzJPVUsFXL+5D4qTIWcP7lDhZ4/R8+fo+fP0fPn6Plz9Pw5ev4cPX+Onj9Hz5+j54/p+WN6/pieP6bnj+n5Y3L+mJw/JuePy/njcv64nD8u54/L+eNy/ricPy7nj8v543L+hJw/IedPyPkTcv6EnD8h50/I+RNy/oScP8gffKKKx70+sVRsFdi9DWEqXEWo+I6vXjNnNdQ+HsJTeAlv4SNswk6+4eIQQ8VUsVRsFUfFd4Benx9PdNY+ESpSRF0CeX3eOtFz+8RUsUpg1nUJ9MRRgRkcCMzAIDADTHSmiPVTMVRMFUsFBogS+6cCAyTEVFED1Ce+sx4Iu+L+hyNswi4cwkmuFPGBtays8IEV+7KivvTsYxcO4W+kxC9/OfF4CE/hJbyFYYw9qPdQT9Qe1Od+Ew2zT6QIx2Fg375AqK+w+9hk0dxVhIoUUR/q+MC+14c6T0wVuh/1vumJo0JnEDqDxNDY95wqlooaemLFKxCeMBWuIlQkRX1f+6hv1P3EUDFVLBWYgUMcFaYCM0iImsG6pimiMuOJoWKqWCq2iqPCVNQM6lp3oq32Ccygzha01T4xVEwVmAEODpnR4qgwFa4iVKQIZEYLzCAgpgqcB1jRhRlccVSYClcRIpAz9SHIRMPtE1NFmdZnGBPPiX3iqCjTjeWtq5knynRjEetqpsX5qcAMDsRUsVRsFUeFqXAVmAHO3pMi7KdiqJgqlgrMAKfYDSSswQ2k+2Mpwn8qhoqpYqnYKg6jHx27T7iKUIEZYKI3xa4YKqaKpWKrOCpMhYtIrChOZURai6liqdgqyufg5EOktXAVoSIp0L77RM2g7s9PPHX2iaViq8AMDoSpcBWYgUGkCERaC8wgIDCDhKgZGCaKSGtxVJgKVxEivuBCQNcDaBsXcRMP0R4iN+oe60T77ROh4u9QJ1bqi5DGQZzERdxEjF0nDNpnvW6Pz3oELOK2OmkbF/G7TLg/e4hGdGIQ8yFK3jAcSr5FbY5hd1HyLbYKzB5rhsKutxsTnbNPfPPHIaKsDacAyrrFUWEqXEW8tXOufnD1g6sfXP3g6qNg75LXTdlechSs4ZREwbao9XCcXijYFnUMjvPhK9h9xzKiE4OYjdUu24ixJ0TN1O9/+W7eXAxiPhx1xwg4iJO4iJt4iPDbEK6izvq6KT3xENcWuGJogdkbBEZzCFfxzX8Ak8uHjtcnhoqpAi4BsVUcFcZtQsfrE6FCZ7B1BltnsHUGW2ewdQZbZ7B1BltnsHUGW2dwdAZHZ3B0BrgQaLG7vtAWe2sFbbFPuIpQkSLwWh2YGUq6xVDxlRZ+4yvpxk08RCM6MYj5sAr54iDSLegWdAu6Bd3wahxYmfos5okUgbIPnOko+xa15IFVRtm32CqOClPhKkIFZlAFgdbVJ4YKzOBALBVbBWYQEKbCVXwvAwOYD7/gaBzESVxEjJ0QdQx4P4kOVcfbVnSoPjFVLBV1DHVHZ6JD9QlT4SpCxXfmYDIIj7rTM9Gf+sRUAX+D2CqOCvhj2RAeLeB/TVMEwqNFvdEHTuIibuIhGvEbO35Y3Sr+wJ0dPHs1cP8Gz1594qgwFV4Ci1Dl/0SKqEuCJ4aK78YYxvouCBo38XvxwwS/GxWNTgxiPqwbnBfhh1Pap4qlwlRg9ti1+Kn47uph9eqm5cVFxMphW+OoMBW1cuP+Tqgob7zjQVfqE3UkeB+Ab6sP3LZBv2rg5gz6VQM3Z9Cv+oSp+F76YfllSGM2oh818P4IXadRjdoTXaeB+yXoOg28aUbXacw7QB1JdTlPNJoG7orU189TbBV/PnZ/w4j+sBIhqml3osU0cAlWLaa48q8G08aaa30GN9FeGrgcR3vpEyli/VTUquOeC9pLn1gqtoqjwlS4ihCx4YNF3RgNh1Cv67GwqChgBCdaRZ8YKqaKowKjYblRplegTHEZj7bPwLsCtHDGwiJaivCfCswA64ZSa7FUbPHxo//FVLiKUJGyOijPFkPFVKFrgFK8h41SbKGrg4K75xoKDveQ0M8ZuG2Efs4njgpT4SpCRVKgnzMQ1+jnfGKqqBkgdNDPGQg89HMG8tNQqngfgObOWy52S/WKFIFS3VcsFVvFV2QONKI/RKniHhGaNwO3eKp589z//xAx1/vLNdeNNUGptkgRKNUWtVobC4RSbbFUbBVHhalwFSECpYqYRK9m4J0HmjAD73zQahl4I4VWyyeWiq3iyz8sR33x+0UnBjEf1he/XxzESVzETaSb0c3oZnQzujndnG5ON6eb083p5nRzujndnG5Bt6DbV894h12dl41ODGI+/F5QGwdxEhdxE+mWdEu6Jd3yuVXfZeMgTuIibuIhGtGJQaTboNug28SJlxBLxVZxVJgKVxEqUgQqETfl0B4ZuHOGJsjA6zf6EePOrd7YPmEqyhR7XU/QxDvJak28+L34NQ7iJC7iJh6iEZ1It0O3unmFXt+JJsTAjahqQvSLTgxiPvwqp3EQJ3ERN/EQ6eZ0c7o53YJuQbegW9Dtu27FHYbqQ2w04ueGrf5KqzEf4gXyLhdeBu3+l9pZ3JhAJ+EToSIp8GzMJ4aKqWKp2CqOClPhKkIFZlBnKp6N+cRQMVUsFVvFUWEqXEWo0BlMncHUGUydwdQZTJ3BV9Rx0YhODGI+/Eq5EWNPCBzDgvhG2cAg5sPvnWvgZ78XzMZJXMRNPESsTIUAugEDtwHRDfjEUoHjd4ijwlS4ilCRInBJ3GKomCqWCp2B6QwMM0gIVxEqagZ3A3CB3aJmgDtMgQvsu1S4wMaNm8AFdoujomaA20D4bvYnaga4pYNvZw/ckLmPzQQO4iQu4iYeYo2NWzroCwzcq0FfYNwfw0V1i62ijgE3W9AX+ISrCBVJge6/qOd0TPT4Be7JoMcv0BGDHr8nQkWKQDK0GCqmiqViq8AMAsJUuArMICFSBJKhxVDxzSBxgwcPznxiq/h2B5Oph/dfdOKf912ienI/sB7IfXEQJ3ERv3MBB/JdZDca0WtCAyJUpIi6A/bEUmElJoSrwGgLIkWcn4pv5e5gFSnNS3gLH2ETduEQTnJFSbP4mvia+Jr4mvia+Jr4mvia+Lr4uvi6+Lr4uvi6+Lr4OtYateWhIkUE1hqnQ701f2KqwJ7ipIit4vNP3P7CV78/4SpCRYqo+2eJW2boCHyiZoD7Z+gITNw/Q0cgnvM50RH4hKnADHAIGSryiYXviq/1WPiq+OYpvIS38BGGg5cYOJKAwJEkxFKxVRwVdSR1a26h9e+JUJEiKnOeqEM54G8CdfdyofEv65bJQuNfzvtTR8XnMnBk9++3wd9vLAx1H10FNmFMF8uL2GiRIhAbLYaKqWKpwISxRvuoMBXBGd+/tCy+f2gJrqPCz+PPLC8v4bKrm00L3YBPmIo64IXVqnh5og54YbUrYJ4YKj7/hY3DV7Be3sJH2IRdOISTjO9evTyExdfF18XXxdfF18XXxdfFN8Q3xDfEN8Q3xDfEF8mycGoiWVqECqw2ThUkS4uhok6vhdMAydJiqzgqMAMUNJJl4Ry530IEzsfjfgcRuOzrXuBCX+ETS8VWcVSYClcRKlJEXQQ9oTMYOoOhM8AXqS3wETZhFw7hJONBnZeHcG28gZfwFsaBDwhT4SpCBQ68yhHNhE8MFVsFRsMOIabqVujCYzlbIKZaDBUYzSEwWkCEihSBq5sWQ8VUUZtysClIoRZHhalwFaEiRSCFWmAGWHibKpaKrQIzwMKbqcAMsLwWKlIEHraHdcez9i5P4SW8hY8wHHBm4erl/hdcvRxsE65eWmwVRwWOBLuJjGkRKlIEMqZFzcCwsMiYFkvFVnFUmIqageF4cPXSIinQ6/cEZnAgpoqlAjNwCMwgIEwFZpAQoaJmULdkFnr9nhgqpoqlYqs4KkyFqwgVOoOpM5g6g6kzmDqDqTOYOoOpM5g6g6kzmDqDpTNYOoOlM1g6g6UzWDqDpTNYOoOlM1g6g60z2DqDrTPYOoOtM9g6g60z2DqDrTPYOoOjM0Cy1U2uhUeCPrFUbBU1A5x7CLbLLhzCSUaoXR7CU3gJ4wAnBA6jcgT9jE/gMFBdPlUsFVvFUWEqXATeejkqMnRbQhcFEdXCVLgKbItBpAhEVIuhQk+M1BmknhipJ0bqiZF6YqSeGIgozA2PBX1iqJgqFueGx4I+cVTIDPBY0CdChZyaSyNqaUQtjag15NRcY6s4KkyFy9xGqJBdWBpRSyNqaUQtjailEbU0opZG1NKIWjeiMLepu7B0F5buwtJduBHlEFsFZhAQpsJVhAqUKIZGRLUYKqaKpWKrOCpMBSJiQoSII2WGxsqsG7ILjZVPLBVbhZ58iKUWuvVHt/7o1ttPxVChW2+69aZbb7r1pltvuvWmp7/p6e968iG46hOAhYeOPnFUYHmxbgiuwKxx1dUiRSDSWgwVU8VSsVUcFfDByYdIuwKR1mKogA9OPkRai63iqMB1Hw4bkdYiVCQFOjefGCqmiqUC72QcwlWEihSB4Krb/GvfN2oBsVUcFeVT9/IXnib6RKgon7rLv9DF2QPMoWKq0BlMncHUGdz3bFe4ilAh74v20hksNUXu4D0bGjSfcBU4uAWRIpA79dHCwqNFn5gq6uDq1vjCo0WfOCqwvJgbcqdFqEgRCKHENiKEWkwVS8XX5vz7YbO+qPn+YBkiVKSIL2q+v2WGGCqmiqViqzgqTAVmgBW1UJEi/KdiqJgqloqtAkNjSwIDYOFjqlgqtoqjwlTgELAlESpSRP5UDBVTxVKxVWAG2MY0Fa4iVCRFPYGUYnCDq+OTYqnYKnCOOkRyRevRohRDxVRRQ+OOcbV59iJWoydFqCifgRnMn4qhonzqHv+q9tA3wNwqjgqdwdQZTJ3BTBHrp2KomCp0BktNF++An/sV1sX3G6zBXy3jc4Rzv48WvITrsAYWdh8VpqIOq38nVKSI+41x4CE8hZfwFj7CJuzCIZxkE18TXxNfE18TXxNfE18TXxNfE18XXxdfF18XXxdfx2KjDNxUuAos9v2dFBE4iwNiqJgq6hzC5y4HYdSiZoAPWw7CqEXNYOI0Qhi1SBF4ijqKBQ9RvzyFl/AWPsJwqFPNECn4RMUQKfhMxBApLbaKowJHkhCuIlSkCCRPi5oBPj0xJE+LpWKrOCpMRc0Ad48NmdQiRSCTWmAGOB5kUoulAjPArJFJuFNuyKQWNQPcizZkUouaAa5RDJnUYqiYKpaKreKoMBWuIlToDLbOYOsMts5g6wy2zmDrDLbOYOsMts5g6wyOzuDoDI7O4OgMjs7g6AyOzuDoDI7O4OgMTGdgOgPTGZjOwHQGpjMwnQGukqqZexmuklqkCFwltag74DhbcAf88hLewkfYhF04hJOM2MJHHoZwwmcZhnBqgcNApSCcWqQIXCm1GCqmiqUCPqiulG3xnyyKI6JaTBVLBbYlII4KU+EqQk11BuOnYqiYKpaKreKoMJnocBWhQk4Mn7oGiKjqaF+OiGpRM8BHOI6IanFUmIqawblDh4oUgYhqMVRMFUvFVoEZbAhTEdx6RyrhoxdHKrUYKqaKJdu4deu3bv3Wrd+69TeVrkgRmkquqeSaSq6p5JpKrqnkmkquqeSaSo7sqYbs5cieFksFlhfrhuw5mDWyp4WrCBUpAtnTYqiYKpYK+ODkw7VTi1CRInDthA+zHNdOLaaKpQJXHDjse+10halwFaEiRSCeWgwVU0X18OAMq3tBzS5crVvYgboRBEYPdDOOcUFMFUtFtQ8Z+AibcB0gPtQL5FWLFIFv9/6Bh/AUXsJb+AibsAuHcJKn+E7xlTYjtDw3i+8U3ym+U3yn+E7xXeK7xHeJ7xJf5BI+9AzkUgtTgXYlbM9tV7oCq41NQUi1GCrKH7+Cd36Xt/ARNmEnI4TwuWwgavBRbCBq8OlrIGpamApXUecNbusHLoCuwAVQi6FiqqgZ4DOyQAi1OCq+o0EtoWW6OYSrBwvLjS/2vTyEp/AS3sJH2IRdOITFN8QXeYQP+QJ5hI/lAnnUYqs4KkyFqwgVKQJ51GKo0BngcgkfugRuLLU4KjADHA9uLLUIFZhBnUaJS6wWQ8VWUQ0+Dg7hJOO7gC8P4Sm8hLcwjiMhTIWrCBUpApdJLYaKqaJWEh8EJS6TWhwVNYN6wsVKXCa1CBV1LtUeJb7e5vIQnsJLeAvDe0GYClcBb4NIEQiiFnX0+NAmcbXUYqnA0WP9cbXUwlRgBjgNEEf3v9TDRg7wEOuXE+uI9GkRKlIE0qfFUFHTx332RPq02CqOCswAk8QlUItQgRngwHAJ1GKowAxw+uASqMVWcVR8Mxi4UV9919+TA0vUJdDAje3qrqaYKpaKXQLLW5FzLwqqu/p7jCAEfDCDipwnUkT+VNQM8NpY3dUUS8VWUTPA3dpqqJ73xaoaque9D1oN1RM3PHc1VE/cg9vVUU0xVSwVW8VRYSpqBvX0gl0N108Mnqz7h/duLaaKpWKrOCrKtO6d7eq+pggVddh1sbCr+5piqJgqloqt4qgwFa4iVOgMls5gYQbYkjVVLBVbxVFhKmoGC2td0fREiqhoeqJmUB28u1q6KZaKmsHCrCua0DW7q6WbAjM4EKECM8BEz0/FUDFVLBVbxVFhKlxFqNAZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGrjNwnYHrDFxn4DoD1xm4zsB1Bq4zcJ1B6AxCZxA6g9AZhM4gdAahMwidQegMQmeQOoPUGaTOIHUGqTNA8i3kQZoKVxEqvkuEuvze4z7oHjyEp/AS3sJH2ISdPHCAAYFYuwKHcX/sqDAVriJUpAjEWotarrrpvceUbRlTFmXMUJEiEFEtalvqRvkeiKgWS8VWISfGWDqD5SpChZwYY/9UDBVT5nYj6oqt4qgwmRsiqkWo0BloRA2NqKERNTSihkbU0IgaR07NcXQXju7C0V1ARN25me6C6S5oRA2NqKERNTSihkbU0IgaGlHD9Ty4EXWF7oLrLrieB4ioFroLGlFDI2poRA2NqKERNTSihkbU0IgaoedB6C6E7kLoLoTuAiKq7gXugYhqgV1YEEvFVnFUYA0wN0RUi1CRFBNXai2GiqliqcAMHOKoqKRa4GRQTERV3Wnd1SFOMVUsFbLZcxwVpsJVhIoUMX8qZLPxpNgnloqt4qgwFa4iVMjpNm+8JcRSsVWUz8G6Id4OZo14axEqUgTircVQMVUsFVsF3oJjF3DDvEWKOD8VQ8VUAR+cFAixFkcFjnRDuIpQgSOty76JEGsxVEwVS8VWcVSYClcRKnQGrjNwnYHrDFxn4DoD1xm4zsB1Bq4zcJ0BQuzgFEOIHSw8QqzFUrFVHBWmwlWEihSBEGuhM6gWhY15VotC8xb+LnRusNS992YX/u5AbZwAdYEFRlt58xCewkt4Cx9hE3bhEBZfZFZ9yrEXkqmenLMXkqkeMbwXkqlFqEgRyB/D0EiZui29F1KmhasIFSkCl1ctajfqdvJeyJ8WS8VWcVSYClcRKjCDquSF/GkxVEwVmEFAbBX1V4dY3bpR3uzCIZxkXFnZFWXu2BpcWbVYKraKOnxMBJnkmC8yqUWoSBHIpBZDxVSxVGwVR4XOAMlzjw1Z4ThrkBUtQkV99F9lhObs5iE8hZfwFj7CJuzCISy+Kb4pvim+Kb4pvim+Kb4pvim+SV+0aDcP4Sm8hLfwETZhF8ZCX5EicLnTAieBQ0wVn3l9hrLRzd18hE0YHnVybsRG3efeaMuu28YbXdnNR/gbqW4G732f3AcO4W/5Am73CZvgITyFl/AWPsIm7MIhLL5bfBESdft9b7zT6v9Sp/w9NLzTapEikActMNqBwGjYIxR3i1CRIlDcLYaK2g28/UZ39RNbxVFhKlxFqEgRuOC4u4ULjhZTxVKBGeBMwQXHFbheqL8A2OiufmKpqAESC4/rhRbfIUzY1OVCcwgnGW9rEtuBNy95/0uNhGnVe5fmEP5Gwq1FdEg3D+HPoZ7QutEe3byFj7AJu3AIJ7lKu3kIi+8QX1wR1B8YbDRIj/pAYqNBGn+NuNEg/cRUsVTUbH841Hrdn9XwvdHs/MRQMVUsFVtFLUp9BrHrebgUriJUpIj9UzFUTBU4noTYKo4KU4EZbIhQgRlUEVan8/edJBBHhalwFaEiRdhPxVAxVSwVOoMqdrwzrqbnxy782e/780muOm/+vHEpXE3Pj5fwFj7CJuzCIZxkfJ/GZfEN8Q2sLLYGlT5wDqHU67OiXY3LFEPFVFGjDWwnqn2gWjIp6pG7FEPFVLFU1G5Uj/dG+/ITpsJVhIoUgcpvMVRgBgtiqdgqjgrMICBcRc0AH2qhfblFJcYTQ0XNAJ9JoX35ia3iqDAVriJUpAikTIuhQmdQKYPrFHQvNx/hzx6XL2hdbg7hzxsXS+hbbh7CU3gJb+EjbMIuHMLie8T3YGWxg8iUiVMNmYKPytB4/ESKQKa0wGhYDsNoOG5zFaEiRfhPxVBRu4GP16qNmGKrOCpMhasIFSkiMAOsTgwVU8VSgRngTEGWtIBPRQF6hifundVjfimOClPhKkJFUqDP+ImhYqpYKr4ZnMtH2IQ/++rS3Ogxbk5ypQju3aDBuHkKL+EtfIRN2IVDOMlTfKf4Ih9wPxodwhNvpdEhPHEDFx3CLZACLYaKGg33sB3XDbg5jdbfJ1IErhtaDBVTRe0G7hqh9feJo8JUuIpQkSLOTwVmMCCmiqViq8AMcBYgF1pgBgERKlIEcqFFzQB3gNEU/MRSsVUcFabCVYSKFIEsaaEzwDf+4HDwlT+Xt/Bnj84JtAo3u/DnjTdf6BO+jG/+uTyEp/AS3sJH2IRdWHxDfHEVgnvejkzBvWhHpuCOsyNTWoSKpEC77w2CwLUGKj5wrdHCVYSKFIFrjRbYjYSYKpaKreKoMBWuIlRgBrU6gWuNFkPFVFEzqObtHciSFuWDe5yBLGmRIpAlLYaKqQI+C2KrqCPF7VN09T6BGWCiyJ8WmAE2C/nTAjPAwiN/WmAGAbFVYAZYRORPi/9f27vtytIj17nvouu+SJ6CpF/FMIy2rL0hoCEZsmRgw9C770yOTMZYNbuiojI5ddGKb/2zgudIHoKMkYOKCoH9uWDkAHuO8PqdMHKAHZ8G+3PByAE2A+EPPGHkAFt+8AeegByg2LA/FyAHKDbszwXIAYoN+3MBcoBiw/5cgByg2LA/F4w5Fso2zM8ld5WH8bnkQHIkGYtqVB9mMRcUBqznUS+YxVzQGDoBZjEXBIbIkBgyQ2HgHDTOAVZE2JWBk+9pi+DkexpTOPlOEIbK0BioPHDynRAYIkNiyAyFQRgqQ2PgHATOwbkdkgGixYaz71kEOPtO6ASwRRcEBi5P5PJELk/k8kQuT+TyRC5P5PIkLk/iGk2cg8Q5gC06iw2LcxY7c3kylwcW54LEkBm4PJnLk7k8mcuTuTyFy1O4PIXLU7g8hWu0cA4K5wB25Sw2rMdZbOHyCJdHCoMwcA8R7iGYvWBuAX/eCUd5xhsnGe68l5xIziQjjWHI+mkLOmDXlLDbNhx2p5xIPtyisYc2vHWnLCQfKfRTZyO5qzyMwyUHkiPJieRMciFZSKZ0+0y3wCUXxS9wvI1jQ7fA8TaODdoCx9sJlaERYH4ytjgLPGrjcM0u8KidIAyVoTF0Aoz8sflZ4FE7ITIkhsxQGIShMiAHGdAJMPIvCAzIAWoUI/+CIwdo+wKP2gnCUBkaQyfIG0NgiAyJgXMwogyOK2plONROuZLcDhmVcViKSz4MxZTHaEDDjMjEl5xIziQXkoXkSnIjuassG8mUrlC6gppFxxXUH5pGUH/okXVjCAyRAdpQHRXaUO7aCdrGEBgiQ2IYrREw3MZcYYIwVIbG0AmGoZgQGJAD1E5PDJmhMCAH6Cm9MiAHqB0cvQACzl6Gr38JOHwZO6FluLam4alfhmvrlDPJhWQhuZLcSO4qI2LpKQeSKd1A6QbU/AmFQRgqQ2PoBHFjCAyRITGMHIxt2jLeNVYQhsrQGDoB7Mc4TCtwd53QGDoB7McFgWHkOqJRYT9OKPgNWrgEhsiA3zRAZigMRytfP6kkN5KPVo7oRWPwX3Ig+WjlM4fHZGLKmeRCspBcSW4kd5XrRnIgmdKtlG5Fa6ChYSXGvmiBa2ka25oFrqUTIkNiGNoSmgYjPiEdjPgLAkNkSAyZYbRGQi1ixF9QGRpDV4Cb6ITAEBmQgwTIDIVBGJCDBmgMIwdji63AgzRl/GbMOCZEhsSQGQqDMFSGxtAJIufgGP1pbHqW4UA65UTy0S3P7B8jf8pC8tEtx4ZrGa6jU+4qH1OQKQeSI8mJ5ExyIVlIpnQTpQv7MPzcCrxC09jJLON14COYOUAYKkMjgOXIUA37UFA3sA8XCENlaAydYOxYpPGceIHv54TIkBgyQ2EQhsqA8qBHYl5xAuYVFwQG5AA9pSYCjP6zQjD6L8gMhQF5Q5M0rgPYhQsCA3JQAIkhM6AO0MCdW6FzK3RuhU45SNvGEBgiQ2LIDIVBGCjRhAE/9kML3C8nJAao7oDCIAyVYaQjZzqdAAP+gsAwcjB8PgtcNtPYpyxw2ZxQGZBOAnSCtDEEhsiQGDIDcpABwlAZGkMnwBThgsAQGaBaAFCAisd84YLAEBkSQ2ZAEdAksAcXVIbG0AlgDy4IDJFh5KCiGWEPLigMwlAZGkOnBoY9uCAwRAb00QaoVKNYdFzQCTCduGCoruh8jSsRZuMCYUARkAMsLS7oBDAoFb2qczN2bsbOzdg5B51z0DkHMCgXNAbqSHnbGAJDYqC5Uj5nECc0hk6AGUQ9geZKOWSGwoB+cEJlaAyoxNE+OdJsLcfAEBk4B5FzEDkHMCgXVIbGQPPFnDgHiROFpaioRFiKCyoDCtcBnQCW4oLAMNIZu/AFfpsTMkNhGDkYL3gX+G2m4d5Z4Lc5ITAgnQRIDJmhMAhDZWgMyAF6CAzKBYEhMiSGzFAYhACWoqG7YH7QUPEwDhcUBmGoDI0BRUCTwGxcEBgiQ2LIDIVBGEYOsIMIb88JnQAG5YLAEBkSNTAMygWFQRjQR4cdPT1AUaNwAZ2QGDLDUD1cXAvcPc9KhL/nBTAbF6AIERAZEsNIB9ujJRRWIAyVgXMQOAeRcwCDckFkSAyZgXMQOVFYiu2EwBAZEgMKlwHYw0QrpMZAu2bwDU3YIoZv6ITIgEpE+5x7mKeCwiAMnIPMOcicg7IxBIbIkBg4B4UThaXoqBBYigsCAwrXAYkhMxSG4bE5DhfK6Sp6QWPoBPAWxXbv6RaKbdHTL/SCwoB00EfhGnpBY+gE8A69IDBEBuQAPaRlhsIgDJWhMXSCvjFANbpLhwJUfG8MXQF+pBMCQ2RAETogMxQGYagMjaEThI1h5AD7t/AjnZAYMkNhEIaqDQw/0gmdIG4M6KMNULRG4SA6oTI0hqEam8ZwA70qMSWGzIAiIAdJGCrDSGd4zBY4g14KMjdj5mbMnIPMOcicg1wYhKEyNAbOQeFEcTYKK4bnaScIQ2VA4UZXxiO056kXHqGdkBjQD6AA/uUXCAMq8fxNYwV0unb6j17AOaicg8o5qJmhMAhDZeAcNE4UlgKHB3AMnVAYUDgMGViKCxpDJ4ClwL45nqadEBkSw8hBRFeGQYnoiTAoF3QFOJPm4RNc4Ew6ITIkhsxQGIQBOciAxtAJYFAuCAyRITFkBqgeTQLn0Iwdd7w5OyExZIbCIAwoQgc0hk6QNobAEBkSQ2YYORh3gArenJ1QGRpDJ4BBuSBQA8OgXJAYMgP6aAN0qtGyMQSGyDBU4wABTqRXJZbK0BhQBORANobAMNLBhjucSC8Fws0o3IzCORDOgXAOMA85AfOQC7gjVe5IlXNQOVFMPbBgh5NoxsoVXqITAkNkSAyZoTDAxwR95/TROqExdIK+MQSGyJAY1AeowJM0J7Q2DMoFXaHBoFyAklYASnpCYsgMhUEYKgNKWgCd4PTeOiEwRIbEkBkKgzCod1CBj+lVUtidCyJDYuCSRi5p5JJGLinszgWdAHbnAi5p4pImLmnikiYuaeKSwvv0Aq7rxHV9enyhQjKXFNblgsIgDFzSzCXNXNLCJS3cqwr3qsK9qnBJC5e0cEkLl7RwSQuXVLhXCde1cF2fvmCoEOGSSmVoDDx+Kpe0ckkrl7RySSv3qsq9qnKvqlzSyiWtXNLGJW1c0sYlbdyrGtd147qGRcIhDZ6TvQAW6YLAgJI2gHqjl9Of9ILKgBrtgK7QT4t0wqhRHHGe/qRQcPqTXpAZCoMwVIbG0AnIH7700x/+BM5B4ESxGMI5K5xLJ3QCGCEc68K5dEJkSAyju+CUFM6lE4ShMiAHo03hQppxsgoX0gmJAemgPJjiXCAMlaExdAJMcS5ADhogMiSGzFAYhKEyNAJYFxzjwWs0F1Q8pjgXVIbG0AkwxblgFAEnq/A0nZAYMkNhEIbK0BiQAzQjrMsFgSEyJIbMUKiBYV0uqAyNAJOfca2q4LHYq0YxxbmgMAgDCofO17kSsTK6IDIgHeQAK6MLCgPSQa/q3Iydm7FrMwreh50QGCJDYsgMhUEYKgMnCksxKlHwCuyEzFAYoLoB9NaanJ6pFwQGFKEDEkNmwC3tDSCsoDI0Bs5B4hwkzkGKDIkhMxQGzkHiRGEpBJUIS3FBYsAN9PM3hUEYKsPoIeN0WfCI6wWYrlwQGJCDAkA6AhCGyoB0KqATwKBcEBgiQ2LIDMgBeggMygWVoTF0AhiUCwJDZBiqK7oLVkYVFQ/jcEFgiAyJITPgnQI0CczGBZWhMXQCGJQLAkNkQA7QjDAoFxQGYagMjaFrA8MjdUJgiAxouQioWqMBuysXdALsrlyAwhUAVSKcSycIA9JBDjAPuaATYB4yDmAFzqWXghgZEgPnIHIOIucA85ALGgN1JLzMOoFzkDhRWIrh2inwQZ3QGDoBph71BNwG74DMUBhQhBMqQ2MYRWhon7KRghIYIgPnoHAOCufgvOF/QmVoDJ1AOAfCicJSNFQiLMUFlWEUbpxISzifBAGcb4KcEBhGDxlrJsGLqRMyQ2FADtCVYVAaeiIMygWBAemgj8KgXJAZCoMwVIbGgBygh8CgXBAYIkNiyAyFQRTgyZrHubPAXzWPI2CBv+qEwiAMlaExjCKMU1+Bv+qEwBAZEkNmKAzCgBxkQGPoBDAoFwSGyJC0gfHi6YTCIAxouWFHIyzFWaNYy1yQGDIDClcAXIlYsZwAs3EB0kEOMA+5IDEgnQrgZszcjJmbMXMOMuegcA4wD7kgMnBHKtyRCuegcKKwFAGtgP2QCyJDYoBqdGXcjQuoRJzyXNAJYDbG6bLAT3VCZDjSKRvaB6c8l4LCIAycg8o5qJwD7IdcEBgiQ2LgHDROdFiKsqESh6WYEBjiAAyZnhgyQ2GQAajrMfWY0Bi6Alxgy7hEJHB0LeNgVODoOqEwIJ0KqAyNoRPg4ZALAkNkQA4aIDMUBmGoDI2hE+AJkQuG6nHuLHB0LeMIWODoOqETjAnGhMAQGUYRxqmvwNF1QmEQhsrQGDpB3hiQAzRjjgyJITMUBmGo1MC5MXSCsjGg5SKgUI0WYagMjQGFQ+cTrkRJDJkB6SAHIgyVAemgVwk3Y+VmrNyMlXNQOQeVc1ALgzBwR6rckSrnoHGisBQwXOl8m+wEYagMUI2ujJ1TmA04uk5IDChCBxQGYRhFiEgHd/QvBV0Bjq4TAkNkSAyZoTAIQ2WgHMAFdsJon3hCZigMo3DjRFrgAjuhMXQCWIpxuixwgZ0QGRIDclAASEcAjaETwKCMs0PJMCgXRIbEkBkKgzAgBw3QGDoBDMoFgSEyJIbMMFSPc2eBo2tJqHgYhwsSQ2YoDMIwipDQJDAbF3SCMQ+ZEBgiQ2LIDMgBmhEG5YLK0Bg6AQzKBYEaGAblgsSQGdByEdCpRtvGEBgiAwqHzte4EltlaAxIBznAPOSCwIB00Ks6N2PnZuzcjJ1z0DkHnXOAeQgAD6JOCAyRITEUBqhuAKgeJg0usBMCQ2RIDJmhMByFw7OvAhfYCY2hE5xvpZ4QGCJDYhjpoDh4PP2UG8mjmBkVAGtyQWCIDIkhMxQGYagMjYFzkDkHmXOQOQeZc5A5B5lzkDkHmXOQOQfne8mj75fzveQTAkNkQA4iABUtgMrQGFDSYTPgMzshMKCkaMPzJWUoOF9SPqEwcA6EcyCcg/MlZcD5kvIJgSEycA4qJ4rpSUaFwOicAKNzAQpXAZEhMWQGNCP6KMzRBZWhMSAHGGMwOuPwZ4fEkBlGOjgfKTA6F1SGxtAV4E07ITAgBxGQGDJDYRCGytAYOsH5VmIGQEEBVIbG0AnOhxFPCAwoQgUkhsxQGIShMjSGTgC7g0MmPKo6ITIkhsxQGEQbGN60ExpDJzhNjQAy1SgMygXCUBmgenQ+eMZelYhZzAWJYaSDAzD4zE4QhpEODpngMzsVcDMKN6NwDoRzIJwDzGIuKAzckYQ7knAOKieK6QkOF+AmW3DMBTfZCcJQGRpDJ4BBuWDYKux+45nVCYkhMxQGYagMjQChXHDaAp/ZCYkhXxERRDRag4hGaxDRaA0iGq1BRKM1SNVoDVI1WoNUjdYgVaM1SNVoDVI1WoNUjdYgVaM1yPCfnTKlGyjdQOkGSjdQuoHSDZRuoHQDpRso3UDpRko3UrqR0sV8Bucu8LidgC51/pkwoEEToDF0AhgdHGLC43bCkQGMt+FwO+VMciEZ3XZYH3jOlnHZVobnLGJdyHCcnXIm+dBUzx8LyZXkowpxTDY8ay/5mKxMOZAcSU4kZ5ILyUJyJZnSLZQuLAqOBOE0W8YFWoHTbDmrGHbjgsbQCbDGwZkivGHLmQ5MxQWVoTF0ApiKC0ZrnLWIuccFiSEzFAZhqAyNATkYBgF+shMCQ2RADtBTMCu5YOQAx2HwoJ1QGRpDV4AH7YTAEBkSQ2YoDEcOsL8LB9pLbiQfyWNTD96zlxxIPtLGpjFcZy85k1xIFpIryY3krjJCop9yIJnSjZQurAYOceAVW3A0CK/Ygqk+vGInRIbEAG0VAG2jc+B91QmBITIkhswwWgMnR/B9nVAZGkMnwJ7rBYEhMiAHaC3MTi4oDMKAHKCnYHZyAiYXOLKDU+sEYYACVDyMxAXjjiHk860RyIHkSDLSQHPAQOBIDM6pWH3DN/WSA8m4NgU5kZxJxj1SyEJyJbmR3FXGTeBTDiRHkhPJmWRKt1O6GPQ46oMrasFhFlxRBZu9cEWdUBiEoQ8Y4wFupYJjITxgOiEzFAZhqAxtQAF0gjFoJwSGyJAYMkNhQA4CoDI0hk6QkAMBBAbkoAESQ2YoDMJQGRpDJ8gbQ2DgHAwDAScwuKVeciF5JI/KGMbhkhvJI200zLAMlxxIjiQnkjPJhWQhuZLcSKZ0hdIV1Cw67rANgpMNuKRKQI8ctmFCJxjGYcLQhjMpuJcKjofgXjqhMXSCtjEEhlEpOBGCF+qEzFAYhKEyNIZO0JED1E4PDJEhMSAH6Cm9MOBo5OjS9Xz4dHSoup0HLSckhsxQGIShMjSGTnCeupzAOYArSIWcSM4kwwsDspBcSYZ3IeSuMlxATjmQHElOJGeSC8lCciWZ0o2U7hlyqgPgPhAAOMmPgMrQGDpBVneICs9SuAJUeJZOqAyNoROUjQHOCKhpuIhdkBgyQ2EQhsrQGJCDNOB0/DghMEQG5AAtjOeSL4CT2gYQhsrQGOCkhho9A8ecEBgiQ2LIDIVBGCpDY+AcDCtTUZxhZC45knwkX9GJhoW55ELykXZFJQ/zcsmN5K7ysC2XHEiOJCeSM8mFZEq3a7pwREWEoBpgU8aRZoXvKUL/1ACbcoEwVAJYjnFSWENQp8UK39MJhUEYKkNjGK0xjn4qfE8nBIbIkBgyQ2EQBuQAtXMGljqhE5yBpU5ADiIgMiCdYQrgVIr4PBUPm06IDIkhMxQGYagMjaETFM4BFhanHElOJGOdC7mQLCRjuxFyI7mrfO52Qg4kR5ITyZnkQrKQTOkKpQv7kJC5M3wU+hCswFgcVPiTTqgMjQDuXxnN2fQ6QoXX6ARhqAyNoRPgOlxGruHUcUFkSAyZoTAIQ2VADtC/4dQBgHPphMCAHAggMSAHDVAYhKEy4KLcBugE50W5EwJDZEgMmaEwCENl4BwMW9JQnGFKLjmQfCQ/tgcqXE4vOZN8pD32Eyr8TS+5ktxI7ioPA3LJgeRIciI5k0zpJkoXs5CCFoRNGVfCKjxOEfqnwuN0QmEQBr26WeE9eo54eI9OyAyFQRgqA1qjAzoB5hoXBIbIkBgyQ2FADlA7Z2CpExpDJ8BcQ9BTYEsuGHP2eEJhEIbK0Bg6AdYtEY2FdcsFY9WAiQecTCcgB2hTrFsuQA7Qcli3XIAcoHBYt5yAdQs+3fBFnYAcoLGwbrkAOcCwxrrlAuQAFd8rAxaVKHbvCvBFFXx58RzrBCxoIyAxYEmbAIUBi9oMqAzIQQF0goAcCCAwIAcVkBiOHPTz94VkIbmS3EjuKmMvZewNVbzXOiEyYB8B9YK9lAsKgzBUhsbQCbCXckFgiAycg8Q5wI4Jvo5wVhV83OCsKhn1j32RCxJDZigMXJ7M5clcnszlKVyewuUpXJ7C5SlcnsI1WjgHhXOA7ZCz2NgPOYstXB7h8mCn5ILK0Bi4PJXLU7k8lctTuTyVy1O5PJXLU7k8lWu0cg4a5wC26Cw2LM5Z7MblaVweWJwTYHEu4B7SuTydy9O5PJ3L07k8ncvTuTydygM31gmBITIkBtFi44nWs9jwTz2LkENgiAyJITMUBqRTAJWhHSEikJvDglzyYUGmHEhGGgKApgoYms7/0FUeb7Zf8tCEvx9vtl9yIjkfMnI33my/ZCG5ktxI7irnjeRAciQ5kUzpZkr3tAnDYsItVTDZg1uqYFIEt9QJmaEwYPsVjSzQhjaSyJAYMkNhEAbs8qKmMfIv6AQY+RcEhsiQGDIDcoBOi5F/QWVoDMgBWhgj/wLkoAMiQ2LIDIVBGCpDY+gEsBYXcA4Oa4F4DHW4qE45k3z0Dnz/h3/qlCvJR6/EvGI4p57y8E2dciA5kpxIziQXkoXkSnIjmdKF1cB0E06oIud/GfU3duArnFAnNIZOgFnEOEWoeFNVhs9FhavphMrQGDoB5goXjNYYPhQV3qYTEkNmKAzCUBkaA3IwWgvephMCQ2RADjogM4wcVNQO5hcXjBzUU8HIQUW9jeBSMPfD2XTKgeRIciI5k1xIFpIryY1kSlcoXVgj7N7B93RCYsgMhUEYKkNj6ASwRhcgB2ggWKMLEkNmKAxCAPvR0MthPy4oDMJQGRrDyHVDVcF+XIDfoIUxP7igK8BBVLAHAAfRCZHhaGV8YIZ/6JQLyUcr44MynEOn3EgerTx653hndcqB5EhyIjmTXEgWkivJjWRKN1K6WGtgewO+odLO/zLqr6NosBIXdAJYiQuGtvHGdIWfpwwvggo/zwmNoRNgxF8QGEZrYCGFV1MnZIbCIAyVoTF0AqwoOloL84oLIkNiQA7QUzCvuAA5QI2OFUXdzt80hk4w1hoTAkNkSAyZoTAIA+dgBJnC5368unrJI8jUJR/dcvjt1vHk6pQTyWM4oLy1kCwkV5IbyV3ltpEcSI4kJ5Ip3Ubp4mRlQyfEEcqGsY4zlA0NjUOUCzJDYYC2UR14PbXibBSvp05IDJmhMAjDaI1xUbLi9dQJnWCsOSYEhsiQGDIDciAAYagMjQE5GD1leIIqDJfSAllIriQ3kqFpjGI4dU4IDJEhMWSGwiAMlaExcA4y5yBzDjLnIHMOMucgcw4y5yBzDjLnIHMOCnIQAcgBqqpEhsSQGQqDMFSGxtAJYGEu4BwcFibAqo1nWKecST46AGz8cCedciX56AD4KAxf0ks+bMuUA8mR5ERyJrmQLCRXkindSuni1BbLXTiQVhxVw4G0jquxFQ6kExpDJ4AdweYtnEEr9mvhDDqhMjSGrgBn0AmjNbCTC2fQCYkhMxQGYagMjQE5GLUDh9AJgSEyIAcFkBmQgwoQhsrQGDoBLMwFgSEyJIbMwDnAxboEuZLcSB6+5qiMYZUuOZA87hSgYYZJuuRMciFZSK4kN5K7ysMWXXIgmdLNlC6sDbbf4UBasa8OB9KKrXQ4kE6IDIlhaMPiGQ+hVqyS8RDqhMAQGRJDZhitgX11eJNOqAyNoRPUjSEwRAbkALVTM0NhEAbkAD2lNgbkANULi3FBYhjp4LQYHqcTRjrYRITP6YTGMNLB9iLcTicEhsiQGDJDYRCGytAYKAd4PHVCYIgMiSEzFAZhqAyNgXMQOAeBcxA4B7A/WBbDy3VCYRCGytAIxvUWNCm8V8+hAO/VCYVBGKB5dHj4qJ69Hz6qEyIDSlAAmaEwoAQCqKygMdCYhY/qBM5B5hzkxJAZCoMwcA4yJwrjgp1muKFOyAwoXAcIQ2VoDCMdrKzhjTohMESGkQOstOGoWrHRCUfVCY0B6aBNYXYuCAyRITFkhsKAHKCqYHYuaAydAG5nFwSGyJAYoBrdBfYEyzf4pk6IDIkhMxQGFAFNAntyQWPoExreTp0QGCJDYhg5GPugDf6sE4ShMjSGTgB7Mhq4wZ91QmRIDOijDdBmjTb4q16AicoFgWGoHlfOGnxTUYkNzqkTKgOKgBxgoXQCDMoFI52xydvgunopSIkhM3AOEucgcQ5gUC7oBHljCAycg8yJwlJE1AFWQBd0AsxWLkDhMgBzOhS7FAZhQD8ogMbQCWA2BO0Ds3EqgNm4IDFwDoRzIJwDqQyNoRPUjYFzUDlRWApBJcJSXNAYUDgMGViKCwJDZICvKAYGpi4XFAZhgL8o2ud0SEVGT4/UEyID0kEfPZ1STygMwlAZGkNXgMtqHXv1DW+nTogMiSEzFAZhqASwFONmYoP/ah074A3+qxOEoTI0hk4AszFcghv8VydEhsSQGQqDMFSGkYPx1miD/+oFMCgXBIbIkBiyNjA8WycIQ2VAHx12FG6uV41i6nFBZigMQ/W42tjgzHpVIszGBYEBRUAOMA+5IDOMdBp6VeFmLNyMhZuxcA6EcyCcAxiUCxIDdyThjiScA+FEYSm2EyJDYsgMKBy6MszGhlaA2TgBZuMC9IMCiAyJAZWI9mmFFQhDZeAcNM5B5xz0wBAZEkNm4Bx0ShTurXWcZjS4t06IDChcB2SGwiAMI52xndTg3jqhE2DqccHIwdg2a3BirWN/rMGJdYIwIJ0EaAydAAblgsAQGRIDcpABhUEYKkNj6AQwKBcEBqgWABSg4mEcTsAE44LAEBkSA4qAJoHZuEAYKkNj6AQwKBcEhuGUu6EZh0GZkBkKgzBUhkYNDINyAgzKBYEBfRT9GpbirFFMPS5oDJ1gTD3ahs5XuRJhNi4oDCgCclArQ2MYbs0belXjZmzcjI2bsXEOGuegcQ5gUC6oDNyRGnekzjnonCi8x84ahffYBZWhMaBwoyufXqkYP6dX6gWZAf2gAIShMqASBdBJQdgYAgPnIHAOAucAviMXCENlaAycg8iJwucdHxY4nU4QBhSuAxpDJ4Dn+wXD9X2cTDU4nU5IDJlh5GCcPzW8ndrGjmjD26kXDIMyAemgPDkyJIbMUBiEoTIgB+ghuROUjSEwRIbEkBkKA1SjuwgUoOIlMWSGwiAMlQFFQJNIJ4DZuCAwRIbEkBkKw8hBRDPCoFzQGDrBMCgTAkOkBm6JITMUBvTRYUfhjnrVaA8MkSExDNVYrMLp9KrE3hi6ApxOGxZ3cDqdEBlGOsOhv+Ht1KmgMAhDZWgMnIOwMQSGyJAYOAeBEz29zIYVw9upEwJDZEDhMkD9z1om/7OWyf+s4e3UFqEAZuOCwIBKxG9O/7MTMkNh4BwkzkHiHKROkDeGwBAZOAeZE4WliKhEWIoTYCkuQOE6IDIkhswwesg4/ml4VXVCZWgMIwfj+KfBsbUl9EQYlAsyA9JBH4VBuaAyNIZOAINyQWBADtBDYFAuyAyFQRgqQ2PoBLAUCU3SoAAVD+NwQWPoBDAbFwQGFAFNArNxQWYoDMJQGRpDV8DbqW0cMzW8nTohMiSGzFAYRBu4wKBc0Bg6AWzIOHtseDv1rFG4rU4QhsowVI8jsIYXUs9KhNvqhMSAIiAHmIdcIAwjnXGu0+DQOhVQM8KhdQLnIHEOEucA85ALCoMwVAbOQeZEYSkKMgq/tQsKgzCgcKMr4/VTeJa3UgJDZEA/KIDMUBhQiWgf3He5FDSGTiCcA+EcCOeAPOVbIU/5VshTvhXylG+nb+oFnCgsRUYlwlJckBlQOAwZWIoLKkNjwBVNDAxMPS4IDJEB1zTRlWFQcIoAR9UJjQHpoE1hUC4IDJEhMWSGwoAcoKpgUC5oDF0Bbq8TAkNkSAxQPbqLYIKBfX+BcbggMiSGzFAYUIQOqAyNoRPgIu8FgSEyJIaRAxwT4V3UCcJQGRpDJziv9EZAYIgMiQF9tAEa1SjWMifAbFwQGIZqnDPB3fWqRKxYLqgMKAJygHnICZiHXIDr0AnAzVi4GQs3Y+EcFM5B4RxgHnJBJxDuSMIdSTgHwoli6oEzIzx42jDrFEw9TsDU44LAEBkSQ2bAbS0ket6mO6EyNIZOcN6mOyEwRAakg1aAQcEMEq+fTmgMnQAGBcdE8HmdEBkSQ2YoDMKAkqJTnPfsTtCbca1uG0NgiAyJITMUhqYVAm/Ys6Twhp0QGCIDlRTesBMKgzBUhsbQCSKXNHJJI5c0ckkjlzRySaMwVAaq63re1UWFJC4prMsFmaEwcEkTlzRxSROXNG8MgSEycEkzlzRzSTOXNHNJM5c0c68qXNeF6/q8xYsKKVzSIgyVoTFwSYVLKlxS4ZIK9yrhXiXcq4RLKlxS4ZIKl7RySSuXtHKvqlzXlesaL5rgI4HnVyd0AoS6uuBIB1G4Gx5ZxYMNDT6yE4Shjt90QGPoBIiQhwVHPUN/QwHeOrkgMXAOOuegcw4oKHiDX+2ErgC/2gmBITHIyGgAVIbGMAqHuobD7ITAEBnSgAzIDIVBGJCD8f1pZ+hvAQSGyIB0UJ4z9PcJhUEYKkNj6AQIuYnpSjuDgp8QGRJDZigMwlAJEDsP82s8roqoyA2Pq04QhsrQGDoBIuRhrgzf2AmRITFkhsIgDJUBOUAznkHBAWdQ8BMCQ2RIDJkaGJE5LxCGyoCWGzaxndG+UaNntO8TMkNhQOHQ+SpXIkJuXhAYkA5ycIb+PiEzIB30qsbN2LgZGzdj4xx0zkHnHFBQ8NbOoOAncEfq3JE654DigLd+vooUAZEhMWQGqG6AYZFgAuDnegHeProAReiAyJAYRhGw4Ohn6O9TgTBUBs5B4BxEzgEFBW94zXVCYsgMnIPIicJSYF0CF9gJkWEUTs7fZIbCIAyjh2C6DxfYCZ0AwTgvQA4KAOkIoDAIA9KpgMbQCc7Q3ycEhsiQGJAD9JAzKPgJwlAZGkMnOIOCnxAYhmr4ccHRFVGRGxxdL0DIzQsCQ2RIDKMI8MmCo+sEYagMjaETnEHBTwgMyAGa8QwKfkJmKAzCUBkaNTAMygkwKBcEBrQcxvYZ7Rs1ekb7PqEx9AkdLrCIwt3h6IpK7HB0nVAYkI4AKkNjQDp1QNhIQQgMkYFzEDgHgXNAQcH7+XrrBY2hE0TOQeREYSnGhnGHC+yEytAYoBqAdxXHcUeHo+uEzIAinCAMlWEUoaF9ztDf+C94pfGCwMA5yJyDzDmgoOD9fPH1gsrQGDgHhROFpWioRFiKC4RhFG74snW4wE7oBLAUF4weMlzEOlxgJySGzIAcoCufob/RE8/Q34Az9PcJSAd99Az9fUJiyAyFQRgqA3KAHnIGBQecQcFPCAyRITFkhsIwVHd0F0wwOioexuGCzFAYhKEyjCJ0NAnMBiCcob9PCAyRITFkhsKAHGRAZWgMneAMCn5CYIjawHjpdUJmKAxouTjgjPa9AQJDZEgMKFwBUCXC0XVCJ8A8pCMHZ+jvEyID0qmAzAoKgzBwDhLnIHEOKCh4D2dQ8BMiQ2LgHGRO9HwbGq1wvg19QmCIDFDdAMMiBVTi+QL0CY0BRRhGCI6uEwLDkQ6icPdwvgANBecL0CcUBs6BcA6Ec0BBwff57MYQGCID56ByoggwsaESEYHmBESguSAMwJBBBJoLEkNmKANQ14hAc0FlaAzIAfJ2hv5GTzxDf5+QGZAO+ugZ+vuEytAYukI8Q3+fEBiQgwZIDJmhMAhDZWgMnQDR74YfV4ejK6Iidzi6TmgMnQDR7y4IDKMIwyerw9F1QmYoDMJQGRpDJziDgmdAYIgMiSEzFAbRBo6IfndBY+gEiEkznC97PKN9o0bPaN8nCENlQOFG54Oj61WJeAf6gsSAdJCDM/T3CcKAdNCrCjdj4WYUbkbhHAjnQDgHFBS8xzMo+AnckYQ7knAOKidKcSf6+bLrBYVBGLB7jK5McSd6pLgT/Xy/9QLsEXdAZigMY5ca64Xz/dZLQWPoBJ1z0DkHnXNwxp04ITMUBmHgHHRKFC6wDZN6uMBOyAyjcGMJ108X2AsqQ2MYW/BjodbhAjshMEQG5AB5w/ENVkZwdJ3QGJDO6KN4hHVCYIgMiSEzFAbkoAEqQ2PoBDg2viAwRIbEMFRj+XI6umIhcDq6XhAZEkNmKAyjCFginI6uFzSGToBj4wsCQ2RIDMgBmhEnNhcIQ2VoDJ0AJzZnA+PE5oLIkBjQchHQqEZxbHwCjo0vCAwoHDpf5UqEt8kFlQHpIAfwNjkB3iYXIB30qsbN2LgZGzdj4xw0zkHjHODY+IJO0Lkjde5InXPQOVFYCnyMzndXL+gK57urF0B1AwyLhKlUPqNdnSAMKEIHNIZOALOB9cL5IuupgCJk9UwRsnoOnIPAOQicA4qQ1fMZIeuETnBGyDqBcxA5UVgKTOrhAjuhMYzCYQl3usBeEBgiw+ghWKjBBXZCYRAG5GB0ZTi6NqyM4Og6ITIgnQrIDIVBGCpDY+gEMChYsZz+sBdEhsSQGQqDMFSCYSk6li9wdO1YCMDRdYIwVIbG0AmG2ehna9fAEBkSQ2YoDMJQGZADNGPtBG1jCAyRITFkamAYlAuEoTKg5TC2e6Qa7YkhMxQGFA6dr1MlwtF1QmBAOgJIDJkB6VSAsILK0Bg4B4FzEDgHITIkhsxQGDgHgRONUN0AUN0BiSEzFAZhqAyNYUzD0XJwgZ0QGCJDYsgMhUEYjnQCioOHjU45kDwSyagAxNO8IDMUBmGoDI2hEyCe5gWBgXNQOAeFc1A4B4VzUDgHhXNQOAfCORDOAdY7+NDDTXZCZigMo6mxmINnLEKPdjzUOiEwjC6FxQ98ZidkhtGlxmWZDp/ZqaAyNAbOQeMcNM4BdlMuSAyZoTBwDhonOqYnHWtyuMlOSAwoXAEUBmGoDGO8YEELN9kT4CY7ITAgBxWAdBpAGCoD0umATgCjc0FgiAyJITOMHIx7Uh3etBMqQ2PoBGMWMyEwRAaojgAoGBUPZ9gJgSEyJIbMgCIUgDBUhsbQCfLGEBgiA3KAZsyZoTAIQ2VoDJ0auGwMgSEyoOUyoFKNlsbQCWRjQOHQ+YQrEbOYC4QB6SAHmMVc0Akwi8FZFHxmLwWVm7FyM1bOQeUcVM4BZjEXNAbuSI07UuMcNE70jPyNNj0jf5/QGDrBWO/0hK58xvdGM57xvU8oDKMI49JUhzPshMYwijAuy3Q4w54K4Aw7ITIkhsxQGIShMjSGThA4B4EThaUYV7A6/F8nVAYUrgA6ASzFBYFh9JCEdDCLuSAzFAbkoAKQzuiJeCt2QmBAOh2QGDJDYRCGytAYRg6G22KH/+uEwBAZEkNmKAxCAEuR0V0KFKDiYRwuKAzCUBkaA4qAJoHZuCAwRIbEkBkKgzAgB2hGGJQLOgEMygWBITIkamAYlAsKgzCg5YYdhS/rVaNY71yQGDIDCofO17gSWyeA2bgA6SAHmIdckBiQDnpV52bs3Iydm7FzDjrlAL6sEwJDZEgMmaEwUKLwZe3DAbDDl7UPT7gOX9YJiSEzFAZhqAzDVmH3G4+/XoAjngsCQ2RIDJmhMBzphOEF1s9XXk/AM68XBAaUNALK+C8FIAyVYTRWQSXCbJwAs3EBahTp4GHXUwFedr0gM3AOMucgcw5yY+gEZWMIDJyDwonCoJQTGkMngEEZfpwdvqwTIkNiQHdpgMIgDJUBOUCbwmwI+ijMxgWJYaQj6G8wGxcIQ2VoDJ0A85ALkAP0EFiXCxJDZigMwlAZGgEMytktYTbO9oHZuKAyNIaugKddJ6AIFRAZEkNmKAzCUBkaA3IwmhEurxMCQ2RIDJmhaAPD5XVCZWgEmKEMx+MOX9azRuHLOqEwCANUj84Hx9arEjEPuSAyjHRwoAfH1gmFYaSDQzM4tk4FjYGbMXMOMucgcw4wD7kgMxQGYeAcZE4UKxYclsCXdUJmKAwoXAJUhsbQCYZB2c7WHgZlQmRIDJmhMAhDJcA8BKeIcHmdEBkSA0qKCoFBuUAYKkMbT+WfiXaCw6AoBIbIkBgyQ2FAjaKTY7pyAqYrFwSGyJAYUB6MYNiQ4+QxbvBl7YcX5QGBITIMbcc52QGZYdTbcXp0gDBUhlGew1nsgE4AG3JBYIgMiSEzIAcJIAyVoTF0AhiUC0bLbVANg3LU2wGFQRiQTgY0hk4AU3NBYEBJCyAxZIbCgJIiBzA1FzQG5ADNCFNzQWAYOehoU5iaCzIDciCAkYOOBoap6ag37KF01CjszglYGV2AdFAHsDsXFAZhQDqoA0xXzq6M6coFkSExFIZjOLdLWycYsSwmhAEo9ohmMSExZIbCIAyVoTF0AsxDLkgMmaEwoKrQ9JiHXNAYOkFHSdGMPTBEhsSQGQqDMFSGpjD8X8Nw9DggMqCkDZAZCoMwoKQd0Bg6AUzNBYEhMoySVgFkhsIgDJWhMXSC8Sz9hMAQGfZ00rZtAGGoDI2hD0D1jvifEwJDZEBJEyAzFAZhqAyNoRPkjSGNRCMgMxQGYagMjWFPB+N3eMxeYlAxqphUzCruqeLLNvxnL7Gq2FTsUzzMzSWiRCieIN8ZUBkaw6gfgQLYlwsCQ2RIDJmhMAhDZWgMnIPGOWicg8Y5aJyDxjlonIPGOWjoixjQfWMIDJEBNYoB0DNDYRCGytAYusJwlFVADiogMiSGzIAcNIAwVIbG0LXpx8OxCoEhMiSGzFAYhIH62/Cn3aEDAkNkGOmEDTDSCQFQGIShMoyShgjoBLA8FwSGkYOAjCbkAE2SMkNhEIbK0Bg6Qd4YAkNk4BwcNqkiZ4dFukRR8bANBWJTsU9xWKIEMagYVUwqZhWLiqJiVbGp2KcomppoaoJ6RJ+FHQpocNihiAYf4QAvGPEAJwSGoS2i8UaIvy0indoYOkHbGAJDZBh1H1FzLTMUBmGoDI2hE8DaXIAcoM/C2lyQGDIDcoB+AWtzAXKA4Q1rk1BVsDaABGtzQWCIDIkhMxQGYagMjWHPAebow9X2EoOKe9qYew0n20vMKu6pYjEwHG8vsarYVOxTPCzOJQYVo4pJxayiphY1NViShAzBXqQEQG1lQGYoDMIAbaPxEsZ+qoDEkBkKgzBUBtQ9cp07QdkYAkNkSAyZoTAgBwVQGRpDJxjhhbeMZpfAMHKQUaOYwVyQGQqDMFSGxtAJYFMyKh425YLIkBgyQ2EQhsqw5wDLwuF6e4qHDbrEoGJUMakI3WhU2JE8xneCHbkAsyP8GVZFFySGzFAYhKEyNIaukGEtcgeMuiobIDMUBmGoDI2hE2BuUgIgMESGxIAcREBhEIbK0Bg6AWYtFyAHCYAcZEBiyAyFQRgqQ9M2zZFaO6eNITBEhsSQGQqDMJAVypibXBAYIgNKWgBkhTJboXxaoRNQo1AAK3RBYECN4jeF7GAumaEwcA4K56BwDk4rBIAVuiAwRAbOgXCiMC8FlQjzcgLMywVDtaArw7xckBgyw0hH0JVhXi6oDI1h5EDQRzGZEfRRTGYuyAxIB50PpuaCytAYOgGM0AWBATlAD8Fk5oLMUBiEoTI0hq5QYHdgkQqsizRAZWgMnQDW5YLAMIpQN0BiyAyFQRgqQ2PoBLAuNQACQ2RIDJmhMIg2cIF1uaAxdAIYlNIBmWoUZuMCYagMKNzofCVzJcJsXJAYUATkANOaC4QBlZgB3IyZm7FwMxbOQeEcFM4BDMoFhYE7UuGOVDgHwonCUmA5UiQzFAZhQOHQlSutTUoNDJEB/UAAmaEwoBLRPrw6Krw6Krw6Krw6Krw6Krw6Kufq6ITMUBiEgXPQOFFYCmx8FViKCzLDUI1DnQJLcUFlaAwjHZzwCJY9FwSGyDBygKMbgUHByYvAoFzQGJDO6KMCg3JBYIgMiSEzFAbkoAAqQ2PoBDAoFwSGyJAYoHp0F8FsozVAYIgMiSEzFIZRBCzzBGbjgsbQCTAPuSAwRIbEMHKA1aLAoFwgDJWhMXQCGJSzgWFQLogMiQEDsAMa1SimHifAbFwQGFA4dD7hSoTZuKAyoAjIAeYhJ8CgXIBKRK+q3IyVm7FyM1bOQeUcVM4BDMoFnaBxR2rckRrnoHGisBQ42BJMPXB4JDAbJ2DqcUFgyAzQhuqFcbgA2kaiFSYA5yvDyXXfpdgAjaETjIEecFIx3oJViAyJ0hkDff6XwiAMlWGswMoJnQCnNRcEBqqDivkBil0xP7iAamd4vIbxOPsBKE8EoDwJkBgyQ2EQhsrQGFCjo1sOj1eFwIAcIG8ZOUDhMnKAImTkAHWdx5o2n39WGRpBGfUWTkA66AdjbAfsQg/HWIXCIAyVoTF0gmECAjarh2OsQmRADtAKghyg3gQ5QO0IcoDakVFSbLJWnB9f0AlwinPWKE5xLsgMSOf8jTCgpKiq2hg6wTABAVu2w0tWITKMkmJaNLxkFQqDMFSGkQPsqw7/2Ql9YwgMkSExZIbCgHRGd2k4Jd5OwG8qoDAIA3LdAI0BuR711mBdLggMI9fYVx2OsQqZoTAIQ2VoDCMH2N8cjrEKgSEyJIbMUKh2ItKJgE6QNobAgHQSIDFkhsIwRj1MZ8NZ8AWNoRPgLPiCwBAZEgNqNAMqQ2PoBAUlLYDAEBkSwzEaK6Y44y1YBWGoDI2hExx2RyEwoEbRWLAuFwgDSoquLI2hE1SUFP26BgaUFF25JobMMHKAfeEGu3NBZWgMnQB254LAMHKQ0YywOxdkhsIgDJVh1DXWWeNh2FCxDh7OtDug2GMfdkJmKAzCUBkaw2hT7B8MN1uFwBAZkIMEyAyFQRgqQ2PoBGFjCAwjHexKdVikfIIwVIbG0AlgkS4IDGhTJAqLdEFmKAyjpHJCZWgMnWDMkSYEhsiQGDIDSpoBjaETYCaEuVjHTOiCyICSCiAzoKQVIAyVATlogE4AW3VBYIgMiSEzIAcdIAyVoTF0AsyRLkBdI9fCvUq4Vwn3KuFeJdyrhHtV5V5VuVdV7lWVe1XlXlW5V1XuVZV7VeVeVblXNe5VjXtV417VuFc17VVheCDux5vpP3f6h//yf/8BrX+sBdD0Q6pTalPqkPbfpeN3GG1l2zkfPMZLHFM0mVKdUptSv6TxMYcUphSnlKaUpzTTSDONNNNIM40008gzjTzTyDONPNPIM40808gzjTzTyDONPNMoM40y0ygzjTLTKEhj7y+lTEmmVKfUptQvSbYphSnFKaUpzTRkpiEzDZlpyExDZhp1plFnGnWmUWcadaZRZxp1plFnGnWmUZHGbq/aNqUwpTilNKU8pTIlmVKdUpvSTKPPNPpMo880+kyjI419WPQyJZlSnVKbUr+k8QLqLh6e9FtQMaqIdA4X+C2rOFIa93rHTP8Uq4pNxT7FMcM/xaBiVDGpmFVEakd+g0wxatYjfnbcIYhZxaKiqFhVbCr2KWI8QwwqRhU1taSpJU0taWpJU0uaWtLUsqaWNbWsqWVNDaN73P3F8IYoKlYV2xQxiCHiZ8cVBAzZcQ8YYxZiU7FPEcMWYlAxqphUzCoWFTU10dREUxNNrWpqVVOrmlrV1KqmVjW1qqlVTa1qalVTa5pa09SaptY0taapNU2taWpNU2uaWtPUuqbWNbWuqXVNrWtqXVPrmlrX1Lqm1mdq8LI8xaBiVDGpmFUsKoqKVcWmoqYWNLWgqQVNLWhqQVMLmlrQ1IKmFjS1oKlFTS1qalFTi5raaRSOedVpFIYoKlYVm4p9iqdRGGJQMaqYVNTUkqaWNLWkqSVNLWlqWVPLmlrW1PDVHutlfLYhBhWjiknFkbOxKMSYh9hU7FPEmB/TQox5iFHFoXfMATHmIRYVRcWqYlOxTxFjHmJQMaqI1I61wjnmj1l/LSqKilXFpmKf4jnmhxhUjComFTW1pqk1Ta1pak1Ta5pa19S6ptY1ta6pdU2ta2pdU+uaWtfU+kwtbZuKQcWoYlIxq1hUFBWrik1FTS1oakGTwJA+Ps0JQxpiVRGdYIh9ihjSx3IuYUhDjCrOyUiKWcWi4pweJAzpPP61qYjU+jEx31QMKo7Uypi5JxWzikVFUbGq2FTsU8SQhhhU1NSyppY1taypZU0ta2pZU8uaWtHUiqZWNLWiqRVNrWhqRVMrmlrR1IqmJpqaaGowFceaC46NcSy6yrHIwuL6cOPBynpIaUp5SmVKMqWxqDtWgVhHD6lfElbQh6cMjhiGFKeENOq5wIBUpiRTqlNqU+qXhNXzkMKU4pRmGnWmUWcadaZRZxp1poHduMO7Ahtux90N7PIfgVKwxX9I2N8f0sjB4QiDnf0hpSnlKZUpyZTqlNqU+iVhaXCKQcWoYlIxq1hUnElh5h/GrWXs34/LyNi9H3d/sVMGET875qvYJYOIPB5TV6zZx0O92B+DGFSMKo7UxnOy2BeDWFQU/duqYlNRU8O+/fgZdu0hRhWT/m1Wsago+rdVxaaippa1bFnLljW1rGXLWrasqWUtW9ayZU0NuyFDLFq2oqkVrcmiZSuaWtGaLFq2oqkVrcmiZRNNTbQmRcsmmppoTYqWDaN1vJGL4QqxqaipVa1JDNkRIgNjFmJSEWXL14riFEXFqiJSk2tFARH78BDD/FvswUNMKmpq2H3Hz0TFqmLTv+1T7JoajAHEqKKm1jW1rql1Ta1ral1T6zM1rCgCbhsHFaOKSf82q1j0D0TFqmLTv9XUgqYWNLWgqQVNLWhqsCVtrihOsaqoqQVNDbZk+GTAlkCMKo7UxukRbMlwnIEtgThSG84ssCUQR2rDKQW2ZLikwJYMpw/YEohRRaQm14oiDKcF2BKISK1dK4pTRGq6ohi+G5h+jIM8TD8gRhXHJ3p4P2D6MbwVMP0YHgmYfkAcE4JxXI7pB8Q+RUw/xjEoph8Qo4pIrc759XBgwPwaoqhYVURqfc6vh4j5NcSgIixXuubXp5hVLCqKilXFpmK/xHR+FtOcSYdtzqQhFhVFxVGKw8nhnElD7FPETBoiphX9mlSfYlIxq1hUFBWrik1FTCD6Pg2TsdeNjBxt3i8Js+IhhSnFKaHEcddQx+657sI34rHFMiWkchhfpDKONyDtv+v0uzz/psy/OaQwpTilNKU8pTIluST09pHDo4ZvHRQc7XGeDIRxC0KmVKfUptQvCUN8SKNFi5x1CWm05+H2j+E9pDIlpNHPk4FdOjIyjjpgnMbdjDilNKU8pTIlKDuaLaRblbD/8m//+o9//fd//td/+e///m//9E+Hkusf/vc//Jf/+n//4X/99d/+6V/+/R/+y7/8x9/+9pd/+D9//dt/jD/63//rr/8y/v+///Xf9v+6D4V/+pf/uf//XeH/889/+6dD+s+/6K+39z9FXKrx6yOqzlSwzy29KpIcR9hDRZIWSUX6Q0U0VKQrE6kXVbAPKqcCCVcdSFIFuyX4Q0F+ryCM4KRDw94y7a2KYtXD4c1z1kNNb1VYVdnKrIjW+tuqrEaDxqNvokH3xbaqSPUPFe1pa5jF6Kpha2+LEQwdRdLVILuoOiT+qSJYbXp8sM82LfGtCqNf1Xo1aUtZy1GqW0PLVzGahPcajK4ZhyMvWnRf/U0d+aUYRtccwX+QiV7fZ0KMJh0OAWjSvTK1c4vca4/6vj2sXlG3y9bsYn+rolsW7/CyPi1eDu9UxO1pm8bwuE1jfNqmx3nkOw1HfMhTRd+6fjz27Tp/QYan1lmQEt4WxOicsc3Px/ZWgW0qusxOEdLbFq3PbbelI8d4FSTvW/rvv4Pd/AzFOUSoNvZZ3B86klUd7WoR2QppSP6OkcLsGKmWtx0jGd2zjxik0FE2Nhh/5iMZ+dgPMOYoqZEMxhdtUq/BnnOpb9skGf1z30PIV5v0IKSj/anDMJ/7NLGp7cuFvonxz4lWqgt6R3vaO+yyyCYzG1L627Jka+I59i1Pw0FTnX1z4U8d4Wn/MHup0wTa9dGzzh07T5le6yNbH9i6zQ9spfp41WFZ0uHXedZH096e2p/9I4s1YuaHPkfqpz90WNY0zg5yeDe919GseWy6rOm+L5Te67Cs6TjaRMP8YZGbv4M4TWEJz01hiU+7ut2w/aqMnMiMvVZosTqppDY/k/l95yjlecMWedywZnX0uU7ap6Xv+2hpC6qjP68O2Z5XhzkJm8P+CGz5PhtGHy3jEijmYYE+Tz+GrJWPLmnOBjcjH0YvFZn5kBrem0HTqO8TwkvJfmzCM+wXgyyGFolz1Mp+jP5ehzWFGXfX0FEDjfyvdFSdBjWapf/Q0a2l8PzK1f3/tFbDn1PkanTUmucHqpZY3uswrGnScUtWbB9Ff2qwbOk4VziHHC0if+gwpqYlXp+FkrZ7GvqciIXyVoPZu1K6WnXfgnvfQ6tYa6c8CyJyU0etuiiv8Z6Opgv7tr3XYY/ZurU5Zvetm7da2uPlk5mPGuY23j7LTe8nhM3opfvyolzNu8t1e/PNb48XUKblaF0/k5SHHyUpzy1Hk+eWo9WnlqO155aj9aeWw9Tgshx2Dx2xgM8e2sv78dbj05Fi9a4SYpozhpjvjfp95jJnPy3390vrbs07ki6deNd7X6b+qUOejjYzF3meY+xTuu1tLsztijq7+RHk9O12RbcmpSX1uUfKFv1Fx3jC4L3piHMl2f5Q0v1KSp45KbknQ0l8vm8yHhN41tvtWm2zf0gM91pGkuowW8Za+2xttkzg/ZvXzm5mpOlEnQzyz4wY9jSkPj/Y+Y+++nIysXXruGoakZRavafEWyXBPuBw9rMQf7OfpU0PZLd2zwLgEZNzOyrX981rHTuFHmet7nLv70yilZFQ5ho7GYNmPCfx/ril6ikFz8f27+efSozOWmUWplbewf1GSZN5SNCEV2KvSqzzJ3c/s05ufP3MHr6Z5rnBGHnWYcM+b8l6HieGkmx+9KYhqZUb+LVGyuPvt2mK5mnYLtV7Iy/N3cK079m97/Dx8RG+mY08J+37Nld6n41kbkzpJkpK3NvlCyUjtCGaZWubocTax61zf+sI5vh2/RCs86gRHOnUQRuoqXyTj6r5oGOPn/kw7WqdQ2bjjbbXnFhDJoZpziJv0v8YMuaJ1H5YSktuKW8GTbCOpGLZ1AepZCMn3ewlXXvJ+0VmsA6lvCvVYJ1KeZeq43WAZ2vV8VjA08VqsI6lfKtVW4VruWp/v8vcHdonwMZX0zqVCiNe6tlD6Gv16jtinUol3Q3ZDEeabG74h+l/Emumwfvy5S2WTdxGEG2Mu+OlkreHSqZpjVHdUHIw7HNZsboqj1dXthkZb85dK5L03oxYp1P7iU7WPVXt8b1/oaPOFpZaDB3WXtWI2HEWhiab+5nsixKjRrqa+P0cMxtKrH1/meN339yV9+bMOqEqZZ72l9Loi/XFPFGmn9A+UTPmidYR1V7SlPWsnir2pcOLuauaqKNFIyfZOo4N6i3USUl6VVKemzTrFMFp0qQuMGnSlpg0c+DkMKfPfy4n/twMDOY5lbfPWwdVzj5fFpy5BeugyT0fqfnxfKSWBfMR85zINx8xVfjmI3XFPLH2Be1inVY526WFBe1inVY528VU4WsXawqAt/kw+PeV0fspgHVcte+rztVV7cZS0Tyv8vYQ68DK30Pa8x7SF/SQvj3uIaYKZw8x77vMz0Ms3dhM6NZkNcc6LTvVx49vd8/Pv93WeZHz220eWnm/3b3+/rd7XF48h2+W9/NVa+Nq/6CSF8CW6ls1cVtg4sdFz6cDOG6PtwLitmArYNxEfTaAbRULTHycTi/pj3nzi4kfXel9p1enu8ReZj/apa3oIQsmATE8ngTEsGASEMPjSYCtwtdDrOV3zWme07C7bX+t0WKeKc49eHbfedFgOkVNr4R98k+nRfk1G+YuQNWVZpe3Suz6CHM+U4U+Ez/qwzKqVe17bZSR8nphyfp8b9PZg3wbfqoIz1d30bo55V3dRWs7wre6s/PhNSCxLDAgUR4bEOumjduAWMdWTgNiqnAZELuTOffexkfk6d5bTCt6anreU9OKnppW9NT0vKemFT01Pe+paUFPtS6izoMz9tn/YVHNO1TO1W7MK/pHXrBPFfPjfaqYF+xTxfx4n8pW4esf5mdbkjpodKuHmK5ASW+mUU5+KLEOrNzdzLpI5e5m1nGVu5tZx1XOblbygm5mze2c3cxUseCD6Vy3R+uw6ot1+4ot8ygL7qlEeXxRJcqCmypRHl9VsVUsWJVJoalMersKsY6qssw1VeaL/j9m/2Jeop7+ZvvJNS0PXzqZdVYV+7xLuU8WqVL7yyaEdaFqnxxMj5XMmxCvbydU065Ob7Fd7G+37+xpxHTlDRt7AbwaePNSlXdLxTyq8g5e66jKPXitwyrn4LXOmdyDt9bHg9dU4TPw5hRg7FKcBr4aPaRtC3pIWzEFaCumAO35FKCtmAK051OA9nwKYBszvT+c6V7CD2PW2oLlrnk7yrfcNb8z2zzfyVsx1u49PP/OWDes3N+ZnhZ8Z6zTKvd3pq3YMe8LbgLG/vgqYOwL7gLG/vgyoK3COXitMxW6MBLp8u1rN0vbgj2AtC3YA0jb4z2AtC3YA0jb4z0AW4Wvce3h77PMaVvgBJjCYydAOx/eThYWfP5TePz5T2HB5z+Fx59/W8UCC/LHqay8tyDW3aiy5XlAtJErwotrhv3p7mU+G7lt+e0SMdnv+11t2+jNsB8DxrxdNX2iS2enipfqiCu6aXzeTeOKbhqfd9P4vJta8yn3hy4umMWkuODcP6XH5/4pLTj3T+nxub+twmmDrG+lPpRTUnp/NpzSgrcqUpIVjVufN25b0bj9eeP23x253g9Mjr/8gdn6fEopUJ2+rg2TdUrl/MBYp1TOD0xe0U3z826aV3TT/Lyb5v6rNigHfWgrWb2jrFhJlRUrqfJ8JVVWrKTK85VUee71bz4zXOYzwyJvH462XkTRN80z35X98RqtdTa1L8LnHCYkvmNevlDCJ3YpGkrMi3+u99WTmDv+ngfWTRW+17iTdY/K+Rx3soa+7z3uZB1NeR9Z97dKNVrF2z1yutnHwnyV8gxT90ZJtZ9UccVlSNbZlPd1b7s4ReaLKGIWxzqbqvOobRepw7/cHLCVtDgdOlvuhhJ5PnitkyXn4LVUOAevdY/KO3itsynn4LVOptyD190qxuA1u0efzsu185vnr93DPJryRUlI1rGSs22ta1Tutq3P29a6SO19JtxU4n1V37oC5X5Wvz9/N922QfOd3tr6TUPWQlcDUt/fgU7mPaqS9ekfOt56fezGNu76GnTq1ZhU9QUmtT83qf25Se3PTWreHpvUvK0wqX2BSbW7x3x7YC+zvO0eecuPu0feytPuYarwdY9sXp/ydo/2vHv0593D3yq3u4euk7et3ZsuZ711sGfY6GPWqZQzalYOC/ppeN5Pw/N+Ghb00/C8n4YV/TQ876cfesfTHYz9TG1q2Mr7yG7ZOpOSOC/oSU7vP/vZOpXqYXq284zs9av/oT6q1ke7Wae+iGTZvDuVNz2ip7tCP3S056PWPJTyjVpLhXPUpuex0XJ6HBwtW9em3KPW3SrGqDV7hz6SG3kb9isdZW4axpLehkjLyfQjna99li79po75/JKpwx4trqVpth/6c/X0/DgIYM6me78reF42X/nzRM+zc+Ecb/lxgMlsnUZJmNsWEqhZf4w3vxK5qSTPiyiSaXn8U0l/3C5mWTSMTWh3yxJnF5N95N9VMoeLxH63adJ8oFP4bdwfSqwDqd7mjkHnnva6h2Irce7m2ErC3Jjue0PdVBLnnL/zMcx3Spz7Stm6NuXdV8rWEsYZpMzMR51Hfb1KfJ8Pv5J+V8k0i7tY7ikJ+3xZ56lbs9SYTTxPL3umZd2XnU2fQI5F7iqZN0p3JcYA9H/B369SzXBUuv9YjZWdOft3hY3N1vGUe9FuKknbPBZOsRlKfI9SxpqN0ixY+dfnK//6fOVfF6z86/OVf12x8q8LVv527xC1zC3f0pHGa4ZnYXq9q2N7rCPp1CrR5/s7HaJRJdp7HU2er4dsHb71kFmWrJ0sS3uu42YfS3F+pFJu79vWvDQlQpHTrFFnZaSW2UH2z8T7jKTnjWvrWNC4NWhZjIFrnoBs0xUs/PmAw1eVqlfRmtHL+uPX07P5ul/XQB+9GksRKx957h1mSUZ1mN/s6Q2SE59/vnyzi3VlyrnvV6wbU85vdtny02+2qcL3zS7b87P+sj0+6y9be/7N9rdKNVolPt73s3X49v2K/SSfy4x96OmuPbsSnvfS8LyXBnm8Z1fMcynP3pCdC+dYsY6lnGPFuijl3Y6xlTiXlLYS5wrZVuLcGLKVODeGPtSJb2PoQ504Y9dba3V/8Pr2dGPIzodzY+gLJf2uEt/GkKnEvzH0oZ/49nS+MM5vp3bFvDfl2o4xZ1Q566wspJtbKVmjamRjK6WYQa2cPsfFuvPk9Tm2i9NndK0Stvdu+iUvcKEuOf5ycfZpxtxxC9kqTv7NnlbynLuX0sXIhnnTZ65lKEhffLlrWKyrU06raOZielLwSuZnLqzIp2FOM3Pkd+j9KsLWkr4g1cp2T0mfy/ZdZveUr5RoYOvArnrfVGrVkOdG01rb5AtU7Kv2rl+IFt4WxVbibBlbibNlPihxtYw9coWWIq2/H7nWKZU3VmiRxy7Udj76vGQT+h9nB/kbJZn2Q9JNJbVpyHBeC/xQUhZ8ZsxgVM7PjFkcb2TLYoajkrrNJbzU0N82sa3EFR6zmE/8OcNjFvMelTM8ZqkLLqaWFeGoyvNwVGVFOKryPBxVeR6Oyu4hzsiHxTqrckY+tHX4Ih+WtuD19WK98Od9fb1YL/x5Hz0q1kUq36NHdo04gx4UMyCVuzD1eWEWPPFZ2oLXU0p//HpK6QteTyn98esptgqfDVkRsKz0sqJd5Hm71BXt0p63S/tV2+4NaSfbgkf+ZcUDf7LigT95/sCfrHjgT54/8CfPH/izPw/O19dlWxI1TcKCqGkSFkRNk/A4apqEBVHTJDyOmmarWGBFnFHTJCyImiahreghC77/Eh9//yUu+P5LfPz9t1U4e4hZpa6oaRKfRk2TuCBqmsQFUdPs+vBFTZO4IGqapMdR0yQtWEDIilhU8jwWlayIRSUrYlHJ81hUsiIWlTyPRSXPY1HZncy5bpe8IGqa5BU9NT/vqSuiYkle0VPz856aV/TU/Lyn5gU99XHUNCkrFlQr3vmTFe/8yfN3/mTFO3/y/J0/ef7On/3ZdkZNk7IgaprIgqhpIgtCpogseIxa5PFj1CPI0+NuJo8fo7ZVLPhgetftsiRqmsiCd/WlLoiaJvVx1DSpC6KmSX0cNc1WsWBV5ouaJnVB1DSpz6OmSV0QNU3qgqhp0hZETbOnEb6oadIWRE2TFUcq0hZETZP2OGqatAVR06Q9jppmq/AZ+LIgapr0BVHTpK+YAvQVU4D+fArQV0wB+vMpQH8+BagLoqZJXxA1TfrjqGn2d8YZNa1uz6Om1W1B1LS6LYiaVrcFUdPs9nUO3roteOu/bo/f+q/bgrf+6/b4rX9bhXPwLoiaVsOCPYAaFuwB1PB4D6CGBXsANTzeA7BVuBr3w/D3WeYaFkRNq/Fx1DQ7H95OtiIcVX0ejqquCEdVn4ejqrH8rgVxBrWp8XnUNPvT7YyaVtPjqGk1PY6aVtOKbpqed9O0opum5900lee2cEHUtJpWzGLSgnP/mh+f+9e84Ny/5sfn/rYKpw1aEDWt5gVR0+qKcFT1eTiquiIcVX0ejqo+D0dlj1zvB6bEX/7AOKOm1fI4alotj6Om1bKim5bn3bSs6KbleTct/VdtkDdqWpUVKylZsZKS5yspWbGSkucrKXnunmq+a1/nAVXeP+70gfnihlrWe2F5b6O3Sqp1PuW9oVbN86kVF6H3ygyzXqv14p+pRBsn5XxTiXZ4KVu/qSTN8bufV70PjVXt0Efe1qm/3TplOiHtB+tWcT44VE8vgtLDu6t/n5TMC6+7TF5VL0os/3CReUV03yJ8f+u+WgdVOerDCn84EL+82V+tg6rQ5xc8buHtC3HVOqfyvSFWrVOqGOcttRhrfrsrW5v5qFpX585d5qeVv1ETsl7g3YdAfavG7LI1zSLtq1Kjy1q3qpxPiNZu2ljXc2TVPq3yPPRkqvA99FStkyrnE0vVOqryPbFUrVMm73Nk/lZ5/xzZh97hekLU1OF8QvSTju2xDt8Lkc06qfrjWbRyr06dT5l+0OF6yrRt5g0T12uXH3S4nomzy5Lnnft9WRfe56P+dj5cT6r6ddwcc84nVVtY8KTqh87u7CDhlxvG9xxqs06pvM+hfsiI6znUZt2n8k1lmnWbyvscqpkP33OoHyeqQhPV/Gai2qzbVN7ZrqnE95yRPU2tc797F9939vj8KfUWHz+lbqrwzYNafP6UeouPn1JvccFT6v5WsWyyuYiZ3+zQ+/u5Q4oLTKG1inH6lthKdNNsF8M9JWHTB2qyuZ6yclKSPkIo9xdl9GZW73J7UaZeSPsCrRhqrCKlrvUS5Ga9jDgHp5I/nlhN/kWz08I3ezm0qRlot4bOvocwu2wwvt758fq/WadV7o9mXlClZtPOpwz3Vk43u3zY9IW3/Szv9j5EKDQrqrdHTogbTa6MkWNGl54BzOk+w8sjMx/e3ZpnVse7W+9erGvWzSrv412mEufriubdfe+baNUMqhh06y3dff/L6c/UrHOrImkeSwjNjF6a13y6i3yiI70j+t37X3XeV903vt6fjzT7GcAFSoLozrfQacB3Surcg983WaKhxLwEMAdelnsq+nyKjCfwX6kIG+2sSjGUWIuaLPoScKcjlv5FnXZ9ArBHq59Z56P6OFtp7ea7aqLvqgmtNl90NPukZ4bfo+lVDK9vd1mvqkV9Pjvm91fNWk3Px7/5rkKghxUC772/vnttPpyTYtGds/cXo5rpP+Mrjv2qmgZVLmxWv1AhcfpoSMz3VLgK0usCu2wq8ZpU817VCiVuu2wq8drlVh7bZUuF0y7b6zynXW7tuV0269Rpl+3rt97R38PTQfPhSRTP6LdVuEb/BxW+giwY/bYS78Dtv63EPfpNJc7R37ft6eg3VfhGv6nCO/q7da3CO/rNOnWPfutWhdBD4rR8jy9lMd/enzuSmQMa/3irqixYUvXt8ZLKfr7DO3jLgiVVD+GXlXgHr63EO3jD4yWVqcI5eMOCJVUPz5dUdp2uGLx9BjXr5f3LKt28VRX0VlWkIFw/Bu+KB6K7+Xafb/Cad+a9g9dU4h13sfyyEvfgNZV4B691buUcvJYK5+C1VLgHbwrPB69Zp97Ba/mLx64HPb3F98PXul2Vtxl4Lv8RSSh/8zCSd/imx+t/+00j7/A1lXhHXuq/rMQ9fE0l3uFrPsDnG76WCufwtVS4h691ZuUdvmadrhi++zn8fOQ19PePmnTrilVu83GF3Cks6Y/h21cM37I9Hr59xfDtK4ZvSb+sxD18TSXe4WvftHINX0uFc/gWWTB8rVHjHb5mnXqHr/mOV5qHiSFVOo34cwe/Wzet8nSPynwTQKpfRZkn3+yG852K6RdR+Gnlb1SMmAk4EqFnYm6rKDdViMbMuVkXMutC7tZFnQWpd+uCVdysCw7ueLMu6qyLercu2ixIu1sXrOJmXbRpMlq9m4v5EHprN3Mx9gRhQe/WBau4m4sZoK4bJsd+88/p6mYrcV4d6va5UtePY7GUWDupUv+OEX69yWwXxumfZirxOv/ZOXE6/314wsx1kGKq8B2k2Co8E0r7jSznhNJW4p0L9vjLStwTyr7gGLX3x8eopgrnhLIvOEbt/fkxql2nzgml/YCZcxW224nH56j242PeURMW7F/upcm/rcU7bj5ocQ6cXUt9OnJsHb6hY+vwjp2wWVGqnIPnQ8W6l2PmC2B6ETF2Ks/LAy17eaznqoK+JB448o68KjE7Ct16oaoN9VWJMX4kzxiiJd1UMa9XSGt3VcyXQLa3ufjwqNp0DinbH8uI12xYi/4y74hlyUuU9HdK3O/MpW0zepl1UBWyxqvOqb0vjvUAoGzzUpME8of+qcTqqnsnn9c8QtnaEjX80oN8s6PStVqMF2vNd+90L6OHt5P5vTTt6YLAfrPO+wlNSz5+Kfy2Fv8nNIUVn9CUn39CU37+CU15xSc0PfcF+FCx7k+odQC3pb9vql/8+MJmPgqY9e3q+G4Mhy2bLwPNG0EcdP71nQbzHT33ZDo/9uWz38DzWoLcVozhLL+txW8JTC1uS5D7c0tg6fBaAkuH3xKUuMASmBXrtAQfKmVOUHq8XbHzlZNey/PGMXTYYyfNsI/778JNJVHfsE+bVasLzq5sJSEkvReY282shDBbJ4RW7mqhGVvqt/NS9KZjocsw32oRvZHe+u0S6fBJ0SqRyHO7JPLcLomssEvy6902zQVtSKXerRSnXTJ1OO2Ss3FMHeYU1FkWU4ezLM6psGVjzZWK18baayavja0rOmtdYmPrEhtbl9jYusTG1iU2ti6xsW2BjW0LbGxbYmPbr3dbt41tC2xsW2Bj2wIba+6UO8ti6nCWxbljb9lY80DFa2Ptox2vje0rOmtfYmP7Ehvbl9jYvsTG9iU2tq+wsWF7bmNNHU4ba+pw29iw/Xq39dpYu1J8dsnW4bNL3sap5d4hvK8otgpXSbzeBJaB3VZsFGwrNgpCWNBTTSVuA/tBi9PA2lq8BtbW4jWwH7Q4DeyHEnkNbFxgYOMCAxuXGNj4693WbWDjAgMbFxjY+NjAfvCDm7ej90OItwFFbRX66Cy/WfONY6HzibUPSnxP8Nk3EXwfnPK4Zb33IcyGXbBr8uHOjPeDk9OCkWsp8X9wbC3eD46pxf3BMbW4Pzi2Fu8Hxy6R94NTtucfnLI9/+CUBW9g7Fp+vdu6PzhmpTg/OKYO5wfH2TiWaTNvavoMrKnCZ2Cd90UtAysrDKwsMbCyoqfKEgMrSwysLDGwssTAyhIDK0sMbF1gYOsCA1uXGNj6693WbWDrAgNbFxjY+tzAmi9Z+AysqcJnYJ3vaVgG1nzpxGtg7TdXvAa2reipbYmBbUsMbFtiYNsSA9uWGNi2xMD2BQa2LzCwfYmB7b/ebd0Gti8wsH2Bge3PDWx47Fphq/AZ2PDYscJ+B85rYMuKQ7+44MFBW4nbwH7Q4jSwthavgbW1eA3sBy1OA/uhRE4DG8NzA2vqcBpYU4fbwMbw693Wa2DtSvEZWFuHz8B6G8cybdvjotgqfAZ2e1wQ+5Vcr4G13+v1Gti4oqfGJQY2LjGwcYmBjUsMbFxiYOMSA5sWGNi0wMCmJQY2/Xq3dRvYtMDApgUGNi2wS+nxoZ+twnXoZ0WsS2HGiEqJL4fm18a1rnM5YhDZD+67mtVW4WpV77P/hgo7IIPzY/MhNIT3Y5MX3Do0lfg/NrYW78cm1xUfG1OL+2Nja/F+bOwSeT825fllWVOH92NTVlyWjeXXu637Y1OeX9+wdTg/NuXxLsOHgDWej80HFZ6PzYfQTPPVKREK5dlf21bMF6/jvG+7y/QQyGtAo12P5RDV5rPIoQcOBVheKsUK5O0MR2SpcIYjMlX4whFZbwhEbziiFQ8RxBp/W4v7ErOtxXuJOdby3ELX8txC17LCQte2wELXFWGJzH0s7xMAsT2PS2RtQbmfNQ5pRb9v+be1+EdPW/GeVmzP39MydXhHT1vxnlbsC97TsivWO3qsRZs3QuFenufBsPLzqF75eVSvvKAgK6J65bpiAPf+21r8ZqAviE+wL4ceByiwdTjNgKnDbQbSVhaYgb4iSIF199/9EU0LwmqZ8z7v6FkyeUwr4mrZWtyjJ62IrLVreb5JkJ7H1rJ1+EfPguhaHyrW+6Sr9RirM0bA/mfmnMATJMDW4YsS8EGHK0yArcMXJ8Cvo9zV4YoU8EGHK1SArcMXK8Cv4259+KIFfNDhChdg6/DFC/DruFsfvogBH3S4QgbYOnwxA/w6bufDFTWg2k85+6IG2EqcUQP2LV7r4NMZNmDXYsWB8z0TahbHGTfAVOKNG2DnxBk3oJpfCNdSzVbhWqp9UOF6tDGueL41rthrSWX7bS3+yaapxT3ZtC5teSeblg7vZNOMAuWebFr3QN2TTbNivZPN1FYs1crzqBt5wWmBrcTd7yX+thb/6JEVpwVJnp8WmDq8o0dWnBYkWXBaYFese6lmKHHHD0jVernYGT8g2cdKvvgBybq55YsfYKtwxQ/4oMITP8B6FNcbPyBZL8t74wd8oeRt/IAPvcwZPyCZkaKc8QOSdbDljR+QzABc7vgB36h5Hz/gw26LL36AdVfCGT8gWRfanAuDsuLV8LLi1fDU+m9r8X9C25Kzgr7grKAvOCvoS84K+oKzArtiV8QPyCFNAxkkvT8yTFY8Ll/8gGSdfDjjB8iKYFx5QTAuWRGMS1YE48pLgnHlJcG48pJgXHlBMK68IBhXXhKMK68IxpVXBOMq1h352GalpC3TxC/k1/JYC/Q27Ulo5F6c/3Tkk23JOLaeTXWeX24LxrGtxD0CQ/ttLf5xbGpxj+MYno9jS4d3HFs6/OPY2jh0j2OzYt0udCu2lHKsj0dPXLClZCtx9/u0/bYW/+hJKzZkc3q+IWvq8I6etGJDNqcFG7J2xa74Cu4rfJmLfXKrf/0Kmkrypsf/m0TjU5p/XYu0MjeVWtUCyTc6+jytkh7rTR26udXLex1mh/Vd37B1+K5veAeOdVfQtGveO8y2hXVeK8t5wQuwphL3tbIPWpzXymwt3mtlthbvtbIPWpzXyj6UyHmtLJfnDxdn5xOq5W4+/N+M8uvd1nutLD9/3faDDqddev6+7YcptbMspg5nWZxTe8vGbise4tlWPMSTV4TjMpX4bawssbGyxMbKEhsrS2ysLLGxdYGNrQtsbF1iY+uvd1u3ja0LbGxdYGPrAhu7IMJRXhDhKC+IcCQrIhzJEhu7IhyXqcRvY9sSG9uW2Ni2xMa2JTa2LbGxfYGN7QtsbF9iY/uvd1u3je0LbGxfYGP7cxtrH/b6ymLr8JXFe+hs2diyIshRWRHkqKwIx2UqcdvYD1qcNtbW4rWxthavjf2gxWljP5TIaWNLeG5jTR1OG2vqcNvYEn6923ptrF0pPrtk6/DZJW/jmLZNynMbK+W5jXX6xpoR5xfsx35wovba2BURuUwlfhsbl9jYuMTGxiU2Ni6xsXGJjU0LbGxaYGPTEhubfr3bum1sWmBj0wIbmxbY2PL8zMvW4bSx5fGZl325ymtj44rQPmXFmVdZcuZVlpx5lSVnXmXJmVdZcuZVlpx5lQVnXmXBmVdZcuZVyq93W7eNXXDmVRaceZXnZ14fLp96nlL8oMLzlKJ9m9cZrPODEl+wzg/Pgji/Oc9jcbifJ7HOAM3XY7xngPY7Nt5vzoq4XKYS/zenrngr3tbi/ubUFW/Ff9Di/ebUFW/Fl/b8rXhTh/eb01a8FV/ar3db9zenPX8r3tbh/OY4G8e0bduC/eltwf709nh/2n7fzmtj84on0suK0FymEr+N7UtsbF9iY/sSG9uX2Ni+wsbK9tzGyvbcxpo63DZWtl/vtl4bK8+jBH3Q4bNLsiBOUH4ejyM/jsfx4aVa56Pz7bm3h/fFXKtGzQeNvZbeflrZaeklLLhCaypxW/oPWpyW3tbitfS2Fq+l/6DFaek/lMhr6ePzm9+mDq+ljytufkv89W7rtvTx+QzU1uG09PHxDPTDW/pOG1ufn0R63/Q3Aw4tOIn8EPzBa2PTis6altjYtMTGpiU2Ni2xsWmJjU1LbGxeYGPzAhubl9jY/Ovd1m1j8wIbmxfY2PzYxn4ISeMLOJSfzqabPN6atlX44srJ8/hNdYHjtK3EbeZXBOgylfjNfFkRV87W4jbzZUVcuQ9avGa+rIgrJ/L8yXhxdv1yNx9+My+/3m3dZv65Vfqgw2nmF9glO+Zf14eWj2eKpxr5Qsn+w65KqE5erntLtbPSNsrKPS05HC9XoZvE8O7iuX1i7q0T28/DXSdtSZ20x3ViPRDSe9HnxRtNByR9o0Q7bG/xvRL7CYptvh22y/TV+EqN76EEW4XrnYQPKjzPJJgXo70t80GJr2Wy/d6st2VMNb6WsVW4WuaDClfLZMNXRZKGwUg0dJN8oyTOJ013JfWtkmTGlMvzmZOYg87E5SXeplivGOJe0zm1oTeCfiqxHLTmi6YtaT720+QvdLQZpaBJsHRY92O2GTY7Bmqb/KMwxqhpcpnVRs43PzJSrYOPFOY6K+3V+rZ9v2ib+rZt7E6S5lfij0gHX+kocT4CtRu+t33E9GoqXdeNnaLMfqlkvkxnKUlWPHFfZ03N6Gddg9T29oeHVvxCSUzTOsdyV4mukjq/SPydkiAaqaSVu8WZz3PtJYvvlVhhGHvV4IdV3n+xvlDS7yrpOpXv7z96H+oka50UMSrWNPNNI4TQovzHwLFCc3Gcobd2MVlT8NrrfFK8s2FMr4YxmA8J0xPr2bACcXv+zarm04W+b5apw/nNqjE9/2aZDvXeb5Z1quX+ZvnbphptY/aSPl/AD/uqzWjg9vhb8Sknc7slbrzIelViPWqXZgvnzWqdZL5w6Qs2ZOdkPLaKnNA70T9zYlXJ3mE37bDtXr3GEOa0JLRs1GtZUK+WT38vbXa1Goxebx6yuerVtK8tTK/vFlp6a1/tr5Zz2fhBiW/ZaCrxLxtDtU+T1uhxPqFo6/A9ofhBh+sJRfOaQtUznPbewvbnK8ea24KvsLWh5v0KWzq8X+ESFnyFrZAp3q+wdUXP/xV2t02910d8C0dThXfdaG3uu9eNthLXXMCOsunpqdZMz7tqNHU4l2qmDu9KLS5YqLl19Js6nMu0JZ8Ys1a9K/G4YF8hLthWiL9cFu+mQnzeUy3L7u2pfh39pg5fTy1hRU+1a9W3K2HPIJybEtbLhK5NCevoKW+zr+8zGn7o+3VqaAXkSnF+6VLi2dA3OtL0EEipvZ8ampe0XAd6Vn2krqfpG1Xp36kPc9tZn8gvgUb/1l+1GAurJDMEexK+CvuixXxFxVUj1oJXo9ruRy56mP5SH6aGObvkAHavGuznSqaXUCj8pv3LG/Cmjhx1QhfTWx2hmoGvemwyV7ux93c1ai2Y61xi7psj5LGx9xS3jr0aNioOzafi9lqe8nzkmjqcI7fXx/3UujmnQdx3sb3T0B739Pa0p6f6vKebOrw9vVmXsbw93Yp2sPfRuQKKFM8shi90FA2+Xsp7HfZoqXX6N5VGnis/RkuzXop1jhZbh2+0tO25VffXSEhvayRnc6nddamt9RFv62jPddD24Q8d1sl3mCuH/Wc0p2vZryNKnjqk3tQxHRtiku29DrOfJo0InOSmDp19xFSf66DYR686LGc+2eapmWwc2PRFR+nP29bU4WxbW4evba0XTPdtLJoVhgU6yk0d84RpF+s9HVW36mqJ93S0eZiyn2bcrI9ap12vdJZyX0e7WZbt6h+phZv9o82QZfvPbrZty0119Lv5mP2jyd22nUHCdrHfHHNV5yBW25o7udvc2070rfxSx6Y68nMdMd21QXpZIrab+UhaH6U/z4dlC8sCu14W2PWywK7nBXY9L7DreYFdzwvsen5u161QyGVr8+Rj63Jr/lFSv+pjF415kDk/nXOYxCfT8cfqw6oR7wlbK+ZifTrf7oNYrKxY7qqlXlpq6bT50F6VmCuhpishPu6rr0qs6bI6uuzGMRpKzEopGu6wVqtSTC1dq7a/b2VzXSZhNnKQaK5U7SDgHm81OyNTxZGRZmUkm5v2c7s9dGqelxFo3nAKM656Du8zYukoGli9cAu/6rBi3hRRayJN7ulQb6jjWPatDrtpcpoX+yTn21rm8Nvl/r5O2uPd4fZ4d7hZe7Kh0WWgvr11TWmW91AP83h6P22r93TEOU/sMbZbe8NpXqLbZZrzftW2lbwXagndGLzWBSnvfpepw7nf1bZf3e/6s0bi/XptqiXdHHlVtzR3meaLP1vHcmv2to6pw9s68rut80eN1O1261TSEt5qsU54fBbN1OA7BbBKsm/ITvfdFgzbHJqVE9+ZiK1jN4v6talCO/DfaanTCWmXJdzVopa+8i7LF32tRZ2StGSMYfNiUctz2bjLvd3Ssq8bp3sXX2KLL7NXt44Q7+ko0181Fmqbb3Ts+Y9zIs5rnNeZuHnry3nkbSop+yHaNceKjX0avlGSpuNMSeSp+kNJ354fr9o6fCa6b4+PVz9UyFzDlhyKVSHd2s2fboSy0c7RTy2mA+/cFhTaJX1dfH7IiN4f5cX0l8XR5z729VK4rWUe2Ao7en2tpU0ttPz82e2tHZM8d49LNpWkp59QW4XrG2oWxXuUbivxnqV380qP8yw9mIe+2/R7z38OnfqalfjcIpk6nBYpPn6PwrplvNujud1SI4+95tchuvFTY3qrYy+L6XDhdPfqsS349llKJMxxQzObnxlJ24riWNet3MUxsxKmlQ58gBzCa1+zXpNIukVIJq3KF/kYt8zP2R4v2F7zkRb4jplKuj4e1v84Jng10LaSWa29bv22kjSV8GHUDyXmqyV5Gmn2Pz3m5X8qsaav2/zgxF2focT0HJ+f8t7YV+GrOmlasZ32TH8o6Tn9tpY/LgiyE8hrrdha1JUkRlr8/R0tYm/R6Q5dvKtFN9jD/jW8qyXPS0a7eSuWlgUxiOzKTTLX5/vZ//usFHOK4rupVJ7P2MrzGVtZMWMrS2ZsZqAqr63u2dyQcl3V72XBJcFenl8SNHU4LwkOB/qnR5hdnl8S7LLikqC/baxLglYncd7U72IeK/lu6lvPB0WZNnoXaVLwej/eVFLVW3fv/feUuG/qmzkZD4xde1qWEmtmv3Wd+O0yP1b1jZqQs37/MnuZfKkmZFWTjZvcZs2krtUb5Gb1ekOs9ceX/s3h431LwdThfEqhW1exnE8pdDNUlfcpBTMn3lo1W9cXhe9Dd90SvRfJE/Pven3QWtk3O26PwaA3ZsKfNv+baU6ZMyV2NP9upjR3+8gu/VDxYSo88xFSvT2hzvN+xj5tCium5ZYWe+U0p8K9kYPGzzVPX7C71RfsbvX8uzqce/Z2pc5estevWJX6/PDA1BHGi+joI7JZ/dXUIvNQJkjqd7W0ooer5XZe+rxAE7ct3NTi3rqw86LuXqG29yXaM5qfL9I/aHEu0j9ocS7Sdy0L3sb+ULnq89FCuF0tPoP9qVp8BvuLJrIMthV9x7fTHDcrBpZ3p3nXkhfsNAdjKVfLnBRXCXweWPxKWsjzBaoU800lZbZxK3+cSby2cXjuumVnZL7F3gr7TP7IiHX25cvIBx2uz2ncrEMr51fMykaT+RpP49gfP5rXevHQudVmqvBttZknkt6tNvulQt9W294wbcFWW66Pt9rilp6/irkrefwqpq3Dt9UWt/T8Vcw4HDKebbXFLS14FfOLtjG22sxO4ttq2zOy4FFM6/DAvdVmKvFutdkxHZxbbWZOvFttZVuy1Waq8W+1fVDj3WrLfcFWm6nEu9WW2+NNITM2tXOrzdTh22qLm/WIk2+rbdcRn2+12Tnx1mpfsNVmd1f3Vputxr3V9kGNd6vNnOb4ttrsmZJrq22T5+sc69jLv86xzr38zrHWNnWcV3fTbrdpDlu/UFKnK1rqfEftVUkIz7/o4bGzvq3CN5k2S+KdTNvV4Z1M1xWehtFclpOvfqjvmzea55p6kalnXlDnb5RkstLpppLa9L0tnsb+rNmyYgzXBW+6BfOBJ6kaQ0tqeN/I1vZyndsM+2en36varMXZZ49W1bZtRdW2FQ6HZiwBme8hRhExur6lpMwvV5Sa3yrZy5OX1EpZUCtiOubou927HN5FfgvSVszMo72lq5eBKz+el15rxVw7aTPXbKwE+4rtgr5gu6Av2C7oK7YL+oLtgr5ku6A/3y741EvmBmis1mLFUpJC1bfJer2tZHuupBZ1mJf3nT5swbn9UW5WbCKP7H0CeVeJ6MZy24ziPI+p9UmJ8210szh5ftMTH8r8zEn99ZzoCNyP4RYouTsA97ODOpW0993enliLvvhco2GWPvR7b0cJv908NegwNqySeXq39yJa6BfDVttZ6fpemdFTQqiPd3PMoyr3bo6ZE+duzoeZUhKdKZW3513mtkWgjnJoabe0OE+8zNClzmMVe/3lnCeF+DjmoK3DOU8KsT6fJ5m3tJzzpBD7gnmSv22MTRizkziPVUxXJe+xivXIj/tYxVTiPVaRuuBYxcyJ91hF2pJjlQ+LN+95iFkk73mIqcR7HiLy3NaX5+chpg7neUgwn5dzfkFzWfEFzfl5rdYF5yF2d3Wfh9hq3OchH9R4z0M+bPvpZUl5/4ZKtO9H7btAjbSUW1q8zqkr7jsnM5Ri0OiSyXAbtp6YrzKXGbXG926ye5VYay/RpxOE3UpfMuK9bEl3UPd//kJJnU6y+zbX9lZJHOGFflfLboI37WvtrpZa1b21R0uLUS91vrxX+aDnKx0U17G0mzrCcFM7P8g0/P6OFjH3QT2urR8qtus5Qo9Gf7OevSxtVkpptA/Tu1+HSNCzXlpI9tfS1O3xYW8xw01rmKpI5xk5lteMxMeWoJgLr6C9ZJf5O/h6r9d8YjUW3SPj87PttTzlcXmqtfNRZrzMfQkot1ToYe8u5nsqXAWxTpncJtpU4jauv6/Fb6JNLW4TbR15eU20pcNros2jN7eJbnWBiTYr1mmiYwwrzEDfno6eaJ2M+syArcJlBj6o8BWkPjcDthL3ALavXK/Q4jcDpha3GbBeZfKaAUuH1wz0vsAMROsJMbcZMCvWbQbMAaxbbJSPEl9VWFe209x2zH88pJ1fipPjggVX3B4vuGIuC4axqcQ7AGPYfluLexjbWrzDOIbnCy5Th3MYmzr8wzgsWHDZFbtiGPd5C+mPF+R/DGMr+mwJ87XWEun26o9hXNOKYRwfT8qj5VXnHsZ1xXc0Wgcqa7T4h7Ht+OgdxtYsxTuMLR3eYWy+sugextY9Ivcw/uDb6hvGpuN/1+OdTpe2fw5k65pX3mYIpP2EJr4fyNY1Bv9ATo+3CaIZ4sY7kMuSIWhtT6/R4h/Iphb3QM7h+UC2dHgHcg4rBrJ51OQdyGbFrhjI+0n8vFIRejAGsnUzKrcZjiXvluH9QG5LBrJVIOdAbisGclsykEv8bS3+gVziioFsbQ57B7KlwzuQzU1q90C29tzdA9m+zuccyKbXRponkvtBLJ1kvGz+R+uuV54eU5kaeO8zX+go8wicfXK+1DGdJArHqvpKh8wXtv94Z/+2jnJXx6wPuV0fMutDbteHvjheb9cH67hbHxzd7W59aGiYers+2ixLu10frONufbRpQVq9nY96GcTW7uajz/Cs/XZ9sI7b+ZgX3rplg6q5HeVzg7OVxHmsuy/t3nuwxWifUHX9aBZTi7UNq/eG/njbKn9RHKf3mqnE6xpo58TpGhgt723nYYypwncY055PNntbMNnsS9Z7Pfy2Fv9ks684k439+ZmsqcM72ewrzmRjX3Ama1esc7KZthVnIGl7fCabtgVnILYSb79PW/ptLe7RY2vxjp5kvR7hHD2mDufoMXW4R0/angc9+FCx7qWa+byd3mWMncrTX77nyXr7IYX5RsG+icOzrVclZkehOzJUta+XvZP1hqHMBzWEH+X4SsW8hSEUGPFLFdfAqdvbXCTrIlbZokZc/2Nd8ZoNa0egzGtlmR/leKCkv1Vi97I5zUq7GTZ6mXmbK+tLGDm198Wxni+UbV6AksBvcvxQYnVVftkjlK0tUUNvov6oXHO3RaO1Zho3L7stZtXSJkcP7yf1yXxRwLUwSHHBbmdacnKY0vbbWvyf0LTCjSCl524Epg7vJzStcCNIaYEbgV2x7k+oFTNkS3/fVL86BaZk3vOeo4ee9X7dMU3ZDPo6Lw1F3jV5ielrHT36J9P5sd92SguWomnJ0WNa4pZkavFbAlOL2xJYbxh6LYGlw2sJclthCcy3A72WwL6257QEdqXMCUqPtyt2vpXSa3neOIYOe+yk+Rbb/rtwU0mcZ7G7PqtWVxxsmUqCRhjep13tZlZCmK0TOMLwl1poxpb67bwUvQxZ6I7Nt1pEL67TXe9vS6TDJ0WrRPL8PNbU4bVLsuI8Nsmvd9s0F7QhlXq3Upx2ydThtEvOxjF1mFNQZ1lMHc6yOKfClo01VypeG2uvmbw2tq7orHWJja1LbGxdYmPrEhtbl9jYusTGtgU2ti2wsW2JjW2/3m3dNrYtsLFtgY1tC2ysuVPuLIupw1kW5469ZWPNAxWvjbWPdrw2tq/orH2Jje1LbGxfYmP7Ehvbl9jYvsLG5u25jTV1OG2sqcNtY0c0rN/ttl4ba1eKzy7ZOnx2yds4tdw9y/eVxdbhK4vXp8DS0RfsFXxwPnHa2BwWdFZTidvGftDitLG2Fq+NtbV4bewHLU4b+6FEXhsbF9jYuMDGxiU2Nv56t3Xb2LjAxsYFNjY+t7G2S9y8Y104ztxXXnX6XC2/hvONj6HzIbYPSnxv9X24rOD85pTnbeu9NGG27YK9kw+3a7zfnLzgYQJTif+bY2vxfnNMLe5vjqnF/c2xtXi/OXaJvN+c/Pw9DVOH95uTV7ynkcuvd1v3N8esFOc3x9Th/OY4G8e0bebNTqeNNXU4bazzhqmlo6ywsWWJjZUVnVWW2FhZYmNliY2VJTZWlthYWWJjZYGNlQU2VpbY2Prr3dZtY2WBjZUFNlYW2FjzGQynjTV1OG2s8zkOS4f5WorXxtrvtnhtbFvRWdsSG9uW2Ni2xMa2JTa2LbGxbYmNbQtsbFtgY9sSG9t/vdu6bWxbYGPbAhvbFtjY8NzPwtbhtLHhsZ+F/bCc18bmFWeAZcUjhqYSt439oMVpY20tXhtra/Ha2A9anDb2Q4mcNrZsz22sqcNpY00dbhtbwq93W6+NtSvFZ5dsHT675G0cS4f9uKqvLLYOX1m8j7yadrousLH2a8BeGxtXdNa4xMbGJTY2LrGxcYmNjUtsbFxiY+MCGxsX2Ni4xMamX++2bhsbF9jYuMDGxgV2KT0+A7RVuM4AzdiMYYaWSomvi/54XdKMrzO7O0XUeM1Fe+5zYutwfm/aY58TO2iD83vzIQiF93uTF1xFNJX4vze2Fu/3xtTi/t6YWtzfG1uL93tjl8j7vSnPb9CaOrzfm7LiBm0pv95t3d+b8nyvwdbh/N6Ux3sNH0LjeL43H1R4vjcf4kDNJ6lEKAroaxyoEcngbdtKnJdwd5leB3mNnbTrsVyk2nxaOfTAIQT/vN1shthyBj4yVfgCH8njZ4LMIFDuwEd1xZ3kUsNva3HfbLa1eG82l/r8kS1Th9dC1xWPbI2HNx5b6Loi8NG2IrJjac8DH20LIjvGJc9jlfbrWvyjp614ZKu0549smTq8o6eteGSrtAWPbNkV634XwHLF8UZDLP3xqxpmkAPnS5Xpediw9DxsWFoRNiytCBtWlrx3aWrxm4G+Ir7BeEz6oRkwdTjNgKnDbQZkWxDfwK5YrxkofcFHVBZE67IcityjR1aEA5Al0bpkSbQuWRKtSxZE65IF0bpkSbQuWRGtS5ZE6zIfi3UGFZBgzglcQQVMHc6gArYOX1ABU4czqIBbR7mrwxdUwNbhCypg6nAGFXDruFsfzqACtg5fUAFThzOogFvH3fpwBhWwdfiCCpg6nEEF3Dpu58MXVKCbT1w6gwqYSrxBBcR6t9AdVECsky1nUAGzON6gAvbj6M6gAmZOnEEFUni832mrcC3VPqhwveQYVrzpGla86SpmpMAlWvyTTVOLe7Jp3eHyTjYtHd7Jphk2yj3ZtE4t3JNNs2K9QQWs+9j+pZr1eJv3HdSwYPSkFfv8Ir+uxT96ZMVpgcjz0wJTh3f0yIrTApEFpwV2xbqXalY4AG9QAbGuvHuDCoh9rOQLKiDWLS5fUAFbhSuowAcVnqAC5rvMzqACYt018gYV+ELJ+6ACdi9zBhWQan0unEEFxDrY8gYVEDM8lzuowDdqjKAC9m6LL6iAdWPCGVRArNfsnEEF8oqnxPOKXX5pv67F/wltS84K+oKzgr7grKAvOSvoC84K7IpdEVQghzQNZJD0/shQrChdvqACYp18OIMKmIsU72S6LojQVVZE6CorXG/qEheEuiRCV10SoasuiNBVF0ToqksidNUVEbrqighdwXxDv81KSVumiV94jbhpXeAKbdqT0Mi9OP/pyBdM9xD3OLa2cpwudJZnh9uFrq3YDKqh/rYW/zg2tbjHcdyej2NLh3ccx23FOLbubrjHsVmxbhe6FVtKNcrT0RPDgi0lW4m738f+21r8oyeu2JCt6fmGrKnDO3rSig3ZmhZsyNoVu+IrmNI8DkmJ3Opfv4Kmkrzp8f8m0fiUWidea7Tsq965qdSqFki+0dHnaZX0WG/q0M2tXgwdVof1Xd+wdfiub3gHjnk1bcG1sg8W1nmtrOYFb8KaStzXyj5ocV4rs7V4r5XZWrzXyj5ocV4r+1Ai57WyWp4/ZVydL6qWu/nwfzPKr3db77WyuuC527rgudu64Llbe0rtLIupw1kW59TevLrbn9vYD2tAr41dEaPLVOK3sbLExsoSGytLbKwssbGyxMbWBTa2LrCxdYmNrb/ebd02ti6wsXWBja0LbOyCsEd1QdijuiDsUVkR9qisePKsrojRZSrx29i2xMa2JTa2LbGxbYmNbUtsbF9gY/sCG9uX2Nj+693WbWP7AhvbF9jY/tzG2oe9vrLYOnxl8R46WzY2rwiRnFeEPWorYnSZStw29oMWp421tXhtrK3Fa2M/aHHa2A8lctrYFp7bWFOH08aaOtw2toVf77ZeG2tXis8u2Tp8dsnbOKZtk+fPfNk6nDbW6RtrhqFfsB/7wYnaa2NXxOgylfhtbFxiY+MSGxuX2Ni4xMbGJTY2LbCxaYGNTUtsbPr1buu2sWmBjU0LbGxaYGPL8zMvW4fTxpbHZ1725SqvjQ0rwvy0FWdebcmZV1ty5tWWnHm1JWdebcmZV1ty5tUWnHm1BWdebcmZVyu/3m3dNnbBmVdbcObVnp95fbh86nlK8YMK19O95m1eb/hOW4kzfKcsCMkhC0JyyIKQHObrMV4/C/sdG+83Z0WMLlOJ/5tTVzwXb2txf3PqiufiP2jxfnPqiufiW33+XLypw/vNqSuei2/t17ut+5tTnz8Xb+twfnOcjWPapW3B/vS2YH96e7w/bb9v57WxaUVIjrYiRpepxG9j+xIb25fY2L7ExvYlNrYvsbF9gY3tC2xsX2Fj+/br3dZtYxeECmoLQgW1BaGC0vOQHOl5SA77pVrno/PtubeH98VcS4d5m9Br6e2nlZ2WvocFV2hNJW5L/0GL09LbWryW3tbitfQftDgt/YcSOS19j89vfps6nJbe1OG39PHXu63X0tuV4rNLtg6fXfI2jmnb6vOTSFuH08bWxyeRdsgFr9dyXeFR19OKzpqW2Ni0xMamJTY2LbGxaYmNTUtsbF5gY/MCG5uX2Nj8693WbWPzAhubF9jY/NjGfghJ4wo4JM93yYM835u2dThDy8nzEE55wWzaVuK29CtidJlK/Ja+rAgtZ2txW/qyIrTcBy1eS19WhJbr8vzV+O7s+uVuPvyWXn6927ot/QK71BfYpb7ALllvuEiZD63Ti1AxpC9U5D5V5PcqrG0CZy5MFa5cWJ7o+45Ku6zrH0P35TlEU8fwD4cO6emejqZWvm/llo796zDfudzi+7IEc6sybTM6bNpauqnF9yrBBx2uVwk+6fC8SmC2TJ0PHh2vpd9r3T905Js6oupI79sldmuPMMV+9feUQn5THx90pPm5S6nV9zra7+rIYZYlx3CvbeerkMc9yZvtMl9kjbXftCCcj7s62px77+JdHXP2YOt4/HHpz78tzdyniWF+JuN72/FBx3zfaBf7Gx3mc66uujA1uOrCeiG31DAfeqr0SlOIm19Hm3HnSkvhpo75ldxFuamjaD4odvl3OnSZ28rNfPTZu8re0+7WR1cd79vFfKm76KOahVzK7uto93TInBxnodgd3+mY4UxyNfqY2IHRri9CreH902hps7zScpk9dS8Y7WJI+iYnrkfa9pxYDx+7HmmrCyK01QUB2vaytN/W4n2i7YMW5xNt+zT68aaqrcO31LZ1eJfau5bnm6ofKtb5RJv1Urd/EMf6fBB/yIlzEMf+dBC3BQ+PtyXDL8Xf1uIfxKYW9yB+fkfL1uEdxCvuaO1a2oJBbFascxBbX/OyTR1li+9nWWmzTjVKnKEqSuQ5Y3tVYi0n6qxZqbRr/aLELo3MOSPvifyd0uQVpSm/W5owo6rs4r1ZYxl3uKAjxXpPh0Z32cUFOiTc1NFm63L8j+90zMCCu7q7dToPI3ZRbupIqiNno6c+v1/5QYdrr9ttWA0dbcHTGm3ByxppK32BabaUeE/gPmnxncB90OI8gfugxXkC90mL7wTuU4l8J3Bpk8fxC2wd3hmFLIhfsGv59W7rPIH7UClOqyTy3Co5G8fU8dw374MOZ1me++bVBRfwalxhYeuKrlqXWNi6xMLWJRa2LrGwdYmFrUssbFtgYdsCC9uWWNj2693WbWHbAgvbFljY5zcZirHWSuPZU5wv1kbbPy3f1NHu6Wjb1S6Jo6d/p2NuIO0/Kzd15KY6+t18zGicjeIVfKdjbtrsopEP0/d5tsv+4cj3dKQt6lcr3dWxqY78XEe8mY/Y9esZ2818JK2P0p/nQ973dfsVQ1/bfnhO0dW2H3S42tatI97Mh7Nt7Xz42tadD6ttN0tHnjPFWPg8/CUGYAiPPVg+6HB5n+w62u/q8HmwmHWa5qcyproZdWqtAso0ykLfqJctRTMbWZ1geA7zd7KRnm+QBuscy7lBapamxNlR9w3Gt6WxdcyNyVjkfY2EZj3gHUueJqSU7aYWpzOercPnjPdBh8cZzzrf8DnUmBpcDjXpsVNPeuzUU6xley9zlt1beHu6aevQWXZv8a2O/ZzNCmm3bdN/ZJdprfudHmcftXX4+ugHHa4wVpaDdpwORj2Sg9H+Ff5CR1L3tVLf6jCDWDn7iK3D20dkUR+RBX1EFvQRedxHDAOQ6zQA7OlUmldBmSuxUuk7KZtXgcy+sVfILQWzk7dAzmvFXQfqDtg3easgBXM1ObtVqjxHf50vmKsWnUBJtXT48tHSWx1WMKR0fVM6H9r9rIz2tCCuJhXyQQ61vGTCugGYw1WQzKegLzqsTKQrE5WPYn9mIj7NhK2jaJvuczBa8ITwqsV6rm9Oi9OmA/0lVrKtIki9aiTULVkZsSaSqelatPP6LX2jJYe5ksx/rKy/06I3GXIytVj1UqcN3K11NOqlbivqxdTirhdby5J6GXfhUC+dNqW/67h/aKnxvpb53e/t9iAaJ1ioly2L1dJmaGx1e9ll6e8nVR/0qDfeLvdi6bF27FvXGuY+I+UbLepcGKSUm1radF5pPAZ+6LBbafaYuDWrx7S0ppVsPf5WslxA/a1kanG3kqXF3UrWZy2rj1HmacLPVrJiJma98VhSvK9FNzfMcW1qKfPeQCz9dl5khoWOQlOwr7XoHIyOFb/VondSpd9uoxGJHlp4H+xrLerwS/5132rREtV+Oy9Nv7Ith/taZt9tpdzW0ua3uvV0V0ufM9XY8wMts156uT2Ouo6jfnscpahLodju1m7K06ck7ZOiu1pKuOxLKnm7O0PMeicys/v+l3O7ua7ZtdyfOXvzYmvx5cVcKs4rGoH3H9zLvBC2rB4y7DwR3OvVfdzN7yGvV/2L7rlPx97H7t+3eczY2Fu3vuyuWQdRohtJ7Ij9lYq5xBTyUfhSxTbX3OlORbQ56HeRqiL7d4PadAzqG/knvKpI0TrH2scE3TqgbakavtBStrmTUja+ZfpTi/VuT9VT6Ep5ka9y0mdOQkx3yxNmzIASN1PL8zPTaF7Kcp13fiqNvjEVN7N1+pJ1xgc97nVGtCKLfaUnPl4jmDUsdX59pYZ6s9fth69zO7GW21rapuYtlLdazID3c2G67zS3O9bpDxXkkfbTOllHj/uCdfroNZqR5/hVtdZZIbXJ7WpNWq1lM7TkBY1ja1lhFGREh7zKk++aOJ9riWni3GbSvPYW1GBHa+jk+nTv2VThO3D7oMN14PZJx8MDt7DNRd8+2eRR41YhGr5nPzwjFdvLSVEsyZqzzjPZlO9kI4wQpqcRIe+Bv5MN89CrZt160YatP5RYbth1OqfsR+q8T9FftRhtW/P0+KvsbPN3tFjeWPM8MwfDczlat1TctxCimCsbp+u/nRfvRWszrpH7inR8/hygrcPtKj/2D95+Kpyu8nalOK83m4NwDuP9jKUZg1Cs+cCWkrpF7ItyHYbbV2rK7Cu7TNsC1X2an2RecE5/TNZ+FKgGe1Kt29w0q9hep5/WZaC0f3TUV71QZ/lRLdWytPsYznN9nug8zV8tYZ/Q6bWKRPt8rxVjKKnq9lrZrJTXnl/NNyxr1JszfO3lhzePeXhVdZ/7ODW9r2ZuFu42ht4r/KnG2qALaTY0z/x+fIWsF7L6+LrAPMW6Gd+PZnXdpsvBxjtrqXyVl57n531rVl7MF3/puQ8aRn8nL/ZT6LNEmR9A+U5LljndKKFYWmSB3TarJekjealZ1WJ33apGqrLjwI+ua+4tz0lLZg8u2b7LStVR1EJ/n5VuPUO0d5f5TM1u6PJ7e2m9uue2l59yk+dZZ/3jQO6nGleshhASrSz9LnI1zf2Hyt5hP8xut3ZG09w6k8wrsfajMFZD08k4mZb8ukfb24ppshV0KelSO1iTMFOHb6qdrKB07ult2lZMb9P2fHpr6nBPb9O2YHprV4pzevuh45e5ey2F7gz96Phps5ztq9oC3oQI4Ue1WB2O7wyyt2qLt4wB7cq8GoMUgnnMsc1jjj+up8RXLdZd9z6X3mnbjL1EU0vKc6aReMr/pZa9mee0nza8/o4W65XCuV3Mp6yh/KgVa+stzw28xL4g+9ngq5a6YEcihRWmNoUFZjJuC3Ykkvk+oHdHwtbivbqf4gJjG5cY27jC2JoNpEenfz79/jMrdUnVtgVV69NhXd63O75vjmHXq3t+sOSFwJQWdNm0pMumFV12xet+H2y+zOffOCM/bL75WKF+lHPic/bcv8hJm8cLjV9A/pET87Km6HZ47cYeQjKDbLm/PtZzhf6vjxU1yPv1sd4r9A9C68FC/yDMz59rMXX4B2Fe8MSmXSlLBmGffvG9FKPrF9s5JKo7Rbg7CNts4y0EKyvOfa/0x02X16xYd7H8o7CUFaPQOiHzjkLrfMw/CsuKF69T6c9HYekrRqGEBaOwtCWj0FpE1aiLqGIt6MR8bGjregQTwvvtt2SdkK049ahZ9xNzfr9zlsw7st6ds2Sebfl2zpL5FL97KFsOvN6hbJ2P+ZdzNa5YLdTH4cw+lMdtmuqSCUJdMEGoSyYIdcUEoS6ZIJiD0L2L18KKXbxm7Xtt04cnbvxSc+23DBN58fwwTNaJ1j490NcDU3ubj12LOfWakWh64gOKn1rMW7nTSMZMbmsx5m+00Lwp05tqf0eLtfSfG4ph28ysWG8ZljwDwZRmXNywtcimsRtSu69lm1rK7bxQicS6LvQhL1WD22z362X6fuZ90rGgRDWGu1rqPLvPlR/y+1aL5qWXFSXqcldLo2cDcr6vZbZ0k7CgRM263P4hL/OdkdxDv69ltnRPsqBEPdWbWsqW9GpGMeolW+9QhX1Wq74RmZ/2fHW2z5t5gD+vZxxumarl1d3e1lKSulhw3O2vtNS5g1XpfOuHjg+1q4EQgmWlsnVM9k3thriidk0t7tq1tLhr1/TT0yd62Qf5xxc2B1mwmsnWQZlzNZPDirAIOax4KdvW4l0T5QXBuPKSYFzZOuLyriHy87fdPzSyd4mXrYsV7iVeto7J3M1Tn9eJeVznbmLrEUB/E8uKZaK5gChzgReL3F6GlI0ehWiGfUtm0NX55P1G78707VVHWbAFPC5CP7e0aYGlTUssbVpiadMSg2AdlfkNgnVU5jUIlg7/YM4LgifaleIdzOYACuqDHPhU9ecIspTo3frAK4cfSqyTsjIvoJVOk8mtvuqwOm2fITAinyx9p2X/qe4jp3A/L6Ql3s6Lvr6w8YbC/bzwmx9f5mV6tMWNXarv56WZtWs+zDtfU6CrAD91LLlLlhfcJctL7pJl8y6Ze1orC6a1smRaKyumtUsu2NkN5PXcymaMLX8DLZjYyoKJrdnxfZ5becnFxVyXzA/qgvlBXTI/qCvmB/X35wetznBQnTZEfnzaq21oLztL1x+PEfCiw9oPibofEmmPM7QvMqJPKvyxZRu/0kGv12w3dXTRZQsdkf1U0szH+dSrLnfDASZb96T8H0HrmMz7EWxlxUfQjLLltvdmXtx2qa1wo8ntuRuNqcNvl/oCNxq7UhbZJb3FbNolSwlH3eBQJj+UdNMhIWojx/fxcnYt1vZBmYd1ldc/P8xbN18TafqaSH/7SNmuxPqsb3NPJW0p3VQy3h6HklD7XSWdLvy+z0kx746JPgcsyVJiekHrc0s9t3tK4qYBnrZo5cSKCu6JvfMpH1kXYNKNfMjv5iPoDd3Q8s1KDdMkPVEye+sDJfz5ikYfMU/Dkn4xUg83lej74iHHJUrKXSX6DAH7Bn6rZJ7J5dIXFOe+kqrFae25krLdVVKCKsnxvRLr2oxzDNv5mMMvFGvkxPjclphWfj7rEMWyaTEvsPIxL7Dy8bl1tfPhtPLWBa8V+fBa+Q9KwgIlTitvKvFaefN+l9fKm0q8Vt6vpNxV4rTyH5T4rLy7OPeVOK28V4lp5U0lXiufn1tXOx9OK5/z71r5Ov25Iu8k/cyHLBh8phLv4PMrKXeVOAffByW+wecuzn0lzsHnVWIOPlOJd/BZF8Ocnd7Oh3PwWUddvnzYq/GoL1HsH0EjH33Batw80vHO0ywl7nmaPLetdj6c8zTJv5sP7zztg5KwQIlznibetzCseZr0BZ8KU4n3U+FXUu4qcX4qPijxfSrcxbmvxPmp8CoxPxWmEu+noj5fa9n5cH4q2vNdAdvKO1fjbcWea1ux59qeW9e2Ys+1ye/mw2vl24o917Ziz7Wt2HPtK/Zc+4o9175iz7Wv2HPtK/Zc+4o9175iz7Wv2HPtC/Zcx0XCh2O4L9hzlS3+rpV3rsZly88Hn63EOfi+UFLuKvENvk9KXIPPX5z7SnyDz63EGny2Eu/gC+lpp/+QD+fgC493BWzXBckarzG893+QUBe4Loj5AKLTdUHMZ+CcrgtiHWh5XRdsJU7XhQ9KfK4LYsYEc26WyIpDLVlxqCXPD7VkxaGWPD/UkhWHWrLiUEtWHGrJikMtWXGoJSsOtWTFoZasONSSFYdasuJQS1YcasmKQy1Zcaglzw+1ZMWhljw/1Ppg5X2bJWIeEnitvKXEbeXzc+tq58Np5cv2u/nwWvkPSsICJU4rbyrxWnnrQMtt5U0lXivvV1LuKnFa+Q9KfFbeXZz7SpxW3qvEtPKmEq+Vf36s9SEfTisv8rtW3rtZYr5v6B18phLv4PMrKXeVOAffByW+wecuzn0lzsHnVWIOPvsdTOfgq49dBj7kwzn4rLBf3sG3PXddkLbgIoGsONSSFYda8vxQS1YcasnzQy1ZcaglKw61ZMWhlqw41JIVh1qy4lBLVhxqyYpDLVlxqCUrDrVkxaGWrDjUkhWHWvX5oZasONSqzw+1Plh532q8bgv2XE0lXitfn1/T+pAPn5WvW/vdfDit/CclYYESn5W3lTitfA0L9lxtJU4r/4WScleJz8p/UuKy8v7i3Ffis/JuJZaVt5V4rfzza1of8uG08jH/rpV3rsZrXHCRwFbiHXxxwUWCD0qcgy8uuEjgL859Jc7BFxdcJLCVeAdfeuwy8CEfzsGXnl8kMF0XePA147U4U0nTRygbjeAvlcwwkruSuznps48kfuet/wiaYL6G2WZOCrk/fPmmpsxXPqLkdFdL17dPuhUgoFoxq9J8tWQfzRR84VWFkZEWNYJq5Jfiwo+MWD02zkYuMWtxcvxKSb8auSQqzk8l1kMuc/x1jjD9VY1Mt5KWolUjZhAvb43YSpw1YsXwctWIGZ9jr4b5pNO+j0hGrb/mw7Kubca3Ke2PsA35Cy21z/AEtUu4rWW+j7NriTe1tC1fWlr4Izrad3mZEUdaCM3QYj/BF9p8uysEmiq99n0xOxyFnmv5no40HwArKcu9HpcDPSKWjB5nHW3l1Ge4kf3zQjUrX2gpOj8phd87/UrL3m+b9ji5rWU2ctvCfS0zaE/74+3Vn1r6ih5nBfHy9jhTx4oeV+cEslV6vfVnj7NCeB2vCc9TkJyr6nkNGVettwm/qNqyoGrL06o1A0R1ffqOXg9/DRBVzXcJtxlR9nhkTTvsfkTk15L6fF90XwXSkmd7NbTW1a2wtZmXPV9Ti7xmxV4bz94W+dG6+rrWsM4wuj4r3RNH43h9Kq42Z4jPWOixxfTaT5p5xaBrgBGOU/KdliwaGYTeO/07WowJnPcFPbtaku6Epva+WpxdnxdyP7q+HY6pzjl+i/l9d+vW2ayGCyJzH2T7JiOtaCwmWj39zIjRZSX1mRXJgRzZf9hHU01JMpfIJVF46PpNkY7outNA0vT6Z5FMZ62k7w1Xrd0av1GSZ4jQY4vIUGKFpc0aMrvk8N6oWC8Q7J/8Ob+uUQyj0q2aHf5CqFmh8BXpm5x4Q0Y06zkT99OrzTr0cj69us+mnIcR1tOrzTz28j69aufF+/Rq21bEkGnb86e2TR3up1fb1p9/OOxK8T69+sGqaLQHwyBYXx+ZM7fK8Q1fvz4tmH12BuCLseb3E68WzHtUMyvHlSrVInKrNLRd/bM09mFCJFud31v8Zt/okm2+i1sl3lfTZqfdm6gYaqxLXSHRLaj61uo3y3mrx6Kxh+tmWEkz0FabT/3uYnw/fbO1VFGr0kwtacGE1NbinZC2WBbYFbuJnLP9ZgXKcs/2W2xLKterhTdav9PibqIUVjRRfb5m+GQXaihqF2h38oddSPnxnP9TVqqaqEZr5p9Zsd7d3jvdnFTGlN7P+pt1LLaP1DlL3mVyD/2pxsxN1uDZ+0FQNNSYBw06D+No06V5v2mSZtghSTQW9x2G//zP/7bjX//xn//tv//tX//xr//+z//6L//7+GUoh5Uvey0EOaTDoT7UKbUp9UuK25D2gsQwpXhIx45aTFPK/3C68MYypZHGsf6MI422N05sU+qXlLYpjTSOpWgaaRyTmJSmNNI4pj3pSCMdX9EkUzrSSOH4bZtSH9L+27xNKQxpz18+0kjHcWxOU8pjdnJIZUojjaMxc51Sm9JI49jJL9uURhrHpL+MNI62LmlKI42jdkuZ0kjj2CkudUojjWOXofRLkpHGUVcSphSnlKaUp1SmJFOqU2pT6pdUZxp1plFnGnWmUWcadaZRZxp1plFnGnWm0WYababRZhptptFmGu1IIx8nSU2mVKfUptQvqW9TClOKU0pTylOaafSZRp9p9JlGn2nsW3gqBhWjiknFrGJRUVSsKjYVNbWgqQVNLYzUju/TbktUzCqO1I6FUhgD/xSriiO143Q1jLGfj2t7YQz+UwwqjtSOqVoY4/8Us4ojtWO7JwwTcIpVxZHaMEMRqR15SJuKQUWkdhilYQlGQJUwTEGu4w+KikitHeJI7RhFYZiDU+xTHAbhFIOKUcWkYlaxqCgqampZU8uaWtHUiqZWNLWiqRVNrWhqRVMrmlrR1IqmJpqaaGqiqYmmJpqaaGqiqYmmJpqaaGpVU6uaWtXUqqZWNbWqqVVNrWpqVVMbdiMfO+JhGI5THKkdG31hmI5TTCpmFYuKomJVsanYpwgTAlFT65pa19S6ptY1ta6pdU2ta2p9pha3TcWgYlQxqZhVLCqKilXFpqKmFjS1oKkFTS1oakFTC5pa0NSCphY0taCpRU0tampRU4uaWtTUoqYWNbWoqUVNLWpqSVNLmlrS1JKmljS1pKklTS1paklTS5pa1tSyppY1taypZU0ta2pZU8uaWtbUsqZWNLWiqRVNrWhqRVMrmlrR1IqmVjS1oqmJpiaammhqoqmJpiaammhqoqmJpiaaWtXUqqZWNbWqqVVNrWpqVVOrmlrV1Kqm1jQ1tSVRbUlUWxLVlkS1JVFtSVRbEtWWRLUlUW1JVFsS1ZZEtSVRbUlUWxLVlkS1JVFtSVRbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUlSW5LUliS1JUltSVJbktSWJLUlSW1JUluS1JYktSVJbUk6bUk+1pxIrR9iUDGqmFQ8UivbWKoWFWWIx0J32JJyOC2kYUtOsU9x2JJyHGmkYUtO8UitYOGbVMwqjtQOz+00bMkpjtSOPdU0bMkp9kvMw5aUOJbRQcWR2rFxmYctKcfeVh625BRHaseWeR625BRHaikeYlOxT3HYknLsTeVhS05xpJbHAj6pmFUcqR2rmTxsySmO1I6FTR625BRHaseiIg9bcopBxZHasZLIw5ac4kjt2OnLw5aUY6c5D1tyilXFkdoRhzIPWwJx2JJy7DjmYUtOMao4Ujt2VPKwJac4UjumwnnYklOsKo7UjllxHrYE4rAl5dg2yMOWlMP1JA9bcoojtWN1nYctOcWR2rELk4ctOcWq4kjtGAF52BKIw5bIcZiahy05xahiGuKRnWFLTrEM8cjOsCWneKQmY5dm2JJT7FMctkTC2J4JKo7URqcdtuQUs4pFxZHacfCXhy05xZHa6NXDlsjoysOWnGJQEamNjaGk4khtdOVhS05RVBypjV49bMkpjtRGVx625BSDiiO10auHLTnFkdro1cOWSB67U6LiSO1YmOdhS05xpHYswfOwJacYVBypjcEwbMkpjtRGVx625BRFxZHasY+dhy05xZGajD2yTcWR2rHPXIYtOcWk4kjt8KYqw5ac4khtbIsNWyJHVy7Dlpxin+KwJXL06jJsySmO1I6uXIYtOcWs4kjt6NVl2JJTPFKrR1cuw5acYp/isCX16NVl2JJTjEM8sjNsST1sdRm25BTLEI8qGbbkFEdqh4Euw5acYp/isCX1GAxl2JJTHKkdBroMW3KKWcWR2tHBy7AlpzhSO3p1GbbkFEdqxx5oGbbkFIOKI7XjBLEMW3KKI7XD/aIMW1LzUTvDltTjxbAybMkpjtSODl6GLYE4bMkpBhVHasdbX2XYklPMKs59yDJsST02rMqwJafYVOxTHLbkFOduZBm2pB6DoQxbcopZxaKiqIiyHZUqTcU+xbqpGFSMKiYVs4pFRVFRU6uaWtXUmqbWNLWmqTVNrWlqTVNrmlrT1Jqm1jS1rql1Ta1ral1T65paR00ePaqLilXFpuLcQ5YN7TbEoCLarR1iUlE3xDfdEd+QWj/EqmJTsU9x2JJ6bODLsCWnGFVMKmYVi4qi4kjtmCkIbAnEPkXYEohBxagikgiHWFQUFauKWqCoBYIBgaiHCYlOE1CgcohZxaKiqIjU5BCbin2KMCAQg4oo0DixSCoitaPdYEAgiopVxZHa8bytwIAMEQYEYlBxpHacSQoMCMSsYlFRVKwqIontOE3ZVAwqRhXTzKRogWA1RuFhNeoQq4pNxT5FWA2IQUWkNo50kopZxaIikjgaC6YCYp8iTAVEbSGYCpwVjSSOU3eBqThO5QSmAuIo0LEeEpgKiCO1PpQdqbVjLSLDVLTjSybDVLTj+E2GqTjFpOKRWkvjb4uKMsQjv8NUtOPjI8NUnOJILR9Ho//nr//2z3/9H3/7p/+9H4MeJ6X/8S//eJ2K7vjv/9//uv7L//i3f/7b3/75//3v/+vf/vUf/+l//se//dNxgjoOT7dxgrr/73/dp5oxHCes4fz3/7pvpoaw/+OWwn/b1074lz2T+//m+N/+gp/tm697Ne7/28c/BfxVlvFX7dAXD33Hr/ef6u/2CVuR4z+nmYN9AhvHP+UrB8d1wX2Zdaa+f7//stfdpeE4YtznB1eq+xLrL/uC6vh9mb/fD4r29eD8xT4Z3rdGrl/sWyN/2TdCjl/Ilcf9o65/v591lnr856q11P8S8/FPTbOd/xL78U99/tM+903jn8JmFz4E/U3/Sx6aw6ywfea9qzl/s888chn/PVk6j1Py/x8=", + "is_unconstrained": false, + "name": "refund_private", + "verification_key": "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" + }, + { + "abi": { "error_types": { - "206160798890201757": { + "13455385521185560676": { "error_kind": "string", "string": "Storage slot 0 not allowed. Storage slots must start from 1." }, - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" - }, - "1004672304334401604": { - "error_kind": "fmtstring", - "length": 48, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] - }, - "1186437190978851533": { - "error_kind": "string", - "string": "Non-zero hint for zero hash" - }, - "1589673740894288059": { + "14990209321349310352": { "error_kind": "string", - "string": "Hint values do not match hash" + "string": "attempt to add with overflow" }, - "2920182694213909827": { + "15764276373176857197": { "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] + "string": "Stack too deep" }, - "3305101268118424981": { + "16431471497789672479": { "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3738765135689704617": { - "error_kind": "fmtstring", - "length": 58, - "item_types": [ - { - "kind": "field" - } - ] + "string": "Index out of bounds" }, - "4456244908619624852": { + "17487453435310197877": { "error_kind": "string", - "string": "Preimage mismatch" + "string": "Function refund_public can only be called internally" }, - "5019202896831570965": { + "1998584279744703196": { "error_kind": "string", - "string": "attempt to add with overflow" + "string": "attempt to subtract with overflow" }, - "5727012404371710682": { + "4493654309393309420": { "error_kind": "string", - "string": "push out of bounds" + "string": "AlreadyClaimed" }, - "6485997221020871071": { + "459713770342432051": { "error_kind": "string", - "string": "call to assert_max_bit_size" + "string": "Not initialized" }, - "7136043998373234005": { + "5029608433027800177": { "error_kind": "string", - "string": "Field failed to decompose into specified 40 limbs" - }, - "7233212735005103307": { + "string": "NotPassedTimelock" + } + }, + "parameters": [ + { + "name": "Id", + "type": { + "kind": "field" + }, + "visibility": "private" + } + ], + "return_type": null + }, + "bytecode": "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BwgcCgYHBhwKHzcGBCoHITgEKjcsIQAqOCEsBCo1IiEEKjYtIgAqISItBCoHJCEEKjcuIgAqISIkBCoHJSEEKjcUIgAqISIUBCoHJiEEKjcWIgAqISIWBCoHJyEEKjcYIgAqISIYBCoHKCEEKjcaIgAqISIaBCoHKSEEKjccBwAqIQccHAoGBwUcCh8hBQQqByoiBCohHgcAKiIHHhwKBgcCHAofBgIEKgcrHwQqBiAHACofBwYtCAEHJwIfBBgACAEfAScDBwQBACIHAh8nAiAEFwAqIB8gLQofIQ4qICEiJAIAIgAAEostDgQhACIhAiEjAAAScC0IAR8AAAECAS0OBx8cCjQHAC0IASAAAAECAScCIQABLQ4hIC0IASInAiUEIQAIASUBJwMiBAEAIiICJS0KJSYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgImACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmACImAiYtDgMmJwIlBCEnAiYEIC0KDTIjAAAT+QwqMiUnJAIAJwAAIw8jAAAUCy0LICcEKjAnIAAqByAnLQgBBwAAAQIBLQ4hBy0IASAnAigEIQAIASgBJwMgBAEAIiACKC0KKCktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgIpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpLQoNIiMAABVmDCoiJSgkAgAoAAAinyMAABV4LQsHIgQqMSIHAConByIcCjMHAC0IAScAAAECAS0OISctCAEoJwIpBCEACAEpAScDKAQBACIoAiktCikqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4CKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4CKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKgAiKgIqLQ4DKi0KDSAjAAAW2AwqICUpJAIAKQAAIi8jAAAW6i0LJygEKgcoJwAqIicHLQgBIgAAAQIBLQ4hIi0IAScnAigEIQAIASgBJwMnBAEAIicCKC0KKCktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgIpACIpAiktDgMpACIpAiktDgIpACIpAiktDgIpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpACIpAiktDgMpLQoNICMAABhFDCogJSgkAgAoAAAhvyMAABhXLQsiJwQqDiciACoHIg4cCi8HAC0IASIAAAECAS0OISItCAEnJwIoBCEACAEoAScDJwQBACInAigtCigpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4CKQAiKQIpLQ4CKQAiKQIpLQ4CKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKQAiKQIpLQ4DKS0KDSAjAAAZtwwqICUoJAIAKAAAIU8jAAAZyS0LIiEEKgchIgAqDiIHLQsfDi0CDgMnAAQEGCUAACnfLQgFIQAqIQ0iLQ4HIi0OIR8cCiwHABwKJA4AHAoUIQAcChYUABwKGBYAHAoaGAAcChwaABwKHhwAHAoGHgAtCAEGJwIiBAwACAEiAScDBgQBACIGAiItCiIkLQ4IJAAiJAIkLQ4HJAAiJAIkLQ4tJAAiJAIkLQ4OJAAiJAIkLQ4hJAAiJAIkLQ4UJAAiJAIkLQ4WJAAiJAIkLQ4YJAAiJAIkLQ4aJAAiJAIkLQ4cJAAiJAIkLQ4eJBwKIwcAHAoVCAAcChcOABwKGRQAHAobFQAcCh0WABwKEhcAHAoREgAtCAERJwIYBAwACAEYAScDEQQBACIRAhgtChgZLQ4QGQAiGQIZLQ4HGQAiGQIZLQ4TGQAiGQIZLQ4IGQAiGQIZLQ4OGQAiGQIZLQ4UGQAiGQIZLQ4VGQAiGQIZLQ4WGQAiGQIZLQ4XGQAiGQIZLQ4SGQAiGQIZLQ4MGS0KCiAjAAAbTAwqIAsHJAIABwAAIKIjAAAbXi0LHwctCwcIACIIAggtDggHLQgBCCcCCwQEAAgBCwEnAwgEAQAiCAILLQoLDC0OBAwAIgwCDC0OBAwAIgwCDC0OBAwrAgALAAAAAAAAAAAXAAAAAAAAAAAtCAEMJwIOBAUACAEOAScDDAQBACIMAg4tCg4QLQ4EEAAiEAIQLQ4EEAAiEAIQLQ4EEAAiEAIQLQ4LEC0IAQsAAAECAS0OCAstCAEIAAABAgEtDgwILQgBDAAAAQIBLQ4KDC0IAQ4AAAECAS0OAw4tCgoGIwAAHC4MKgYJECQCABAAAB7eIwAAHEAtCw4QCioQAxEkAgARAAAcWicCEgQAPAYSAS0KCgYjAAAcYwwiBkQDJAIAAwAAHlgjAAAcdS0LCwYtCwgQLQsMES0LEBIAIhICEi0OEhAtCAESJwITBAUACAETAScDEgQBACIQAhMnAhQEBAAiEgIVPw8AEwAVLQ4GCy0OEggtDhEMLQ4CDgAqEg0GLQsGAi0IAQYnAggEGQAIAQgBJwMGBAEAIgYCCCcCCwQYACoLCAstCggMDioLDA4kAgAOAAAdEC0OBAwAIgwCDCMAABz1LQgBBAAAAQIBLQ4GBC0KCgMjAAAdJgwqAwkGJAIABgAAHhQjAAAdOC0LBAYnAgcEGC0CBgMnAAQEGSUAACnfLQgFCAAqCAcJLQ4CCS0OCAQtCgoDIwAAHWkMKgMHAiQCAAIAAB3oIwAAHXspAgACAC0XxrgnAgQEAicCBgQDACoEBgUtCAEDAAgBBQEnAwMEAQAiAwIFLQ4EBQAiBQIFLQ4EBScCBQQDACoDBQQtCgQFLQ4CBQAiBQIFLQ4BBQAiAwIELQsEAicCBQQCACoEBQE3DgACAAEmHAoDAgAAKgUCBAAiCAIGACoGAwktCwkCMAoAAgAEACoDDQItCgIDIwAAHWkAIgcCCAAqCAMLLQsLBi0LBAgtAggDJwAEBBklAAAp3y0IBQsAIgsCDAAqDAMOLQ4GDi0OCwQAKgMNBi0KBgMjAAAdJi0LCwMtCwgQLQsMES0LDhIMKgYREyQCABMAAB56IwAAHtAAIhACFAAqFAYVLQsVEwAiAwIVACoVBhYtCxYUACoTFBUtAhADJwAEBAUlAAAp3y0IBRMAIhMCFAAqFAYWLQ4VFi0OAwstDhMILQ4RDC0OEg4jAAAe0AAqBg0DLQoDBiMAABxjACIHAhEAKhEGEi0LEhAtCwsRLQsIEi0LDBMtCw4UCioUAxUkAgAVAAAfEicCFgQAPAYWAQoiE0QUJAIAFAAAH4IjAAAfJAwiE0QUJAIAFAAAHzYlAAAqiy0CEQMnAAQEBCUAACnfLQgFFAAiFAIVACoVExYtDhAWACoTDRAOKhMQESQCABEAAB9tJQAAKnktDhQLLQ4SCC0OEAwtDgMOIwAAIA4tCgoRIwAAH4sMIhFEEiQCABIAACAcIwAAH50tCwsRLQsIEi0LDhMtCxIUACIUAhQtDhQSLQgBFCcCFQQFAAgBFQEnAxQEAQAiEgIVJwIWBAQAIhQCFz8PABUAFy0CEQMnAAQEBCUAACnfLQgFEgAqEg0VLQ4QFS0OEgstDhQILQ4NDC0OEw4jAAAgDgAqBg0QLQoQBiMAABwuLQsLEi0LCBMtCwwULQsOFQwqERQWJAIAFgAAID4jAAAglAAiEwIXACoXERgtCxgWACISAhgAKhgRGS0LGRcAKhYXGC0CEwMnAAQEBSUAACnfLQgFFgAiFgIXACoXERktDhgZLQ4SCy0OFggtDhQMLQ4VDiMAACCUACoRDRItChIRIwAAH4sAKiANBwAiBgIMACoMIA4tCw4ILQsfDAwqBwkOJAIADgAAIMslAAAqiy0CDAMnAAQEGCUAACnfLQgFDgAiDgIQACoQBxItDggSACoHCwgOKgcIDCQCAAwAACECJQAAKnkAIhECEAAqECASLQsSDAwqCAkQJAIAEAAAISIlAAAqiy0CDgMnAAQEGCUAACnfLQgFEAAiEAISACoSCBMtDgwTLQ4QHy0KByAjAAAbTC0LIigEKigoKQIqJiAoDiogJiokAgAqAAAhbyUAACqdDCooJiokAgAqAAAhgSUAACqLACInAisAKisoLi0LLiocCiooAAQqKQwqBCooKisCKiEoKgQqKikoACorKCktDikiACogDSgtCiggIwAAGbctCyIoBCooKCkCKiYgKA4qICYqJAIAKgAAId8lAAAqnQwqKCYqJAIAKgAAIfElAAAqiwAiJwIrACorKC4tCy4qHAoqKAAEKikMKgQqKCorAiohKCoEKiopKAAqKygpLQ4pIgAqIA0oLQooICMAABhFLQsnKQQqKSkqAiomICkOKiAmKyQCACsAACJPJQAAKp0MKikmKyQCACsAACJhJQAAKosAIigCLgAqLikwLQswKxwKKykABCoqDCsEKikrLgIqISkrBCorKikAKi4pKi0OKicAKiANKS0KKSAjAAAW2C0LBygEKigoKQIqJiIoDioiJiokAgAqAAAivyUAACqdDCooJiokAgAqAAAi0SUAACqLACIgAisAKisoLi0LLiocCiooAAQqKQwqBCooKisCKiEoKgQqKikoACorKCktDikHACoiDSgtCigiIwAAFWYtCyAnBConJygCKiYyJw4qMiYpJAIAKQAA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", + "custom_attributes": [ + "external", + "internal", + "public" + ], + "debug_symbols": "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", + "is_unconstrained": true, + "name": "refund_public" + }, + { + "abi": { + "error_types": { + "10791800398362570014": { "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "7542496824365424242": { - "error_kind": "fmtstring", - "length": 20, - "item_types": [] + "string": "extend_from_bounded_vec out of bounds" }, - "7764445047318889914": { + "11021520179822076911": { "error_kind": "string", - "string": "Public data tree index doesn't match witness" + "string": "Attempted to delete past the length of a CapsuleArray" }, - "8270195893599566439": { + "12469291177396340830": { "error_kind": "string", - "string": "Invalid public keys hint for address" + "string": "call to assert_max_bit_size" }, - "9199403315589104763": { + "12913276134398371456": { "error_kind": "string", - "string": "Proving public value inclusion failed" + "string": "push out of bounds" }, - "10676044680617262041": { + "13450089406971132036": { "error_kind": "fmtstring", - "length": 98, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 - }, - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - }, - { - "kind": "field" } - ] + ], + "length": 144 }, - "11732781666457836689": { + "14067204867181196045": { "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "item_types": [], + "length": 75 }, - "13649294680379557736": { + "14990209321349310352": { "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" - }, - "14101993474458164081": { - "error_kind": "fmtstring", - "length": 61, - "item_types": [ - { - "kind": "field" - }, - { - "kind": "field" - } - ] + "string": "attempt to add with overflow" }, - "14225679739041873922": { + "15764276373176857197": { "error_kind": "string", - "string": "Index out of bounds" + "string": "Stack too deep" }, - "14657895983200220173": { + "16431471497789672479": { "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" - }, - "15200354114977654233": { - "error_kind": "fmtstring", - "length": 144, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "string": "Index out of bounds" }, - "15760694058516861966": { + "16792019527863081935": { "error_kind": "fmtstring", - "length": 128, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] - }, - "16218014537381711836": { - "error_kind": "string", - "string": "Value does not fit in field" + ], + "length": 77 }, - "16446004518090376065": { - "error_kind": "string", - "string": "Input length must be a multiple of 32" - }, - "16954218183513903507": { - "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { + "17154023812102399658": { "error_kind": "fmtstring", - "length": 132, "item_types": [ { "kind": "integer", "sign": "unsigned", "width": 32 } - ] - }, - "17610130137239148460": { - "error_kind": "fmtstring", - "length": 98, - "item_types": [] - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - }, - "18313900523101689315": { - "error_kind": "string", - "string": "Note contract address mismatch." - } - } - }, - "bytecode": "H4sIAAAAAAAA/+xdCZxVtdXPm3kzzsDAAxRFBBxEBGSRTVxBEBEEZZXNDYdFQUGQTamtPlyr1lq37v2q1lZrXbrYfbP7ajdtba3W7mq1LlVra239ErmZ+c+Zc/OS3LzMQ979/TLvzk1yzsnJOScnJ7m5ObHj6p78blx1xpZzVi7bsHHN1pbNq66sF+Leuh05OZlqk98amZrJM/2L93VMuS7MsybmWXfmWQ/m2e7Ms94yTSbP+shUJM/2Zp4NYODtyzxrZp4NZJ7tx+AYxDzbn3k2mHl2QIIjLyyuXPLbnPyOXjl74x/G3DzsC3OnfW779iWnDh335IxtX9xw3dQ/vHzD8zJ/j9q2siWuEVnw9LbHk6k9e5bGU4OwlSDm4X/FD/U7JPm/d/K/gqvL7SXv+8i0t0x9a3ngzcKueb0d2raPLQ9z84ooQKreZJGNzgOEPZ397Ps6h3Ry9VzpRBil6OzvSaeulxdtitqhgiPdOfuy7NVsV6xL6LrOCjrAnunDs+DZ1xLP9bv3nZAFT3NpPLUImxqcAYmB2ZcYnmYwOAPl/X4yDZJp/+R5jeAFTxD6S1w1enT3hYH8cxX6IcJP6F3xDPQcfFovVyvU38EKDfa0QoPBCtUK3j2IZYVidYgrnv6R8NSKjALmanUOcBQaanUOsHBzhsj7oTINk+nA5Hl30Uarif5SNA1x6BjEN7w2A8LhYC+bk99SjM6LtnE+jbBmYU+DZVlRB/cjErpHJr+jkt+Dkt/RdEamMhoIQGrCSjXcwRTkRkVy7seUxpNH2GlSPyL5HZn8jgGpHyvvx8k0XqaDyQBbS+gt1TyHDs+NdRgyJjhqD+XDhKTd45Lf8cnvwcCHQ+T9oTIdJtPhgbX/IMu2Pvf66/9DfEf4ar9CqCq7KIFCfoRDBx7p0IG+bTiy1k1pVBuOjKScE+3x5DmhnFjbFk5S6ZDajo7wJHl/lJrNyjSltq0u0lmqWZXOx6Pt8dRyfDw6advo5HcSw8ep8v4YmabJdGzGCMZgB7mf7unrcvVc+TrDHncNx9cZFi7TcfJ+pkyzZDo+sNE8ztNlOsHXaCqEJ3i6TMp9qTUQ1izsaHDwQjLhcWFuFjy725cV/eB+dsLMOcnv3OR3XvI7P/ldkPyemPwuTH4XJb+Lk98lye/S5Pek5Pfk5PeU5PfU5Pe05HdZ8nt68tuS/C5PflckvyuT31XJ7xnJ75nJ7+rkdw11XVUDi+TZPObZfObZAubZicyzhcyzRcwzxazJ5NmSxLXGZycxdU9hnp3KPDuNebaMeXY686yFebacoXkFQ/NKptwqGIH1szOYcmcy5VYz5dbUdow775b8NgurK7fSqJjt7eoqU9n2Rd9oV2pZUuPMkmXbgK+utWrbGxXWOIycZ9Va86wjImGP5+zSePZC2HSUPCuRjdm1bfqcS+Dqcmvl/TqZzpFpPRklagm9pZo318GjWOvA7w2e/Half54D/esc6D83Ev3zHeg/x4H+jY7eDpXDDYncnZv8bkx+14McbpL3m2XaItPWjHK4wIEPmxz4cF6kfjzRgf7NDvSfH4n+hQ70b3Ggf1tGOTwvkbvzk99tye9WkMO3yPsLZHqrTG/LKIeLHPjwFgc+XBipHxc70H+BA/0XRaJ/iQP9b3Wgv5hRDi9M5O6i5LeY/L4N5HC7vL9YpktkujSjHC514MN2Bz5cFqkfT3Kg/2IH+i+PRP/JDvRf4kD/FRnl8LJE7i5Pfq9Ifi8FOXy7vL9SpqtkujqjHJ7iwIe3O/DhHZH68VQH+q90oP+aSPSf5kD/VQ70vzOjHL4jkbtrkt93Jr9XgxxeK+/fJdN1Ml2fUQ6XOfDhWgc+3BCpH093oP9dDvTfGIn+Fgf6r3Og/6aMcnhDInc3Jr83Jb/Xgxy+W96/R6b3yvS+jHK43IEP73bgw/sj9eMKB/rf40D/BzL24/uTfvtA8vve5Pd90I8flPcfkun/ZPpwbUeY6mq2pPdme3r3wn9cV3eOc+DhLQ40cTy8ubYtrphL4KnfZuDhrfL+IzLdJtNHk+f1gt/CRnla4nIKzmfBc6uDrNXD/ccSmbk9+b0j+f148ntnwq+hSflPyP/vkulume6R6V6ZPinTp2T6tEyfkek+mT4r0+dk+rxMX5DpizJ9SaYvy/QVmb4q09dk+rpM98v0DZm+KdO3ZPq2TN+R6bsyfU+m78v0A5l+KNOPZPqxTA/I9BOZfirTz2T6uUy/qBXtg8V3JkwJuWR2u6NS6+vB2gwIH6x1r/eQg5b50vUQWJxmu3pBO+MOz874pW9nKIS/9OiMX5W5MxRdv+rkzvi4Z2c87NsZCuHDHp3x6zJ3hqLr1x6d4YProaTjXcf639R2jpDc6Skkj/gKiUL4iIeQ/LbMQqLo+m0kIVHC+BsPIXk0owN7e4Lzjtq28Vj94t7Ix+T972R6XKbf17aH6erIO1ig3GMO/fuHjHz4Q9Lu3yW/jye/vwc+/FHe/0mmP8v0l9q2uupqtqRTydOjHv38Vwe+KXoLIsxOnI858JW7mu2KDc1Qt0a3CZ3gJyTdT8r0lEx/k+lpmZ6R6e8yPSvTczI9L9MLMv1Dphdlekmml2X6p0yvyPQvmf4t06sy/Uem12T6r0z/k+l1xdz8DmbXyFQrU16mOpnqZdpNpgaZGmXqIlNXmZpk6iZTd3yDLJcQmyPPnmSePcU8+xvz7Gnm2TPMs78zz55lnj3HPHueefYC8+wfzLMXmWcvMc9eZp79k3n2CvPsX8yzfzPPXmWe/Yd59hrz7L/Ms/8xz15nnr0hPORZjnlWwzyrZZ7lmWd1zLN65tluzLMG5lkj86wL86wr86yJedaNedY932ak9DUs+W0WVlc7o1XKsD5hWfa5119//Un7sv99yr7sv/9mX/aFp+3L/uEZ+7Lf+Lt92e3P2pfNPWdd9n+5563LvpZ7wbrsv3L/sC77fO5F67K/z71kXfb+3MvWZYu5f1qXFblXbMv+T+T+ZVv2NZH7t23Zf4ncq7Zlnxe5/9iW/b3IvWZb9n6R+69t2aLI/c+2rLQlr1uWfVaZrbxd2Wdk2Zxl2Sdl2RrLsr+XZWsty/5MDTeWZT8py9ZZlt0gy9bblb1e2t/cbnZlr1NlG+zKXqvKNtqVvVqV7WJX9hJVtqtd2U2qbJNd2QWqbDe7srurst3z1mNhu8v1ZcAnHMbRgj1NudY/wr6Omnz9tbZjvVJ09XDkletKiYq2P+EwOVN86pF3b0fPCO1w6UPVZp929HJoxxt+o2g/Ue+Z4OyV/HLv4+wub/aQqbdMe+bb6iKdpVDfVds2B3Np3wN1bv3kCl/RtLsH33/iSJe+8gRPqebsnrenaS8HeXPgay5WW+9ysI998n4yFLJfOX3aK5GlPgZ92lve9JVpH5n6eeqTWo18ykOfflpmfVI07e2hTz+LJGN7O8hNfwd9cuBrLlZb73bQpwF5PxkK2a+cPvVPZGmAQZ/2VbTLNFCm/Tz1Sa3s/81Dn35eZn1SNO3roU+/iCRj+zrIzSAHfXLgay5WW+9x0Kf9834yFLJfOX0alMjS/gZ9GixvDpBpiExDPfVJ7ZJ52kOfHiyzPimaBnvo00ORZGywg9wMc9AnB77mYrX1Xgd9OjDvJ0Mh+5XTp2GJLB1o0Kfh8maETCNlGuWpT2rH2TMe+vTLMuuTomm4hz79KpKMDXeQm4Mc9MmBr7lYbf2kgz6NzvvJUMh+5fTpoESWRhv0aYy8GSvTOJnGe+qT2r35dw99erjM+qRoGuOhT7+OJGNjHOTmYAd9cuBrLlZbP+WgTxPyfjIUsl85fTo4kaUJBn06RN4cKtNhMh3uqU9qJ/SzHvr0mzLrk6LpEA99eiSSjB3iIDdHOOiTA19zsdr6aQd9OjLvJ0Mh+5XTpyMSWTrSoE8T5c0kmY6SabKnPqm3Cp7z0KffllmfFE0TPfTp0UgyNtFBbqY46JMDX3Ox2voZB306Ou8nQyH7ldOnKYksHW3Qp6ny5hiZpsl0rKc+qTd0nvfQp8fKrE+Kpqke+vS7SDI21UFupjvokwNfc7Haep+DPs3I+8lQyH7l9Gl6IkszDPp0nLyZKdMsmY731Cf1ttsLHvr0eJn1SdF0nIc+/T6SjB3nIDcnOOiTA19zsdr6WQd9mp33k6GQ/crp0wmJLM026NMceTNXpnkyzffUJ/Xm6D889OkPZdYnRdMcD336YyQZm+MgNwsc9MmBr7lYbf2cgz6dmPeToZD9yunTgkSWTjTo00J5s0imxTIt8dQn9Rb2ix769Kcy65OiaaGHPv05kowtdJCbpQ765MDXXKy2ft5Bn07K+8lQyH7l9GlpIksnGfTpZHlzikynynSapz6pEw1e8tCnv5RZnxRNJ3vo018jydjJDnKzzEGfHPiai9XWLzjo0+l5PxkK2a+cPi1LZOl0gz61yJvlMq2QaaWnPqnTQV720KcnyqxPiqYWD316MpKMtTjIzSoHfXLgay5WW7/ooE9n5P1kKGS/cvq0KpGlMwz6dKa8WS3TGpnO8tQnddLOPz306aky65Oi6UwPffpbJBk700FuznbQJwe+5mK19UsO+rQ27ydDIfuV06ezE1laa9CndfLmHJnWy7TBU5/UqVWveOjT02XWJ0XTOg99eiaSjK1zkJtzHfTJga+5WG39soM+bcz7yVDIfuX06dxEljYa9GmTvNks0xaZtnrqkzoB7l8e+vT3MuuTommThz49G0nGNjnIzXkO+uTA11ystn7FQZ/Oz/vJUMh+5fTpvESWzjfo0zZ58xaZLpDprZ76pE5T/LeHPj1XZn1SNG3z0KfnI8nYNge5eZuDPjnwNRerrV910KcL834yFLJfOX16WyJLFxr06SJ5U5Rpu0wXe+qTOpn0VQ99eqHM+qRoushDn/4RScYucpCbSxz0yYGvuVht/ZqDPl2a95OhkP3K6dMliSxdatCny+TN5TJdIdPbPfVJnfL7Hw99erHM+qRousxDn16KJGOXOcjNlQ765MDXXKy2ft1Bn67K+8lQyH7l9OnKRJauMujT1fLmHTJdI9M7PfXp/tq2M+OwXsl4dpn1SdF0tYc+/TOSjF3tIDfXOuiTA19zsdp6v4M+vSvvJ0Mh+5XTp2sTWXqXQZ+ukzfXy3SDTDd66pM6ff6/Hvr0Spn1SdF0nYc+/SuSjF3nIDc3OeiTA19zsdr6DQd9enfeT4ZC9iunTzclsvRugz69R968V6b3yfR+T31SX3L4n4c+/bvM+qRoeo+HPr0aScbe4yA3H3DQJwe+5mK19ZsO+vTBvJ8MhexXTp8+kMjSBw369CF5838yfVimmz31SX0V5XUPffpPmfVJ0fQhD316LZKMfchBbm5x0CcHvuZitfVbDvp0a95PhkL2K6dPtySydKtBnz4ib26T6aMyfcxTn9QXhoSH3P63zPqkaPqIB13/iyRjH3GQm9sd9MmBr7lYbf22gz7dkfeToZD9yunT7Yks3WHQp4/Lmztl+oRMd3nqk/paV85Dbl8vsz4pmj7uQZf6RFqzcL9cZezjDnJzt4M+OfA1F6ut33HQp3vyfjIUsl85fbo7kaV7DPp0r7z5pEyfkunTnvqkvnxX4yG3ufry6pOi6V4Pumoiydi9DnLzGQd9cuBrLlZbv+ugT/fl/WQoZL9y+vSZRJbuM+jTZ+XN52T6vExf8NQn9RXJWg+5rS2zPimaPutBVz6SjH3WQW6+6KBPDnzNxWrr9xz06Ut5PxkK2a+cPn0xkaUvGfTpy/LmKzJ9VaaveeqT+iJr3kNu68qsT4qmL3vQVR9Jxr7sIDdfd9AnB77mYrX1+w76dH/eT4ZC9iunT19PZOl+gz59Q958U6ZvyfRtT31SXzeu85Db3cqsT4qmb3jQ1RBJxr7hIDffcdAnB77mYrX1Bw769N28nwyF7FdOn76TyNJ3Dfr0PXnzfZl+INMPPfVJfSm83kNuG8usT4qm73nQ1SWWD+QgNz9y0CcHvuZitfWHDvr047yfDIXsV06ffpTI0o8N+vSAvPmJTD+V6Wee+vSj2rbvOGK9Uu3rWmZ9UjQ94EFXUyQZe8BBbn7uoE8OfM3FauuPHPTpF3k/GQrZr5w+/TyRpV8Y9OlBefOQTL+U6Vee+vTj2rZvoGK9Uu3rVmZ9UjQ96EFX90gy9qCD3DzsoE8OfM3FauuPHfTp13k/GQrZr5w+PZzI0q8N+vQbefOITL+V6VFPfXqgtu37wVivVPsKZdYnRdNvPOjqEUnGfuMgN4856JMDX3Ox2vqAgz79Lu8nQyH7ldOnxxJZ+p1Bnx6XN7+X6Q8y/dFTn35S2/btbaxXqn09y6xPiqbHPejqFUnGHneQmz856JMDX3Ox2voTB336c95PhkL2K6dPf0pk6c8GffqLvPmrTE/I9KSnPv20tu279VivVPt2L7M+KZr+4kHXHpFk7C8OcvOUgz458DUXq60/ddCnv+X9ZChkv3L69FQiS38z6NPT8uYZmf4u07Oe+vQzCa/JQ257l1mfFE1Pe9C1ZyQZe9pBbp5z0CcHvuZitfVnDvr0fN5PhkL2K6dPzyWy9LxBn16QN/+Q6UWZXvLUp59LeN085HavMuuToukFD7r6RJKxFxzk5mUHfXLgay5WW3/uoE//zPvJUMh+5fTp5USW/mnQp1fkzb9k+rdMr3rq0y8kvO4ecrt3mfVJ0fSKB119I8nYKw5y8x8HfXLgay5WW3/hoE+v5f1kKGS/cvr0n0SWXjPo03/lzf9kel09qGsPsyb5bRZ2JBSEfdv+m/frx1pHmm516MfbHcrmHPbGK9Z2F2163Y5Ax/bkHN850FdNXQaEqrJrvVqXjd+edNWCwDbb1XujM3YTbcLdDqgjDShcLpcrnttr/To9D/3mPKrUOryloGDXJjg0UsXoBhFG6l0YgB1blwhIfV1CJCK1YUDeQ/LzZX5tRtPlap7zDhq5W8Y2lCquOma3Ove2NziaPy2Uql4RniPOUmDqPWlt9KS10UCrTb81eNDaL6xrewqBn1N0NXrQ1T8jXaWKK8Oym4cuOfAr59IGZTQbBT866as55TnleTsiStQlV85Vz/TVxTTilIKzm6fCINISODsMRgpnFw/BHFCmeYjJEJdcL6grjwAPqPfrl65gyPRVqv20jS7tb4Kyu48RD+/7+MHbhu85Yf2crZc+fuLdF+7xkWFPFPo8u+XIrf9+dD0qZf9xJ3zgG/PP+uQ1hxemj+3y4NsevPyscb+69sqLD3yxuHhb/aDrfdvflLQ/pCd0q6cn1C3xhLrHUlBf+N08lLHgaTgKGbwCRWt3D1p7eNLaI6NXUPCgtTmCV9DDg66BZfYKbvX0Chz4lRu4E3oFrnqmr56d4RX0zOgV9PQQzP0q0CvoVVceAd7Pc1TsFdkr2N3BKxjo4BX4tn938ArSlNpVRxrq/OQulgHYozMMwB4ZDcAeHgZgkKcBqHPE46IAvR3KukwLXIzFIE9l6W1hLEou89fZKzVOC0IaC9/271lBU4i9EiHtwwVTSyFNC1q6RKFLvl/ucq6OcGecbkNtpDaUXEssc3tVh+/tYQT7ehrsvhmmY308ad3Hk9Z9MkzHFJ19PWg9oMzTMUXXPh50DYkwHdvbYzrmwK/ckJ1wOuaqZ/rql8Ub29tTYfpl8MYUzn4egjk00nRsbwej3b+uPAI81NPD6B9gOubS/gEO07EhDh6Wb/sHlMHD8l2u3jfxsJpjKagv/H19gnaehmNgBq/gDV74xHE8ad0vo1cw0IPWAyN4Bft50DU8wtKtj1fgwK/c8J3QK3DVM30N6gyvYFBGr2CQh2COqECvYP+68gjwCM9Rcf/IXsFgB69guINX4Nv+wWUI0vat85O7WAbggM4wAAdkNAAHeBiAkZGCtC4KMMShrMu0wMVYjPRUliEBgrRDHYK0QxyCtC7Gwrf9Q5n2u8YIHYKyuY877FMf5qCXIfepD/M0QgfWZUB4YJ17veEOiudL1/C6tgfNdvWC7lP/eKR96i4rC9jpI0wjT8l5hoPrhFqrkVbC0srIREBGcUsrNgwY4SH5IzIGCmzpcp2gjXDQyIPKHOxQHXOQh4sx2tMdGp0h2DHKk9YxnrSOyRDsUHSO9uFrmYMdiq4xPjyMsARykIcuOfArN2YnDHa46pm+xmaZ6xzkqTBjM8x1FM6xHoI5NlKw4yAHoz2urjwCPNbTfx8XINjh0v7xDsGOMQ7zF9/2jy/DEsjHPT2hgxNPaEIsBfWFf7CHMh7iaTgOyeAVKFoneNB6qCeth2b0Cg7xoHV8BK/gUA+6Di6zV/BxT6/AgV+5g3dCr8BVz/R1WGd4BYdl9AoO8xDMCRXoFRxeVx4BnuA5Kh4e2Ss4wsErONjBK/Bt/xFlWAIZXecnd7EMwJGdYQCOzGgAjvTxRCItgbgowESHsi7TAhdjcYinskwMsAQyyWEJZIzDEoiLsfBt/6QKmkIclQjpZC6YWgppWtBytEMUulRZh8BrrvWPcG+D6xqUbxtKlZ1S5vaqDp/iYQSP9jTYR2eYjk32pHWqJ61TM0zHFJ1He9B6eJmnY4quqR50HRFhOjbFYzrmwK/cETvhdMxVz/R1TBZvbIqnwhyTwRtTOI/xEMwjI03HpjgY7Wl15RHgIz09jGkBpmMu7T/WYTp2hIOH5dv+Y8vgYfkuV09PPKwZsRTUF/50D2U8ztNwHJfBK1C0zvCgdaYnrTMzegXHedA6KYJXMNODrqMiLN36eAUO/ModtRN6Ba56pq9ZneEVzMroFczyEMzJFegVHF9XHgGe7DkqHh/ZKzjBwSs4ysEr8G3/CWUI0h5d5yd3sQzA7M4wALMzGoDZHgZgSqQgrYsCzHFZ0XEwAC7GYoqnsswJEKSd6xCkPcIhSOtiLHzbPzeDh/prCeS3te4yPC+jl28ju/OYWGcpNC4xyXkOMj+/zO1V75TM97AlCxxjsK7xb+XluuC4PSkvCB5rAu3r5O5IcLny7ESHvgz57sSJngPjwroMCBfWuddb5KAYvnQtqnAhWezpLbkqmAuvl5RZ2T9Y64ZD8WhJoH4sRduq2h28cp1uu/B3aScZhjM83685ydcwKIQneRiGk8tsGBRdJ0cyDEqglnoYhlPqykuXav8pHoK+1KFvTi2zN3NmBGU9rZOUdbWnsi7zVVaFcJmHsp5eZmVVdJ0eSVmVQJ3moawtZVZW1f4WD0E/zaFvlpe5DbNr43ljcyLimhsR17yIuOZHxLUgIq4TI+JaGBHXooi4FkfEtSQirqURcZ0UEdfJEXGdEhHXqRFxnRYR17KIuE6PiKslIq7lEXGtiIhrZUx7WLdjEufqD68osy+p2r/Cg65FZaZL+dvLPehaGYFfKyuQX2s8ZVlNtHsIfr3adY7UW9jzY03pSXnOlNks7Opiu1Yl/DmjTrRfj1uVdCg+U4UmE6ilNjRQInwZklL2XXq3zyqHyegZdW6M9pnor/JQiDPLHNFSvF/lsR7p0mcu/bDaIUyPcrga5NB1eWBNbXsaS+FVZVd78MxCdlk+lKTfc4/IGuCZq9ysSnjmavxWOfDgrAjRXJ82nOnQhrMd2+BIy31nOsquCm4qmlz2kTz3+usn2LZZlXWhZ42DnK+1h3sf/uNqD1zs1TrHpUvXcUO1eZ3HuHGOp004J7EJnMPjKpuKj6vsVxVySt/VSpnLe4BvyJunbAbgoe6W+7jMZmFVtx2P1yfO1wbqfK1nnK8NBgNe4npjSfIsD8E6vrzbz+9b5ekovT3Q7uNKELZSZa8s70bLVgd6vQNNGxwMoYMM5Rz6NWfBl1aFtTFwNv3r6tBwBq7EdZ+DEb3PZfC1GSRe33Edz+U1m6uyBu7cRAg3UgN3LmPgNjKzS1chPtdBiDc6lEUhdjFOIZQbO8XV8CtvYr2Hgd3k6Mnqy9X7cumvzWX2vlSbN3vMEDY5tGFLmUNeipYtHv291bIN0hC+HnIfylZHz1Vf5/nuQ1EIz6tzr3e+Qyf70nV+XduDZmF/+RiF8z2EZFuZp+iaLlcFXOfQN28p8xR9leMUXXvmlTINusBx2u3qRfmEMM6s85uONlvQpNr81vLKxBuel4Pu5JSMXuChn29zaEdnrXGs7IQ1jgsTu3oR9UIvZLzQiyKvcax0WOO40EGoL6pzY7TrIKIU7K0eQrqgzG+0q8HgbR50nVimF5opfS6yUXQwGg58zZ1Y5j5Qclr06IPtnnHM7RnWNpT+XVjnvr5jYchay7ro7cUOZZEHF0e2W5dUiGzqy3Xm6dInl5Z55ql4eamHvlzmqS+XGeL++nJ1Alzk9jLHsYlezcKuLrbr8sQJuII6AZczTsAVAZTJlyGlnIDLHeBe4cBoF2FwMWKl+NQZwvD2RBiupMLwdkYYrrQQhnIxpJQwvN1lIaHMHqGyYJd7WLGrHKdf+nIVShdeXV1mi6/afLVHqOMqhza8o8yxRkXLOzz6+5pOijVe4xlrfGddBoTvrHOvd61DJ/vSdW1d24NmYX/5GIVrPYTkXWWONWq6XBXwUoe+ua7McSU1qFznOLC8y6Mvrs8YV/Jxzbc7uufXe+jZPp0Qi7oh0bsbqedxA+N53JhhXquZ6FpvcX35Fe96D7qWBNoGUao5+zjE425wENIbHRTVoQ9yS+y3QYTY55WjylmqvG9/d4Zy3pQIy7upct7EKOe767y3K7CNLCVsNzkI27vr/BQ+gBIapxCl4CuFusl9VK5xUcT3lNktVrS8x0Pg39tJbvF7Pd3i9/m6xQrh+zyG6/eX2S1WdL3f0y3Wl+tXLT7QeYra1nCZmkRbTEP9v0dymt6I5Ld38rtnbVu5D0raPyTT/8n04bodz7sAD7irWdiRpI0tpdMFxohavz50xfNBn/iFYlZX0TZiqMtnKD7ZYRlCDcVzoXeahf/VbFFm7Ze/1g//j8JYDzzTIwlKrX3Zdm7JzYmQ3ELdkpsZBrkK0c0OFujWOjcN1nTqekrom0SYYesWj2ELrcpHNDPTTN9H6tJN320y76MyfUym2+vaI3PtgFscOuC2QBpRCs8dlnje/9Irf1a/rm1WJ+i4LKqdVNu2WcOlHR93FBIqCwOSvr8jwf3x5HcMyMKd8tknZLpLpruJLLguKn/EgSd3OsjNPRn5cE/S7k8kv3clv3fXtZW7V95/UqZPyfTp5Hk3EcQdqNXGxBeGllN1uRoaFxnyxfERDxw+eO71xNN6uSr6rQ5C+hnP0eUzMLrUijaB9KG3M1yqWJ3oiufWSHhc3CL2co0vY9lSxA0VfsS50pQT9jQNE3FoqhH2NB0o4tDkICy54SIMTaXwjBD29O8Vaa4xUsTBM0rEwXOQcMPj2ocqEusSYFJlP+Cxfjha2OPYp7a8bT5Ewj/S4Y1GVXZqrTueMcIexyG1cXR2rANNgyPp7DgRB894EQfPwSIOngkiDp5DRBw8h4o4eA4TcfAcLuLgOULEwXOkiINnooiDZ5KIg+coEQfPZBEHzxQRB8/RIg6eqSIOnmNEHDzTRBw8x4o4eKaLOHhmiDh4jhNx8MwUcfDMEnHwHC/i4DlBxMEzW8TBM0fEwTNXxMEzT9jPYfAqZ2xqvvBru+v8bYGwp79fpPnbiSIOnoUiDp5FIg6exSIOniUiDp6lIg6ek0QcPCeLOHhOEXHwnCri4DlNxMGzTMTBc7qIg6dFxMGzXMTBs0LEwbNSxMGzSsTBc4aIg+dMEQfPahEHzxoRB89ZIg6es0UcPGtFHDzrRBw854g4eNaLOHg2iDh4zhVx8GwUfvM3VzybRJz2bBZx8GwRcfBsFXHwnCfi4DlfxMGzTcTB8xYRB88FIg6et4o4eN4m4uC5UMTBc5GIg6co4uDZLuLguVjEwXOJiIPnUhEHz2UiDp7LRRw8V4g4eN4u4uC5UsTBc5WIg+dqEQfPO0QcPNeIOHjeKeLguVbEwfMuEQfPdSIOnutFHDw3iDh4bhRx8Nwk4uB5t4iD5z0iDp73ijh43ifi4Hm/iIPnAyIOng+KOHg+JOLg+T8RB8+HRRw8N4s4eG4RcfDcKuLg+YiIg+c2EQfPR0UcPB8TcfDcLuLguUPEwfNxEQfPnSIOnk+IOHjuEnHw3C3i4LlHxMFzr4iD55MiDp5PiTh4Pi3i4PmMiIPnPhEHz2dFHDyfE3HwfF7EwfMFEQfPF0UcPF8ScfB8WcTB8xURB89XRRw8XxNx8HxdxMFzv4iD5xsiDp5vijh4viXi4Pm2iIPnOyIOnu+KOHi+J+Lg+b6Ig+cHIg6eH4o4eH4k4uD5sYiD5wERB89PRBw8PxVx8PxMxMHzcxEHzy9EHDwPijh4HhJx8PxSxMHzKxEHz8MiDp5fizh4fiPi4HlExMHzWxEHz6MiDp7HRBw8vxNx8Dwu4uD5vYiD5w8iDp4/ijh4/iTi4PmziIPnLyIOnr+KOHieEHHwPCni4HlKxMHzNxEHz9MiDp5nRBw8fxdx8Dwr4uB5TsTB87yIg+cFEQfPP0QcPC+KOHheEnHwvCzi4PmniIPnFREHz79EHDz/FnHwvCri4PmPiIPnNREHz39FHDz/E3HwvC7i4FEVLMuSim54cpHw1ETCUxsJTz4SnrpIeOoj4dktEp6GSHgaI+HpEglP10h4miLh6RYJT/dIeAqR8PSIhKdnJDy9IuHZPRKePSLh6e2Jp5zn/u3pSJMrLXPJF6NKlT855YtRpdqxV6Q+7JOza8slx0z5C1Ys5/cy9g4kV6Xw9M3Z0+/7DUDn7z840HRLJJr6OdA0PdJ3E/o70HRzpA8IDYiks/tGwtMcCc/ASHj2i4RnUCQ8+0fCMzgSngMi4RkSCc/QSHiGRcJzYCQ8wyPhGREJz8hIeEZFwnNQJDyjI+EZEwnP2Eh4xkXCMz4SnoMj4ZkQCc8hkfAcGgnPYZHwHB4JzxGR8BwZCc/ESHgm5eznZHiVMx50lGfby0nT5Eg0ucRcpgSiqRSeox1kZGCkWMJUB5r611aePB0TSZ4cYpK5aRUo48dGkvHpDvJ0b6QY3gwHmmJ9cPu4SOPSzEh4ZkXCc3wkPCdEwjM7Ep45kfDMjYRnXiQ88yPhWRAJz4mR8CyMhGdRJDyLI+FZEgnP0kh4ToqE5+RIeE6JhOfUSHhOi4RnWSQ8p0fC0xIJz/JIeFZEwrMyEp5VkfCcEQnPmZHwrI6EZ00kPGdFwnN2JDxrI+FZFwnPOZHwrI+EZ0MkPOdGwrMxEp5NkfBsjoRnSyQ8WyPhOS8SnvMj4dkWCc9bIuG5IBKet0bC87ZIeC6MhOeiSHiKkfBsj4Tn4kh4LomE59JIeC6LhOfySHiuiITn7ZHwXBkJz1WR8FwdCc87IuG5JhKed0bCcy3gMa2BPvf6669nwfOuSO25LhKe6yPhuSESnhsj4bkpEp53R8Lznkh43hsJz/si4Xl/JDwfiITng5HwfCgSnv+LhOfDkfDcHAnPLZHw3BoJz0ci4bktEp6PRsLzsUh4bo+E545IeD4eCc+dkfB8IhKeuyLhuTsSnnsi4bk3Ep5PRsLzqUh4Ph0Jz2ci4bkvEp7PRsLzuUh4Ph8Jzxci4fliJDxfioTny5HwfCUSnq9GwvO1SHi+HgnP/ZHwfCMSnm9GwvOtSHi+HQnPdyLh+W4kPN+LhOf7kfD8IBKeH0bC86NIeH4cCc8DkfD8JBKen0bC87NIeH4eCc8vIuF5MBKehyLh+WUkPL+KhOfhSHh+HQnPbyLheSQSnt9GwvNoJDyPRcLzu0h4Ho+E5/eR8PwhEp4/RsLzp0h4/hwJz18i4flrJDxPRMLzZCQ8T0XC87dIeJ6OhOeZSHj+HgnPs5HwPBcJz/OR8LwQCc8/IuF5MRKelyLheTkSnn9GwvNKJDz/ioTn35HwvBoJz38i4XktEp7/RsLzv0h4Xo+ERx2OZVmWVHTDk4uEpyYSntpIePKR8NRFwlMfCc9ukfA0RMLTGAlPl0h4ukbC0xQJT7dIeLpHwlOIhKdHJDw9I+HpFQnP7pHw7BEJT+9IePaMhGevSHj6RMKzdyQ8fSPh2ScSnn6R8PSPhGdAJDz7RsLTHAnPwEh49ouEZ1AkPPtHwjM4Ep4DIuEZEgnP0Eh4hkXCc2AkPMMj4RkRCc/ISHhGRcJzUCQ8oyPhGRMJz9hIeMZFwjM+Ep6DI+GZEAnPIZHwHBoJz2GR8BweCc8RkfAcGQnPxEh4JkXCc1QkPJMj4ZkSCc/RkfBMjYTnmEh4pkXCc2wkPNMj4ZkRCc9xkfDMjIRnViQ8x0fCc0IkPLMj4ZkTCc/cSHjmRcIzPxKeBZHwnBgJz8JIeBZFwrM4Ep4lkfAsjYTnpEh4To6E55RIeE6NhOe0SHiWRcJzeiQ8LZHwLI+EZ0UkPCsj4VkVCc8ZkfCcGQnP6kh41kTCc1YkPGdHwrM2Ep51kfCcEwnP+kh4NkTCc24kPBsj4dkUCc/mSHi2RMKzNRKe8yLhOT8Snm2R8LwlEp4LIuF5ayQ8b4uE58JIeC6KhKcYCc/2SHgujoTnkkh4Lo2E57JIeC6PhOeKSHjeHgnPlZHwXBUJz9WR8LwjEp5rIuF5ZyQ810bC865IeK6LhOf6SHhuiITnxkh4boqE592R8LwnEp73RsLzvkh43h8Jzwci4flgJDwfioTn/yLh+XAkPDdHwnNLJDy3RsLzkUh4bouE56OR8HwsEp7bI+G5IxKej0fCc2ckPJ+IhOeuSHjujoTnnkh47o2E55OR8HwqEp5PR8LzmUh47ouE57OR8HwuEp7PR8LzhUh4vhgJz5ci4flyJDxfiYTnq5HwfC0Snq9HwnN/JDzfiITnm5HwfCsSnm9HwvOdSHi+GwnP9yLh+X4kPD+IhOeHkfD8KBKeH0fC80AkPD+JhOenkfD8LBKen0fC84tIeB6MhOehSHh+GQnPryLheTgSnl9HwvObSHgeiYTnt5HwPBoJz2OR8PwuEp7HI+H5fSQ8f4iE54+R8PwpEp4/R8Lzl0h4/hoJzxOR8DwZCc9TkfD8LRKepyPheSYSnr9HwvNsJDzPeeKpIXhGr5y98Q9jbh72hbnTPrd9+5JTh457csa2L264buofXr7heZl/gLCn6flANJXC80KNPf2fqYvDp7ywp/8fkfquTtjT9GIkmuqFPU0vRaJpN2FP08uRaGoQ9jT9MxJNjcKeplci0dRF2NP0r0g0dRX2NP07Ek1Nwp6mVyPR1E3Y0/SfSDR1F/Y0vRaJpoKwp+m/kWjqIexp+l8kmnoKe5pej0RTL2FPk6iNQ9Puwp6mXCSa9hD2NNVEoqm3sKepNhJNewp7mvKRaNpL2NNUF4mmPsKepvpINO0t7GnaLRJNfYU9TQ2RaNpH2NPUGImmfsKepi6RaOov7GnqGommAcKepqZINO0r7GnqFommZmFPU/dINA0U9jQVItG0n7CnqUckmgYJe5p6RqJpf2FPU69INA0W9jTt7kBTrdgRL30mIWioTMNkOlCm4TKNkGmkTKNkOkjRKdMYmcbKNE6m8TIdLNMEmQ6R6VCZDpPpcJmOkOlImSbKNEmmo2SaLNMUmY6WaapMx8g0TaZjZZou0wyZjpNppkyzZDpephNkmi3THJnmyjRPpvkyLZDpRJkWyrRIpsUyLZFpqUwnyXSyTKfIdKpMp8m0TKbTZWqRablMK2RaKdMqmc6Q6UyZVsu0RqazZDpbprUyrZPpHJnWy7RBpnNl2ijTJpk2y7RFpq0ynSfT+TJtk+ktMl0g01tleptMF8p0kUxFmbbLdLFMl8h0qUyXyXS5TFfI9HaZrpTpKpmulukdMl0j0ztlulamd8l0nUzXy3SDTDfKdJNM75bpPTK9V6b3yfR+mT4g0wdl+pBM/yfTh2W6WaZbZLpVpo/IdJtMH5XpYzLdLtMdMn1cpjtl+oRMd8l0t0z3yHSvTJ+U6VMyfVqmz8h0n0yflelzMn1epi/I9EWZviTTl2X6ikxflelrMn1dpvtl+oZM35TpWzJ9W6bvyPRdmb4n0/dl+oFMP5TpRzL9WKYHZPqJTD+V6Wcy/VymX8j0oEwPyfRLmX4l08My/Vqm38j0iEy/lelRmR6T6XcyPS7T72X6g0x/lOlPMv1Zpr/I9FeZnpDpSZmekulvMj0t0zMy/V2mZ2V6Tialiy/I9A+ZXpTpJZlelumfMr0i079k+rdMr8r0H5lek+m/Mv1PptdlUsqWk6lGplqZ8jLVyVQv024yNcjUKFMXmbrK1CRTN5m6y1SQqYdMPWXqJdPuMu0hU2+Z9pRpL5n6yLS3TH1l2kemfjL1l2mATPvK1CzTQJn2k2mQTPvLNFimA2QaItNQmYbJdKBMw2UaIdNImUbJdJBMo2UaI9NYmcbJNF6mg2WaINMhMh0q02EyHS7TETIdKdNEmSbJdJRMk2WaItPRMk2V6RiZpsl0rEzTZZoh03EyzZRplkzHy3SCTLNlmiPTXJnmyTRfpgUynSjTQpkWybRYpiUyLZXpJJlOlukUmU6V6TSZlsl0ukwtMi2XaYVMK2VaJdMZMp0p02qZ1sh0lkxny7RWpnUynSPTepk2yHSuTBtl2iTTZpm2yLRVpvNkOl+mbTK9RaYLZHqrTG+T6UKZLpKpKNN2mS6W6RKZLpXpMpkul+kKmd4u05UyXSXT1TK9Q6ZrZHqnTNfK9C6ZrpPpeplukOlGmW6S6d0yvUem98r0PpneL9MHZPqgTB+S6f9k+rBMN8t0i0y3yvQRmW6T6aMyfUym22W6Q6aPy3SnTJ+Q6S6Z7pbpHpnulemTMn1Kpk/L9BmZ7pPpszJ9TqbPy/QFmb4o05dk+rJMX5HpqzJ9Taavy3S/TN+Q6ZsyfUumb8v0HZm+K9P3ZPq+TD+Q6Ycy/UimH8v0gEw/kemnMv1Mpp/L9AuZHpTpIZl+KdOvZHpYpl/L9BuZHpHptzI9KtNjMv1Opsdl+r1Mf5DpjzL9SaY/y/QXmf4q0xMyPSnTUzL9TaanZXpGpr/L9KxMz8n0vEwvyPQPmV6U6SWZXpbpnzK9ItO/ZPq3TK/K9B+ZXpNJfa9efUtefeddDfzq++jq2+Xqu+Lqm9/qe9zqW9nqO9bqG9Pq+8/q28zqu8nqm8bqe8PqW8DqO73qG7rq+7bq27Pqu7Dqm63qe6rqW6fqO6TqG6Hq+53q25rqu5fqm5Tqe5HqW45vfGdRJvV9QvXtQPVdP/XNPfU9PPWtOvUdOfWNN/X9NfVtNPXdMvVNMfW9L/UtLvWdLPUNK/V9KfXtJ/VdJvXNJPU9I/WtIfUdIPWNHvX9HPVtG/XdGfVNGPW9FvUtFfWdk8kyqe+DqG93qO9qqG9eqO9RqG9FqO84qG8sqO8fqG8TqO8GqDP91Xn76ix8dU69OkNene+uzl5X56KrM8vVeeLqrG91Drc6I1udX63OllbnPqszmdV5yeosY3XO8OkyqfN51dm56lxbdeasOg9WndWqzlFVZ5yq80fV2aDq3E51pqY671KdRanOiVRnOKrzFdXZh+pcQnVmoDrPT521p87BU2fUqfPj1Nlu6tw1dSaaOq9MnSWmzvkqyqTOx1JnV6lzpdSZT+o8JnVWkjrHSJ0xpM7/UWfzqHNz1Jk26rwZdRaMOqdFnaGizjdRZ4+oc0HUmR3qPA111oU6h0KdEaHOb1BnK6hzD9SZBOq8APUuv3rP/maZ1Pvp6t1x9V63eudavQ+t3lVW7xGrd3zV+7fq3Vj13qp6p1S976nexVTvSap3GNX7herdP/VennpnTr3Ppt41U++BqXe01PtT6t0m9d6ReidIva+j3qVR77ncL5N6P0S9u6Heq1DvPKj3EdS7Amofv9pjr/a/q73pat+42tOt9lurvdBqn7LaQ6z296q9t2pfrNqzqvaTqr2eah+m2iOp9i+qvYVq35/ak6f2y6m9bGqf2e9lUvuz1N4pta9J7TlS+4HUXh21j0btcVH7T9TeELVvQ/nFar+D2oug9gmodXm1Zq7WndU6r1pXVeuYat1QrdOpdTG1DqXWfdQ6i1rXUOsIKm6v4uTK4VZxYBV3VXFOFVdUcTwVN1NxKhUXUnEYFfdQcQY1r1fzaDVvVfNENS9T8yA171B+vgKpfHZ9JSbmDb9eraOrdWu1TqzWZdU6qFp3VOt8al1NrWOpdSO1TqPWRdQ6hIr7qzi7imurOLKK26o4qYpLqjigirupOJeKK6k4joqbqDiFjgsMFDvmmWpep+ZRat6i9j0MER2vxXDfN/nt/ecpe5/7w9unYbl+hrwBhrwDDHnDk98P9dpaHHKOkpK2a1Ty+6fe8z5wYdeh/8O8Iw0wJxtgfiH5XTjtvTMOnt+wAvOUP6CuC46ZOO6GX995EeZdneR9+OMDPrvPn2tOwrxrDHk3GfLeY8h7vyHvg4a82wx5HzPkfcKQd7ch71OGvM8Y8r5syPuqIe9+Q943DXk/NOT92JD3c0Peg4a8xwx5jxvynjDkPWXIe8aQ96wh75+GvH8Z8v5ryHvdkFdbk55XZ8jrZsgrGPJ6GfL2MOT1M+QNMOQNMuQNNuQNS/K+9J0L/nPLb+4/G/NGJ3lfPvQ7M399e2FPzJuY5D0w/wMPLep1Xg/Mm2TIO8qQN9mQN8WQd7Qhb6oh7xhD3jRD3rGGvOmGvBmGvOMMeTMNebMMeccb8k4w5M025M0x5M015M0z5M035C0w5C005C025C0x5C1L8rjxvSXJm/rfR6d/8vrL0e16Y+6QVu8KQ96VBpjXGOp91pD3hSTvxnPPOmm/bz08EfPuT6nXM/nVBLRs2rRq4+ZlK9av29Cyec3ytauWrd/YskL+bF21cdOa9ecsO29jy4YNqzZqo9CQ/GqnR5li5YM2C6sr1wD13OsXj2mgAJ3qi9qGpI4f/h3t1763T/365PeYYlt9pEXDVX58V7jvRvBn4V8W+nsZaNZ9M7XYVr5ZWF05NVdR7dRKqtq+f3K/ZfOatWs2b5vyhqhObZXUOW8I6qIdctoBIPlf00SfdwG681DGnifnt8KsLe74rUvq00vDz5PyvZP/G0Ubfv1rs0f6lVtevPejdz/0w56kvrp033QBPCvXbFqxXur3snNWnbds3apNm1rOXLXp7Pk7MjtZwZeFUvB8xvp1fvVbFfyUYlt9pEXDbRLtFQnr6DycWZ5K8lDATkvylAJ1F2332shnNBrLKtVo6LrHFJm6L216+GM/uuYz375j8+0ffXfPR7q9r+uILhdddtlz+zzb7/3PX/YRXXdasY0mhxcSWuk+tuhVv5X26UWv+jW6/oxi28NmfTPp87Unrf7Uq+u7Tr/k3vMe+c3sLd36tXxz37d/9KTvXLfvU8su13WP4+o++Y4PXFS49/qbm4c/8HL99GufWfbicXWHPvLAW/f+1sWvPfX8DbruTK7uL0567bH7Cje85fxrvnjBoUN3b7nrhodf+Nv3fnRP4cU/3H3uwwfrurOKbW32sS3HFxncKXX0ja57QtELdw9df3aRwb39tjsem3LNA6P/9FqXq05oufT8cVc/uPjvb+lz++C/nHV3v7t66rpzuLp/3Dz1us17rZvw94afXjPmln36P/7S7fc98c9tqw595oknPzfwRV13Lle3xKXrzivu+NU62GxXvZXf84te9VtldEGxrb6rLVbXicW2h83Jb5+xQw7b8N6f7fHo0P1+O/n+u0bduPdL+x/56Bdm3PL8qz9Qi7O67kI/3K20Lyp61c/r+ouLbfUdeNfa9iXFtofNwubKtbZ9adG1rqjTdU8qdqx74JGNz3/0qgsvE7+//el3/vPAr0we2XPAlJ6jHvrAr/Y5Z+PJez+v655c1JQ48ayfdgL7gi9Cx08HHs7lxnKH+qt0/Xq/+ht1/d386p+h6zf41V+v6zf61V+n63fxq79G1+/qV/8cXb/Jr/6Zun43v/rNun53v/qbdP2CX/0WXb+HX/2Vun5Pv/ordP1efvW36vq7+9Xfpn3dPeBhLvnVsHvDcwdb0x99UX3VkmcIv5HQ4uq75Ag8jY+2T/vFuu17MrQUmDxqI/dk8OzJ4OFg1QWEVR8Q1m4BYTVUaBsbA8LqEhBW14CwmgLC6hYQVkjeh9Sh7hUKqxAQVkiZCMn7kPLVIyCskLodUiZ6BoQV0kb3CgirUsdH7Wc1MHk+ixx9/OrX6rbshQ8ZmjR87eugb5RL+dWwaJ7G1UhgOdKeM9GO9NF+2AvwYRvTYO3lCKuByfPpkz0N7UL4WWXI1HbO39Xl+xrow/Ldk7y9oX5fQvs+frTXaFr6MLT0BZgavvKN9FiYLFYds2r5ljOPX38mhY2ii+zpB2WQ7TWioyrunQJLkP8pzFqAh1dXwJeQf+yqzStWn9hy5pmrVspGbCIVOkA4psg/bxIdhUCXyWhkamwNg4bfKDIpUM4kFJwyK67qQSfh6vHrW1ZObdmwacvaVbi0gypBseQIVHxG+x3zasmztB7Tlw7J14r0S3NMw9sb8jhOaJhaVdNkmPbKHgxe/ayGKd+HwOrD1NO01xrqIwysRyXGJNU2UqnboS7O5GvcNuEPT+3Zw1d7soY/TLxWFy4LUvPugG93k4wiTOqC9GXyNCxt7usEPxzsDW3A8nivrjx5dkfyWyAw1aWXfUzDIz6rARpvJW1D3lM5ysJnhKfpwmcIv1FkktucqV+xfVSO+vrh62XDd6RH83ofJo+OyyhHWL4vtAHL47268uTZ55Lfgugoc1SO9mHag89Qjj5J2oa8p3LkyecptnKk4TeKTHKbM/Urto/KkadLOdmG70iP5nU/Jk/D6p/8j3KE5feBNmB5vFdXnjz7dvJbEB1ljspRP6Y9+Azl6GvJfUNKe5qF1bWW6wuH+uc1iI68cqi/Wdfv71d/ta4/wK/+Bbr+vn71RzeQ8o7136ZlcyA8zCW/GvZ+8NxlCThH4AnB2wENv5HQ4oiv1Q7sR/DR9tFlmUEMLQUmjy7LDGLwDGLwcLDqA8JqCAirZ0BYdQFhda9QWF0CwuoaEFZTQFjdAsLqGxBWSLmvVH7tExBWSFntFxBW/4CwQvI+ZBsLAWFVqqwOCAhr34CwmpN7Pd6jf5BLfhuYeg6+R68cgafpxGcIv5HQ4ogvZ+ILto/Oefb3w9czR+ojPoSp6dG8HszkaVj6XW+c82D5/aENWB7v1ZUnz3RArEBgqovOeQYz7cFnOOfpnsDtzrSHxpdc5RXrUx5iPSqvWfoT4Wk68RnCbxSZ9CNnkh+OL7p9g/3w9bDpX6RH8/oAJk/D0uchoLxi+cHQBiyP9+rKk2eDibyibFN5PYBpDz5Ded03175tyHsqR558nmYrRxp+o8gktzlTv2L7qBwd4IfvGBu+Iz2a10OYPA1raPI/yhGWPwDagOXxXl158mwckSOUOSpHQ5j24DOUo5EJ3IaU9jQLu4vqmIaBsJEP9v2Ue8FWDjX8RpFJLnImPnL6qNs31Atf7nkqO4gPYWp6NK+HMXka1oHJ/yiHWH4otAHL47268uTZ0UQOESaVnWFMe/AZyuGRxJ4h76kc+fG5lfSScqThN4osctsmR1y/cvqo2zfMD98UG74jPZrXBzJ5GpY+lwflCMsPgzZgebxXV548m0vkCGWO2rMDmfbgM5SjmcSeYXvU1SysrhzXFw71O/AWYWjYyCuHfn7dVo41/EbRsd985Hg4wZfWD7rtIxhaCkwe8hjzEM8IBk8VVhVWFVYVVhVWFVYV1s4Na2gV1psC1q4gX1UdqvZj1U5U9XFnhVWVr6qs7oqyWvUnqvyqtrHK+50VVlVWqzKxK/KrKl/VftwVYVV1qCoTuyLvq3a1qkNVflVhlYJVnVtV21i10VVZ3VlhVeWrSlcVVlUfY7axCqtqc6rjULWN1TZWbU6VX9V+rMrXzgurGuuotrFqc6p2ogqrKvdVHaryvqpDVViVLKtVf6IqE1XeV3kfE1Z1HKryq6pDVVilYFW6TOhzafHMMPq9Gu58ruEGPFhfl2ti6uWS3waGPoWnWVhd1ueWafiNomObHfDlTPzn+KLbPpKhpcDk0X4eyeAZyeCpwsoOa1iFwqq28c3Br12BriqsN4c+Vu1EFVZVVqv2PiZd1X6strEqX9WxY2elqyoTVX5V5avaj1VYVR2qysSuyfuqXa3qUJVfVVilYFXnVtU2Vm10VVZ3VlhV+arSVYVV1ceYbazCqtqc6jhUbWO1jVWbU+VXtR+r8rXzwqrGOqptrNqcqp2owqrKfVWHqryv6lAVViXLatWfqMpElfdV3seEVR2Hqvyq6lAVVilYVZmowqrCqsKqwqrCqsKqwnqzw2pI/h9BYDcLq+vEBga2Q/1luv4ov/rn6voH+dU/X58pNhoe5pJfDXsMPK+1hz0mR+CJpD4+Q/iNhBZHfK3nqY0h+Gj7tFzoto9laCkweVRGxjJ4xjJ4OFj9A8KqCwirW0BYPQPC6hsQViEgrC4BYTUGhBVSJnoEhDUyIKzuAWGNCgirPiCsfgFhhdTtAQFhhbSFIfWxa0BYIfuxOSCskDIRkvchdTtkG0PKRENAWJVqJ0LStSv4TNUxrfN4H1IfdwsIK2QbD6pQukL6EyHb2Jzcc3NhzC9xbaFzTQ0DYY+D5w7z3kk5Ak8Ifp6t4TeKju30mWePI/jS+KrbPp6hpcDk0Xn2eAbPeAYPB6t/QFh1AWF1q9A2dgkIq2tAWP0CwgrJ+wEBYVX70Q1Wc0BYIWWiR0BYDQFhhbRf3QPCCsn7kLIakveVar9CympI+WoMCCtkP4aUr5A6FFK+6gPCKlRoGyvVlwvZxpD+RKX2Y6X6cgcFhNUcEFZIfoX0Mav+xJtDh0LaiZB0hZSvUQFhjQkIKyTvQ/oAeqzVcaBRUC+X/GaMgQ3MEXiaTnyG8BtFx74MFQPD9mm+6PaN98PXbNMPSI/m9cFMnoY1Ifm/DmBh+fHQBiyP9+rKk2ezE+EpMDAHExoOZtqDz2qAxhkJ3O5Me6hOcv0yjoFbYOpTHmI9Kq+e/VlrK68afqPIpB85k/xwfOHkR9fl+pXy37ZfTbBo3Fjnq6uBqefAj7wt/zX8RpGpv3MmvnB2VLd9AkNLQXTUwbnFtnI0r5Z5VhMZFu0vdTUL46W7owMvNG0I9xB47tAvdbZyoOE3io794iMHhxB8aTzVbT+UoaVA8tRF++5QBs+hDJ6dBRbKELVROl9dGeWip69ceNojo1xwdlO371A/fD1s+gHp0bw+jMnTsA5P/kd/AssfCm3A8nivrjx5tp34EwiT+hOHMe3BZ+hPXED8CWzPwQQu1y+HMHC58YzyEOtRefXsT2s7puE3ikz6kTPJD8cXTn50Xa5fKf9t+3VnhKXl71ADHld7ifUPNeAZnxHPeEs8EzLimcDgaWLqUX1CftvLd+73tvqk4TeKTPqbM8kTxxfdvsO98OUepzYb8SFMTY/m9RFMnoZ1ZPI/2n8sfzi0Acvjvbry5NkdxP4jTGr/j2Dag8/Q/t9K7D+2h85nXPUc61MeYj0qr379KQq28qrhN4os+tEmr5z8cHzR7TvCD193m/5FejSvj2TyNKyJyf8or1j+CGgDlsd7deXJsy8SeUXZpn7wkUx78BnK62cSuA0p7WkWVtdsri8c6v+hQXTklUP9Mbr+RL/6N+v6k/zqD9P1j/Kr/wVdf7Jf/Wm6/hS/+p/T9Y/2q79d15/qV3+Jrn+MX/1Tdf1pfvWH6vrH+tUfp+tP96v/pK4/w6/+DF3/OL/6X9T1Z/rV36Drz/Krf52uf7xf/am6/gl+9V/W9Wf71b9B15/jV/95XX8e1HeJ5ev6C/zq12p65+NDhiYNX4+Fc6F8LuVXw6J5GlcjgeVIe85EO9JH/an5gA/bmAZrviOsBibPp0/mifR2IfwmAy0cnfvCfdY29wgI6/CAsOoDwjoiIKwjA8KaGBDWpICwjgoIKx8Q1uSAsKYEhHV0hcKaGhDWMQFhTQsI69iAsKYHhDUjIKzdA8I6LiCsmQFhzQoI6/iAsEKOHScEhDU7IKw5AWENrkBY6ppX3PGbMd5xXMZ4xeEZ4xUnZIxXLMgYb5iSMd4wPWO84JiM8YLjta99LDzMJb9cLMDB75+dI/CE4OdPGn4jocURX+v8aTrBR9tH191mMLQUmDyqIzMYPDMYPBysrgFh9QoIqxAQVt+AsLoEhNUjIKxuAWE1BoRVFxBW9wqFFVJWmwLCCsn7iQFhhZTVkPrYr0LbGFIfxwSEFVKHKpX3/QPCCmknQo61Ie1ESN6H5FelyldI3yRkP4bk/a5gJwYEhDUpIKzJAWEdVaGwpgSEdXRAWJMDwhpZoXRNDQgrHxBWSJk4PCCsYwLCmlyhdIWU1Uq1hSMCwpoSEFbIfgxJV6XyK6SsTgsIa3JAWCHtV3NAWCH9r90CwgoZUwjpk4ecK4SMPWr/Xsexp0K9XPLbkNx7xvC75wg8TSc+Q/iNhBZHfMYYPraP7p2e4Yevm00/ID2a18cxeRqWXrvFvdNYfga0Acvjvbry5NnPEmUrEJjqonunj2Pag89qgMYf7ta+bch7KkeefO5nK0cafqPIJLc5U79i++haENdPBSaP+sy2/OZg1QeE1RAQVs+AsOoCwupeobC6BITVNSCspoCwugWENTMgrJA6FLIfewWEVQgIq19AWCF1O6R8hdShkHZ1V+B9Y0BYIW20toX6vUb0Z3oTPK6+OdbX5Ti/SaVmYXXNb2Da4FB/ka7v+T7LHF3f832UY7VfNRse5pJfDXsOPHfw8bbnCDwheJ9Sw28ktDjia/Up5xB8tH3Up5zH0FJg8uj+Iu59iXkMHg5W14CwegWEVQgIq29AWF0CwuoREFa3gLBmBoRVHxBWSN5Xqqz2CwirLiCskPIV0uY0BIS1K/C+sULb2L1CYYXU7aaAsELyfmJAWCFltVJ9gJCwquO2G6zquN158lUdtzuP99Vxu/N0u1LH7ZD8qlRZHRMQVkh+hbQ5IXnfPyCskDoUctyuVBtdqf5EyDaG9H1D9mNI3u8KdmJAQFj5gLBmBIQVMk5+XEBYUwLCGhEQ1uSAsEYGhHV4QFizAsLaFXg/KSCsowLCOjogrJD8Oj4grJCyGlKHKlXuK7WNu4ItDElXdex4c4wdJwSEFdKXmxwQ1rSAsI4JCCvkWBtSJkLya3JAWCHtRHNAWCHnfLsFhBVyTSdkHCBkfCLk/hz6Ds4cqJdLfhuYegpPs7C6uuUIPE0nPkP4jYQWR3w5E1+wfZovun2e5wM35Uh9xMedAax5vYDJ07BOTP7Hd3Cw/HxoA5bHe3XlybPBSRC8QGCqi76Ds4BpDz6rARr3bWzfNuQ9lSNPPu9vK0f0PGtPuTWeZ83pF9evum6ByaPxKVt+c7DqA8JqCAirZ0BYdQFhda9QWF0CwuoaEFZTQFjdAsKaGRBWISCskPrYLyCskPIVkl99A8IKKV8hdSikXQ0pEyHtaqXqdkh9DKlDvQLCCqmPu4J8NQaEFdIHoO94ob9M3/FyPUMb66d9r0Tnq6uBoc/Bh74uR+BpOvEZwm8UHdvs47Nz/Of4ott+IkNLgcmj8b4TGTwnMng4WF0DwuoVEFYhIKy+AWF1CQirR0BY3QLCmhkQVn1AWCF5X6my2i8grLqAsELKV0ib0xAQ1q7A+8YKbWP3CoUVUrebAsIKyfuJAWGFlNVK9QFCwqrUcTsk70P6ACFtdEh/olJltTpud55drfrkbrCqPnnnyVfVL+w8+apUvzAkvypVVscEhBWSXyFtTkje9w8IK6QOhRw7KtVGV+qYFrKNIX3fkP0Ykve7gp0YEBBWPiCsKQFhzQgIa0RAWCHXh0Lya1pAWCMDwjo8IKxZAWGFlInJAWGF5H1I3Q6pjyF16LiAsKYEhLUryNekgLCOCgjr6ICwQvLr+ICwQtrCkDa6UuW+Utu4K4y1Iemq+iZvjrHjhICwQvoTkwPCCumTHxMQVsixNqRMhOTX5ICwQtqJ5oCwQsYUdgsIK+S6Vcg4U8j4V8j9hfQdTdzbmkt+G5h6Ck+zsLqacgSephOfIfxGQosjvpyJL9w+ad2+hX74uuZIfcSHMDU9mteLmDwNa3HyP76jieUXQhuwPN6rK0+efSxRkAKBqa65xfY0LGLag89qgMabu7RvG/KeypEnn79hK0cafqPIJLc5U79y+qXbt8gP3/02fEd6NL7FfvhqdV8tZWBrWk5K/kc5xPKarhpSHu/VlSfPvkTkZQnU0/ALJE9dVEYxr5Z5VtNJsJYysJBvqN/3Jrzg9APH7RLXWGpXNAyE7Skri211T8NvFJl0IUftoMaXZoM4OdJ1C0zeFLjP0vfqvl+FwqoLCKsxIKyZAWGF5FeXgLC6BoTVFBBWtwptY0OF0tUzIKyQ+hiyH3sEhBVSh7oHhBWyH0PKaq+AsELKV31AWLsHhBVS7ivV5oRs44CAsPYNCKs5IKyQ/Arpm4SUr0r1C0PKfaX6coWAsPoGhLUr+HKVKvchfZPqmOYGq1J9uUq1hSF9uZC2MGQ/huRXpfpfRwaE1RwQVkh+7RYQVkjdDqlDIfkVchwKqUOVyvuQ9itkXK5SY0Mh5Suk71upPmaljh0LA8JqTu6bCGydr66M6039cwSephOfIfxG0bGdodabsH2+6010P3yl2MOQelSpsfKQNiwkrOp6kxuskLG5kDoUsh9DrgeE9HUqNQ4TUr5C0lWp6zqVGqMI2Y8h9yqEtPf07FX0jejZq5wfstiAB+vrck1MvVzy28DQ5+AvXZYj8DSd+AzhN4qObfbxzzj+c3zh9rbpugUmj+7jN+3fQjwcrK4BYfUKCKsQEFbfgLC6BITVIyCsbgFhzQwIqz4grJC8r1RZ7RcQVl1AWCHlKyRdIfsxJF0h7WpImQjZj40BYYXkffcKhRXSTjQFhBWS9xMDwgopq5XqT4SEVfUBOm/sqPoAnUdX1QfovH6s+gCdZycq1QcIya9KldUxAWGF5Fel2on+AWGF1KFKHTsq1fetVPkK6UeH7MeQvN8V7MSAgLDyAWHNCAgrZPz+uICwpgSENSIgrMkBYY2sULpC9uPkgLAODwgrpEyE7MdJAWEdFRDW0QFhheTX8QFhzQoIq1JldXJAWLuCPoZsY6XKV3Ucqso9hXVCQFghfczJAWFNCwjrmICwQo7bIWUiJL8mB4QVUh+bA8IKORfdLSCskOtWIeMTIeMmIfcz6ViH3n+Ic/nxBE+ewZM34MH6ulwDU69ZWF1H6P17I+BhjsBFe1xrDzufI/BEUh+fIfxGQosjvta9i0cQfLR9mqe67RMZWgpMHo3JTGTwTGTwFJg8eo5dCFgNKXQ2C6trIdffDvXPpvzUMJA2nK869G0fW1nS8BtFx/7zkaVJBF9av+i2H8XQUmDyaB8dxeA5isHDweoaENYRFUpXQ0BY+wSEFbKN3QLCagwIq3tAWE0BYYXkV7+AsHYPCGtmQFh1AWGF5H2XgLB6VGgbBwSEtW9AWM3JfSxflcMzISOeCQyeJqZeLvnN6IuMyBF4mk58hvAbRcc2h/JFOL64+iI0dlMp4/SYgLBCjtOVamN6BYRVCAirb0BYu8JYUal+c0i6egaEFdKvCenrhpSJ3QLCCikT9QFhheRXSPtVqfOMkP0Ykq5KHTtC9mNI3ofU7V1pzlJp/KrUcTukbpdjrNXzFZzf5JLfBqZeOeZqGn4jocURX87EF2wfnasdzdBSYPLouvHRDJ6jGTwcrC4BYXUPCKtnQFgNAWH1CgirLiCs+gqlq0dAWN0CwhoQENa+AWE1B4QVkl9dA8IKqY/9AsIKKfchbWHIftwtIKyQNiekTDQGhBWS94UKpWtmQFghZSKkbxJy3A7Zj5Vqv0LKV0h9rFQbHRJWSPlqCghL816v3+F8bA7B4zonxPq6HDfvU6lZWF3L6bxKw0DYuD/VYY63IkfgCcHPKTX8RtGRnz5zymkEX1r/6bbPYGgpMHmT4R7zEM8MBg8H66CAsGYGhFUXEFbPgLD6VWgbewSE1S0grJAyUQgIK6RMHBEQ1q4gE10DwmoICKtSdTsk70Pya7cKbWPfgLBC9mNIuae+YqXIff+AsELKxICAsELKRNX/enPY6JBj7ciAsHYFW9gcEFZIm3NUQFhjAsIKqUMh+RVyTGsICKtS+RVyTKvUuVVI3ofUoZD8Cmmjq2PHm2PsCDm3aggIqz4grGpMofN0KCTvQ7Zx94CwKnU+FJL3XQLCqtR4YUg/p2on3GCF9CeqdqLzeF+pdqI5uddroHgWSC75bUjuJ8Nzh/XYuhyBp+nEZwi/kdDiiK91/XcywUfbR9d/pzG0FEieuqYW28rRvFrmWY0B1twKh6X3L0wWbbCnivZ4JjN4JhvwYH1djsNzREY8R1jiGZ8Rz3gGTwNTr1kYr9ZXk6k8atgIF3W4HLqo4TeKjrrho4ucjeJkUbf9OIaWAslTF5X54xg8xzF4dhZYnSG7HJ5pGfFwtrWJqRdIzo/wlfPJfviMcj4ZnvnIubqnZw5kkadCQFhdAsLqGxBWXUBYPQLC6hYQVr+AsBoCwgrZxp4V2sbGgLBmBoQ1JiCskPIVUh9DyldIWxiSrq4BYYWU+11BJvoHhBVSvrpXaBtD8n63gLBCyn19QFhVO/HmsBMh27h7QFgh/YlK5f2AgLCqOuQGa2SFtnFX0KGQvA85dw85R25O7rszbabxrpEMnpEGPFh/pAHPhIx4JljimZoRz1RLPG82vu3M7WkQvC43C6vrLVxs1KH+SBp71DCQNvyWkkMc9PgcgScEH3fV8BtFR/33ibvOIvjS7I1u+xKGlgKTR799soTBs4TBw8FqCAirX0BYdQFhdQsIq39AWIWAsLoHhBWSXyHbGJKukQFhhZTV+oCwQup2SN53rdA2Vu3Xm8N+hWxjSN73DAgrpNyPCQgrpG5Xqj6GtNGVOtaG7MceAWHtCuPQrtDGkHSFtKuVOm7PqFC6QvLroICwugSEFdI3qdQxraqPndfGSh23d4V5WkiZOCogrEqV+5kBYVVqrKNXQFjlsNHcmgB9L8F1TQDrV8Iax7SMeKZZ4qnyrT0eW75V1+6q7YnZnjkZ8cyxxFOVg2p7qu3x2zOgrmZhdY3Xa94HwcMcgYvr3A7r791zBJ4Q/Hq/ht9IaHHE17refzjBR9tH1/tnMbQUmDzsR8xDPLMYPAUmj74DWIVVhVWF5QfrzeaneNjzbvpG2zS0gdSee+7fsn4/nO7f8hw/jPu3sH3Uni9haKHzeHVRWfSNCVQqrM6Q3aoPV21PGp6DMuI5yBJPLL4dnhHP4QweC9tf89PdT9tSf9upK0YO6TbthT69brzkqG9fc/FRQ0ZQf1bDRrhoGxxscd7W9mv4jYQWX9vP2T7OP9BtX8rQUiB56qLn9Cxl8Cxl8BQYPHRekAXWsOS+at+q7ens9szKiGeWJZ6qHFROe4zjz0ubHv7Yj675zLfv2Hz7R9/d85Fu7+s6ostFl1323D7P9nv/85fdlnGMWazrL/Wrv7uuf5Jf/V66/sl+9Xvq+qf41T9G1z/Vr/4UXf80r/q51r5fBk+breq2tf30VmhOtE/W9Vv86u+r6y/3q/8/XX+FV/3c87r+Sq/64r+6/ip42KxvJn2+9qTVn3p1fdfpl9x73iO/mb2lW7+Wb+779o+e9J3r9n1q2RW67hl+uJt0/TP96nfV9Vf71d9H118DD5utqooaXfcswF1jX79B1z/br/4EXX+tX/1DdP11UN+Bd826/jl+9Vvbv96rfu5xXX8DEpX87v+rL+32yp3X5j/96+fXn/fygTf8cPo1X/vEkdc/MHJSccGf3v3sCbruuV64RTddf6Nf/e66/iaG9hJXra67mav75Ds+cFHh3utvbh7+wMv10699ZtmLx9Ud+sgDb937Wxe/9tTzN+q6W7i65iuv627l6v7ipNceu69ww1vOv+aLFxw6dPeWu254+IW/fe9H9xRe/MPd5z7cKqvnJcUd+bWHrn++X/06XX+bX/16Xf8tfvV30/Uv8KvfqOu/1a9+F13/bfCw2aqqKOi6FzJ1dx8jHt738YO3Dd9zwvo5Wy99/MS7L9zjI8OeKPR5dsuRW//96Hpd9yKmbonrYLVv6v7kxQHtg2o/Ut3vBfeaH+qqE20+6J5QRtfNk/J/Pqit3rcTfE2kjoahrgZS37Ev9s4ReILAQpjqahQd2+4Tz6gl+Gj7aDxjD4aWApNHzzzZg8GzB4OHg9UcEFa3gLBmBoRVFxBW14CwegSE1aVC29gUEFalylchIKz6gLD6BYQVUr5C8qtvQFgh5SukDjUEhBVSJkLaVf2+TxNTL5f8aj+gNzx3GJdrcgSephOfIfxGhk4fP6A3wZfGFyUzeh/8ls1r1q7ZvO349S0rp7Zs2LRl7SrqGSHllCsIFZ/lRPvWY14teUbLzSi2/39WsWM9wcCuBXh7QR7HCQ1Te5/Ypr1S6iEvBPOshinfm8DqzdTT97WG+urKKJU5Xb+PX/1aE2+RJg2/SXTkWS7lVwheQzSuRsHzrFlYXTkT7UgftRw4E8E2psHayxFWA5Pn0yec5iOvNPwmAy0cnSiLVIdMMw1dvo+BLizfncGt62oeDYQ8V2ucxiPUBQ1fWUftOSTW8ZhVy7ecefz6Mylsaho1e/qQctrc1AizuUFYgvzfhzyrBXh4mSa4NmonREfRxW7dk+CpDqDVAXTnGEA5w0hp6848nwP3aUbQ5H7OYfBxeBZkxLOAwdPA1GvWN9tvu+OxKdc8MPpPr3W56oSWS88fd/WDi//+lj63D/7LWXf3u6uXcrvH9GxPL/KfGnvd7xim4/orT8qPhjDdwQm+rpCfaNjRW9aePX/V5o1rVm1dJW0xBthbWSQISXjNLrb/f06xYz3uMvkxlL3lMnQafig/iBMtblx2M3RUIJArCBWfZTF0ugf15WPoTAYCYXIK2zulHvJCMM9qRLoh4owYjQ+bDJm6qkPzjstdYnflodlGYm2H5jSJTRuaab06kS7heVJ2fjJkZJTsdqd+UBqrY8COqzoG7CxjQG1KPbzPGqERoqMTyrW/QXTkR7O++ePmqddt3mvdhL83/PSaMbfs0//xl26/74l/blt16DNPPPm5gS9l1K5FGa3CQmWJziBOMI3W6HuV9DQ9ba1a182T8mt7ttU7C5zgwUl+onmLWtauWdmyedW0c87dsmrLqpWz129etWnKOSunbV11zmZnl/i4Yvv/ZxY71uOuLgDvQIDPhcG08ujyw5Pn9YAHy1AG6fIbEqaoD/Y0z99xzwmdpqeJ1Nf56tJCMYLQ3iysLmuTreE3Elp8TfYIgo+2z89k0+0WyBWEis8622Rz25KHMzC1ymKbRqbUo5JLn9Uw5UcQWCOYetRkc/URBtajEkO1CM3MgQxuqkXbQYsGzU/He6DoyAeqSdyWHa11I0lZdWmtG0Xa1CysrsW2WqfhNxJafLVuFMFH2+endSgpiGURgarLYFm8FgFlIqUc13t7MPXoRR2FUSRPXbpXR5M6zcLq6mXbqxp+o8gkRa29Oprgo+2jzstYP3w9c6Q+4kOYmh7N63FMnoZ1cPI/aj+WHwttwPJ4r648efaexDoUCEx1zS22p2Ec0x58hlO564gDhe3Zm7SN65fRDNwCU1+X4/CMyohnlCWecrRH95O2GZ8CZ/FWwtsRhjZzo80IyzaPEOl49s6IZ28Gj9YDXKIbRvIGGvL2g7xRJG8Q5NH1rP2BTi3zOm8w02add4AB5hAGpuq7k3u11VFpIpTjRhrq1RwGOLEu/l9HyqpLv6iaJ2W/BnL1uZ7t24D9TXnN6ZnOQxtH+cLZF52HNovy+hADzEMZmKo983u1L0f5pS5t6yfBc5fJpu1YpuE3Elp8x7JJBB9tHx3LjvXDtzBH6iM+hKnp0byezuRpWLOT/3Esw/LHQhuwPN6rK0+e/ZiMZdOhLB3LpjPtwWc4ln2X6AXyPpfyq+HSZ9QOIm90/2k8qOt7Aj0/79m+Laj3tUxdHQihut8fVuEeImMK1qd9y+mRb/snMm008TmjPO9uq68afqPIZB9yJv3B9lF9ne6Hr5eNfCM9mtezmTwNS69mo3xh+enQBiyP9+rKk2d/JfqKuk31dTbTHnyG+vp7oq/I+6zyarJ5OOtEfX2a6OskyKtl6uoXj/OkfD3o67NEX1E+ad+Wq/103B8VEA/6oRhMTZMFbL/mn+YNyv1sUg9lleocJ+tzGNwcfA2jlGy81pNvW5psaFx07Ht6VFu91y1ko7tI78/uomMfoJ1Osy9Y/iTBt6s+pXxau+oTH05Frw6Y3x6mrp/mR9BxrzVKBDCHzefpxHahH00Xuzh54Gwjx1O6y4jDjXymcXVdv16YZZHa3R4MT7nxWNdvYmih4zGV+2ZhdR1tYx8QfqPIND7mbHlNx+M5fvimmOQEYVJez2XyNKx5yf8o91h+DrQBy+O9uvLk2b6JXBQITHXR8Xgu0x58huPx3mQehrzPOk5wulbK5u5P5uDTIY+zufogjTwp/xDY3CEJTNOYU+720znznIB4UFbpeDyPwKLt1/zTvEFZnUfqzYc8LIfjMcrzfAY3B992PD64F9+2NNnQuKgufRFk41AiG1h/NuEN8m0OycO+puNxqXHoVFJe010vzH5OnpQ/yjAec74Lyg0dj3X5ow3jMWdnTOMxJ4ucbeR4Oo/AOoyBhXym4zHHU2z/YaT9uvxxluOxrs/F54aSPIzP0XkKxufoXAHXFKh/j/G5kSQP43PUDh8KeSgjND7Xx9CegZBH48UY96VrKoMgbyzJ2x/yxpE8jPseTPIw7nsIyRsCeYdCW3Xcl24COS15nnF/AruVLS2uTsvhrxB24wH2VY7gGREQD8LSWylNK86+eOjhi4hnNIMn4xqh9X4SDb9RdNRrH7+XW5Pk1qbcVrbpqhNyBaHiM+Q0zTOtbKsrxH4SbjVzNANTjxTYpnEp9ZAXgnlWw5QfS2CNZepp2msN9REGt3JJ26+fp+0n0TDypPx5MFqNIKM1hwv5QUdMTXvazjBKgy5/AdDQPJ+HmU9p1+gUmO/s1caPC3vxMAUDk2vXONIuSsNYQoMufzHjCZhW+0XKM/U/ekZYl/7PycyBpPzBJdpD+0mXf7uhn0YxNKBOUp5SGmiZcSk0vIOhgbFuU9dv2JZYN0GuPNxravB/ynm672YUAyft0txQUqglklvTGc3Uo+MUSoCuq1qu9wG1vuq6dtXmVSltp5Y7l4KTbnzWl80Y6rkWaj2GavihxlBuzZ4bQ+k6Ftbl1v+wf/H/UnhUn+6e3Cd9umDz+o1pXWo7uOYYsmh9UQKW/p8uaWJeZ4nBYX74jGLATU3dXCm68Qu5glDxmYnzpXo7xPtJ3GaEwxiY2pXCNk1KqVfKyNUw5ScSWBOZepr2WkN9hIH1qMRQDUlzpajLocvfCUPToPl8O/X/q+Cebr0tw8aWnrZa1VkbW9y0ippWjaUHgarLYFm8egBlIqUcJ7knFDvWo5fmmM2Q6dmrTb69mnXI5HqVG8oybu/omiP1EV+lbVf6OlluCbVd6Ysk1KRl/8cwwfkGCUlzVpdaN8TNjXMFkW4x6as56p5uKcSJIt0aONaQZ7ulkIYGfbYU7rl7+3IhtoKZ+hgtHx1FUZ6nE1izS8BaSGClbWFQaU4JWAsILG4Zgbq7WM+0XKXtAV0KahZWVzdbe6fhNxJafO0dt2yB7aP2bp4fvqYcqY/4EKamR/M6bZlNJX2oCNo7LD8P2oDl8V5defLsT8Te4dIdtXfcsh4+Q3v3GFlGQN776iRdAsf+K7U980kSPOK2z2Fdfd4+3aZxKywhPk3sNcon7dtytZ/az9EB8eCYQZeXOVnA9mv+ad5wy8O6Hsoq1TlO1hcwuDn4GkYp2fh3L75tabKhceVJ+StANl4zjOVzCW+Qb6ZXWqgPxNkzLH8GKa/prk8pn7ZsXpuMr9zyMhewRrq0j00D1vUAky4vc3aTm22YZJGzsxxP5xNY3GwT20MDoBxPUT81PMrTbgxPbbafo69Gl2MxeEuXkHEBgy4FY+CZbotBX436jeirUTuMy8soI9pXoy/E7p08z/gaI7vkSnUKeYjL1JgnRFt/cq92F5j6ww14BmfEM5jBk5FXuYwxvtZTL00hUZMM63zuV8OieRpXqFf5OdpN/RByTsbBamDyfPpktKFdnC5ztHB00kWlgcn/H030V+n4QWQ+hi/z50g7PU/BnWArLxp+I6HFV164k1S502a5LTK6boHJOwHuMQ/xDGTwcLAaAsIaExBW14CwegSE1a1C2xiyH0O2sWeFtrExIKyZAWH1DQirLiCsfgFhdQkIK6RMhNTHkDoUUiZC8qspIKzuAWGF5P1uAWGF5H19QFgh+RXSFhYCwgrJr0q1hSH5FdLm7Ao+U0iZCDluh+T9PgFhhZT7kLzvHxBWSN6HbGNIOxHSBwjJrwEBYTUTWLbzel1+EFOeixvpWOB+UF/X1TEQfOXFISZRY+LDIICp4Wf4oopmz8GknA6H14iOLN4vBZYg/x9MntUCPLzwCNgybl0cmyPwaBsEgR9766LrDtbj4R7zEA936gkHqyEgrMaAsGYGhNU3IKy6gLD6BYTVJSCskDLRNSCsbgFhhZSJkPxqCggrJL92CwgrJL/GBIQVUlZ7BIS1K/RjfUBYIfkVchwqBIQVkl+VOg6F5FdIex9SvkLanJD6GFImQvpMIXm/T0BYIeU+JO/7B4QVkvch2xjSTlSq/zUgIKzm5J57UWw4wcPNYSca8GD9iRawTKfMcFv1TSEZbqt+xpPTakz85rbzZwjJaPaMIeVoSAa78tgUWIL8P4Y8SwvJ0F1AfZK3mDUbPXdnsbv46O66gZB3MKF/IMCyiQxi/YEGPPtlxLMfg6eJqafbnZGP1m9aaPiNomObfUJZ3O5Gji8Zd7u1vmlh2nmH9NB3MzkTpvUFdzRzBz5x+oVqTw+KHZHoRkF0NG/0TQtbM6poPGCP9m3z3V2JcDnzbCOvvnhQ3vTOfG7nPNVz1x2X3G5mCgv7HXfQH0LK485uDuYwyMfyhyX9pabWByU7v7kDwvANhSP2KE3raIZW+rbhGnhDYVICk+Oz7ndODg4jeQMZvBxMajtd+24/hgYTLOyvQaS87ov6lPL0UDhdfgb0HX0TQtdPk5/DUmhA+UEa0uTneA/5mb1HaVqx7iCCW5efBfIzj8gP1jfJD91djPKjecSNvXQHvc4Twm7sxfoDDXhGkjyOdtM4Z9o9zvGIw3NiRjwnMnjKPT6cSPAcEhAP91YwNx1ZBPeYp/HQZxQP1p9owDM4I57BDB7O1zgAYGR8C78249Sm9c0CbpqFNNE3iNAncpEDxBXqgw8c7aZpMHeigAnWdEdYGT8s0donpg9ZIPwmAy0cnTYHzNu2eWBAWGMJLE7/FjGwdHnTxwqwvOlN/IyHkNeY+o57Wz9AqGARKadf9q8RHUV8egosQf5fRJ6lhQo4M5p2rJLGW8qMci+ZxTLXHJ7xGfGMt8QzISOeCZZ4jsiI5whLPLH4Ni0jnmnV9rwp5LranspuT9XutMdjq6dVvrXHU7Vv1fZ0dnvKeByk9fKOhr+Tfee0dXlnZzg48I9keSfUwYGPkjArtofqhesqP9bX5Tg8EzLimWCJp9qeantituegjHgOssQzMSOeiZZ4YvXP4RnxHF5h7anqT7U9Me3Bm01PZ2XEM8sST1V/qu2J2Z6qXLfHsyvIAfeNwj2TezUfm96bx4nzSayrl/DpdsA9+rTVm9m7fRsHQv08aaPOwzYONLQR6+tyHB66HQXbQLd1HcDAzJE8pO8AA31Y/4CUekiPujJui209+PIQv/qty+7c1+qQprTvUOp87lfDonkaVyOB5dp2E+1IH+0nPCSWbpnlYI1zhNXA5Pn0yXBDuxB+k4EWjk6UxTQ8+C0xuuVgooEuLK91DGVT180YL6wx9Rc3x8yw5UCzZzgpR99OQBYfkgJLpMDWz0ptOcDuH0hgDSFtKKUGWH9ICiz8yCE3jORJ+QnJQSNqKFiXDAWm3XoZVWWcr8nJetauyVyqS/OaO19a1+V2BB4D95iHeA5h8HCwugSE1T0grJ4BYTUEhNUrIKy6gLDqK5SuHgFhdQsIa0BAWPsGhNUcEFZIfnUNCCukPvYLCCuk3Ie0hSH7cbeAsEL2Y0j7FZJfMwPCKgSEFZJfIXUopD8Rkl99A8Kq2tXOs6sheb9PQFgh5T4k7/sHhBWS9yHbGNJONAWEVan+6pEBYTUn9zr2gHP0gQSPa9gM6+tyGUOZNRlDSq1hNy68hTTR8Dq2M5fyq2HRPI2rUXTksU9cgqPd1A8YKsM2psGa6Agr1HeZDjG0C+E3GWjh6KSh0CxtHkVgccsHXIzIte9ihFVHMbQEDqtq9owl5fSnY2tER7YekgJLkP/HkmelwqooBqaXpumhDa4vM2N900vTsV7O3i8jnv0s8ZTjk3EcnoEZ8Qy0xDM1I56pDB5u1Q0Pg6Arb+oeV3Pr9mxP00jI41aPBiX3eVJ+8p5t9Rr2bM8D5I8+R7s7+V/djyA044qn1sEQR4YjPCH4IVbDbyS0+A6x+xN8tH26r5Vp1CHlxDQev75l5dSWDZu2rF1Vg6BFR01EriBUfJYTHS1aDijDZwPJ/31IPb2YVSvSL80xjXcw5HGc0DC1hGCbBqfUQ14I5lkNU35/Amt/pp6mvdZQH2FgPSoxOfIcNexABneelO+baJUK2I0gR69wuJAfmqdUTvTxL7QMpUGXHwA0NM/nYeZT2kW1eTD5H2VrapHHPw6szH578vgFg5+2TyU9eten0IvtwfIHAA/0ETi1pAylh3uGPMC6af9j2b1E+7bg/5wsHkjKDynRdtr/uvxIQ//vx9Cg6VIX5T+lgZbZK4WGMQwNjNWcun7DtsRqCnLhLgXOytFeoj2xHwMn7dLcUBKrpZdyh2oHxaP/5yRAtTx5QabNlV67avOqlLbTEWFgCs4awV9NgqdNXQ0i01hpPTZr+I2Cl7xmYXXlqPXU+Gj76LL8/gwtBSYvTUtL4VF9mnxBVvfpgs3rN6Z1qe2gzRkLWl+QujnmmbrwUyR6oMYpF53ycDNDfGaa8uhyHJ7RGfGMtsSzX0Y8+1niGZwRz2BLPAMz4hnI4KGw0qYQpyf3eVJ+Phj2YfN5mDUMTHUtKLYvz0V+BjLt0eVLnZ9HeYlRJHquHYcbeUkHwomOtHKbfLnIVXeGvkmOtC6MTOsohtYyvkBsPeRo+LFfIHabDtJYLHIFoeKznGjfesyjI8sBpNxxxfb/+0wHuVebJzIwue3vx6bUo5JNn9Uw5ScRWJOYepp2U2wTYXCxVg2Dq6f+38zUMWmAjQSrizoxxwaENZ2BlfG0vd62mqnhNxJafDVzNsFH20fbPoehpcDk0TWDOQyeOQweDtbYgLDGBYKlLvqafxVWFVYVVhXWzgaLW6edTurh+KlnH9zsgM5QXfc8YH1djsMzNSOeqQyerHsVODwczbo9OHZTvrmelor16emvIyEPF8Pu3pPHiTNZrHtGcp8n5Yfs1Vbvk3umtxH5/Ea7ih1p1nv48pDn4Nd0V7PpseSUdPRx6optcNP0B324c5N7zpcwvT6mYZTqgy+RPhgHeVwfaHrypHwP6IOvkj7A+vRUY05vOHxURupTyo8j9Ony32SWETj6JqbgQ34gn89LwfddJrrCyZ3GnVHuenNyh/pK5c7W77aVU/q+FMopjdiMZGChHNCIja5fL/g+0PDo1yd+zvS5rZzTftXlH7Ls10D2hO1X5BXtVy6yxo1DJjnA/tI8KYiOfZ4WiURY2Nc2/TqSgU/79XFDv3IbKpBO2q+6/B8t+xX3Qb4BB/Ky9ivyyqZfsTztV278xn7VPCmIjuPk/gQWZ6NNEVauX7EPqI3W5f9u6Fcuym2yw7r88xVgh5FXNv3KrQTY9iu1w9ivh5I8077IWDb6NabPqc9P7UIafRzfMi7u0bXoSSlk7MHUF6RujjzbIwWWhqOeYViVslw3N+2jQpTlunxt4qpxOypGMfXVxZko3Z6Mr4dbLwrQ18NH+uEzvh7OmVTX18Ndh8UyiKq69GpBjiGL1hcEVo55hnmcqOL6oBZVbjskjtB1ZKaAImTz/RPO89fltQea5l1oeHlSvjejHhQm0oAeFLXWc5ny6BnTbczYhrkkD+tNTMGTdsgsHR11+X7QVtPoqHGXY3REHtHRcR7k1TLlKb/nM+XnQRkaVZoPeVSlkcdzCZ5SpoPKPyen3Oyb88ZHi/T2lpqVUflCmZhD8rjZHCcLulw5IiXYHioLJl1SF+WNSXaQNwVRWk5QL+cQPCa7pC6TLGB0QUfDGgA24mkWVtcQjYdbfdawcXh16LMVSJO+uKFaP2sktPgO1bUEH20fHarzDC0FJm8K3GMe4uEOWeJgdQsIa2ZAWIWAsOoDwuoXEFaXgLBC8qtvQFgh5atrQFgNAWGFlIm6gLByAWF1DwgrpEz0DAgrpEw0BoQV0q6G1O2QslqpdjWkTIS0XyF1KKRMhORXU0BYIfnVIyCskLIakq7quN15/Arpr4a00SF9gDEBYYW0X5UqEyHtRKWOQyHnMCHbuHtAWFW7+uawXyH78aiAsELyq1JtTqX6hbsFhBVSH0OOtSH7sVL91RkVSldIu9o/IKyQdqJSbXRIukLyvlLtREiffFeY14Yct3tVKF0h57Uh+zGkPoacw4SM+4aEFVImqA7lkv+xzDC4Hwr5WF5/KCrjWvFKuharYSDsOk/YOQJPiPZ0CgK/icGn6WpMyWsW5uulFfd3v+eqxXflSH1NC31G9yfUM+W5NW3NK/SJHXi1nNvDoXHrvDzk1ZG8OsjTNKjfGfPb01fvSZ8N/xB+gSlP30qz7YueoqMeaTnS+2JwHxp9S8r0oXDEU2DqH2vAMzgjnsEMHgor7QNypyf3eVK+f2IXuPNCuD0wgxn6dHnT2ydID8cb+mYT9za8jX1AugoMDaMJntkB8eBeq8MInjkB8eBepbEEz9yAeHBfFX2bcV5APLhHayDBMz8gHtwXOJzgWRAQzwIog8fmqv8XQt4ggKHpWMzQoW3xEnjuYIvzNu1A+I2EFkd8rfu7lhB8tH10f9dShpYCk7cG7jEP8Sxl8HCwhgSEpfu2u+jY1/RjpgsZPAsNeMZb4pmQEc8EBk8TUy+rjnC80XiWBMSDOjOB4FkaEA/KwZ4EzykB8ZwCZYYRPJMYGpQ/sLBP23OVToO8WlJXXfpN/Dwp/8zItnpLEphaBtFWII1YH/2xxUw7KL5TyZxlGdRxsEft9kAJAqsU75YR3i2GPBve6fI/Bd4tJ7zDdlHdboG8JSRvOeQtJXkrIA9hYJ6ANuAzKnNYX5drYurR8WolPHforzob3UD4jaJjm33Gq5UEH7ZdXXTuttoPX17jO4vBx/VDD8HzFPFrWFrHODu7jOShbVxB8tCeLSd5qN9D4R5hprVJ75vnxi4q30jfdJKHPv1skod++BySh74zfRcH20z9W93mOgJHXXSeijJTKzryhfIA9Z/q6vISsBYSWFh/OWnDctKGhUwbyqjX1n5oDL3m9Ey3fTVDS4HJw37DPMSzmsHDwWoJCEvLvx6DtOy+Z+COX9X/74STwrGdnHzTg8R12Zvg4/PXJfd0Xq3uqZ+C/hCVuxYmT8HvnSzudWfai3bCh3dYfzWBpfPyomNMQ11a//Kk/KeJ7+I5Vpyp+YJjBdXHsz1h2+qjht/E4NN0NTJ5NvHWG4c+2+vOFf/5TY7U17TQZzTmtJYpfzRTXvNqHdTPGm/VuLl469kkrw7yNA1cvHWtJ302/EP4BSZvE9y79EWByaNn3vrCQn0LAWuOJywdUz4L6mudDhmz5PyUIwjNcxia5zCwCkz9OSRvOoNHtwfH+XanS/Xh6cE5EY65dE6ky182sK3eV8mcyNb3o3EV1xPOxlvimZYRzzQGT7lj3TSusjIgHpSNaQTP6oB4cNykcZWzAuJBvab+yhyGBiWzvyB6cDbkcXq5qLjjN0/KHzCwrd4vDXqANGJ9jKssYdpB8T1CfBPPMYeNq+CYaOLdo4R3SyCP4x21Ia2xauDd44R3iJvqNvJpJcnD8WI1yUNeUb+T80XwmcnvpHzDepq/GX0Y67iKht8oMslH6/xrHcGHbVcX9dHW++FrjatsYPBx/YBxFeQp4tewaFyFO3OBs43U30J7djbJQ/2mcZU5JdpEYwocfVp3dBzg5eYdv0p3XibzN8S3uNg+D+VWxxAUjH8R/UM+rCDt4ebk+IzqCtbX5UKOa9y8kvpdrvNKrL+a5K1k8Oj2YFwXbWbt3jw9aDMx5kNtpi7/p+a2evV7t28/x2euP6nf5dqf4y3xTMuIZxqDp9z+EPW7yuUPUb+rXP4Q9bvODogHx1rqd6XpwT5ED9ZCHqcH1O/S5S9tbqs3wKAHSCPWR79rBdMOim9QgiPjOM76XRpWKd4NJrxbAXk2NkSXP7O5rd5QBxuCvgT1rZAfZ5E8HJMRBuYJaAM+ozKH9XW5Jqae5q/urw3wvBx+l4bfKDq22cfvsvWDdPs2+uFr9bu2Mvi4fkC/C3mK+DUs6ndxPgVnG9eTPLRn60ge6jf1u1aWaBP1uzjZp7Bwby7nZ9E4+5REv5SuHZXcc3qOuvw9Uo4bg3QfIG/KsZ5DY8SesfBWuebWTTk/zBSv5vp+C9xjHuKxjTMuDQhL9ysnY9QPc13bH2+JZ0JGPBMYPKa1RhvZ4vBwvCm3f0T3FZXLP6J+2NqAeHBMpH5YWhz4dOJLrIM8mziwLt/Q3FZvBfEl0FbQcV/XRz9sNdMOim818cM8x1nWD6P+RBrvzrKYy5l4p8s/vW9bvXUG3lHdtvW1ziZ5OF4jDMwT0AZ8RmUO6+tyTUw9Ol55+inWfpiG3yg6ttlnvNpI8GHb1UX9sK1++Fr9sCKDj+sH9MM43wthUT8M7SyNbaBt3EDy0J5RHw31m/phq0u0yeSHrU6BZeuH6fKXEbvh6TexdkPDqvpr9v5aqPVqdb8kIKyqv9aGhz6r+mth8Pj4a7cF8tfeAT7H7RH8tbsqwF+7J5C/th549ynCOy62wfGV+mvoR1F/DXlFx0HXuBkXX9lV4mbceLUzxc24uBRnG6lPhvaMxs1M/lqIuJltjIviTPPr5hfb5+vyP4b42g9J3Azpwv3T8/u2L1f119rX3Znia7pfufcAqL/m+n7geIZmDs+EjHgmMHjK/Z4b9deWB8SDOk/9tTfbOmeaz/G0xTqnyefQ5XuAz/GswV+zWec0+Wu6/IsR1znTePdyIH/txQFt9f5l4B3VbRwbqX2prnPuuKrrnOn+GtpZGl9D2xhqnXN5iTZRf417P5DCsvXDdPkeiU+V8Z0Z1m7QvfpID5X/5X54rf01Db+R0OIr/1zfYftM77fputwcj8bXsryTlvUdLZOtRdjUX+PeR11iwDOeoZnDMyEjngkMniamXi7lV+Ohz0x7jKm/Vi6/kPpr5fILqb9Wrn12tv7aQX3bnqMttvU5dPkbwecYm8DkYkQ0nkPfAaflqb+myx9C7K7n+4Ss3aXvDqKtQ94dRniH76NyNo3yTpc/D3h3JOEd4qa6jXyi9gXHVOrLIa/ofh/XOSnWT3vnUuerK+P7G9b+mobPvePpM15x70lwe3gzzh9a/TXOb+b6Af015Cn3bgD119DOziF5aBvpnn+0ZzR2gvpN/bUlJdpE/TVO9rkYly7Hxbi4camBaaNDH3W3lUENv1F05LePDHLxFW687irazrxLPt87fdXmuVuWr12zYtaqbZumnLNybsvGzWta1k5ZuXLjqk2bkGhEhAeyYj5etIy+X8Y8RxilDolwcd5XloBFD5zA+tQAri4BawGBxQ1u9P860ZFOfVBAjQUcVLQ0uhYRurjFF5ORR+E8X7SHhfXTAi5psLYRWNyL3fT/OtGRTsovE5w0A4p0vYXQlfYylUobSsA6h8DC+hsIrI0lYF1AYHGTcPp/nehIJ+WXCY5KW0vQ9VZCV9rmG5WKJWCdSWBxm3c0rO0lYJ1BYGF9rIv/14mOdFJ+meCodHEJus4ldG2HvItJHtajH9R2naRh/ViTtIkEz8UB8VwMZfaEeur/SyAPbWsT80zj0IP/pfC8HAETDb+R0OKIr3Xwv5Tgo+2jAZPLGFoKTB5dlLqMwXMZg4eDtTwgrEtIe9ImYdeRSdhSyLOZhOnyp8Mk7EYyCUMeXUzayPkxSxl8OdKueqY8wsuT8u9LaFIHsByQHMDC6cjyFFrUPY6npkBHg+ioX+XQEQ2/UXSUHx8duYTgo+2jOnIpQ0uByaNBC04XL2XwcLDOCgiLLpqm6cgdgXTkONCRT1SgjnwygI6gD2WjI54LT9Y6QheesuoI58uadOQShpYCk0c31nO6eAmDh4O1PiAsWx35eiAdGQs68s0y6ojmt62O6PLfC6AjRaDLRkeyBMMQnqYHnyH8UDrCHf5h0pH1DC0FJg/nTJiHeEyL4whra0BYtjryq0A6sg/oyG8qUEd+56gjHO3lmHtx8auD4D6NR5zsFpj6dGF1CYOnlIw82Zenh5MRda/n73RhvRFk5GmDjJgWPGMtrB6eEc/hDJ7YC6vlWvA8nOBZFxAPjit0YXV9QDxoK20PWhP7tD1XaQPkcXqg40V5Uv7O/lAvgcnpQVrMEhdWlzLtoPgaEhwZNx6xC6saVinedSG88x1nrgHedTPwjuo2+vTUxiM/1pE8HJNp3JeLr+IzKnNYX5drYupp/ur+KsLzciysFpP7RtGxzT6+VpHgw7ariy6sXuyHr3VhlZtLcP2AC6tFwIn4NSzTwupSkoe2cSvJQ3u2keShftOF1aUl2kTX0jj6TBtsOmuTmecCrXGTGbchnY5NWJfrm7fBPeYhHu5laQ7WkoCwtif31U1mHZ9Vgi9EN5ntKr7QZAdfSF10PNflR8F4PjWCLzSjAnyhmYF8oZ7AuxOqvpDp2ml8oe1++Fp9oYsZfC6+EOLXsN4MvlAtQx+WQ93j4kmCeZYz4KM4api6F4r2dGPeLILDNQY0i6G3jHHdWlv92lniunQNPUss1sbnybiB0dofj7GBcRY8o/Yti3yl9cNyAz7Ptbwajc+0twvxKXtaLzr2YakDvREH9leazvvupyx1+LlpPyVdB1xfAhbdT5m2cRnzbkj8F2WHL9mnfRm9F/AKKHNZck91Cvnwxl4SUo47/CTEge8ITwhe9zT8UAfac/3AvXCoZHM3YZYR7KO0fabcoVk2Mms6IJ6jx7VP0c/GDzjcZCi3minH4VL/475nDYP64u9NYCg+L5jfvo2Il+5NRj+f8/3puLKSoYXDMz4jnvGWeCZkxDOBwWN6OdJG1zg8HG9iv4C2LCAelEkaGyhXrIPGBpYwNCiduZfMb7mX3rnxgr70/ul+bfU+Tea3qAd0rMOD9QRTnsYGdPnPk9hAOQ/WS+PdFwnvuBfQTLzT5W8C3n3FwDuq26YXXJEfy0ge97GaHMkT0AbTC2jcYRC7ygtopgOedoYX0LixjrON9AU0tGf0BTTUb5vYgO0LaLquerkq2ZoAL1fNWrVtUcvaNStbNq9Zf878VeduWbVpcx4gcyMHtfDUEuPRUGlXjvxfQ/LmkHx8y4G7bI4a8DziwNrz1fBDHTXAvdHFeRn0qB6sW2DyLoJ7zEM8ZzF4OFgrAsLSclM9yrPjM4qH443p7RFfPDiKUk+vXEcAdNanB9O8lectVjJM3oouPwG8lReJt2L69KCuj56e6dODuvy/iKeHo09WT0/DKrUK9Crhne+nB/cG3v2X8A5xU902fXqQO/aH+0w8XenG8a+WeWZasaV842ZLGXctWHt6dNeCp3wYdy2YPj3o6Vm2enqcZ8n1A3p6yFPuTVzTUZ5zSB7axmUkj5thcDbI5qgBbJPJ06MR+NkMHp13CuTRT+S2MG3Gz8LrcpOg3GwCYzHknULyToO8FoD/f4Pbtw31huo16i7Va5RjqtfY/2lvl6ftdNRw86R8M9imcf3aw+RklNvJo8tzEWycndCZLHdkrAnWEgNubua0zoCbO/KO0iJEuq41aVzFtjzNm4bkNw95LjZQRSjHzm/DgzS8UaDYBjetn7hZo4lXXD9xK2V0RQ5tzBKSxx1Tw9kYan+4Y3Q4+eTsDY7H2t6UikLTcX5ZCbiUn9zYwY3Bpog6p//UbqD+U7th+yliaje4o9a5I+PpatCUpC8yrswYj1qn8p0XvHynHWe6GGzbMSm2rc4R5vQEjtLRYaCj6kJboPsxoy3Ic7YA9Z3aApMNVper3aR6a1qBt430UD2rZ8ojvDwpPx/6gL4phPZoLaGdi0i7+jxaH5TcbCE+BRfxV+WWEtnj3s5Bm0NlT5c/H+T5lOQ+pN2gR8xyR9OaxhxOzrgIIY6htJ62AxkjqhX1CXPT7ocsK9oqlfMT5rHtGvLJxq5heW1buJ1sVJ/RRlA7gDaC2o/VBnzcKjzaCJON5HaMlFphf57EEVC/qP5zRw/6fmaXjhucDaNjNpa/CGzY9YQ3nCyb/Fhu5w/u2qErYCjrGy1gLTfg5nbTbjTg5nbTUlqESNdJThc1b8ox30C/gOoi10/cTjsTr7h+KpDyyBtX3V1P8rjPDXG6i586uj5l3MZ2cPENzh/AMX8pGbvLvdqbNnZzMWCES33fD4Lu3kt4w9lnbqWU2g8sz72hY5qvm2CtNOA2yS+Hm/v8JKVFMHTiJwjewFVsy9O8KYfuhpwfcLzi+qkgOuo11UHblWeqn7YrzzjuUvksdVqladzFHR509we3ZmiSPW6nBeoxlT1upwWn/6bYmumTE9RucG/jUT3DWAGWp7ECXf6rJFbgueOXjRXQt1wwnsHJd9qn6h4E23Z/im2rc4T5LctYge7HcvjUqO/UFphssLpc7SbVW+wbuuOI2x/A7UKlelYv+Jgl7ijD8j8xxArQHtG4pu1OGNMnNzBW8AKJFXCfE1Llfklkj4vro82hsqfLvwTy/Gvib4SwGzRuycWMTGOO6e1abl2Ak2dtBzLOpa1jBRp+o+jYZp9Yge1urxCnnqlk+3lpjBVwcxGEZYoVlNOumdZDSvGVzt2xjVSf0UZQO8C9RUJtBIePi4WhjTDZSFufBXf03ktiBahfpnUxqv8o76a5NfUbuDePuTkXfRP4P2DDuvdvD5OTZZMfW2q+TmOf3HzdBMsUpygy5bcacCNdWJfiTtNJThc1b8ox30C/gOqiKUajLhtecf1UIOWRN666S09YxPGd6jXKNsbAqHya/Hx1Ud1Nix/+kozd5X5rnM6ti0ALt68AxwEs3wfefB9OeLNdtF02MnExU347lKE2rAh5F1vAMu1puIQpf7EBN9KFdSluSqeux+lu6ylRyW8e8rLqbhELANy0fsLyNrzi+qlAyiNvuH1npjfYiyTP9g12LfOcfHIxett9BRijp6dIcLbQJHulxiwqe9yYxek/tRuo/9RuFCGP2g3sW2o3dH9irADL01iBLn9Y0hcZT8NmYwWXEBq3Aw2cfNO5lS4/B2zbkSm2rc4R5lEJnFKxAt2P5fCpt0MBagtMNlhdrnazmNxztoDGdLi4QxGe0ViB5lE9Ux7h5Un5mdAHNFaA9mg7oR3tkelEDepnoM5grGBdQkeT6Ki7GCuYR2QPbRq1F+qisqfLbwB5PjG5D2k31pM8tAPUt0aZMskZt1aky3HyrO1AxhPtrGMFGn6j6Nhmn1gBp3/cqTEhviKg0qUMPq4fMFaAPEX8GpYpVlBOu4Z8srFr3Mk1BdGxjVSf0UZQO4A2gtqPdQZ8aCOKug2izUaYbKStz4Lz88kkVoD6RfW/CHlU/1Heqd+APKR+wyVAC+fzaLj0KwTngQ27ivCGk+UiPKNj12VM+UuhzEbSHpT1yyxgbTXgvpwpf5kBN9KFdSnuNJ3kdDG5Lct8A/0CqotcP2F5G15x/VQg5ZE3rrp7CcnjToLkdFfLPCefJj9fXVR3ua+AoT+ws8UKbgTdvZ3whrPPpliB63y9CHmXWMAyzddM8svhRrqwLsVN6dT1KilWwPUTlrfhFddPBdFRr6kOxowV3F6mWEGXN3mswGbMx1gBlqexAl3+syRWgDLiIOtsrOBSQiPGM2zm9br8j8C2fSHFttnGCnT5L1dArAD1ndoCkw1Wl6vdLCb3nC3orFjBdy1jBTSuGTpW8JRlrOCBQLGCZ0CefxYhVoB2gMYKuDGHkzMuVoBjKK2n7UDGubR1rEDDbxQd2+wTK+D0zxQr8LSbrbECbo7D9QPGCri5CMKqxFhBKb7SuTsX03Sdb1D74RMreKpMsQIRKFaA8k79BuQh9RsuBVo4nwfHbCz/Itiw+gHtYXKyXIRn5Zivm2CZYgVXMOUvN+BGurAuxZ2mk7FjBegXUF00xWjUZcMrrp8KpDzyxlV3LyV5OL5TvUbZxhgYlc9QsQLqD3DvNnA2IUfoxfKm+UmpvaN0fsL5QtxeoyUpeNAmYJ+kffGpZ8LnUj61xp1R3ruXex9NqfkgfXcGbTfd84I8xveR6NiA77g86fCFQW5/KDdPprJXn1Ke7ifT5Zuhj7XPbpJn0/tfrvLM7TfylWfUDfolP11+SFx57tbZ8kxlFuWZxoQ4ec6JjjYsSzznVxUo/4fsQvI/qcLln5tLmOS/VIyEyj/6b50h/193kP9LDDg5+ddtS5N/jCdi+dkG+ef4a5L/UmuEJvm/jORhvSUpeFD+sd+p/OvyCy3lX+Muh/wjj6j8m+ZN6nKd69A1AfTfTfJP12tDyf8dGb+wbJJ/3dY0+dfwaLx8lUH+OR1cCc+yrnVhGy4leVhvSQqeNH+eyr8uv9ZS/jXucsh/yPlrqTgD9edRN0zyT9c5Qsn/dUT+V0I5Ghs6i4Fheo/ddHaFbgf3zibSquHSdzYvhC9gX0fm3pyPxJ0PrMuHmPOaYJn0s9TZGBQ30kXPo6DvvHPnx5Tx/a+6cr/XyvGK66cCKY+84XRrJckzvS+GNs10Vh6+L0blcyXTDlvdXQlwDyNfkz+7BFzKT9N5hIiL0/+1JA/rmc6EML2rRu0G9i21G9xXK7m1Nzrf+HDSF+X8aiWVb1yLRvmma3e6/GfBtt2aYtvqHGF+1HKcDXRWTb7cZ9WUsptUb7l303Lkf4TFrd9QPasX/FyXnsuiy3+S8es4e7Se0G46c2M5g5ezR7gW/WBCB31HV93jWvTniez5nsX4K5DnLyX3Ie0GPQ8L7QDCSBtzODkrMPVxDKX1tB3I+A649Vq0ht8oOrbZZy3a9ny6jHazdS2aixNy/YBr0dw7tAjLtBZdTrtmOsenFF/p2jC2keoz2ghqB7gvPFMbweFDG4G++INE90udn0N9lpVMOxTcg8h8A/XLdJ4T1X+Ud+o3mM4z2Qi0cD4PjtlY/jGwYc9brPWZ/NgiUx7j4PT8IO49cxMs0/v125nyRQNu7r0dSosQ6TrJ6aLmTTnmG+gXUF0stSZrwyuunwqkPPLGVXfp+jaO71SvUbYx/v58yriN7eDO2eD8ARzzP0/GbtOZd7Zn0NAzFVCv6fk03BoD2pm08yleBd3ttm97mKHPp6BzJtfzKUxn8RWZ8lsNuDm7QWkRIn1sfTOfT0Hn/EXIo3tFuG+4cPpJYwzc2Sk6jxtzOPnkzpaxHXfxbJmX924PN/Q5kFT2OL855LhuOouF2g3qH9LyNFagy++T9IX2P4tQJ2usoEhoxHduOPmmcytdfkxCo+rjASm2rc4R5sAETqlYQaBxPF/ucbzIlEe7SfW2CHl0/siNpchTGivQPKoXfJyCnr+sy4+APqCxAl9/gYvfcfYIYwVzEjpoPFfdY6xgHJE93zjVfJDnCcl9SLth8q0RRtqYw8lZgamPYyitp+2Atisoi+WIFWj4jaJjm31iBbZz94x2szVWsJ3Bx/UDxgqQp0W417BMsYJy2jVTDLQUX+ncHdvoEw/g7MdZBnxoI9AXn0N0n7ORtj4LzjeeTnwWTsep/tu+J0v9Bm4+R8eNtD1Nae/JLgUbtpbwhpPlLGdq0X34Rci72AKWKcZ+CVPe9A4A0oV1Ke40nXwzn6lF/X/cS0H3mNvqbpHk4fhO9RplG/eXr00Zt7Ed3FoI5w/gmD+OjN0YK1gh2ue5xgM4nad+Guf7rmRopb7vVtDdKwlvQsf5bObrJlim+dp2pnzRgLsa52tfnusnmzjfCsgzfR/bpJ9U51G2cdy9skyxgntIrICzCSbZK7Wfhsqe7Tsk1G64xgM4Wad2o5j8j7ECLE9jBbr8e0isAGUka6xgO6ER4xmcfKe9E3w32Lb3p9g21/eMP2QZK9D9GPtd0CLk1TLlXe0m1Vvsm3UEFhdj494Bo3pWL4Tx3Qk6Z77DECtAe0TjmmiPaAyEO9uds0cYK/gRiRWg7mKs4F4ie1xcH20OlT1d/icgz58m/kYIu0H3OHExI9OYw8kZt86LYyitp+1Axrm0daygmNw3io5t9okVFAk+bLu6aKxgux++1lgBN8fh+gFjBUXAifjxvWR1xbZrpvWQIuSZ4pBcTNP0bWDTGga1H6az+tFGoC/+I6L7nI209Vlwv8JtJFaA+kX13zUewM2tqd+wHWjhfB4cs7H8L8GGPUl4w8myyY/l5qDceT6m+boJVpb3nihulzO1OJ0s43kTdeU+c5fjFddPBVIeeeOqu9tJHhcP4HS3mNxz8llqzybV3fUMregP7Gyxgn+A7tY1t4dZjRV0pLMaK2ifFzNWQOUzVKzgrGqswDlWsHvzjt9KjhUMa97xq/p4z2YepmusYO8ETjVW0Hmxgv2bd/x2dqxgevOO+1KxguHN7dvtGyuY2dxWb1RyX40VsFc1VkDwVWMFnRMr0DbCZCN9YgWn76SxgnnNbfVWNreHWY0VpOtkNVbgprvbSZ5PrIDKZ6hYgfYHujNtMu1Bpu8IhnwHAfdkpL2DcE5zW73tze1hhn4HwbT/0eYdhBUG3EWmvOnM4Oo7CO3Lc/3EjbtUz3AsW0HyuPeAOL22fQdhe3P7dqxg2sG9U9gkOurDCoA72OIdBJPsmfYmcbJn+w4CtRuo/9RuxH4H4drmHb+V/A7CR5t3/Ko+vr6Zh+n6DsJNCZzqOwid9w7Czc07frlYAdojGudAe0T9E593EL7VvOO+1DsItze3bzfaNGov1JX2DsJ3m9vq3Znch7Qb1XcQqu8gvAE8+X2zvoPAraFxNiLEOwjaRphspK3Pgu8g7GN4B4HqP3fuQGe9g/BAc1u93ze3h8nJcvUdhB1X9R0EN90tkjyfdxCofJr8fHVR3U17B4H6A9yaJ2cTcoReLG+an5jOWUBcrueprUzBgzYB27aouOM3T8o/3bzjN9IZYHWuZ+Vw80FTHKTUfJCuqaPtpmfrII81Tm5swLXvWjKfzSV5OMcbBvdDIR/LNw7c8av9BmynA79PaII6AmAg7Lwn7ByBJwTv56FPw+FTVyOTl7egZcSF543cd1vd6Bypr2mhz6i81DHlj2PKa17VE9qbhdU1i9MpjVvn5SGP+oGoF5oGpUsz5renr86TPhv+IfwCU35usa2cS1/0FO1lAeVd2z48K2c6yTOdT+ka76V2JO0MWjo/1uV7DGyrN2hge5hcvBvHk3KcA2uCtcSAO8Q3KSktgqETv0nyBq5iW145xxzTfMf13EmOV1w/cfMj6g9Nh7wlJM/W/6JzLi7ey8nnEqYdc+AZ9bHmMLQquI/2aQ+X84FMsmca8znZ4/aacPpP7UbIeC/VM7SZWJ7GdFvPbEn6ImPshY3p0vUdPCfXZb/MdLBt41Nsm+senEMSOKX8z0DrO/lyr++UsptUb03zfG6uwcVdqJ7VC34PAT03XZc/GvqAxnTRHtF4NLeXgrNH9Ew81BmM6a5K6KDzAnWPMd3jiOxx58WjzaGyp8uvBnk+PrkPaTdoTIc7i9g05nByVmDq4xhK62k7kPGMVuuYrobfKDq22Semy+kft2c+o91sjekWGXxcP2BMl9vPjrBMMd1y2jXTOful+EpjrNw6JmcjqB1AG0Htx2oDPrQR6IuvIrpf6nx7k89yNsD9ReKzcDpO9T9kvJeOG5wNo2M2ll8PNuxiwpuiaLts/NjtTPkilDHtZ91uAcv0rkupeDLFXYQ8GsPdTv7ndLKMezHryr3HnONVEcpQ/x9j49tJnq3u0r0ntvtLcK2fymep2B7V3bUMrZw/MIeBu5KBmxMd7ZBNTJc79xr5QW0Cxi6oT4D1pqfg4WIQ6qIxXV3+moQfpXxqjbsc8o48ovLO2WzTt3hKxdDp/BrlhM6hkccaJ7c3WMN84/sEZGw4hYGfI3lI6ylM2wpM/VNSYOE8bTrAon6tLn9f0v/aP2kBuA79eibli4aBsFd7ws4ReELw/qSG3yTS9ayRybOJHd849Nled674z29MdsD0nhpnB45mymteocw68Go5p7sou+rKQ95qkof6p2ngYsdnedJnwz+Ez40hm+DepS84X1LrRVZYnE3OAmuOJywdH0f71EJgcWMextg0T7oz7ZqTUo+WS4uFIx4O/gpC63SG1ulMuwtMfV2uiamXS/nVeOgz0xrDEYRmLja6xEAz1jeNQUeQ9syGPIx5fGsgTw/2yWygh44NuvxXR7bV++7A9PbTOQ/SPF60p8W1P8db4pmWEc80Bk9IueH6czzBc0pAPOgfTCN4WgLiQduyJ8GzMiAetGfDCJ40PfjtwLbnaC/T9ID6yLr8aaAHvzPoAd1noetjfH8J0w6K708JjoxjLRvfp35sGu/+EsiGTAHePelgQ3AsPIXkIT9aSB76TQgD84ToODdQl2k81uWamHqav7q/cE5Rjripht8oOrbZJ27KzZk430K3b50fvta46XoGH9cPGDfl5vMIS+uYzdoo2kYan2yBPNMen6FwjzjS2qTjCN0N9DUxsKhsIe2uvEd4mk58hvAbRUcd9ZEtbo7L+UJ0bMK6tG/UNbXYVo7m1TLPTOMW9duzwKLrzZ3hC03IiGcCg+fN4gtNIHhaAuJBOag0X2if/dqeo323Hc91+T+OaKs3IIFZTl9oUIKjM32hwYR3vr7Qd4B3QwnvEDfVbS7ux/lJLSQPeUVjj1w8iourcrFHyjesR8crT9/E2hfS8BtFJvloHa84H5EbrzL6eq2+ELeuwfUD+kLc9/UQlskXmk3y0DZSf6cF8uheaJMvNLtEm0y+0Gxog/p/efL/p0B3JiW608TgW1xsn4dyu1C0wZhC9A/buoK0p0V0bA8+M8WgdLmQ442mGfeV0xjUcobm5Qaasf5yktfC4KHjNLWZx+/H04M2E8d4ajN1+Q9Dv8/ZL7391PYhzdTvcu3P8ZZ4pmXEM43BU24/hfpdKwLiQT2gMahy+UPU71odEA+OtdTvStODlUQPuHVa1IO0ddrJoAdnGvSAxjzwW/KCKU/9Ll1+LfG7PMdx1u+isZQ03p0TyIYMAt6d62BD0JdYQfJs3yOge3e4WAv3jhK3P4K+V4T1NH8zxmis/S4Nv1F0bLOP32XrB+n2rffD1+p32X6vHv0uLu6EsKjf1QJl6JiKttH03jONT6F+U79reYk2Ub+Lo6+JgUVlC2kvRwxKw28UHXXUR7ZWEHy0fTQGZTorB8ctGoNayeBZyeDh+hn7IissGoPC9VfqC3FrwXMMeMZb4pmQEc8EBk8TUy+X8qvx0GcUD8ebcvtcNAZVLp+rs2JQaeP5bRYxKNN4rst/e3hbvdsN47lNDMrkC+nyd0WMQaXx7p5AvtDtwLtPGXhHdds2zmTyk6rrccbrTb0eh3bWFF+g/g7aM5f1OA0zrU3UF0L6WlJg5eEZF3PKk/I/TPRL6dr3ScwK9Rz3j84d1L5c1Q9rX5fr+y1wj3mIx9Z3WhoQVtUPa8NDn7n4YeXyj6gf9maLSbUwNCgb85RFTKoFcFJfQpefAb7EMxFiUi9EjEml8e5FCz/MxDtdfjjw7p8Oflg1JtVGJz5D+NWYVHpMyuSHVUJMiqOPwrL1w3T57olPldFvYu2GhlX11+z9Nfr+RhYfa0lAWFV/rQ0PfVb118Lg8fHXRg5qe45jkKu/9uMD2+qNTmCW0187mNjdzvDXDiG88/XX7gXeHU54h7ipbiOfqL+GfhT117hzH3MkTwi7uBnW39XiZtx4tbPGzVpIHtpG6pOhPTO9S1mOuJltjIviTPPr5hfb5+vyCwe1wVxA4mZI1ymA+7fV+NqbJr5G98IibOqvLWXwLDXgGc/QzOGZkBHPBAZPE1Mvl/Kr8dBnFA/HG6qnIfCY9tq/2dY5WxgalI3ZTOwbt87ZAjjT1jnngs9xnsFfC7XO+Vbir5VznTONdxcG8tfGAe+2G3hHddv2vUNT7K26zmm83tTrnGhnaXzN9N4h2jOXdc5TSrSJ+mtIn+kMGf3M5Ifp8u8jdsPTj2HtBt2XhvRQ+Y/9buRsP3zGdyOxfdRfW87Qws3xaHyNi8FyfiEHa0lAWNTWImzqr7meoTGeoZnDMyEjngkMHtN7uzayxeHheFNuv5D6a+XyC6m/tjwgHs7PKeVzfIH4HCsgz8bn0OUfGtZW78uGGBGN5+j66K+1MO2g+O4ndhfHiax2V8Oidpfy7pspc3nbdyN1+c8D775DeIe4qW4jn6h9wTGV+nIh995ifcq3MpyHZu2vafiNIpN8tI5X3BlUqBfUX/OcP7T6a5zfzPUD+mvcGWIIi/praGfpu5FoG1eSPLRnNHaC+m1zTgS2ifprnOxzMS5djotxmc6TwDY69FF3WxnU8EOdJ8HFV7jxuqtMg5P7LZvXrF2zedv0VZvnblm+ds2KWau2bZpyzsq5LRs3r2lZO2Xlyo2rNm1CohFRN3iO+XjRMvp+GfMcYZQ6HMPFeW8pAWshgYX1qQFcXgIWPSCOG9zo/3WiI536IzA1FnBQ0dLoWkTo4hZfTEYehfN80R4W1k8LuKTB2kZgYX26uIjBIkon5ZcJTpoBRbreQujiDKaGtbYErHMIrLSX1FVaVwLWBQQWNwmn/9eJjnRSfpngqLS+BF1vJXSlbb5RaUMJWGcSWNzmHQ1rYwlYZxBY3IfQ6f91oiOdlF8mOCptLUHXuYQu7vB7bpI2keBxnaRh/ViTtIkEz9aAePBQ8j2hnvq/CHktAMP0EpMe/LfD83IETDT8RkKLI77WwX87wUfbRwMmFzO0FJg8uih1MYPnYgYPB+uUgLCKpD1pk7C++7fHuRTybCZhuvzNMAnrn8DkfA/6kSDOj1nK4MuRdtUz5RFenpTfL6FJHUhMPz6zlanPwcbx1BToaBAd9ascOlJM7htFR/nx0ZEiwUfbR3VkO0NLgcmjQYvtDJ7tDB4O1oqAsOiiaZqOjAmkI1eCjoyvQB05LICOoA9loyNZDkFCeJoefIbwQ+kI58uadKTI0FJg8ujG+iKDp8jg4WCdHRCWrY7MCKQjG0FHZpVRRzS/bXVEl58bQEfQb7bRkSzBMISn6cFnCD+UjnAHxJl05GyGlgKTRz9m5ro4jrDWB4RlqyPLAunIyaAjyytQR8501BGO9nLMvbj41UFwn8Yj04dVDmLaw83xDiLtSZORc/fn6eFkRN3r+TtdWD8OZGSzQUZMC56xFlYPz4jncAZP7IXVci14Hk7wnBUQD44rdGH17IB40FbaHjp7JdGDtZDH6YGOF+VJ+b8Nbav3DoMepMUs8/B8KdMOiu+6BEfGjUfswqqGVYp3NwQaZx4A3r3bwYagT09tPPcxdC6OSeO+XHwVn1GZw/q6XBNTT/NX95fnh0StF1Y1/EbRsc0+vpbti5+6feX4cCnXD7iwyn20HWGZFlaXkjy0jetJHvcBcs4G0YXVpSXaRNfSOPpMG2w6a5OZ5wKtcZMZtyGdjk1Yl+ubt8E95iEe04HSIQ+n5j4iWd1k1vFZJfhCdJPZruIL/cDBF1IXHc91+XNgPP9xBF/o5xXgCz0YyBeaB7z7VdUXMl07jS/k+ZH6Vl+IW8N28YW4Ne03gy9Uy9CH5VD3uHiSYJ7lDPgojhqm7oWiPd2YN4vgcI0BzWLoLWNct9ZWv3aWuC5dQ88Si3X5IJanf2ztj8fYwDgLngXaRFtr6odTDPg81/JqND7T3i7Ep+xpvejYh2l70Li9W9hfaTrvu5/yrBKwTPsp6TpgqY/K0P2UaRuXMa9fsrtV2eGmwe3L6L2APaBM9+Se6hTy4Y29JKQcd/hJxgM9rHWPftzHc8O88eM+3AuHSjZ3E2YZwT7CvREr4H4l0xYbmUWabGTWtU+5TeVvfNDLUG45U47Dpf7Hfc8aBvXFByYwFJ8XzG/fRsTbAveYpy7O9ze9nKHLcXjGZ8Qz3hLPhIx4JjB4mph6uZRfjYc+o3g43rxZX0BbFhAPyj6NDSxhaFA6c+jgtudU10zjBX3p/R9D2uodkcDk9ugjjVjf9gU0XX5ygiPGwXppvDua8K4F8mx4p8v/Eng3zcA7qtumF1yRH6YX0BAG5glog+kFNO4wiF3lBTTu5eOd6QU0bqzL+gIa6rdNbMD2BTRdV71cNSC5b3u5ataqbYta1q5Z2bJ5zfpz5q86d8uqTZvzAJlix1YIwVtizRGEQ68c+b+G5M0m+fiWA3fZHDWAGlcOz1fDD3XUAPdGl+mogRUMLdxRFRfBPeYhnhUMHg7WnICwtNx0Z2BXj/Jsj4fjjentEV88LVCGenrLA+JB3aSe3oqAeFDebD29bcRb4VYyTN6KLr8VvJW3Em8FcSONWB89PdNnmHX57cTT84xCsp4encWmrQJdQnjn+xnmpcC7ywnvEDfVbeRTC8njjv3hIkN0pds1Ss19CtomSo0eQTk8PQ0/VJR6GcFH9YJ6ep6eZaunx3mWXD+gp4c85d7EpZ4e97o+ZxtNR/vQ1SPUb+rpzSnRJpOnR8ebSQwenbcY8qaTvNOYNiu9+z+D3s1N7vME933EBiE/Hfp8YhPBo2EgbM8o/0RbfUlb4UC6uBWHvAUt4/74rd61Z6z8OLWTmpY0XaJjBJafzJTPOBYc3qRxFNvq404sdeUhbwnJq4M8TYOKJs6Y354+zxWiw234x+kklqefiHTdCcQdT+IKq6doL1fc2Ib6PS+5t5kHeeqg9TxIww81D+JsomkexPGswOTRI3LnMnjmMng4WJMCwtK2metnOg+axOCZZMAznqGZwzMhI54JDJ4mpl4u5Vfjoc8oHo435Z5v0XnQ3IB4UA7oPGheQDzzoAydB01naFDj/0MWvvx0wJnmy796QFu9hw0+BdKI9XEeNJtpB8X3KPFBPMcWdh5EdyGn8e53hHfoV9nwTpd/DHj3BwPvqG7jmETHEeTHXJJXnQdZ4/OeB7X44WudB3FxQpd5EOKnq0qcnaXzILSNdB6E9oz6XKjfdB40u0Sb6DyIo6/qC9n7QvT42Sz+y8KAsEw+StUXao+n6gv54fHxhfY4oO052ndXX+hCGM/3Su7L6Qv1S3B0pi80gPDO1xdqAd4NJLxD3FS3bePF1BdCXtF5vesnRLgV2jK+yWbtC8V4k40brzL6eq2+UAuDj+sH9IWQp5xfZPKFppM8tI3U30F7toTkmXyh6SXaZPKFsC7+X8eUPRbai2UPBT077YB0XEkIrzXvWMhbQPJs9RNhIH/T3kY/nbRBlz8qoVvFGhfN52HWCPOaFBf71O1o0Hghz0F+v6HoGju/DQ/Ki7rqiu1pxvHP5FPp8vOZ8ihz1DecD3nUn+PkEf0LLY8cvzSN5eAX0mDDL24d35ZfVO+RX4sJLM7/RR6a+KVpLAe/kAYbfmF5V35pHnD8Oo3AKjXHmUVo1bDrBW8TNLw8KX8y2AR6Wo7Jxh/LwEbbmCMwsB2DmHY0kTysq+BO773jPlach/qay4AWKgsIN0/Kr4Zx4wLCmxbRdtmsb3ExjhYoM520B8fx5RawZhtwr2DKLzfgRrro3hW6Z4bzNzg7oHmT0Q7UcXYA41XUDnD9hOVteMX1E7cWTves2caclpE825gTnvB0QcqcBNuRZrOpPuB8hs51uHmCSfZMJ0FwssfFWDn9p3aD++wnp0vUbmDfUrvhu0P9SjJHRRnJOkele6tagAZOvtN2nn8YbNs7UmxbnSPMa2E8GgY6qi5uvT2jLchztqAFClBbYLLB6nK1m1RvsW/oWgO3bo48pT6B5lE9Ux7h0T1z77f0CVoI7bYxcNO8T+uDkpuvJnTQmIC6x1jKLUT2uFPruJMG6al194M830bmeCHsxjySh3bA5qsYnJxxu+p1OdNe2Iz7wa1jKXQ/eIsfPuN+cNNbwZ52szWWwr3RwvUDxlJKvVWpx4LYdg35ZGPXuLUmbm8f1We0EdQOoI2g9mOuAR/aCPTFv5oSg8Z22PosGL/eg+g/6hfVf9Rxqv8o79RvQB5Sv2EF0ML5PBpunpT/HtiwRwhvOFk2+bHc3lLcL2p6a2y1BaxTDLi5t9hXG3AjXfRkJvomOKeTnC5q3pRjvoF+AdVFrp+wvA2vuH4qkPLIG1fdXUHycHxvIXko2/iG6CMp4za2g4vxcv4Ajvm3GNaQKjlW8GfQ3VeqsYIOuCmdul41VtBRd8sdK3ilTLGC36W8Z4Rwq7ECYkuH7Pit5FjBPvDuUsMQHqZrrKBrAqcaK+i8WMGe0AedGSs4LKGjVKygP5E931jBkSDPzcl9NVbAXtVYAcFXjRV0TqzgMKL7oWIFD5E96DtLrGAq2LBFhDfVWEG6TlZjBW66GyJWsChl3MZ2+MQK+pOx2zYe0ELyTmHo5nSe+tMrgRY6v0G4eVL+dNDdTYQ3nP5w+/9s9Wc2aQ+nPyZYpjgFd1LRWQbcSBc9GZ3qMvduexnHUVZ3UT+p7ppsprpseMX1U4GUR95w+knH5BbIo6c34ThEdR5lG8fdTRbjLre3qdSpj/RcDdt9tjlCI5bn3vXi9H8ZybP166nd4E5T42Sd2g3dnxgrwPI0VqDLbyexAs+TUNlYAT25H8+T4OSbzq10+feAbbs0xbbVOcK8wjJWoPuxHD416ju1BSYbrC5Xu0n11nTite3JalTP6oXZh6Bz5usNsQK0R9TPaIE8GgOxPWMEYwWfJbEC7oRNVe59RPa4uD7aHCp7uvwXQJ4/SPyNEHZjBclDO0BPzOTGHE7OCkx9HENpPW0HMp5gaB0roKfLZz1hmdM/br4T4gRpldYy+NJOdOZ4yp0wbooVlNOumdZDSvGVzt2xjVSfTWsYLZBH7cdyAz5ufoc2wmQjuRPaS51ovY3ECkzxANRxqv8o79RvQB5Sv+FsoIXzeXDMxvJfBxv2C8IbTpZNfix30r7pSzWmr/BysExxivVM+XUG3NzXaygtQqTrJKeLmjflmG+gX0B1kesn7ssWJl5x/VQg5ZE3rrp7NsnD8Z3qNcq2lnlOPk1+vrqo7nLvwqE/wMXr6DyV80u42JfpdOW0sZs7cxHhUt/3UdDd5whvOPuM9tLV76RzJm6+boLVYsBtkl8ON9KFdSluSqeux+mu5k05dDfk/IDjFddPBdFRr6kO4vy7heThXILqp+1JzzjuPpeyNoztsB13WwAuPW3dtO9CXZSfpjgrJ3vLmfZx+m+KrVG7gTJK7Qb2LbUb9ARvWp7GCnT5/5JYgecXdthYAf2qHMYzOPmmcytdfvehO35VH+uXhinMOkeYtQmcUrEC3Y/l8KlR36ktMNlgdbnaTaq32Dc2e8G4r75QPasXfMwS97xg+e7QBzRWgPaIxjVtT56ne6e4r18ouRmT0EHXYtQ9xgp6E9nj4vpoc6js6fLjQZ77JPch7QaNW3IxI9OYY/qaLbcuwMmztgMZ59LWsQL6NSbP2ITxa0zcfCej3WyNFXBzHK4fMFZQ6gtkplhBOe2aaT2kFF/p3B3bSPUZbQS1A9xX26iN4PBxsTC0ESYbaeuz4JrnoSRWgPplWhej+s99GZubW1O/YS3Qwvk8OGZj+SPAhs0mvOFk2eTHlpqv09gnN183wTLFKTYw5dcbcCNdWJfiTtNJThc1b8ox30C/gOqiKUajLhtecf1UIOWRN666u5bkcV+543QXY2CzU8ZtbAeO21R30+KHvcnYXe6vNNO59QaghdtXgOMAll8Cuns24Y3+YrAQdjLBfaEYvzpMbRjKxFYLWKY9DUWm/FYDbqQL61LclE5dj9NdzZty6C7qG9Vdrp+wvA2vuH4qkPLIG51n+8XoDSTP9ovRWuY5+Sz1roBpXwHG6OlX2zlbaJK9UmMWlT1uzOL0n9oN1H9qN1BGqd3AvqV2g34JnJansQJdflvSF9r/LEKdrLGCIqFxI9DAyTedW+ny14Jte2uKbatzhHmRZaxA92M5fGrUd2oLTDZYXa52k+ptEfJoTIeLOyBPaaxA86ieKY/w8qT8VYZYAdqjjYR22y/YUz8DdQZjBXeTWAHqLsYKriOyhzaN2gt1UdnT5T8J8nwj8TdC2I2zSR7aAepbc2MOJ2fcWhGOobSetgParqAsliNWoOE3io5t9okVcPqH4wONFRT98LXGCrYz+Lh+wFgB8rQI9xqWKVZQTruGfLKxa1iezt2xjVSf0UZQO4A2gtqPswz40EagL3430X3ORtr6LDg//0His3A6TvUfdZzqP8o79RuQh9RvKAItnM+DYzaW/zzYsB8S3nCybPJjL2bKb4cy60h7ipB3sQWs9QbclzDlLzbgRrqwLsWdppOcLmrelGO+UcQCADetn7C8Da+4fiqQ8sgbV90tkjwc36leo2xrmefk0+Tnq4vq7jqGVvQHdrZYwUOgu08Q3nD22RQrKDLlTfN1tGFFC1im+dp2pnzRgBvpwroUN6VT16ukWAHXTyYby/GK66eC6KjXRZIXM1bwRJliBTe8yWMFNmM+xgqwPI0V6PIvk1gBykjWWMF2QiPGM2zm9bp814R41cf/SrFttrECXf4/FRArQH2ntqAIebVMeVe7SfUW+6azYgX1Sb+WihXQuGboWMGw5J9SsYJuw9q32zdWMALkuUdyX85YAdoBGivgxhxOzrhYAY6htJ62Axnn0taxgmJy3yg6ttknVlAk+LDt6qKxgu1++FpjBdwch+sHjBUUASfi17AqMVZQhDybWIEuz+mz7XyD2g+fWMEwovuhYgVXBooVoLxTv6EIedRv2A60cD4PjtlYfhzYsGMJbzhZNvmxIebrJlimWMGlTPlLDLiRLqxLcafpZOxYwXYsUGyDm9ZPWN6GV1w/FUh55I2r7m4neTi+U71G2S4m95x8hooVUH+g1DvP1G/i9liZ5iel9o7S+QnnC3F7jZak4El7L+nc5J7uNZoH/pzJp9a4M8p793Lvoyk1HzS9c0P3vCCP8X0k7DeEqXh/LhkbMBZF92Rw+0O5eTKVvbRvlND9ZLr86YzPbpJn01kxrvLM7TfylWfUjTNIW3X5M+PKc7fOlmcqsyjPad+nR5w50dGGZYnnLKtA+T9vF5L/Cytc/ouQZyP/25nyRShD5X875HWG/M9wkP+iAScn/7ptafKv4VG//50G+ef4a5L/UmuEJvm/mORhvSUpeFD+i1CGyr8uf5Ol/Gvc5ZB/5BGVf9O8SV2uc51ics/57yb5p+u1oeR/jIP8m3xvTv6Lyf9p8k/P+tLlP2qQ/yJDQws8y7rWhW3YTvKw3pIUPGn+PJV/Xf4uS/nXuMsh/8gjKv+u89dScQbqz6NumOR/O8ETSv77EvlvgXI0NrSCgcG9q0LjRqshbzlpB/fOJvc+AH1n82sQG/o5mSNzPtIKeFaOOa8JVosBd6mzMShu7mwMSotg6NT1yvj+V12532vleMX1U4GUR95wutVC8mzeF0PZ1Hnc2RWcfLYw7bDV3RaA+81B7eGuLAHX9QxXjYvT/9UkD+uZzoTwfVeN2g1c7xNMeboWrcs/nmTo9Q2UEQdZZ9ei6Vk1+B4+J9907U6Xfxls2x9TbFudI8y/WI6zuh/LsWYT8qyaUnaT6i33blqO/I+wuPUbqmf1gp/ranj0Xe/nLdei6XkcvmduoM7gWvTuB+64p+/oqntci36FyJ7vWYx7HthW71WyFh3CbtDzsLizDkxjDidnBaY+jqG0nrYDGd8Bt16L1vAbRcc2+6xFc/rHvaeb0W62rkVzcUKuH3AtmnuHFmGZ1qLLaddM5/iU4itdG8Y2Un1GG0HtANoIaj9sz+pHX1zbCJONbGHgNpE8rKvgfiHxWTgdN53nRPUf5d10hhv1G9YBLZzPg2M2lu8PNmw04Q0nyyY/ttR75itJe7j3zE2wTO/Xm94V5XBz7+1QWoRI10lOFzVvyjHfQL+A6mKpNVkbXnH9VCDlkTeuukvXt3F8N52Vh/F3Kp8mP19dVHdXMrSiP6Blw3Tmne3ZVStIHuo10kHbSG0QwqU+/+GguycQ3oQ+n6KFtIfbv2uCZTqLr5TdoLir51O0L8/1U0F0tIF0rwjqJz13BvWTxhhwnkHnI9yYw8knd7ZMCzwzjbt4tsyFJFYQ+hxIKnuc3xxyXKd2A/uW2g3qH9LyNFagy5+c9IX2P1FGssYK6DiO79xw8k3nVrr8uWDbTkuxbXWOMFsSOKViBYHG8Xy5x/FSdpPqLfYNnT9yYynylMYKNI/qBR+n0PBofHst9AGNFfj6C1z8jrNHGCu4lsQKUHcxVrCJyJ5vnOp6kOetyX1Iu2Hyrem+VW7M4eSM2xuIYyitp+2Atisoi+WIFWj4jaJjm31iBbZz94x2szVWwPnhXD9grAB5yp3fY4oVlNOumWKgpfhK5+7YRp94AGc/VhjwoY1AX/xai/lGCwOX81lwvrGZxAq4b5q4vidL/QZuPkfHjbQ9TWnvyb4PbNhdhDehz9Si+/Bdz9QyxdiLTHnTOwDVM7Xal+f6iXvnhO4xt9VdGmPA8Z3qNco27i+/K2XcxnZwayGcP4Bj/iYydmOsYI5on+caD+B0nvppnO/bwtBKfd/Pge7+oMxxvhbSHtc4n2m+VirOR3FX43zty3P9ZBPnmwN5NFZgq59U51G2cdz9QZliBYeQWAFnE0yyV2o/DZU923dIqN1wjQdwsk7thu5PjBVgeRor0OUfJrECz3Ok2FjBRkIjxjM4+U57J/jvYNseSbFtru8ZP2YZKwi0f9v5XVCTDVaXq92kesuN8TnyP8Li3gGjelYvhPHdCTpnftIQK0B7ROOaaI9oDGQlg5ezRxgr6Dp8xz2d66h7jBU8R2SPi+ujzaGy12ojhrfV+wfxN0LYDbrHiYsZmcYcTs64dV4cQ2k9bQcyzqWtYwUafqPo2GafWAGnf9x8J6PdbI0V2J6/h7ECbi6CsEyxgnLaNdN6SCm+0rk7d+YLZyNMaxjUfqw04EMbgb64thEmG9nCwOV8FtyvMJLEClC/qP67xgO4uTX1G7jzZLmzifKkfG+wYUMJbzhZNvmxRaY8d56Pab5ugpXlvSfTeSFYl+JO00lOFwOdN1FX7jN3OV5x/VQg5ZE3rrpLz7zj4gGc7mIMjMpnqT2bVHe5b5SgP7CzxQrGgu5OI7ypxgo60lmNFbTPixkroPIZKlbw4n7t4VZjBW33abGCBUlfVHKsYA3YtkUpts01VrA0gVONFXRerGAl9EFnxgqusIwVnJ3ic7jGCq4CeT4nua/GCtirGisg+Kqxgs6JFVxRpljBU4nPsrPFCq4DG3ZbNVbQAXeaTlZjBW66GyJWcFuZYgVnk7HbFCtA2lpIXsh3ELjvEFL/4x7Q3W8Q3oR+B8G0/3G9Baws7yCY9l5V30Ewn+1negfBFCtogbwQ7yB8wyJWwL1T2CQ66gPGCu4hsYLQ7yCYzh0xvYNA7YYp/hD7HYSfkliBp09f1ncQ/gK27Rcpts31HYRfWsYKqu8gdOQpjRX4voPwe8tYAY1ztEBeiHcQakfsuC/1DsITRPZ830GoH9FW72/E3whhN6rvIFTfQXgDePL7Zn0HAW0EtQMtkBfiHQRtI0w20tZnwXcQbiOxAttYIdX/2O8gdAMb1kx4U30HIV0nq+8guOluiHcQqHyGegfhCUOsgOpnrH0F3PuZ1Pc9EHR3IuFN6H0FNvN1E6ws+woo7uq+gvbluX7i1hKpDrZAXrn3FVD5DBUrOKfM+wpMZ5KY9hVQu1FJ+wpmJX1RyfsKWsC2zU6xba77CuYlcKr7CjpvX8Ep0Ac0VtAC9cu9r+AiEitI21ewgsie776Ci0Gez0juQ9qN6r6C6r6CN4Anv2/WfQUtkFfufQUXEd3nbKStz4L7ClYa9hVQ/a+kfQVXgg37IOFNdV9Buk5W9xW46W6IfQUfTBm3sR0++wpWeM5jcoReLI9xTMp/zuaYzkzkfCHTPgeKB20Ctm1RcccvXfu53dKnLudafMhvB5SaD9J5Mrdew8m7xllqPns8mc/mkjyc4w2D+6GQj+W/Q+Z42E4Hfp/QBHUEwEDYeU/YOQJPCN7PQ5+Gw6euRiYvb0HLiAvPG7nvtrrROVJf00KfUXmpY8ofx5TXvKontDcLq2sWp1Mat87LQx71A1EvNA1Kl2bMb09fnSd9NvxD+AWm/NxiWzmXvugp2ssCyru2fXiu7nSSZ3sGbQvJc93/NRvKpO3/+jH4WI+TsSb0/q/ZpD2u+7+WGHCXiidT3NX9X+3Lc/1ks/9rOuQtIXmmM2hbIM92/xeVzyVMO2bDM+pjzWZoVXAHW+z/Msleqf1fVPZs939Ru2GKE9vO6ULt//o7Ge8rcf9X7cgdv6qPn0+xba77v1609D+r+7868jTU/q//GWK6aI9czqBtYfCW2v81MJEvbr0XY7p1I9u323f/1/4gzw3JfUi7Ud3/Vd3/9Qbw5PfNuv8LbQS1A6YzaFsM+NL2fw0kus/ZSFufBfd/7WPY/0X1H3XctK+iheSVY//XcLBhkwhvqvu/0nWyuv/LTXdNe09s939NShm3sR0++7/qyNi9s8QKZoDunkx4U40VdKSzGitonxczVkDlM1Ss4C8D28Otxgra7tNiBWuSvqjkWMFFYNvWptg211jB+gRONVbQebGCt0AfdGas4EOWsYLtgWIFN4M8X1qNFZiuaqyA4KvGCjonVvChMsUKfjtwx/3OFiu4HWzYl6qxgg6403SyGitw090QsYIvlSlWsN1zHpMTHe2Qzf6vlUx55AednyAfqU+A9aan4EGbgG2j+790+e9Y+tQadznkHXlE5Z2z2Vjedb8dnSdz54pw8q5xlprPfmvgjnvdZ4uh3ELRPu80BobOWwZ59BtoLQzNuv24F023fxKU0XDzpPyvYGx4iugIynctoV1dNjKP+0Mnkfbg+5orLWAtNuA2yQuHG+nCuhQ3pVPX43RF86YcuoJ7OqmucP1kenfOtJcVecXt1aV7JRdC3mKSh/FYuv8Sv4G2jOShbLck95x8LmbaMQme0bFhEkOrgrusT3u4yxi4JtlrYcqjHlPZO41pH6f/1G6g/lO7gTJK7Qb2LbUbuj8xFoXlaSxKl3+FxKJQRhxknY1F0RjHCqCBk286d9flu43a8av6+NUU21bnCPO/luOm7sdyzNlQ36ktMNlgdbnaTaq32DenEVinMbCQp9Sn0jyqZ8ojvDwp35D0KxeLQnu0gtCO9qiF5C1l8HL2CGNRwxM6mkRH3cVYVGFU+3ajTaP2Ql1U9nT5USDPvZL7kHaDzlPRDiAMKlMmOePmAjiG0nraDmi7grJYjliUht8oOrbZJxZl8vvVRWNRnnazNRbF+b1cP2AsCnmK+HG9Ul2x7RryycauYXlTbIjqM9oIagfQRlD7sdSAL+29kOFE9zkbaeuznAZwFyY+C6fjVP9Rx6n+o7xTvwF5SP0GjItxPg+O2Vj+YLBhMwhvQp8XuYy0h1sDNMFqMeAu9b4Rxc2dP0FpESJdJzld1Lwpx3wD/QKqi6a5trpseMX1E/duFo032eoujT/j+E71mou9cPLZwrQDx22qu8sYWtEf0LJxCJQbLtrnTYS8gaI9PZMYerD8aFL+2OT/+pTyGl6elJ/H+FvdSRl1v18KPqQPn1EfAesfmwIL7Q227+QU2hcD7dpf1zCnM/Ttx9Cny89mymOsSNPD8Wa24HGnxWvOIO3R5U9l2sPZBi1TGW1DN842IN+obTDxSF2Up3OY8sgrGouYA3nHkrzhkDed5A2EvImEhkMYGkbDM6rXKHe67hvn3eyx4173/2FQrhL1er2lXh+cgg/pM+k11nfV6zNTaN/iqNcHM/RVkl5fYKnXWqaqel1arw9jaLDVa11X9eMRe7SHOx/yakVHXad9rMtfZZDZBQytyEPK34VM+QUM/d0JDVi3O1NvLslDf4vancUMH7A81V1d/nrgwyKDrGu6Msp6EyfrGM+lss6tDZriv0uZ8uiLap5wvuh8Ams+Awv7msbQNI/qBd8HGl6elP+QIYY2F+rTmP5oR9oPY2hvEh11BnXq37123GsZRNswieCcZ8BJ6yKe+pTyGh7V3dsZflFbh3qAdJ1QbA9Tl7/TYA84Xk6EZ1QGOfsxn2kXx9MFJG8e5GlZ4PRTlyvHWITtp/ppaqu6fG0lN8ecQ/JQN6j8c2OerfyjDD3Zqz3ceZCn4Y6Euqcm93lS/iuO8mUaz0vJl6aHkyEqX1iP7oPAfqG6u5DhA5Y/XbTngy7/bcvxRtOVUZ6ncPKMMkjlmVvHxPK0L0zjE/KEi4vMI7A4+4l9Tccbzn4uYOBT+/lTw3iDfiEdK+c40j6Sob1JdNQZ1KmDyXiDvj/1KecYcNK6aC/qU8preHlS/jeG8YabYyCfehOYuvyjBnug8WK70HZRGeR4P5dpF8dT01ikZYHTT10uo34ezekntp/qp6mt6qK84Wwryq7u/4LoaA/p/AZ1Yy7Bw81zbeUfZWh/Mt7MhjxOZk9K7vOk/LMG+eL0BuMclIecPKKc0PGG4xMnX8eSPOTpKEIDN+5ieRpz1OX/aTneBJLnXpw8o8xSeTbJp7pcx37Nk4LoOB7Q+AgXR8C+puON5lG94PtAw6O+de6gHb/ceIPxm3mE9lGOtNvqG+rUa8mmFy2DOKeh441Jx2ldxJM23mh4VHe7MvzKERyoB2jP6XjTut8JYFJ7wPHSNN6UiifR/ffIF9NYpGWB009dLqN+7s7pJ7af6qeprerytZXcHIbG4UyxTS4ubSv/KENP92wPdyKBi7BQLnKERpRH1JskXNchZjzQII+lxlLXmLGmxxQz5tYCNJ84edTlMsrjos6O/dL5tin2i3pMfeuJDB7b+bauq2To5z3bl8M1wFzyq/fODILnDjyvyRF4mmZ8hvAbCS2O+Fr3Iw0i+Gj7dN91lSlxA8WWzWvWrtm87fj1LSuntmzYtGXtqhoELTquWCFXECo+y4n2rce8WvKMlptRbP+/7tlakX5pjml4+0MexwkNU2sltmn/lHrIC8E8q2HKDyKwBjH1NO21hvoIA+tRicmR52g1ezO486T8ZLCag+an4+0tOvKhN/l/FYOvjFrXc9fQuh4Eqi6DZfHqAZSJlHJcj+o4to3W5QnNJyRSpKRvZnKve34vqKv31+q8PgBbnzP7xvtcBMZAQgP3i7TjMzp+hbAUdH1SXQtIvf2h3hwLGvZnaObGUF2uianny5uCgWaNB60J7n8+6SDRrm2DIY+zRHT9VJd/AGTo1ORe8xI1VtPI8Rnnpj58XsDgKTefFxA8gwPiGQxl9oR7lYYQWJTPup80nw+AvCGk3oGQh+VwlBsCzw9kcHPwNYxSMnjOQXzb0mRQ48qT8p8GGTyXyCA3mtLRVwizzFO5rE8pvx+hT5ffapjH92bajHTRdUpdfpth3tSbaRdnK03tQpnqndKutxniOQOZ+tzYMpTk9YE8bcNxbMkTGJcmzxtEx/5w8BLYd57S6MZyGu9AP7zWcxANv1F05KGPNzSQ4KPt8/OGkPuUKwgVn+VE+9ZjXqk5yOxi+/995iCcFdiLgaktCrZpv5R6VAvpsxqm/EACi9Mgap25+ggD61GJ4eqp//dg6thogKd/XmurARp+KA0o1e9aVnXbBzG0FJg8KtfcvGMQg4eD1YfA6mNJs9La3ZP7RGsXbF6/cVWitoJcpSYdA1PIqGHqCwMsrJNjyKdiqy46WGncaYOwhpcn5W9hBitTfXXZiD12UTkMv4YfSuxtRYhO4rCuaZDPiY59GElU1aVHhBxDFq0vSsDS/3O+ZGeJ8ScNPlcNU1/5TmNIbL+Un03nerr8Zw0+Jzc3ML23MZwpj/MRTU93QgPW7c7Uo/NM3Kc8mNAwQnTkA5Y/U7Tngy7/VeCDaS1Z01WOvbIjoEBdUbRrF66R1DLlaV+MYsrjOpHmCbceO4TA4uan2NdUDzSP6gXfBxpenpT/vkEPcJ4+gtA+2JF2Toe5eS3q1DlkDoo4BxKcBxhwcjKr8aTZjbQ58i8Mc1Au9oN00TmoLv9Lgz0wxSnURWWQsx9DmHZxPD2Q5GFMAuNBb8AudoRZjr2y2H6qn6a2qsvXVnLvZgwmeagbVP4HM3hs5R9liMYWr4ByGm4NA1eXf3vyXMs4LaPr5kn5J0Eem4lNQLdJ09NE6ut8dWn37kpCe7OwuqzdOw2/kdDiiK/VvbuS4KPt85vXU4lEriBUfJYT7VuPeaW8uGOK7f/3mddfBXkcJ+i8Htt0VUo9Krn0WQ1T/koC60qmnqa91lAfYWA9KjFUi9CqX8Hgplr0b8PaIuK9QnTkA9WkkQw+rXVXkbLq0lp3NWlTs7C6lthqnYbfSGjx1bqrCT7aPj+tQ0lBLIsJVF0Gy+K1GCgTKeW43lvC1KOX5lie0NwreSnpDelL7ruLjhJLIxxIg8l+FZj6uhyHZ++MePZm8DRB+3UeXSstio5t1XnbIW9Pkncx0KLXWHXeJUy7dN6lBpiXGWBezuSpvnvP6Pbl0BrlUn7VVcs8ozy9kqFV9x1aAIxIpmnb1QY8WF+Xa2LqZW0PRzP1MbCtir/9R4t2bXsH5HGjgX5PMU/K185vq9dM9O0dUF/TyPGZ6qIrn/sweMrNZ6pT1wTEcw2Uoeuw1xJYlM/03J53Qt61pN67IA/LoUdwLTx/F4Obg69hlJLBMaP5tqXJoMaVJ+WfnNdWb7ynDF5D8rAP6Hio6UA+YPmlgm9XfUr5tHYdkbSFizVcydTnaN+f0HKNgXZ1mfYe6HLllnm6lyJNfo4h8vNOyOPkR5/tkyflfw7yM53ID3po5Wi/Sa/Rk6OzBk7vKC+5eqijQyxouJahucDU1+WamHpZZYOjuZRsLCSy8S7I42SDvjery38JZGMJkQ20n5pGjs/UB3Tl894MnnLzmfp31wXEcx2UoePbDQQW5bPuJ83n6yHvBlLvRsjDcji+3QDPb2Rwc/Btx7c1o/m2pcmgxpUn5T8MMrjWMKcxyeD/t/cu8HZV1b3w2ufsc5IDh2xeARTUVKtCfQIhIlQMhvAKQghCRW1jSA6YEhPIA6Ra3SGgKCHv8EgC7JND5P3Q1nrr520/297b77N6a1ut1draerW2tVerfT+sl3Wyxtn//d//Oddcr3NOYM/fLzlrrznmGGPOOcaYY475WNspD9sUbS/3ta8PasT3oAN+O9XL4NeJ8c2nryg3bMsN/ibAybFho4v1UrNlnyzuEPVSbbozSqeN7cyxSCs/GOn6u2Tllz1tauUHHPXhNjX4pqdNVRv52lTp2E5Rr1mizrsIl4q0YTuHtCnW/2NUf4P/iMcPu0uUV74D+5DKD0N4vmNT6ZjyTVjH7gr0Idm3QTvOe+WakLeZ8jZCHs/FboW8LZS3CfI4zoGxBR7/boe8bZT3YchD2bfYQp3quid5XzAGL/f0fZR445iY+htFYeMpwtSITlVxE6bzsRLpIK7zmgf/qjnbTxE/WeMGWN43N2wWpNMUdBgX2mT0iTYmz3WCfwL0+mqyyZsFf014x3MC5MnKmg6gfcsSobbyW/OV77e6pM212R5g3bPIIdIaIlxZ6+7jHfljOcE5HftkCteWjLhmirw8fXKXp17KtiteFJ8u3UA6PwXvQubQqr19c2hrI/Tlsq6/utpIxdLilZlG8pyszJw3cs2G6y5Zcx3jZjNvzXMiwZl690XdorTFgSui3yfSu37Ah2myzKWi89KCdF4q6FQdNn4p0XFNHb+YMTzP148Y/F0wdfySZ+roUr0a0NsYtRO71kbPtXVio4O/r8AwNoeGsY2izu/08LwZaDDd+PkUBw9fJ7cv55An3T4OK28k3JiHsoR9g3lR1G4LfMcyd4egw7hcLoe1K7vHf5nR5fBtekCerKwK2XM7KDq+IfWOQDovK0jnZYJOUZdE0VE8q2kZ2pLvky25C/KUe8jb7gz+/WBLfuixJcgj/1Z2mW2J0XPZEpZPg/9njy1hNxvrqXjG6TTTVbbE4P+DbElOV0vaEl7mQX5eQfxnHQux/GSNha8gOlUvoSq3j+1LVjdbLU+m6ePQqZqm0kce1xB+Aejj8KmddVRje8iyZ9W2l3GFjkEGf2xSzzLGoDsD+KtH3ToVP78c6uzCFYl3Bo8yzKGguwh2swfWZbfiZ/vkSJX6FacFzU46TSiPcj8no9xfkzyz3L8W5P5lJPc4xeL68pR6q6iD5W+DeofiHaCycVpMeLcSXpSVqxNYHlPuPLWN/2eS52FBq2ifIi7uU2VPY35eR32qlhiwLPepwd8EdTyN+hSXADjEW0b97f0OeM90eflzJ8HiMgKHpHZQWfU3jceGoLOT8O7y8M9bBLaJclUv9e4kOjtLpIO43tHspOOS3fNIdndBnpLd9yTPdYJfBLJ7AckulmfZbUIeb99UIbMY/xPE826As3Z6Z7O7rMHfTfCIY7wuzU74e5L3Ll/cytYJfjGM03PoiMouQS+u2xJH3bA/cAnwbqJt8DdAf1xJ/YHtZf0xK+puG9aBe4AXhI2T2Upug58HPt5xqpsW64Wq4/iniU/VcMgDwjEOswvYBoZD2QUrN0vwxbq7m2js8tDYKcopGmyPsc3uAfomG/em5N8j6haJd30CfrejvpGgfXcK3l0Cj7Lvd1PedpHHtgvrq7aBKZuIdu88j764dELJ1W4P7/cQ77sF77s8vKv2Q/vh8xvsd8hYXxO/jb8V8I5trNpmgDBWlrcZfEDYTMbp2g5zjQPnhwAnb91QMvMqeMfLK75+Qn5mRW49V7yjLeF3Pl8mEjzEyWyhklmXH8ftoXhQW3+U3eStP2o7Vahuoj/9umnm+28ryfd/weXtcjsPcd+fY7/TwfffTHh6vn8UHSjJ9//+4na5R3L6/ry9Ks33tzxr3z5Rjo8UNJPf/wt80qcJXzM6mMzHxdiExTGsvXD7ob1vwjPHxw3+V2A8eteSNn5FX9l8rs/vJfhmRt06kiHefq5PLg33rpy4Q+Ra6aLyt4dEXj2Al9/+1bdfveEf997I8m688LuQsf80AW9txfPMOVFQetOw0Wi2yxtty6tD3i7KG4A84yGWtQuXdPK3Oyd/Ie2H+BsibyU8Z+kLhWtLibg258R1VNQpo6iHyg5zrEPFS2Mb8Dcp9kmNcWwf/orsQ87taHN947nh3pkTd6h9cI2hyNeQyAuxD0f8cPHLLvjwDefVom472C/ehWzrfr2AL6h/r1f2gW1AHfJ2Uh7aB+NB2Yectv71Ie2H+FVMhO1DaF8oXFtKxLU5Jy6zD74YOdoH9ofUMVW0D7xe8nek8zm3cco1eN7Lgfue4vS2ZjuP15Du8uBhGxaJMq410X8En+6HZDNxXTJOiwV/yifF/RL/fKobbpuAi7c0mq+dbGm8YGT9Fe9ZtnZkxRUjy9eOrHetYnKt7TfvWlTJalindx+m30y7Sb9PEXjSaKpdTa+FZ6YbsoPrtYJnRef0gnROF3SqPqRwOtFBKcVZWt9pUUfdmpCndrVcmQCwF3DiZe1yAwlOtQvA185nRJ28ZG3nMwLpvKEgnTcIOlX35xuoPmhxud2y7iLB8hxdaUIeys2xp2marh1vLDcG/weXtssdHyA3vjqqHW++3ZCG664UXFcSLizvu9SgP4CO72KA/kA6IfXx0ZnK+hgutSsM+4A/5qF23BuurSm4riJc6pCCbydXTeBUdHw75nw7xrYUpLMlkM5k1eeOgnRCd9qdUZDOGYLOsChX1K4rntPs7ZvI3m6FvJAdxgb/m2Bv55O9xZn7c72dq1jZwT5L689LqD/Vyk4TaHJ/GvzD0J+XBfSnahvXziWk6+trdbFGTeDy7fbldkB4NaZUGC0K/owZR4xzRsYnDjP6LseIE141eGzynMz+zh1Zd+ppZ5737NTvlhvWuyJHRyLRqHOVDeEj+s3lYt7qBHOnoBEnlp9tBMf9bu8ZfwhPabBp+crW7XDUM4rCbB2Wz3ow2fqHDyYvS/Rc7dBWPpm6sMHnD6jVOXVaDd8f5ii3OtL84SkR3O3GdTb493jqvCWlzuy/u05r4m+G6xd1mBl1ywDiUG18ZtTJe1Z5wvKTNXaeSXSakIdj2noa09J2n69Jnnn3+S4Y026mMU35glXXn/1Xdf3uGoBxzW3qDpy8kmvwzaTuBVdWZJSVo8NNwX9cv1upT1XdsSz3qcF/GPr09oA+9emHuszVZws2e+DVXFHFfnx+o/UP72KbE4Wk2l+EyCjiHyJeMsrDhL+hLkzC+uX1NwzvN6FCyH+av8HlfP4Gw7p0j32ArfQ+zd9QPLlgs/ob2NfbCDZrbJJlIk4mnzkvoJ/Dbd4PvKDMu06z9UV6nHSdwK458HOcy8rXo+62wbGJbdF94EssTXwJ1RdvdPAXRWF98UaqT5yqjhO/kejcUSIddZOC8nFYhrP6OFjeNR64ZPC9yXOar/JIhvg10uX49TwY1x7Pue7hu9yc65/1cvMQPyZNf7iNQv0Yg/9d8mNy3v6wmHfvGQ7EndNHWhyiE4h/WNDjy40wL2SHyP4/mvfb89e8azuPUcYLvwuJtZwv4Iv5K9Fb1Q4RXOmOUx3ytlLeAOQZD2qHSE7/5q0h7Yf4GwIed7hn6QuFa1FOXLarQ81Jp8pWuGIVpis81n7RM2/PuoanTruzj891ZJsTpzmRTj+hZPis/WcIWnwppMF+Gep9DX1q5S7Bq9mIfg+NSLyrRe62YRpql8wNUSdvWwJ4U/ETxHGHg88Yh1pzY7nNekOEL/aCdBYUpLNA0PGNSfzX6PA73/rdAqLThDz0Z/4qw/pQ/Hxj8szrQz8N/szfkD+D5V1rlLVI+8ZsA62869Qr2xOD/z7oFZ/g6hd1vhH4cslZPeqmGz+74jL/MAlxGa5TPeq2rXFa2IxkndJu/TB45TM04R3bYDV+Mi5XbNd161U0r13u30/LVv/zmxrnT+a2cf44I84LHDhPOL2N0zZYKX/+TZGmF0Vh80Ysz3P4JuXNiYLSxGWht+YrP3Ex5UZ8KXgy/EXnuUhrKOpu4zzxLsW7rx82Ar0mPLtwbcyIa6bIy9MnzchdL8Q/7OFF8ck+hqLzJnjH85FNHr4Q3nQIZdPKWhvdBnkZ2qjP11+bAKfhj2OdjeQ542WhzeT38QRnJrAv6m7iWx24IvrNnynvj/RlobFp+rXEnM4S1byS8Kouwncsxlje4BSd2QXpzBZ0fLiuFLgMXk2DZgt4q8ftUN7KFgxdTIjhbYIX5S4XEENrnpMAJn5vXkBf1K1RtztwRfSbcbrEsF/Q4DMCPi2M0yyBo0n83OahaXWNU0OUNzgb5c17OScZ2Qtano+Ytb0dXlo7FYzIfwRHSUtqBOVr/pGe8aU+TxsSrfpB4zV/dPXLF37Bp2a+lTo1+/85AV9Q9W5T0Src5RynOuTdQXkDkGc8qGhVzjMwt4W0H+JvCHiOVmWN/Kg7/LLismgVmk/TncnSZR8uFVmqEc+DAl7ZCoNfmNgK/PRHf+Ruh0i864u67cQlzYN/1ZA0N9K8K9qGP04NUd7gKrRVA1lt1VDUXec83r6SW9UuVncVQeQd8nHic/pZT1tMd1wom8NRt/zWHH+NDr/jdi5jRZL7rAxcd5WAS0UdXw3PmGe4+B33C5bfQnm3CTpqtfZ2ysN2M1uodvWfQvVCnWxSvbLaoabgj6MG8TNGOa8/XdPEaBeW5YiTwd8L0aHVp7vrGLKTC+FdEcN15FNWuZPL1XYbMrRdnOzEDbfd+6Ht3udpOx771cqCiipupjzXJ3QxL4I6qB1MKrIectdRwZXS4LGv7J1dahe9sjEF73SpGz3fJyWR3pGRblN175LpmLJ1bM/Q1vGqLo5rfNJBnYn32TOsE0fGFX+TZTcVncsK0rlM0PH5iSGyrugontNs2T1ky9TqNJa9NnnmaP9KsGV7yJY1oTzyyL9D5hdGL/R7Cwb/IMwveLVL1flaD89II4q69YbHLoN/iMaunPNc710Pvh3cBen2hdpgwz9EvOS1wWm7G3B37dHJcxLqu2TNshULlt2wbsOqEb5Fz7XHskZY8V0t6qw95vH6zEaCu7jZ+duktj9yJ9QKtLJR5NcW3/lqNSu/Q9DlvQ7qqwH9gg7Pbvs95RGHa/9Nv6Nc/PsmUabMMwxlzmgq3HN3TKhmGv4h4iWvZqr9V8o7Ys8Qy6q9qhvhGfOQjs87RVybSsIVJ44M9HD1cPVw9XBNBi7fHj2ehcWJz2qiHWxGnfyphWDfojKW9y1eLyhIZ4GgMyzK5R2TGx6eVbSlGXXWJ2sEEsvzvkfXDO0Hp2uaoTM0g38HzNB+dHonz00ojzNSNRvGfhjH0ewuO9N4gLwM/sWseJZ2Gn2JA9t1oNnGm+aHxM+2d5H3lGPdlSyE9tGPqY+akKf6iPeMGvwC6CNbXlL74kL2Eyl6rIeDDvgm8WfwAwlPuEqn+LvTQc+1h/YdDnpDQO8UkIfxejbb5Y12Qbk7Rskd2hmWOxUJUvbMZy9UREtFWXlltl/gasI7jpxY+cFI94HhqxP8saLPQ+Wc+9Xgjw/sV2vLKvq1CQDcr2rVG+G5X5Uc8G6XOKlI3a2E61aBC/ua+zVNlw0f69ZLPf1q5bFfkU/uV4N/eWC/Jo+V9Cu2Ffer8j8QnvtVyQGOD9YmKrL+YcpzxTRc9hvlIKTPsX8MH/f5qaLPVQS/GcCfarc4AndM8pxE4K5Yv2btSBKCiyj5Qmbx780ONo4W5SMqW6N3R1OeMp++zTvJz44m51BXnNjUnSma3Gd+4+Tb8l1w+3lwENfwl7VlPM2scajIp2a+qUwzkE6Johoni+7WBFtcPiJcNfEuTmoLchNg2Av0WTfVVGqvFsIbPl63vtAzcqiRUM2IDF557rwm5Kr/VsrDcnc66OCIhmLEI5rBXxY4opU085EjGrYRj2gqsuA72azWs1W0tEHw2PZqROPTVk1BR3kxamZlZdXMSslLM3LX19c+Sr7Uvga1t8I3Cza4KmbBWB+WBV/fxsl1uwzC8/6MODUIHttJmWQ+zaZmPaGygNGOHzjWqtPwGry6mQKHcJ6VG/x7hQ0wnGpFrgnvQmaA6hSzWsHjE7lYDvcVjONutvPwlrXx+kFeBnk8osyoTJzy6qpa5eE93TgW+KI4uPZ/zyTvweLxW91cirwa3jrB3wpRo91zO3EqHff1gdp/xHuasD7qu2k+XLd7aKtbO3d6aCNfru8hRoJP/N7POK1mO8/apqCuDChdQfvMuuKzxXEKaSvVTw2Cx7bJuh+MvyMZuh8MTzOzfCp/MXRswH2XG0h3q47as098P4wRVzt84tBosMG3POOOqkNT1CHEFivdQtvHfraKSirbx3ZR2WtlR9guqu/3Ibzr+32PJ+1X8BZjud/K9d3UeqR9L94DbPCfA9v91FyNcyAjzk8EzllKsnX1qm1d2pjE+1Sxb1z7DRGX2ovKejYY6fmS4ePVts96Im1ob9mmor1lm7pZ0PWdNYjl5psJH+yvxc+4gvXbJHtqvow2h2XP4L8F8vw/aQWrDLvBtzap726y/kSRX87UqqDBKXk2O1Bwz3fwnnb+Xl7OPfTe20pVzKCg3ZzY0658FdUPR0a6TdW36GwsmGy75ovFpLUrnw/COrI+o41gOxDikyl6Lp/smxX5ZNeTT4b6xfqPOs76r24uVXMA17ftlQ3jMRvh/wZs2H9S2yhZ9sVY0r5Dz3N69R16Hy5frO9uAb/bQxv5wrJM26WTvtsMq5hPoV/AuuibS8YppK1UPzUIHtsmq+7yPAzHd9ZrlG2TeSWfaTEX1t0tglf0B9SNMpdHnTTV0g6+43EWyxucojO7IJ3Zgo4P1+UCl88m+q4+UXPqgue/J64+2SR4UVetFLj6xJrnZQATv+erTzDse5sDV0S/GWd/pK8+USLRdPBpdNNEAsu7RMKGizjZJso4n48WGfxPJ19Esu7dRHWbEwWlnb4j4oY751H+nTXCF0Xa1XQdT0O+1LUCIdec/OGPNt7xzuXf+ZpPpXzhQRXuXyLgC15zsk0NY3yVSR3yOPSOQ5HvmpOcZmBbSPsh/oaA52tOsh5pxLwrc+Kya07QVJruTJbu87T9lESXMYw32byYy/RawYtvCGjCO978jbxzG2/y1EvR2RRYLx+dKwrSuULQqXpj+BVEB8tjKOXsM6KOut0GeSr8a4Mxb7z8P2e0y52TPKttEMijGn9w7IoT6ytvDGWYOx38LQD55CO1qs7XeXjGMFoUddsFDvFObEWhsTenTZUhXr7ySx3VLsOlQ3xRpMflqbrSJ9uRWt6ijK2CWPFdLeqsPeb107uNBHdhs/N3niO16pMatwucpnnqmKoafW8TdO1dX+QerdXGBN5K7BvtEYeahBgOVS7+PSLKlHlZwWQdzzXNzHnENfjTlYZ/iHjJq5m+DSJx4rqrS13UBgme7RQ5Uru1RFybS8IVp97Rwh6uHq7pe3QVx6C7qJzvE/VVz7wUncsK0rlM0BkW5fKOfQ0Pz2rzYDPqrE/WSw2xPF8245oJbT1D0wydCRn8n8NMaMcZnTw3ofymqJ3UrBP7YRxHs7tsFZsksV0Hmm28qAfj/ETd/WbHeX3HdJQshPbR/dRHTchTfcTHiw3+d6GPWjRbxfK8Md/KRyn0WA9Dj64a/AGYrfqOrt7uoKeOrsaJPydv8I8CvUk4unqUkju0Myx3KuKi7JnPXqjIkVrM4qNwvuOP/YJOE96FHIVrAk7Dx0fhPiXkgccilg0Xf6rdSj4Kd4eDjSNF+YjK1ujdkQ5chid+h9PXkKNwPEWNE5uIz4om93VZnHpH4Q65o3AWlakJtrh8RLhq4l2c0o7C8ajia2LVVMqKIDzH6A3+C0KkfRZWeVg+T4Bjua7687Y4LHe7g4463B0nHtEM/o8CR7SSPCk5omEb8YgWGjkxeN9WCaVqGPVoUp6a2YSqYehROPbUyj56xPIVevTI51U/H48e4XC0hegoLypUFnD2tNWxxuTC61qjRRuAQ7jrSMIPhQ0wnCoC3YR3IfZORb3VkQS2d2oNWcmjwRWUx2Elj1h/lkdfXeOUV1cbUbec8VZSHAvYjUyTG5884hrf2TTjQzoXEM2sn1S5QPCv6MwuSGe2oOPDdYHAZfBqK7Bvu5g6nlZw+3WfT/bU9uoC28WseU4EmPg9bxdDEd7uwBXRb8bZH/m3i2HXbXLwaXTTREKpjqLTLEinKejwdpBXJu5vwSXnTSGLZjlPGGyqEb4o0jMq1+kK5EuddgjZZvb1Xz/7N47Z+OVZNSpvvPC7ENW9VMAXVM+mGp74ZGod8rZTHg4xxoPaZpbzdEozpP0Qf0PA8zazrCdyMG9RTly2zcx3yn6ydNmG6Vcnuqy2mVXNi6JzWUE6lwk6yi2qOf4aHX7HdBTPaQHuN8yLOuqmpr++ALfBH31pu9xZnlCEy3WoAT3fFw6MXugXDgz+zSBTvB3rTlHnaz083wU0mG78fIqDh/NojMq5+UJux+IpKPLTjDr5V5t61BcDlJ7c6aHztoJ03ibolLkhpuHh2Tfu56WDNtV0Tp32vAqeMc/o8Dumg+W3eOhsKkhnk6CjQkM4bSroM/UX9CMmvl2ddpuP4Vc3CWWRA6RV1leWFO++TQbo02AdXbh2ZMRV0Hea6JO027bQ33PxovjksFKROm8sEddWwqX07yqBy+BDv36lTn9aWes7PL2XZ9qs+k6deiwwbbbmuYrgbP9LX9Qt4jscuCL6fRW9S5s2V31hymSZ6zR38OZ5mqbLHTRTzy78n76hXe6XPN+Jr1Md1arQJk8dsbzBKTrstmBElKOltwucNcpD/nwngdRKU7+go4ZMXGHIMmwUdC8nzHPa3huWqbwuGtIq66NYaZ+C8rlqvOdW4borI66Cp+4m+sT3sS/EP+zhRfEZchFMHd6FRORVe6sVMryQAoe0vEOTaiPUBcNfYGiy5nkVwdlMtC/qFqW7HLgi+v0qepc2NFVtrhSdcwrSOSeQzmTV586CdO4UdHy4zhG4eqrUkaZalZoOPo1umkhg+ckWceVhYKAxzQv8JHmBeA1oiBdo8N+f1y73KXjmvUqI66NRZ14T8j5G/N8atZP1acF7BoK3vRn+IeIlI70Jj0V5vq6dk+FnDjfCM7cKYsV3rE2Y10/v+HeTyuU5c6hW3W8VOJWff5ujHLZFJN71CfhNhGuTKGe893vKIw4sxxJTo/eobR8RtHlP9f8HIe5XU4hb0cL2SNs3zDDMg8F/wRNm3wRlVL1Ym2+j3034bUtnTP8vwcp8aZ6mHwn6XD+0noMOfrE+CP9laAPeyKssf+R4h22AZV2/EZadCvytZPEjBP/hlLpz/xv8n3r6f6PgAe0Ptz/zwDB9Dh6+KXgQVnPBmhtucezhxZlOLeq2ctxL3BMbBR5XMvyxxJr0cuuwdjAd+60kIK75scnzhGu2amS9a/9yn+BN0eyLdBqONG9xmqot6Rvz0fNuScf65d2S7tLSNDoFt6S7Bm1lLLh8RGVr4l2cYnH+f5OjFFO5JrmpIB0VRGRcLrf43clzneD/BQzUKY616D6BM04W/DZ437Z4w4PwaVsnuS1VwM9H27d2vy0jr2nrQxy4VbdXhvJ65STzeqfg1bf2WHAdNdh0Gv6y1i5Dv7qSbVrj+jZEjbDiu1rUWXvMcw1yli5qdv7OM61JW8XlaY1rWcslWZF41yfgtxMu193y/Q56qkfV3bmGQ5WLf68XZYquvseJB+MdJeLaKXAVXFGdHaqZhn+IeMmrmaF3wFrddwteGiJvIzxjHtLZLegoXFtLxLW5JFxx4msgerh6uHq4ergONVzqwB7fu43jJ189U/UVKorOgoJ0Fgg66iqSvL5Cw8Ozuse+GXXWR+3y2umhg+V5FyPuXMYFniVv0DRxJotlede3wX8Btvlc+QZ3HbGdx+vV7OZ5ptGAvAx+jfweJPo4A802Xpf+oA9nhzyVL8GHCLGv8b5/Xx8spT5Q1/+EfH/xU9AH11AfYHncDejSG0WPZcT1iefNxJ/BX5fwpK6WwfLbHPSwPbCdb3bQux7o+Q7iG+2Ccje76m8vpMkpb+tR37AwXOrkivomSo3KD0a6D1wneG4SfR4q59yvBn9LYL+WZE9mZ72qSkXWfBdaKDnA/uILyrHPXZFIxIV9HdKv6upW7tfbPP2qNgkgn9yvBv+RwH7FrXTjeCCvaL/6DqerfvUdTlfjN/artUkj6h4nbyVcvu1+cQrpV+wDttEGv8PTryrK7bPDBr97GthhbKuQflUrAaH9ynYY+5Wv+MKxjnV5smz0qOhzdWoh5LC/areSr/ja7mDjWFE+orI1enesA5fhid9hWJWb3Ko7GOkQKDe5wT8imlypqdqrpQ6KFtwpHrwoYPiHom6RyBN69Lme44wlf7PuYs46LFYgqnGy1YKaYIvLR4SrJt5hnhJVxOe7kgRH6E/SFjwUIZ4pKMunPH+DNw/U5V0YvjrBf8YzCvm84DixtU77uhuf98Y63E15WG6bgw6Ojmj5eXQ0+M8Fjo5Gu4rREduIR8d7IK9fwHN73yvg7wEYjirdC3ms0tjGdxOdNNPB8q/kVM2+lTfejNz1TZuVsXypLxfOEuV8kRKDqyJSgvVhWfDpUpy4bXyyg23TiNLlBPWSv/jos0tx8skCRheWUNQE5a9JNLNe+I3lDU7R2VSQziZBh3GF7lMx+G8LG2U41SrwJsGfwaedvzZ+VNvwOWD1tWH+G0VRUJQWeWgSnTJWjn0etW9VOS8dtDNbic6uEum4bBbbhqJ01MqyGr+K0kH7xHdP3FMiHbR1eIyFx0T06YyP+wQfNgXYQ2XnREGpHlIPxD9EvGSkNzEF2EP0uH48BdgreGmIvJXwjHlIZ6+go3DdXiIu69tZUXdfzyU6ype610NnbiCdeQXpzBN0hkW5ojqi2sbo7CmRDurMPKKzt0Q6KAfHEZ19JdLZBzCnEJ0tgofYHzjpzPb7+N/9kMdRrjjZCnCd4H/lre1yL0lwmgyirUAesTwe5L9P1IPp/XRCw+zfA1Amgz2SdykZrrS2ewW13X2QF9J2Bn83tN0p1HZYL9btByFvD+W1IG8v5Y1CHuLAvAjqgO9Y5rC8wQ2Lcjxe7Yf3GfprIEQ3EP9Q1F3nPOPVfqKHdY+TtYvVbywfvbrRe0jQU/1wZKTbFOkbLtMxZWcfoDy0jaOUh/asRXmo3yfDM+J01Yl3wCJ/LN/I33bKUztnfXfiqDn6LsrDOrN/a3UeIDxx4l07KDP9UXe7cBug/rOutlJw8WdusXyL6tCiOtwr6lChXgf7oZOh10rPrO5jgpeGyMN+wzykMyboKFwPlojL5N/GIJPdXzj34N/xnTxntnFhPZV880FMg33Xme0yb0+eeV4dP7Ofgv4Qy92DIi/G/42zDz7PEvVFO5Gn7bD8GOGyPDzQirEJ0786wd9CvkvOseI6axccK1gfD+TEHaqPhn9Y0DO+hkReyF3Fu07+/tGPLf+Pr9WovPHC7zjm9HEB/xYBb231MJTP0FbXqFit0VZ3FR+gvAHIMx7UXcUfz8lfSPsh/obIWwfPWfqiIfL4rFVeXKhvZeDamROX3aH8EJQ3nS4zZqn8lLOJ56y7R7E8x963CzpWHxzncU608UzND86JcMzlOZHBX3Juu9xtNCcK9f04rpL1fu25gXQWFqSzUNCpOtbNcZX9JdJB2VhIdMZKpIPjJsdVHiqRDuo1+ys7BQ+xzN5HenAA8pReXtU8+LdO8P9nfrvcPo8eII9YHuMqe0Q9mN4o+SY5xxwZV8Ex0dd2Y9R2eyBPtR3bEIP/0vx2uY9T2yFt1m1sp/2Uh+PFGOVhW7HfqXwRfOfzO7ndsJy1b0EfJjiuYviHokLyMTH/epjoYd3jxD7aI/noTcRVHhX0VD9gXAXbFOkbLo6rqHullW1kfwvt2QHKQ/3muMrOlDr5ThbzXpxW8vuz8w/+jXXnszR/Q3o/1+zMQ7m1GEKM4zdJ/7AdRqk+ak6O71hXsLzBlTmuqXkl+11Z55VYfozy9gs6Vp8W5KHN/PyZmh+0mS3gh22mwT82v13ui9Rnqp1Vf7LflbU/5wbSWViQzkJBp2p/iP2uqvwh9ruq8ofY7zpQIh0ca9nvagkeYpn9FunBxyFP6QH7XQa/aH673Hc8eoA8Ynn0u0ZFPZje35LflXMcl36X4Upru7+jthuFvBAbYvCvnd8u94MMNgR9CfatsD0eojwckxEH5kVQB3zHMoflDW5YlLP2tf56FN5X4XcZ/qGou855/K5QP8jq91g+ehN+1+OCnuoH9LuwTZG+4WK/S/kUyjY+Qnlozx6mPNRv9rv2p9SJ/S4l+4yrDu+Un8Vx9plvPPg31rXB5FnpOeryFoJTY5D1AbZNFes5HCPOGQufkGu1bqr8MF+8WvX9BnjGPKQTGmfcWyIu61clY+yHjQo6ox46cwPpzCtIZ56g41trDJEtRUe1TdX+Ee8rqso/Yj/s4yXSwTGR/TBXHPiVb2y/R7saGgc2+N9/c7vczyQ41XyMx30rj37YmKgH03tdQqNgvEH6YexPuNruVGo7NZfztZ3BfxLabq6n7UajzrxQX+sA5eF4jTgwL4I64DuWOSxvcMOiHI9XOf2UYD/M8A9F3XXOM149RvSw7nFiP+zxfPQm/LAnBD3VD+iHKd8LcbEfNgowHNtA2/go5aE9Yx8N9Zv9sLGUOvn8sDEHrlA/zOAvIbuR02+SdsNw9fy1cH+trPXq+HlPibhM9nr+Wve7nr9WDp08/tr1JflrV4DPsXoS/LV108Bf21CSvzYP2u591HYqtqHalf019KPYX8O24nEwa9xMxVeeL3EzNV4dSnGzUYDZT3loG9knQ3vGcTOfv1ZG3Cw0xsU0XX7dkmZnvsHvhPjadoqbIV8toP2Cszrhev5aZ9lDKb7WSp7VOQD217KeD5wreFZ05hWkM0/QqfqcG/trrRLptACG/bXn2jqny+f4JNk3tc7p8zkM/qvntMt9yuOvhaxz+vw1g/8M+WtVrnO62u6zJflrn4G2+01P27Fu49jYorzeOufB1FvndPtraGc5vtaCvLLWOQ2nq07sr6nzgYwr1A8z+K+S3cjpx0i7Ybh893HMjLrrU4W/1kqey/rKQ4vocf3YXxsTvKg5HsfXVAxW+YUKV9EzWj5bi7jZX1PnUfd46MwVPCs68wrSmSfoVH3/AftrVfmF7K+1SqTTAhj218ZKpKP8nDSf45/J53gI8kJ8DoN/J/gc/+aJEXE8h8+AMzz7awb/X2R3cZwoancNV9p5gOiszrrshzxl07jtDP4caLv+BKc6D8C6je3E9gXH1BblYVshDsyLorA5KZbndlNzkYLnN4L9NcOvznjmGa/UOQm1h7fg/GHCX1N+s+oH9NewTdXZAPbX0M7yeQC0jbznvwV5HDtB/Q65ZwHrxP6akn0V48KzfBzjUuPSTFHHDH00K1QGDf9Q1N3eeWRQxVfUeB1fG/vy5Dm5NvaCkfWLN1yzauXyRSO3rDt39YrFy9auX7ls1bkrVqwdWbcOmUZCR8B7zMfEMPb8gHiPOFoplcnivO9PwcUXTmB5NoBjKbj4UzNqcOPfA1E3n3ZRQF8AHlQ0F19XEV9q8cVn5FE43xd14sLyroCLC9cthAvL8+IiBouYT24vHx6XAUW+fon4ch2miv89moJrNeFSh7EM12MpuN5PuNQknH8PRN18cnv58MT/Hk/h6wPEl2vzTfzviRRc1xEutXnHcD2ZgutawoXlsSz+Hoi6+eT28uGJ/z2VwteNxNeTkPcU5WG5y4hO1kkalp+sSdplROepEuk8BTDHQbn499OQh7bVd1jKBv9n4H0VARPDP0S8ZKQ3Mfg/Q/S4fhww+YTgpSHyeFHqE4LOJwQdhatVIq6nqT6uSdjbaRK2F/JCJmEG/0qYhL2TJmHYRk9RHVtRdx33Cno1qteggEd8dYJ/d8KT+izGU6K8wo3jqS/QMTPq1q8qdMTwD0Xd8pNHR54melw/1pFnBC8NkcdBC6WLzwg6CtdDJeLiRVOXjqwpSUeOBB1ZOw115OYSdAR9qBAdybnwFKwjvPDUykfPu/DUgnesI08LXhoijzfWK118WtBRuB4pEVeojny4JB35tze1y320Qh2x9g7VEYPfUoKOoN8coiNFgmGIz/jBd4i/LB1Rl3+04B3ryCOCl4bIwzkT5iEd3+I44nq8RFyhOnJ/STryLdCR1jTUkQMZdUTxXsXcS8WvXgfPrjZqCVwNUb5FeXsEnTQZefoszY+SkfiZP+Fr8F8CGfmkR0Z8C56TtbB6VkE6Zwk6k72w2iqRTgtgziI6D5dIB8cVXlh9pEQ6aCtDL1r7XdKDRyFP6QF/RtngbwQ9+LxHD1wxS1xY3SvqwfR+P6FRcOORXFg1XGlt9wcljTNvg7b7cgYbgj59i/KwPR6mPByTOe6r4qv4jmUOyxvcsChn7Wv9hXHLKhZWDf9Q1F3nPL5W6MFPq99T+ehNLKyquYTqB1xYxTZF+obLt7C6l/JakPc45aE9e4zyUL95YXVvSp14LU3x59tgM1WbzHIu0Ho3makN6Tw2YVnVN78Mz5iHdNRhaYVrT4m4bI2ht8ms+9108IV4k9nzxReacXb7Pdr30PHc4P/pZ9vlDqPL9avwhRoJjan0hY6itsvrC/0JtN2xnrbr+UKHji/0ZD56E76QWsPO4gupNe3ngi/UL/hDONQ9FU+KxLuahx7T6BNlPxh18o15i4hGC/CGxIAWCX4rjOv2h+rXoRLX5TX0IrHYEJ+n4AbGYH98MjYwLoJ3JW2i7ff1Q8tDL+daXp/R8+3tQnqxPR2Muvsw7UJvpIH95dL5vPsp0y4/9+2n5HXAR1Jw8X5K18ZlzHtH4r/EdvjiszthbC/gpQBzSfLMOoXtML6XhOB8F9rnPAAYrHuGv6wL7VU/uC6YnxH5ZQT7aAyeXftEHwG69s4ls74L4hU/WftUbSqP4d7lgRsTcIpW/Bv3PfMl9ga7NMERt/MVSzrriHT3wzPmxUn5/r7DGb6PCs4tSGduIJ15BenME3R8hyNDdE3RUW0z2QfQHiiRDsokxwZaJdJpAQzHBvYIHmKduYnmt6hrvvGCD73fAvPbW2h+i3rQijS90ANoBv9Big1UebGeq+2a1HbqAJqv7Qz+XdB2mzxtx7qNtt93AO0BysOxgffWWV4EdVAHn9SBI4N7vhxAG4N3h+IBNDXWhRxAQ3vGB9BakBcSG8A6+Q6gWdn4cNWLk+f24apFI7dctWzVyhXL1q9cs3rJyI0bRtatrwNmNXKwhW/Rb7waypVq9LuP8nZSPp5yUCnkqgHUuCo8X8Nf1lUDY0SP68ez/ocEL+qqig/BM+YhnYcEHYVrtERcJje9qzy73zEd1Ta+0yN56eAoyp7eWIl0UDen6tODLm/l0wErGT5vxeB/DDP7z5C34vv0oJVHT8/36UGD/03y9HD0KerpGa60VaDPUdvhzDVkFcjg/wLa7neo7ZD2aNSZ5/v0oLr2Z1bU3Va80o3jX79451ux5XZTs6WCuxaCPb1W8jwUFZIP764FFUUsePXFhKenPEvVD+jptYAm0ufr15Sd9X168AHKUzMMZYNCrhrAOmW5amCHoGN5+yCPP5H7oKhzrHffoEjTFoDbQTjug7x9lHc/5D0I+EcWdtYN9Yb1GnWX9RrlmPW6BXmu0+WunY6Gt07w3wXb9O9k75SMqp08Bq8i2Dg74ZksyvDDAbj2eGirmdPDHtrqyjvmJYrcujZstJrtPGubmcnfOuRlsYFxhPK0JW06yMM4QLON19VPatboayvVT2qljFfkRiFvD+Wpa2qUjWH7o67RUfKp7A2Ox2Zv0qLQPM4/kIKX27Ml4NUY7IuoK/1nu9GCPLYbKrqjZJ3thrpqXV0Zz6tBM5PoVcGVGe9V6yzf9UjLt+s60xdDhO3wn9U4BzLinJXgiXX0FNDROKEtsH4saAvqyhagvrMt8NngOGW1m6y3vhX40EgP69mggEd8dYJ/AfQBnxQahfL8SWUVkc7q85g+xHLzswkf7A/HzziPmEOy14I85Sex7Bn8m0GeX5Y8l2k3+IpZdTWtb8zxfcIcyz/fPmHegnc8jyiyoh3/q/IT5pNt11oAEGLXEN5si9rJxvo8CnktykMb4foku6KnVuHRRvhspNoxkrbC/mmKI7QAjvUfdZz1P+tndnncUDaMx2yEPx9s2NXUNkqWfX6s2vmDu3Z4Bcx3Kljhanloq920j3loq920zEsUuXVS6aK1TRXzDfQLWBdVP6mddr62Uv3UIHhsm6y6y9dd4/jOeq2uwlby2Yq666HiG8ofaAHeOTR2V73a24o666F8XxXDZd93OejuTdQ2yj6rlVK2HwivTuj45us+XPs9tH3yq2irz08yL5HgEz9BME6r2c6ztqlCd8ucH6i2Uv2kTg2wDoauPLN+hq4847jL8pl2W6Vv3MUdHrz7Q60Z+mRP7bRAPWbZUzstlP77YmtsN1BG2W6o03isZxgrQHiOFRj8bRQryLnjV8YK+JQLxjOUfLs+VbcHbNtHHLZtICPOjwXGCqwfq/CpUd/ZFvhscJyy2k3WW+ybMcKl9geoXaisZ4ORjlnijjKE3+2JFaA94rhm6E4Y3qvQgjyMFfw3ihWozwnFcPtI9lRcH20Oy57B/z8gzw+Sv1GG3WhRnooZ+cYc3+latS7gO71ZcC4dHCvg3eE5YxPe3eFqvlPGrWfxv9DPS2OsIO1EhC9WUKVd862HpLUrz92xjqzPaCPYDqhTJGwjFL0WlENf/L+R7isbGeqzjAHemyhWgPrlWxdj/Ud5982tW1FnPdTJYzXn4pPAvwU27CvUNkqWfX5s2nydY59qvu7D5YtTPCHgH/fQRr6wLNN26aTSRWubKuYb6BewLvpiNHEKaSvVTw2Cx7bJqrt8wyKO76zXLcjDGNhXHOM21gPHbdZdV/xwH43dVZ8a57n1E8CL2leA4wDCfxN090fUNup2cZ9MPCXg8RQ02zDXzTEuXL49DU8L+Kc8tJEvLMu0mU8rp3TX2qYK3UV9Y91V/YTwIW2l+qlB8Ng2WU+wP0F5oSfYTeaVfKoYfei+AozR8y0Syhb6ZC9tzGLZU2OW0n+2G6j/LcpDGWW7gX3LdoNvJmB4jhVM6EZye1jB27BlrOBp4vFJ4EHJN8+tDP44uOGs/00a50BGnIMJnrRYgfVjFT416jvbAp8NjlNWu8l6i33DMR0Vd8A25ViBtdGggEd8dYI/CvqAYwVoj54k3luQ57tRg/0MdatPLDdzEz6Go27dxVjBCSR7aNPYXsSJZc/g3wDyfGLyXKbdeITy0A6wb63GHCVnaq0Ix1AuZ3ag4I12wbECwz8Uddc5T6wg9NaYgnZzIlagbshX/YCxAnVLH+LyxQqqtGvYTiF2Td1c04i668j6jDaC7UAL8th+POyhhzYCffG5pPvKRob6LDg/n0GxAtQv1n/U8Rblobyz34BtyH7D08CL8nlwzEb4c8CGXU5to2TZ58eqL6jgFyAeo/qgrH8iANfjHtqfFPCf8NBGvrAs03bppNJFa5sq5hvoF7Auqn5C+JC2Uv3UIHhsm6y6+zTlqZsgle6azCv59Pn5cWLdVV8BQ3/gUIsVvBN0dzW1jbLPvlhB1vk62rCnA3D55ms++VW0kS8sy7SZTys3nWIFqp98Nla1leqnRtSt16yDkxkrYPksK1bAt28/12IFIWM+xgoQnmMFBv8BihXk/LqcjBU8QzxiPCNkXm/wO8C2fchh20JjBQZ/6zSIFaC+sy3w2eA4ZbWbrLfYN1MVK7grMFbAcc0W5JURK3gmMFawq6RYwa+APN8zCbECtAMcK1BjjpIzFSvAMZTLmR0oOJcOjhUY/qGou855YgVK/3yxgiJf5Yz/qTmO6geMFai5COKajrGCtHblubuKaWadb7D9yBMreKaiWMHv0tc98sYKUN7Zb8A2ZL/hGeBF+Tw4ZiP8Z8CGfZHaRsmyz48tY77uw+WLFfyKgP+khzbyhWWZtksnJztWgH4B66IvRhOnkLZS/dQgeGybrLrLXwDG8Z31GmUbY2BfrChWwP5AS+BVNqFG/CK8b36StneU5yfKF1J7jfY46KBNaAGM64tPfxLoUxvtgvI+q+p9NGnzwVbyrHwj3vOCbYznkXhsMJxx2z+d4QuDan+omiez7A064Hk/mcF/V/jsPnluwbui8qz2G+WVZ9SNa6muBv/9yZXnI6ZanllmUZ45JqTkuRZ127Ai8Zz7p6H8/9fzSP4HzmnXdTrKv5pL+OQ/LUbC8q++WD6Z8v/hDPL/tIemkn+rm0v+MZ6I8LNBJlj+Vfu24F3WNUKf/H+C8rDcHgcdlH/sd5Z/gz8pUP6NdhXyj23E8u+bN8Up61yH1wTQf/fJP6/XliX/awp+Ydkn/1ZXl/wbPo6Xv9oj/0oHfecYs651YR2eoTwst8dBx+XPs/wb/OmB8m+0q5D/MuevaXGGVvKs1rp98s/rHGXJ/9tJ/vGMO8eGHhI4fOfY1VmVMaqHOrOpzgPwmc2F50AdzunEqXwkdT+wwZcx5/Xh8uln2t0YTFvdjcG8RIJPK1fh+a+Bqs+1qrZS/dQgeGwbpVu+M+6+cyV8VgVlG8+LsXyqM+6huotn3CNaiz6Qgpfb03cfIdJS+v9xysNyvjshfGfVWpSnzvuxnuFatFp74/nGtUlf2PpGFV+tZPnGtWiUb167M/gPgG1b6bBtAxlxrgocZ60fq1izKfOumjS7yXqrzqbV6DfiUus3rGeDkZ7r8r0sBn+z8OuUPeL7OHx3brQEXWWPcC16T8IHn9GNn3Et+oMke3nvYrwf5Hlj8lym3RijPHXXgW/MUXLWEOVxDOVyZgcKngEPXos2/ENRd53zrEWH3k9X0G5OrEWrOKHqB1yLVmdoEZdvLbpKu+a7xyetXXltGOvI+ow2gu0A2gi2Hy0PPbQR6IvvId1Puz+HfZb9oh4x3n9+48FnpeO++5xY/9U5drVnjv2Gx4AX5fPgmI3wD4EN+zS1jZJlnx/7hIDHOPgBqo86Z+7D5Ttf7zsrqmirczvMSxS5dVLporVNFfMN9AtYF9PWZEPaSvVTg+CxbbLqLq9vtyDPd1cext8/7Ri3sR44brPuHhC8oj8wS9DPewcN36mAeo18cB3ZBiFe9vk/B7r7ZWqbsu+n4DlT1vspxjy00+wG0+7dT9EJr/qpEXXbQN4ror7hovSTYwzq7hTLU2OOks8xUY/QcXcM8H72jZ141VqmT/Z8sRole8pvLnNc993FwnaD/UOG51iBwX+LYgUoI0VjBTyO45kbJd88tzL4fwXb9h2HbRvIiPOvA2MFJY3j9arH8TS7yXqLfcPzRzWWYptyrMDaaDDScQq+f9ng/8ETK8jrL6j4nbJHGCs47s0HnzmeGz9jrODfS4pTveDN7XI/Jn+jDLvh861536oac5Scqb2BOIZyObMDZldQFquIFRj+oai7znliBaFz94J2cyJWoPxw1Q8YK8A2Vff3+GIFVdo1Xww0rV157o51zBMPUPbjIQ89tBHoi5uN8NnIUJ8F5xufpFgB6hfrf+g5WfYb1HyOxw3XnibXOdk5YMNOp7Yp+04t3oef9U4tX4xd7TXwnQHo3anVCa/6SZ054T3mobrLMQYc31mvUbZxfznLZ9qaLOuuWmNGf0DFCkajzrys8QCl8+ynKd9XfXeAfd83ge4uprYpO84XMl/34fLN19LifEy7F+frhFf9FBLnG4U8jhWE6ifrPMo2jrssn2XFCjZQrEDZBJ/spe2nYdkLPUPCdiNrPEDJOtsN60+MFSA8xwoM/heSvjD/M+c9UjJW8CTxiPEMJd+uM8HrwbYtc9i2rOeMVyR4Jmn/duazoD4bHKesdpP1Vo3xNfqNuNQZMNazwSjynp3gOfMa6APfd/Y4ron2iGMgBwRdZY8wVrCDYgWouxgruIlkT8X10eaw7Bn8bpDnW5LnMu0G73FSMSPfmKPkTK3z4hjK5cwOFJxLB8cKDP9Q1F3nPLECpX9qvlPQbk7ECtQcR/UDxgrUXARx+WIFVdo133pIWrvy3F3d+aJshG8Ng+3HAQ89tBHoi+8g3Vc2MtRnwf0K11OsAPWL9T9rPEDNrdlvUPfJqruJ+D7ZfWDDnqa2UbLs82PT5uu8DqPm6z5cRc49+e4LSbtTS+lkhfdNyPlGmXfupt2pxf6/706tUcjz6S7feafiAUp3MQb2tGPcxnqoeKXyB3DMv4nG7kMlVvDroLtf6MUKumgzn71YQWfeKORVHSv4QkWxglN7sYLMsYKvHwKxgr8H2/ZnJcUK/qIXK5jIm6pYwfemSaxg1vyDz2mxgh+VFCs4an673D/1YgW+1IsVEL1erGBqYgVmI3w2Mk+s4JWHaKzghPntcq+a34mzFytw62QvVpBNd5+kvDyxApbPsmIFP6KxG+vk24M8RnllnkFoAYzrDMIZ89vlLpzfibPsMwgtqk/WMwijHtppcYoW0e6dQeiE993t5zuDgGPZKOVhvKyMMwgsn6OiHi14x7rbErzGeP/uzE68ajz3yV7aGYRW8pz1DALbDXXvwFSdQbhq/sG/BX36Ss8grJp/8G/cx1fP1ziznkF4V4KndwZh6s4gXDf/4F8VK0B7xHEOtEdlnEH42PyDz2lnEFbP76x33jMId81vl7sxeS7TbvTOIPTOIIwjT/4+V88gqDU0ZSPKOINgNsJnI1sCr/JZ8AzCtxKfRem476wv6/9kn0HYNb9d7uH5nTiVLPfOIBxMvTMI2XS3jDMILJ9lnUFgf0CtebYE3hrxi/Cj8C7rfWqt5NlkNfQ+tf0OOmgTsG5XNQ/+5XuYPjn/4N9JugNsIOtdOWo+6IuDpM0HeU0dbTffraPOoKmxAde+P0/z2VqSh3O8U+D5ZMhH+C/NP/jX/AasZ4b2fuswlIkAB+Ku58RdI3xRpP089GkUvTgNibx6AC+v/uDNr3nJLQOvr1F544XfsbwMCPiLBLy11SDxPicKSouUThlty6tDHvuBqBfGQ6xLFy7p5G8gJ38h7Yf4GwJ+cbMNl6Uvjoo6ZQHl3Wwf3pWznfKUXcwb72U7gvYU79zk+bHBf3V+u9zfzu/EqeLdOJ5UcQ+sD9ceD+0yvknJvESCTys32WOOb76T9d5J1Vaqn9T8iP2h7ZC3h/JC/S+ec6l4r5LPPaIeoXfQ7gG8YzQGKh/IJ3u+MV/JntprovSf7UaZ8V7WM7SZCM8x3Yk7W+Yf/Fsw9iJjury+g/fkZtkvM+vcg3/jPv6P+Rpn1j04/5XgSfM/S1rfybxPIuv6TprdZL31zfPVXEPFXVjPBiO9h8Dw8RxgKOlXFdNFe8TxaLWXQtmjA5SHOoMx3VcnfPC8IH7GmO6R53bWG22amiOw7Bn860Cej0mey7QbHNNRdxH7xhwlZw1RHsdQLmd2wOxKzhhrcEzX8A9F3XXOE9NV+qf2zBe0mxMx3dD9ZhjTVfvZEZcvplulXcN2CrFrKp7SiLrryPqMNoLtANoIth9jHnpoI9AXfzXpvrKRoT7LAcB7H8V0Ub9Y/8uM9/K4oWwYj9kIPw9s2EXUNkqWfX5s2t5l337WJwNw+c66pMWTmbaKJzMvUeTWyQr3Yg5UvcdctZXqpwbBY9tk1V3eexK6vwTX+i9yjNtYD3UPtvIHcMxnf2CnwKv2hNaibjsUEtNV915je7BNwNgF+wRYbruDjopBxIljugb/tqQ90nxqo12FvGMbsbwrm43wWWPoPL9W94creTeaam+w4YzbfiONDfsE/hrlIa/7RN0aovw+By6cp20HXOzXGvz7k/43/+RBwJuhX6/jdjEciHssJ+4a4Ysi7U8a/uHIrWdDIi8kdrzr5O8f/djy//iazw7guxA78BYBb22FMpuhra5RuouyG6c65I1RHuqf8aBixw/l5C+k/RC/GkPWwXOWvlC+pOlFUVzKJhfBtTMnLouPo316kHCpMQ9jbNYms0S9djrKMZwrFo50FP5R4nW74HW7qLfao25ww6JczfHX6PA73xrD2cSzio3u8fCM5X1j0NlUnx2QhzGPj52r+cE+2QH88Nhg8Le9tV3urnPd9ec5D/I8N+rkJWt/zg2ks7AgnYWCTplyo/pzLtHZVyId9A8WEp0HS6SDtuU4orO/RDpoz04hOi492H9u+z3aS5cesI9s8C8HPTjg0QPeZ2HlMb6/R9SD6T2W0Cg41sr4PvuxrrZ7oiQbMhPa7ukMNgTHwn2Uh+3xIOWh34Q4MC+KuucGcfKNxwY3LMpZ+1p/4ZyiirjpRCw+6q5znripmjMp38Lq93A+ehNxU7XvRvUDxk3VfB5xmY6FrI2ibeT4JNoz3x6fk+EZabjqZHGEWR7+hgUuli3kPWvbIz7jE98h/qGoW0fzyJaa4ypfiMcmLMt9E6cFzTYc5/WLd75xi/32Irh4vXkqfKF5BenME3SeK77QPKLzfPGFvnVu+z3a99Dx3OAfvaRd7jsJzip9ob9NaEylL/R31HZ5faHN0HY/oLZD2qzbKu6n/CT2hbCtOPao4lEqrqpij9xuWI7Hq5y+SbAvZPiHokLyMTFeKR9RjVcFfb0JX0ita6h+QF8I21T5RT5faAfloW1kfwft2Rjl+XyhHSl18vlCO6AO8e9W8vt9oDsDSeB0WND7uWZnHsrtvVEbx8y3dPKAdR2l+mT1B7C8wZU53hjPLYDhGFQr6ua55eEZy7co70FBh8dptpnHvEXzgzYTx3i2mQZ/LfT7cdRnLaDNtg95Zr8ra3/ODaSzsCCdhYJO1X4K+12jJdJBPeAYVFX+EPtdYyXSwbGW/S6XHryK9ECt06IeuNZpZ4AevNajBxzzsPLod7VEPZje6QmNguO49Ls4luJquzNKsiF/u6hd7swMNgR9iVHKCz1HwHt3VKxFnVHynXdXZ6GsfQvGaIL9LsM/FHXXOY/fFeoHWf0eyUdvwu9SeyhVP6DfpeJOiIv9LrSzLcobhTzfuWeOT6F+s9/Vivx1Yr9L8TcscLFsIe9VxKAM/1DUraN5ZGuU6HH9OAbluysHxy2OQe0XdPYLOqqfeY22CC6OQeH6K/tCai14p4fO3EA68wrSmSfoDItyNcdfo8PvmI5qm6p9Lo5BjZZIB3VzqmJQrvH8ehrPVQzKN54b/J0wnq/2jOchMaiWqAfTW0e+UJUxKFfbbSjJF1oNbfc+T9uxbofGmUYpr7ceF0zvOb0eh3a2RXloG9nfGYW8LOtxD6bUiX0h5O9BB646vFMxpzrBb0/0K9a1rRSzQj3H/aPHL+iEawEdlmtsm+erHxY/b4BnzEM6ob7T3hJx9fywNh1+l8UPGy2RDuoM+2HPtZiUWo+MbcwzATEptJ/sS0zYYfAlfmUSYlL/bRJjUq62+0yAH+ZrO4P/0cXtcv89gx/Wi0m1+cR3iL8Xk3LHpHx+2CjkTVVMSvHHuEL9MIP/CtkNrGdRu2G4ev5auL/G5zeK+Fh7SsTV89fadPhdz18rh04ef+0fS/LXdoLP8S+T4K/95zTw1/6rJH/tJmi72oKDz2odhXW7BXmjlId+FPtr2FaIA/OiKCxuhuWfb3GzFrw71ONmD1LeKOSxT4b2zHeWsoq4WWiMi2m6/Lolzc58gz9pQRvnCyluhnztA9r7e/G150x8jffCIm721/YKOns9dOYKnhWdeQXpzBN0hkW5muOv0eF3TEe1zWTvtR8tkQ7q5lStc7p8jrPJvo1BXojPYfDHg89xDvkcLaCNPGL5rOucCxIak7HO6Wq7hdR2LcjL4q/9+0Xtchd62o51G8dG37nDUcrrrXMG03tOr3OinW1Rnu/c4SjkZVnn3JdSJ/bXkD/fHTL2zueHGfy7yW60AG9Ru9FKntVef5b/yT4buSMfPe/ZSKwf+2stwYua43F8rSXotAQdhWtPibjY1iJu9tey3qExV/Cs6MwrSGeeoOM7txsiW4qOapuq/UL216ryC9lfa5VIpwUwof7ah8jnGIW8EJ/D4PeCz3GrJ0bUijQ99NceFPVgeh8hu4vjRFG7a7jSzkZ+1DGXx7bznY00+A9C222mtkParNvYTmxfRiGPfbky995ieW43NRcpeB9asL9m+IeiQvIxMV6NET3WC/bXcs4fJvw15TerfkB/DdsU6Rsu9tfQzvLZSLSN+ykP7dko5bUgL+SeCKwT+2tK9lWMy+BUjMt3nwTWMUMfzQqVQcNf1n0SKr6ixuvDn/338uR5w/qVq1auv+WCkfWLN1yzauXyRSO3rDt39YrFy9auX7ls1bkrVqwdWbcOmUZCR8B7zMfEMPb8gHiPONIux8jivD+YgutKwoXl2QC2UnDxBXFqcOPfA1E3n/YRmL4APKhoLr6uIr5aUH6UcO334Iqf3xd14sLyroCLC9cthAvL8+IiBouYT24vHx6XAUW+fon4UgbTcH08BddqwoXl+QO0D6fgej/hUpNw/j0QdfPJ7eXDE/97JIWvDxBfrs038b9HU3BdR7jU5h3D9VgKrmsJl/oQOv8eiLr55Pby4Yn/PZ7C143El7r8Xk3SLiM6WSdpWH6yJmmXEZ3HS6SDl5IfB+Xi309AHtpW3yEmG/zx0vQqAiaGf4h4yUhvYvBXF8UrB9Tq/pTgpSHyeFFKXZr+lKCjcO0rEdcTVB/XJOwvaRK2F/JCJmEGfx1Mwr5NkzBsI/5IkPJj9gp6NarXoIBHfHWC/5uEJ/XxmcdFeYUbx1NfoKOMDz8jPuMH3yH+oahbfvLoiPpAgLpU3Or+pOClIfJa8OzSxScFHYVrtERcvGjq0pF/LUlHFoOO/Mc01JHovIN/iugI+lAhOlLkEiTEZ/zgO8Rflo4oX9anI74PZmAeb6xXuviEoKNwHSgRV6iONM7rpJlXR94IOnJ0grMKHbH2DtURgz++BB1BvzlER4oEwxCf8YPvEH9ZOqIuiPPpyAHBS0Pk8cfMsi6OI65HSsQVqiOvKElHXgo6cso01JHXZtQRxXsVcy8Vv3odPLvayPdhldeJ+qg53uuoPi4ZOfM8zY+SkfjZ5u+8sH4kyMjZHhnxLXhO1sLqWQXpnCXoTPbCalULnmcRnYdKpIPjCi+sHiiRDtrK0EtnF5MefBzylB5YvKhO8J+4sF3uCo8euGKWuLC6V9SD6b09oVFw45FcWDVcaW33jpLGmV3Qdj+fwYagT882Xn0MXcUxOe6r4qvqI4MNUd7ghkU5a1/rr5wfEg1eWDX8Q1F3nfP4WqEHP6v8cKnqB1xYVR9tR1y+hdW9lIe2kT9yjPaMPzKI+s0Lq3tT6sRraYo/3wabqdpklnOB1rvJTG1I57EJy6q++WV4xjyk47tQGnEVvZwacdkaQ2+TWfe76eAL8Saz54svtC2DLxQnHs8N/gwYz3dOgi907zTwhfaU5AudAG13f88X8qVDxhfK+ZH6CV9IrWFn8YXUmvZzwRfqF/whHOqeiidF4l3NQ49p9ImyH4w6+ca8RUQjawxokeC3wrhuf6h+HSpxXV5DLxKLzfJBrJz+cbA/PhkbGBfBu5I20fb7+mGfh17Otbw+o+fb24X0Yns6GHX3oWsPmtq7hf3l0vm8+ykfSsHl20/J64AHUnDxfkrXxmXM+9+J/xLb4T86rxNmLIH5KsB8JXlmncJ2GN9LQnCGy2DjVPBCj2DdM/zqo915dE/1A9YPZXNG5JcR7KMWPI/C835RlxCZRZ5CZDZrn6pN5THcdzxwLQGnaMW/cd8zf9DHYP8a1peuWNJZR6TLe5PVx4XUoTl1OMPgFJ25BenMDaQzryCdeYKO73BkiK4pOqptnqsH0B4okQ7KPscG9ggeYp35Cc1vW5DnGy/40PuvX9Au17fw4LPao488YnmMDfgOoBn8jITGZFys52q7oYWddVEH0HxtZ/D7oO2GPW3Hut2CvLwH0BAH5kVQB98BNCz/fDuA1oJ3h+IBNDXWFT2AhvodEhsIPYBmZePDVS9OntuHqxaN3HLVslUrVyxbv3LN6iUjN24YWbe+DpiZOtYiirQlxquhXKlGv/sobwfl4ykHlUKuGmjB+yo831byXNZVAy2ix/XjWf+o4EVdVfEheMY8pDMq6ChcO0vExZ+o6F3l6aYzHT6B0yqRTgtg2NMbLZEOyluopzefvBW1kuHzVgz+TeCtLCBvBWkjj1gePT3fZ5gN/kLy9HJGIaWnx7NY1yrQxdR2eT/DPAfa7q3UdkibdRvbie2LuvZHRYZ4pTtrlFp9CjokSo0eQRWenuEvK0r9ANFjvWBPL6dnOeHpKc9S9QN6etim6iSu7ypPvmoAbaPvah9ePRqFPPb0dqbUyefp8XizRdCxvPsgbzvl3S/qHOvdiEfvdiXPdaL9frJB2J4Z+vxNw0THcCDunFH+N4Xqi2uFA/lSKw71AF5O/9Zvz+6/dsWjbCeNF5cu8RiB8PMFfMGx4Kxho9Fsl8edWHGqQ94eyhuAPOMhjiZeuKSTv5wrRGeFtJ/SSYTnT0Rm3QmkrifJiuuoqFOu1NiG+r07eQ6ZB+XUweB5kOEvax6kbKJvHqTarCHy+IrcXYLOLkFH4dpSIi6zzaqfeR60RdDZ4qEzV/Cs6MwrSGeeoDMsytUcf40Ov2M6qm2qnm/xPGhXiXRQDngetLtEOrsBhudB2wUP8fi/N8CX3w40Xb78585vl3vA41Mgj1ge50E7RD2Y3hj5IDnHFjkP4l3IrrY7QG2HflVI2xn8Q9B2j3jajnUbxyQeR7A9dlFebx4UTC/3PCjnDRsT86CWoJdlHqRucOJ5ENpZngepa/uVPWOfC/Wb50E7UurE8yDFX88XCveF+PrZIv7LvSXi8vkoPV+ok07PF8pHJ48v9Kcl+UILYTz/80nwhf73NPCFvlOSL3QytN1fU9shbdbt0Hgx+0LYVjyvz/oJEbVCW+FJtmBfaDJOsqnxqqCvN+ELqRs1VT+gL4Rtqvwiny+0nfLQNrK/g/ZsD+X5fKHtKXXy+UJYFn8PCNhtUF+E/cnCdpmXn++mdXfUmbcN8u6hvFD9RBzYvq7T6O+mOhj8YMJ3HGu8aonG2Rf516RU7NPqMdPoQl4G+f1czNdpS9p0UF7iNNDs5BnHP59PZfB3C3iUOfYN74Y89ueUPKJ/YfKo2st4rKK9kIeQ9lLr+KHtxXqP7XUf4VL+L7ahr72MxyraC3kIaS+Ez9pe1gaqve4nXGlznEXEq+EejLRNMHx1gn8p2AS+Lcdn47cJ3Ggba4QD69Ev6jFMeVg2xntz4mRPVpyHfc0HgBeWBcRbJ/jXgX/2FmqbtJuvWb5aAh7jFtupPjiOtwJw7fDQHhXwLQ9t5AvLMm3mEz/FOE6r2c6ztiloBwaUHcB4FdsB1U8IH9JWqp/UWniL8kJjTg9QXmjMCW94YvlU8SeXzWZ9wPnMdxx7hxCvT/Z8N0Eo2VMxVqX/bDfUZz+VLrHdwL5lu9FKfmfdob446Ysqd6izfNcjLd+unefXgm27wmHbBjLivArGo1NAR+Ok1tsL2oK6sgWo72wLWpDXL+Cz2k3WW+wbXmtQ6+bYpuwTWBsNCnjEx3vmlgX6BLzrOzQG7pv3mT7EcnNbwgfHBOJnjKW8h2RP3VqnbhrkW+s+AvJ8Pc3xyrAbuylP7Z3yjTlKztSuev6cse8m9Ra8ryKW0kqey7pJvUX0sO5x4ljKaD56E7GU/YKe6geMpbSAJtI3XDYWTLZdw3YKsWtqrUnt7WN9RhvBdsD3WfBdHnpoI9AXv410X9nIUJ8F49d/SrFU1C/Wf9Rx1n+Ud/YbWpDHfsMo8KJ8Hv70uMFvARs2Sm2jZNnnx44JeNwv6js1NhaAa5+HtjrFPuahjXzxzUxj9FvppNJFa5sq5hujCNBs43X1E8KHtJXqJ3U7yxjlheruKOXh+M56jbLdSp6VfKbd+Ma6q06Uoz9wqMUKHgfd/Y1erKCLNvPZixV05k1mrOA3KooVHOjFCjLHCr5wCMQKvgW27fdLihX8YS9WMJE3VbGCP5smsYIoORuXFiv4dkmxgn44i/fdXqzAl3qxAqLXixVMTazAbITPRuaJFew9RGMFh4ENexG1TS9W4NbJXqwgm+6OUl6eWAHLZ1mxgm/T2B0aD+Bz9PsE30rnUZ6w7V17ufgrRwb/StDds6htlP6o/X+h+sM3Ryn98eHyxSkOCPiHPLSRLyyrdFmdba9wHJW6i/rJuuuzmXEKaSvVT+pmWr4BF/WTx2Qch/ZTXgvyWOdHIQ/H3bMCxl21tynt1ke+VyN0n22NeER4ddZL6f8DlBfq17PdULepKVkfJd6tPzFWgPAcKzD4C5O+KHgTqowVHCAex4AHJd88tzL4XwDbtshh2wYy4rw0wZMWK7B+rMKnRn1nW+CzwXHKajdZb7Fv+Mbr0JvVWM8GI78PwXPmq6EPOFaA9oj9DHUDZNY7RjBW8AGKFagbNmO4d5Psqbg+2hyWPYP/EMjz8uS5TLsxSnloB/jGTDXmKDlTN/LhGMrlzA4UvMEwOFbAt8uP5aPnvV1ezXfKuEE6/vdxQU/1A8YK0m4Y98UKqrRrvvWQtHbluTvWkfXZt4aBNoLtR8tDbxTKoS/+AdJ9ZSPVDe1pN1rPp1iBLx6AOs76j/LeojxsQ6wfyo2yYTxmI/yHwYbdR22jZNnnxz4s4H1fqkFZfzgAly9O8YiAf9hDW329hnmJIrdOKl20tqlivoF+Aeui6ieED2kr1U8Ngse2yaq7ByivBXms16OQZzKv5NPn58eJdVedhUN/QMXrqrhd2TV2o+6qOxPZ9x0D3f01ahtln1vwLqvfyXMmNV/34fKtj/nkV9FGvrAs02Y+rZzS3VbyrgrdLXN+oNpK9VMj6tZr1sHQm55ZP0NvesZxl+Uzbd+Lb9zFdWW+bX1U4PXJni/OqmSvJeqn9N8XW2O7gTLKdgP7lu2G9SfGChCeYwUG/zsUK8j5hR0ZK+CvymE8Q8k3z60M/utg237XYdsGMuL8fGCswPqxCp8a9Z1tgc8Gxymr3WS9xb5pEa6WwIVtyrECa6PBSMcsDR+vTX3FEytAe8RxzdCb51uUp75+EcvNv1KsAHUXYwXfcKyfoexZ2Tix7Bn8f4A8f5P8jTLsBsctVczIN+YoOWuI8jiGcjmzAwXn0sGxAsM/FHXXOU+sQOmfmu8UtJsTsQI1x1H9gLECNRdBXL5YwSjwPw7bzMd/1vWQtHbluTvWsRV15qGNYDugvtrGNkLRU7EwtBE+Gxnqs7QAr31dR+m4b12M9R/l3Te3Zr9Bfel3FGBwzEb4vgvb5WZf2IlTybLPj02br49SfdR83YfLF6dQX3R9xEMb+cKyTNulk0oXrW2qmG+gX8C66IvRxCmkrVQ/NQge2yar7n6c8tRX7pTuYgyM5TNtPwXr7qjgFf0BtXZYxVeaeW79KPDCa6E8DiD8S0B3T6O2sS8GR1GYTKgvFONXh9mGoUw8HoDLt6fhCQH/uIc28oVlmTbzaeWU7lrbVKG7qG+su6qfED6krVQ/NQge28byQr8Y/Sjl4Rjl+2K0ybySz7SzAr59BRij56+2K1vok720MYtlT41ZSv/ZbqD+s91AGWW7gX3LdoO/BM7wHCsw+PlJX5j/iTJSNFbwBPH4GPCg5JvnVgZ/Fdi2BQ7bNpAR5/kJnrRYgfVjFT416jvbAp8NjlNWu8l6i33DMR0Vd8A25ViBtdGggEd8dYK/HPqAYwVojx4j3kO/YM9+BuoMxgrWJ3wMR926i7GCt5PsoU1jexEnlj2Dvxnk+Z3Jc5l24wDloR1g31qNOUrO1FoRjqFczuyA2RWUxSpiBYZ/KOquc55YgdI/HB84VpDTbk7ECp4U9FQ/YKwA2xTpGy5frKBKu4btFGLXEJ7n7lhH1me0EWwH0Eaw/XjIQw9tBPri60n3lY0M9Vlwfr6NYgWoX6z/qOOs/yjv7DdgG7Lf8ATwonweHLMR/oNgw7ZT2yhZ9vmxTwn4JwHmYaoPyvpTAbge8dB+WsA/5aGNfGFZpu3SSaWL1jZVzDfQL2BdVP2E8CFtpfqpQfDYNll19wnKw/Gd9Rpl22ReyafPz48T6+7Dglf0Bw61WMFe0N2nqG2UffbFCrLO19GGPRGAyzdf88mvoo18YVmmzXxauekUK1D95LOxqq1UPzWibr1mHZzMWMFTFcUK3vEcjxWEjPkYK0B4jhUY/GcpVoAyUjRW8CTxiPGMkHm9wf8h2LbfdNi20FiBwf/WNIgVoL6zLfDZ4DhltZust9g3UxUr+GJgrIDjmmXHCv4+MFbw5ZJiBf8A8vzVSYgVoB3gWIEac5ScqVgBjqFczuxAwbl0cKzA8A9F3XXOEytQ+ueLFeS0mxOxAjXHUf2AsQI1F0Fc0zFWkNauPHdXMc2s8w22H3liBX9fUaxgcUmxApR39huwDdlveBJ4UT4PjtkI/+9gw464qBOnkmWfH1vGfN2HyxcreEbAP+2hjXxhWabt0snJjhWgX8C66IvRxCmkrVQ/NQge2yar7j5JeTi+s16jbGMMjOWzrFgB+wNpZ57Zb1J7rHzzk7S9ozw/Ub6Q2mu0x0HHdS7pxuSZ9xqdkLRzmk9ttAvK+6yq99GEnk9SvhHvecE2xvNIPDbgfRhn0tiAsSjek6H2h6p5Msue6xslvJ/M4F8JffyKJRon8uC7KyarPKv9RnnlGXXjWqqrwb92cuX5iKmWZ5ZZlGfX9+mRZi3qtmFF4jmvmIbyf87zSP4XTnP5V3MJn/ynxUhY/tF/mwr5b2SQ/yc8NJX8W91c8o/xRIS/0iP/qn198p+2RuiT/6coD8vtcdBB+cd+Z/k3+HcFyr/RrkL+sY1Y/n3zpjhlnevwmgD67z755/XasuT/XxccfA6Rf5/vreTf6uqSf77ry+BXeeRf6aDvHGPWtS6sw5OUh+X2OOi4/HmWf4NfFyj/RrsK+S9z/poWZ2B/HnXDJ/+8zlGW/P8lyT+ecefY0KjAoc6qcNxoDPJaVA91ZlOdB+Azm7df1C53L829lY80Cu+qmPP6cPn00+dfK9rIF5Zl2synlavw/NdA1edaVVupfmoQPLaN0i3fGXfXeTGUTd/dFUo+1Rn3UN3FM+4fXdCJd38K3qx3uPIdNKOifkr/fXdC5D2r1iLe+Q4khue1aIP/eNIXtr6BMpJB1uVa9MPEI57DV/LNa3cG/1mwbY86bNtARpxPBI6zJd1VU6/6rpo0u8l6q86m1eg34lLrN6xng5Ge6xo+Puv9aeHXKXt0gHjPe+dGC/JwLfrrCR98Rjd+xrXo3yDZQ5vG9iJOrrsY/wzk+XPJc5l2o0V5aAcQh2vMUXLWEOVxDOVyZgcKngEPXos2/ENRd53zrEWH3k9X0G5OrEWrOKHqB1yLVmdoEZdvLbpKu4btFGLXEJ7XhrGOo1FnHtoItgNoI9h+hN7Vj77410n3R0U9HhR4hykPy8Z4P0TzDdQv331OrP8o77473FpRZz0eBl6Uz4NjNsJ/G2zYvwSs9fn82EcFPMbB+f4gdc7ch2vMQ9t3VlTRVud2mJcocuuk0kVrmyrmG+gXsC6mrcmGtJXqpwbBY9tk1V1e38bxnfW6BXkYf/8Xx7iN9VD3bCh/AMf836CxuwVwee+uGqU81Gvkg+vINgjxss9fu7hd7tiLO3GWfT8Fz5my3k/R8tBOsxtMW9kN5iWK3GPrc/l+Cp7z++6nQP1sUR7qJ8cYRiGP5yNqzFHy2Yq66xE67rYA70KKFai1zBa8y3oPpO++Wt4rWsa4znYD+5btBvuHDM+xAoN/adIX5n+ijGSQdRkr4HEcz9wo+ea5lcGfCbbt5Q7bNpAR58kJnrRYQUnjeL3qcTzNbrLeYt/w/FGNpdimHCuwNhqMdJzC8HF8+3ToA44V5PUXRgVdZY8wVnBVwgfHc+NnjBWcRbKXN051Ncjzm5LnMu2Gz7dGHK4xR8mZ2huIYyiXMztgdgVlsYpYgeEfirrrnCdWEDp3L2g3J2IFyg9X/YCxAmxTdX+PL1ZQpV3zxUDT2pXn7ljHPPEAZT9GPfTQRqAvfhXpvrKRoT4LzjfOplgB6hfrf+g52VHKU/M5Hjdce5pc52TfDTZsHbVN2Xdq8T78rHdq+WLsvvNhinbvTq1OeNVP6swJ7zEP1V2OMYxCHus1yjbuL1/nGLexHmotRPkDOOafRWN3C+D4uxdZ4wFK59lPU76v+u4A+76/DLq7jdqm7DhfyHzdh6vloZ0W52PavThfJ7zqp5A4H373okV5o5Dn00/WeZTtjjtgKooV/NdbOvEqm9CCd1n307DshZ4hYbuRNR6gZJ3thvUnxgoQnmMFBv8AxQpy3iMlYwWPEY8Yz1Dy7ToT/Ktg20Ydtm0gI86HAmMFJe3fznwW1GeD45TVbrLeqjG+Rr8RlzoDxno2GEXesxM8Z37aEytAe8RxzVHI4xiIuttd2SOMFfwhxQpQdzFW8GskeyqujzaHZc/gvwLy/Ovkb5RhN3iPk4oZ+cYcJWdqnRfHUC5ndqDgXDo4VmD4h6LuOueJFSj9U/OdgnZzIlYQev8exgrUXARx+WIFVdo133pIWrvy3F3d+aJshG8Ng+2H765+tBHoi/8h6b6ykaE+C+5X+MfEZ1E6zvqfNR6g5tbsN6j7ZNEG4ZiN8N8AG/YDahslyz4/Nm2+zuswar7uw1Xk3BPTznKnltLJCu+bkPONMu/cTbtTi/1/351aobrLd96peIDSXYyB/cAxbmM9VLxS+QM45v/aIRor+DfQ3eFFnTh7sYJuPnuxgs68yYwVsHy2ou565IkVfKYXK8gcK3hh0hfTOVbw+oTHuI9f5LBtWWMFcxI8vVjB1MUKXgV9MJWxgksTPtJiBaeR7OWNFVwO8nxG8tyLFcjUixUQvV6sYGpiBZeS7pcVK3jmEI0VvB1s2PXUNr1YgVsne7GCbLpbRqzgese4jfXIEys4jcbuFsCx7iJvvnkE67WKI9QEL1YP9R1C9j82gO7eQW1T9hkE3/7Hqs8g+PZe9c4g+O/2851B8MUKcJwr4wzCHQGxAnWmcDjq1ocW4N1AsYKyzyD47h3xnUFgu+GLP0z2GYS7KVaQ06ev9AzCE2Db7nPYtoGMOPcFxgp6ZxC627SsMwgPB8YKOM6hYudFziB8nmIFrjMIT5HsoU1jexEn1xmEL4I8f4L8jTLsRu8MQu8Mwjjy5O9z9QwC2gi2A2gjyjiD8HnSfWUjQ32WMcB7PcUKQmOFvvW6Ucqr4gzCl8GGfZfapncGwa2TvTMI2XS3jDMI33WM21iPPGcQnvLECorGA/LuK1DnM9n3/SHobv2STpxl7ysIma/7cLU8tNPWx5h2b19BJ7zqp5B9BWqtvqp9BSyfrai7HnliBWdUvK/AdyeJb19B0XhAlfsKjk76YjrvKzg54THu49kO25Z1X8EJCZ7evoKp21fwMugDjhWgPap6X8H5CR9p+wp+hmQv776Ci0CeX5M8l2k3evsKevsKxpEnf5+r+wpC1zDK2FdwPum+spGhPgvuK3iVZ19B0XhAlfsKFoMNW05t09tX4NbJ3r6CbLpbxr6C5Y5xG+uRZ1/Bz+Scx9SIX4QfhXfc/srmYJ15fqJ8Id8+B6aDNqEFtK9qHvzLaz+rA33qKtfisY1Y3tNiRFnng63kWflGfM+n2leWNp89huaztSQP53inwPPJkI/wm2mOh/XM0N5vHYYyEeBA3PWcuGuEL4q0n4c+jaIXpyGRVw/g5dUfvPk1L7ll4PU1Km+88DuWlwEBf5GAt7YaJN7nREFpkdIpo215dchjPxD1wniIdenCJZ38DeTkL6T9EH9DwC9utuGy9MVRUacsoLyb7cN7dbdTns+e4jyZfbOs+7/w+xyu/V87wcf6OI01Ze//4m/GZN3/tcdDOy2ezLR7+7864VU/hez/2g55eyjPdwetGqvS9n+xfO4R9Qj9Xs0ewPt353biVT6QT/bS9n+x7I2J+in9Z7vhixOHzunK2v/1qzTeT8f9X58H2/Zph23Luv/rM4H+Z2//V3eblrX/6394Yrpojzge7buDVt31mLb/668ppuva//UFkr28+7++B/L8+xTTLcNu9PZ/9fZ/jSNP/j5X93+hjWA74LuD9kEPPdf+r78m3Vc2MtRnwf1f3zr34LPScdb/0DtoffcplLX/60dgwwbe2omzt//LrZO9/V/ZdNe39yR0/xfLZ1n7v75AY/ehEitovLVd7qXUNr1YQTefvVhBZ95kxgpYPsuKFTxxbifeXqyg/eyKFbw+6YvpHCs4H2zb6Q7bljVWMC/B04sVTF2s4Fzog6mMFaxI+EiLFVzo8DmyxgquA3lelDz3YgUy9WIFRK8XK5iaWMEK0v2yYgX7zz34fKjFClaDDdvYixV00XbpZC9WkE13y4gVbKwoVnBhznlMLeq2QyH7v/YLeGwPnp9gO7JPgOW2O+igTcC68f4vg98c6FMb7SrkHduI5V3ZbITPut+O58koJ3z2CtvYaKbNZz927sFn67P7AO7eqDPvfoHD8h6APP4G2oOCZ6t/C3ix+m8BGMNbJ/j7YWx4hnRkNGqnfuI9TiEyPwowW6g+LcjbH4DrPg9tn7wo2sgXlmXazKeVU7pibVOFrrQQoNnG6+onhA9pK9VPaq8u75W8F/LuozyMx7YoD7+B9gDloWybzCv5vE/UYwu847Fhi+A1xvuKMzvxPiDw+mRPjQ2oxyx794v6Kf1nu4H6z3ajBXlsN7Bv2W5Yf2IsCuE5FmXwv0GxKJSRDLIuY1Ec4xgFHpR889zd4L8Mtu1zDts2kBHn7wSOm9aPVczZRgGAbYHPBscpq91sJc/KFtxPuO4XuFrwjn0qa6NBAY/46gT/+55YFNqjUeId7RHf475X0FX2CGNRP6JYFOouxqL+mGQPbRrbizix7Bn8P4E8f41iUWXYDZ6noh3gcwcoUz45U3MBg1PybHbA7ArKYhWxKMM/FHXXOU8syuf3x4ljUTnt5kQsSvm9qh8wFoVtivRxvTJOk23XsJ1C7FpobIj1GW0E2wG0EWw/9nrouc6F/Ih0X9nIUJ/lfsB7UuKzKB1n/W9BHus/yjv7DdiG7DdgXEz5PIa3TvD/CTascWknTiXLLXiXdQ3wAaqPWgP04XrQQzvtvBHTVvdPMC9R5NZJpYut5F0V8w30C1gXfXPtOIW0leondTaL402husvxZxzfRylPxV6UfPr8/Dix7j4geFX+wF0Cb7/Aa/BbAFc/4Yifb0ye6wR/XFIf9F0N5zbBQxPecZ9uF/DbAMb4mRV12zGOlWO5O5JnJe8GV1Dej1DyjvVhece4YL+A57bZKeAxbmR9q+7i4rn3HZBnNPlsH7Z3LBNvmNfJz1bBTxPesXxtA1z9hCN+Xps81wn+ZI98KXm5E95xG/raHPlRMsSxVSxn7avky+AKytcsJV9YH5Yvn7zEidtml4BHGWomzw2Cx3ayPNRLozlMeLC9Y5n4q9M64dB+1Rx/jVd+x/MExGXnCtkXKoMO1tvmdEZnM+ThPO4cGg+wTfpF2fcmz3WCf8el7XLnJs+zRPktVN7yzgM9G1niLs82GMeIfsrD9kCb46onwq911PNi4PMqT6zE+Cqodw2ld2j7Quw6wme162y7USc3E67NApeaB7CPMBjpPjB8dYK/EvqAYyWoJ1uJ9zsy8t4UvCs7YmVjWXoksSOzou4xZhvRVGOY6quGKL/VgatP8I96y/3eH+nxkOFNJjBeqexzneCvgb56zxKNM3LwsNnB86ADfgfxYPDXCnnx2QGU/+2E0+BXAs6rM+Jc48C5yuNrKD1F/zbreMr+BLbjLspD3nlc3An0uU/f3uykj3hQzplu5OGXx9Q0fnm8sbxNMF7dnDzPJHwZbXW/r68WC35D+2qzp36My8rVo2559OkItscHL9U4BzLi3CjGdOWrnAz4Nzn8kSjq9kfixHYZbQbq4TnkkyD9O4l/Gyc+KvRRjfWGq9hYX/sLNdbfARA81qu2QXi2CWo+jP3YTJ7VePNyyrsT8ti3ukPQacI731hqZeM+u/W0TrxbPHjj53cSH2k+3vLkme3wvRljCr42T4sp8Doq9gfHFJTMTrY8Yv1ZHn11jVPW+XAzeW5E7vFDySP7WT65iZNPHjEutZ58O+TV6Csbzfyk+dxNgjcbP+iAZ5tv8E96/J7dggffPOFuAb9b8DyLeMCyTBv1Etvkrc3O+hj8rwTa45JiHkcp+cd2Y/n3tVGcuE3vEfDYVtYmDYLH9lXyv5vyVBzJp7NNeOfTDSsb9+MlZKvLjs+xrTb4384Yn/PZ6qricz5bXaWsTtf4HMpqaHzuTQG+gC/2quRxi+BfxZW437HcGVE6X1sEXw1RHuO4XK7m+Gt0+J0vNngG1Werpz5ZYxRYfivVZ2uJ9VE8p8U6v0VzC2VzcG7B45DB/yfMlb4TEOvMKlNYf4RVsZ04Xdls1z9O5fuCej11Mn1B9vdwHAuJ5aHs4Zg2DtNsly9pPU62F+ozt5fPPsUpZF6hYmdq//ddlIfytoXolBUXPfa0dP7v8tQ3TT44RjKN1s6mfGxmWci6dsb2Eukoe8l9jPYV+4XXkibWgi87+Ff5dEoOfHKTNtcyfpRs8LfSVPy9QhsyreVmO+WpeGCo3PhieDhG2/it7B36lDhOojwjvGvdYwvhqdH7w+A9lvtFqjP7SIz7eoK3eg464A0f+yIvA115hSdWpXCuIh62p/CwjXgw+FcKHnztHyefTzgz6tbFDHpTrxE+4wffIf6hSMvHnCgo1bj9jJ6Sgzipc1esT2oNw2cDlZ6H+EpFcPn2Q80lOlnnRVh+i4fOvIJ05gk6Vc+/5hKd7SXSQZ2ZR3R2lEgH5eA4orOzRDo4HvGelqbgIR4nLris/R7HLfRDmkCTzyYY/NbF7XIXJzjVnBl5xPJ1eL9V1IPpXZbQMPuH8dUM9kiePzJcaW13ObWdWkNpAi1uO4NfC233Nk/bsW4rH2NW1N0e7NNj3JTXRFVcFt+xzKnY9bAox+MVxmezzBVDdAPxD0Xddc4zXqn4M/qEfK7j3nz0Js51qLONqh+OjHSbqnOZpmPKznLMAG3j3ZSH9ozj56jfJ8Mz0nDVyXzbWR7+lB+KvpuKt7DsTbavtC0fPa+vpOJDWX0lbEPMQzrTwVdCPtlXyhpzxfJbPXTmFaQzT9CpOrbb85XC6eTxle4oyVc6Bsb7O2m8R1sR4ittE/Vgetumga+0g9pOrSc0gRa3ncH/82Xtcrs9bce63fOV2nziO8Tf85XcvpLyN6r0lbal1Il9JcWf8nfiNCcKSyG+FJ9rmhMFpZ8KlU3DX5YvpfwS5UtZ/XbmozcnlrXDknLox/4CPKt9SdhfZfWfis1MVf9tyUfP238qZlVm/6FuZek/pZuvhWfMw/r4/EosP1l+5WuJThPycIz/HI3xak2rCTR5z4DB/wGM8b9DYzzSDtkXUOE6f3/W80a+PcVxyrof1tZx1DjUpDzsc573NQUd3B/Ea053CjpxX/WdpvmvAd73irKs2wi/XfBh8HzGhWH4PIrB/zGswcxx7INznUdxrcN+zbMOW/V5FGxnPt+B5dBejONutvMMrqBO/JTSCawP64TaW6t8RYMP3VvbIHhuJ6VfccJ1+WaUzuuWArxyP2Jf8T5gg0W5xPqwXBr894Rcqv63Nq+i/33r8KpNfevwaW3K8S7fHmHfOnxZe30/N8lzVI4Z3AO89AteDW+d4H8MY/CRiztx2nwpisJ0Vs3PcM7VpPrg3Oy+AFw+W6rueb3PQxv5wrJMm/m0chXqltwnh3Nt1i3VTwgf0laqnxoEj22Tdb58D+WFzpdN5pV8pt1l4tNdjEtxzErZKp/slXEOROk/2w01xildYruBfct2g+MgDM+xRoN/cdIXNv9CGSkaa9xDPN4LPCj55hiiwc+F+OtPOWzbQEacP53gSRtnrR+ruD8N9Z1tgc8Gxymr3WS9xb4JObOLbcp+vbXRoIBHfHzm6XXQB3zXAdqje4n30PgdnyNSawix3CxJ+OBzUPEzzpfnkeyhTWN7ESeWPYO/EuT5jclzmXaD93aiHWA/VY05Ss6Uf4ZjKJczO2B2BWWxipi44R+KuuucJ24VGqMuaDcnYuJ7BT3VDxgTxzZF+obLdy9klXYN2ynErqk4eSPqriPrM9oItgNoI9h+7PDQQxuBvvgS0n1lI5sCr/JZcB3yDppvoH6x/qOOs/6jvLPfgG3IfgPeia98HhyzEf5dYMPWUNsoWfb5sfsEPN7/t5vqg7K+LwDX3R7a6n7PfR7a6t5h5iWK3DqpdNHapor5BvoFrIuqn3zf8FNtpfqpQfDYNll1l78DgeM76zXKNt4Xv8YxbmM9cNxm3d0teEV/YLL2/pUVK7gFdHfzNI8V+OLtvVhBwk+UbmPLjBWE7kMsI1bA8qnW35rwzjfu4n7fywNiBT7ZqypWwHZjOsUK9hwCsYJnwLbdX1KsoNWLFUzkTVWs4HFPrADtUdWxgv8VGCv4ZEmxgj8Aef6UJ1aQ1270YgW9WME48uTvczVWgDai6ljB/6ooVnCBJ1bA+j+dYgV/Ajbse71YQRdtl072YgXZdLeMWMH3KooVsD/Ae/rj9M5m+x3ep8O67uPD4E1OXHutXLGBfwA/a45nX5Dhiuv2T466oZ1Q8x/28Y65vF3uXz2+jq3h+nydKOq2y9yfC5qRbIMI+PjxYjctk6FhTx3H99ldruGQB4RjHHZfAbYBj2/bRDk19+QzObuJxi4PjZ2inKKxg3Bim6mzBvem5N8j6haJd30CfrejvpGgfXcK3l0Cj7I1PhvFPrXyDfDOF7Yv6m7oWHYOnHrwWemLSyeUXO328H4P8Z62F5B5V+2H9kPtj+SzDCxb20U9a+K38bcC3rGNVXewI4yV5f2pL0n0Vu1Pxful1T7Aaxw4Xwo4eX+qkplXwTsei339hPyofY27qZy6QygS71T/bCZY5CFOZguVzG530OH2UDz4ztf6zu+l3ePl003cU7iNdBP9Gb5zfivxjrB8Vwrvn2f5bhI83sOj1gtYvg1+rke+1blA5OsaB843eORbtfvPwLus96fx3Ejdn6Z4R9vD71T/sHzzOSCUbz7js8VBR8k+86DWnUy+73LgZJpZ56VWNu73OSTf6vtgLC9IU+3Ja4jyfEeT8XAhyBJ/rwL5DDnTYvCLPPJZ9j3pzeRZ2YftnnLYfzMFrTn28BN/MnymCzMitwzyfvUroJ2uWaJ5qTE/KanCc4xzaoQvinSM8BA9x/iSOOZX9Bwjn42KnzG2/fOXt9+7dAzLLkueWceWwzzr3Q6cUVTMNg2d2ok39G6O0LHFd6Yt5N7sWVF3n7j8UtcZp+XJM/uQ14Nu+r7nVc5doLUfqpgS+ogDzaijXr5zU3HK6sdamzQInvvFJV8q1sty4/pOgeHjc2Y3QR/wuhWey+OzLndl5H2r4F3pMeoG67H6rmlT4PXpPfJt3yxhvf+QZ2xV6/tFvvviu8eP40hYznw5pS8GV8UdqJN573QzeVYxDPYj1b2lyvbid02///pOftR9y9i3LF+Iq1/w8Y7kuU7w2z3ylTauZL1bn+9mDr0Hvfpv3ERHT/V5Z+tbFUvie7rRFhpN/k4UtncsE18k+VLjJJb9+eSZx8n9GWMtPp1LG6OMH1+sRcVUWZZUfM948O01iJ/fHXW2g8E/FugvlLTn7dys68G+b8rEifvCt0cO26RB8Nwv+Btx+dZf1HeNdgv8fPfTpzz+Quie2RDeld1V+oY6tTLRNzXPZ591u4cml8WxZ9AB75p//qZoL7Znrtjruwinwf+Wxx6oMfVj8C7rHe0ce1XxSDV/QBs5jrvZjbOgfr5lqu9o5/HDd7c/6gafDU+L1/jkH2XoSpJ/HM8/SjR9fiyXRTou+Td8LKt/7JH/tHn52wmnwX8tY+zLJ/9pPoLPR/Ldy2P2pkL/fOFU++cs/z7/PGucN1T+UYbOI38L91Mrmb06eeb7k7+XUb5w3pDXB1Uy5LO9HJ9Rviv3o2uc4XmKwf9DoL+F98ON44G8DPJ8zFTbc157U/6tz3767hZS9lONl2w//yswPsOxpbsy8h6qb6hTp9J4g3NfHm/u8tDksqjXrvHG8PHYMDNpIzXe4NxMxYN4vDH4wwFnyHzdN96kzdc5HoTtwmMR8u6brxtcQf08turvaqXFyni8QXvI38tB3WBfJjTOkza/f1Ei/8Xa9X3j8OO8NNu4+wWk4a8T/EuSPhkCPu1vPYCPfxn9h6cPPPnlzx9F5eNkfXRYAfwnf3jHMxd848cLqsL/e9df+tll5889oir8Cx/+/I0vOPfbs6vC/z+u/513zDoy6qsK/2v+/Njj7/32W3dXhf+/rxo69esPz3hPGv5ZyfNgs52PdipOM5Lfdq6K4Q1fneDnJToQ686Z5KsMCHrj+9U9cDXH33Ec4l292fluqNkN39/shjfahzW7ebS8wyEPbew4TPIb2wtxDUE+wp+X1N36ZCaUsfINQX8m0e/gW7xDG8+4+sU7gx//7izZNax71jXuOA1SeXzHtE02bK06TjOa3bxjnxp/1m/YptynKB914GucZvIb+xRxoY4g/BLqU6yblW8I+tguTEvR5z5Vsj4k4ON2XQTtmtferP0fY1cPf+eXrqvKnl32S2tuWPLlb329Kvzfu+j9+xZ/afvOqvDPrA1v+MmLfvFXq8L/7bN/+G/vf3P/xqrwv6Pv2yd+6sWPPlgV/r886p8Xffi3Gt+oCv+KZXc88j9/f9fvpeF/ZfK8bv2atSNLV65eOvK+keUb1q9cs3rp8mXL3zOydM3aZctXjSy9ee2yG24YWfvGBHwmocpqDmdG3dUKL9+8cCYjzFQ+6rctRPV85etWfiBf+fEpZZzOa7bLIy+Gt5/guEycb1ME7GKDMT7z9VNzYcF69ln5GfnK91u9BvGl4MnwW1vUAb7m+Gu4OM9oDUWFZKTm4x354+2cg0AP6+jCNZgRV5V9gm2FfTIO02zn9VFeHfIGKQ9dLqvD+DZrgGMZr1MeTmUvaLZxvArwvTp5tvYpYpvy61wUHS3os7sz3d1A24o+nd3AlxnPyb9YBk4HfC4Z74u68Vk4DPXVyhbUtz7jpS54Qf02/Ic/+++k5PmGtStvWrZ+5Ip4dL9o9UIb2xfEQzsTQh1B+euL3OMT1kfh6IfyKsXtPtWhqzOT31WHrsy+rF6zfuW1tywdWX3jhpENIyuW3rDhmlUrly+9dsPq5YnftWqV+VsnJmWeK/5WTj9iwt8azFde+ltKV01uzm+2y57f7KRpMBcAzAUAEyefT8bjVZwWUh7K7/mUh3YAxzKTv/j56OR5Oo9lZnNnJ79ju2XTkcRuXTquKgsTTVk8rijnJ3qy4Fk1YXLs9tXodx/9ZnNVF3g4YbmJYTKaejP2wuR31WbM8q8bWb/0WVMWTxrXj6xdvWzVh5MSU2yrLivLVhXhn4Ukj626qNkuz7zESdkYK8P24AQoE6eLAXeN8hYJupZ3SVPzESf8zEid8i6FPJ6H5LPpzYsL+lUDR0duH8pkCI8j5pHh85rtl3OisGRlFwLtWg7aPG7NCSvfb+UvyFe+z8pf2MxVvm7jwlWJYKoxseb4G0XdxnmcqeTvUFRIN2s+X7xf0JsVdfvOSNuFyxcfwPI8z80b90A6ZcU9Boieq15q7sRtpHANCFyqjdjecExlThSWivqgRe2V8Yvjm0/2DH4oI/xhGeEPF/B1D/xwRvxHZISflRG+kRH+yEB408mjIM/0zWThaHifNSaA+IwXfIf4h4iXrDo9TPiQjtXlmHy4B0PrYviHokJtVyvI74R9Ozbq5Jfb1/A3CJ55R1iFK04mU4dHbXl9NpKzauX6Wy4YWf/sNGlkXZ8DJTYrkmZ4frY04MATs3kkvWMYNrXKNWcThe8Pc7w/3PF+2PH+CMf7WY73Dcf7IyOdzE002EHKX9j0w9uQoPDX6B+/r+p3NIm0yuDVZFI91zwwww78cSo4lQs2bROhage/c6KgNGGa+oke14+HKOWeNigvTuc123CcF+K6TndcymaVwVeZUxjl4hqcT5bz0sFyvKRRp/JzoqBUU0t2hjtu/7fDexw3cNc0lrUxrU7wJ9ba5d5JvM/Mx/tEG+OYxfbiMHifQX9nhNoLwz9EvOS1F8rlx/qxvThc8NIQedjGmId0Dhd0GiLvvOZzG5eyPWXwNUy4Db/6a3T4HdNBPk1ObBqPfd5PeSinNcpDnWG5UfJ5mIc/LG9wMx38zYmC0mCazXqfg2eXzbK2qBP816Dc+5PnWVG3LWZZSRvzzeecJXgJCbcgrgsIV7+Hr8EUXOcTLrUsZ2WGUnBdSLiwPMveYR5c8V/zyZXsHpYR10zCNUPgUkt18b85UVA6X8l3hvLL1NiVofxKK394vvKrrPxwvvIjVv6IfOVXWPlZ+crPsfKNfOXXW/kj85VfY+WPylf+OhWSylB+tdlHDGWYLBtuDIFksL2zUScsKb/I8A8RLxnpeUM8WD/2i2YLXhoij3V8tqAzW9BRuGaWiOuwEnEdXiKu4RJxHVEirlkl4mqUiOvIaVrHo0rEVaZMlNn2ZbZXmbpdJl9Hl4irTFktsx8ntiYnvw32j5K/xbZWRcfZmIExcR4vc8YRjkOeLPniCMOCnvE1JPJC9hO954m3/dXSL714bY3KGy/8LmRZUY29ym/M0FbHqu3pRlttTz+M8gYgz97F/v27ap38HZ6Tv5D2Q/wNAX9esw2XpS+OirQdipOaDw9Qnu+IBusN5qGsDlIexhxtTmYne5XORJDHPgnmofywH6SWrPEd2xEsP+zA5YoLGI91gv9LKHdCzV0v5j1rDEnJVE3wpngfJN4N/rvJ31gGrqtFsj2QP5RFjlsgT9y2R6Tg4rgFlme/cFYKLo5bYHkeaxspuDhugeV5TDvSgwv1bJYofyTlYTnU3XHczXYexijiVIe8LPHtmLdfrLXpcH3Qlsb/cAm8X8CbbDQIHu2Eqs+RFdbnsIz1UfKp6nO4pz5V9s/hnvooWUT486k+6OsNe+pzeIX18fVPmi26kOqj7Md06h9VH7SfZitUfWZ56jMd+6cG/Kj6NCgPfROM1Z9A45PylfAcgdkg5Q8hXlsf4DXKFyX04rZoEu2ZUCZkvDX4OYCTx1sVQz9K1Eet54TE0Gd6cPli6Ien4OKx2+enDKfg4rE7q0+BuHjszupTYPvy2K18in76rXhWuBVtLDdT8Mrv2Z9mPwefTd/qDp5Zdg1+LsjuJrAN43w3u/ktaIMGlQ3CtmIbpHw5hGefBP0vk39Vn4lbcKLy6zPTUx9lD5TeNSK3Dk92/wx56pO2l4F9EmVHVH2GKqzPzIz1UfbHN/c8VPoHbaCqzxGUh3GCIcqrAR3XGI15uO9oqs/yvTNBUPVZPns/o9nO7yde4mR9OFXXCVybIJjO1wksTQpNxi18Vd5itzpBENfpBtDr8XeCXgz3IQ9czfF3HId4V292vpvut9h9gGQT5Wm63GK3gewJ1j3runicBqk8vmPaHypBL6q+rSz0tjWTo/i2rGXXjSxdO7JsxdUJ8BQfe37PTEaYqXzhK7GKXvEgjz37rsSyY8r4bDTVPmjDq3yAiykPx2rDzdcFnRa1y8QJj0bXKA+PRvOR6kuJd8y7DPI4nrkY8jh2eznk8XVKSyCPr2i6AvJmUt7bII/nMVdCHs8JroI89q9/DvLYV3075HFs7WrI4zjVOyCvQXnvhLwjKe9dkHcU5f085B1Neb8AecdQ3lLIO5by3g15sylvGeQdR3nXQN7xlLcc8vjI/wrIewHljUDeCynvWsg7kfKugzy7csjswIuidl4GO3aJlX9xrvLRSUcL+i8G3uI0XY71Z7WvcTo/X/m+gsf66wWP9R9vx/rPAl8RbZfhjFPBo9Yn4BhqSe1/4Kv+co5d3qv+1DH12A6aHUmOcV5x0KVY8qxHgRwi1uPhPeZjMpgiN+HEyXo5y004rpGXezWnhzQc2qt8kUE+j6rdq31Ej+vHO1H689E7vBZ190W/wMm7TgdFnuGyER53G7BWWR0QHp/jVKd3FyR/+aLJOJ3X7OQh9NLKmMdzqW4sp+qv4eV3vLOB2yZOBXdxFe5zZemi8PI1tSvGcMTteRm9V/KgTn9yf59ca5dLrs+WpxlYNlX/FTyJE2wHeAdb3plZjfAZPa4f24Gcp/Im7ICKzCNO9NDj374TVOZ5Y78j/BDUAeHxOU68s2dZ8rfMXWd4WtO3SzKvHcC24T7LOzal6eF19B7zQvTQ4GeDHv5i8k6dDuP+V6eY0TPxnQ6rO8qp9lJ18V3ew7BYX6VvMzw8D3rqP5SCi1eE1aq3b8eB1UnpqW8Fh2EHIr++IM8Lm508Z11dR1whq+tq1Zh3kKldJmm7NvgEbMEdsxMXJamV+xmCrm/lPm21HeusVusRh2tnANYZ32dZhbM6q9XpGYKub6ehlTtS1IfrrHYXIg7XTkasM77PUOcZVme1q26GoDtL1OsoKne0qA/XGaPERwvaCj/XOedFTDOtzurCoBmC7ixRr2OonOtiIqwznqRTp+IUfq5zztN4Q1ZndZpjhqA7S9RrNpU7TtSH64ynQY4TtBV+rjO+z1Dnw6zOxwu6MwTdWaJex1O5E0R94mfcoYMxhhMEbYXfcNQ85fjSO+RZ0VQ8I1zNgVvRxnIzCIeP5xq8Y19D0bQyL0jBxb4Gln8BlXuhgw7K6Qvg/QsFbYXfcNQ85ZDnhc1OnhVNK3NiCi72NbD8iVTuJAcdrP+J8P4kQVvh5/qf5OE5/su+gqKpeD7RwfPhonzkqNPhOXnmsf7wQJ4Pd/B8hCgfOep0RE6eeaw+IpDnIxw8N0T5yFGnRk6eeaxtBPLccPB8lCgfOep0VE6eeaw8KpDnoxw8HyPKR446HZOTZx7rjgnkGeFwrJstykeOOs0mHKE881g328Nzv4NeLQW3C0ct8FnN9TkeEqc5yd/X/MLQnbd+5g2/evZ9o6cuO+HHc778usuv/f//5odv/tTfjjz63hcf9l7G1Sfo9hHfswUPVh+fLETiXU3gqREs8zbbw9tJDt5c/CuZOMnBJ/L0Ig//VoZ3acRpTvL39af/7U+vXrz6o1vu+acbPv+Tr9Z/7/Bfffepb/70nE8+cMwD7zryILn4vxdT3V8k6md8vwTyeEW2X5R/SdSZGAfjeRHBMm9Yti+QN4Tpc/DW78HP/TLHw39fCv9Yltt2joN/VxxtTtTN/4sFfrZzdUcd0Y71Ad91Ue7FRBfzXuSgi+9d9nO2oOuTR6XT9n5YlDd7yDt74uchysP42bGUh3O9oyjPdUoPf8fPx1Mezkt8J6eHKQ/jSHyqGuclR1IexiVOpDz0N2dTHvbdMZSHY2SD8tBPeSHloU9+EuUpe6vi677bC46jPJy3vojyUI74tDnGlGdRHsa2XkB5OD9yrYnFz7yGg3HhoykPYyxHUB76sSdQHs7/zN7Z7m+sf5zSbAbqCfp/iAP3DiD8CxKgWEbn1zpxqli32jlh8CqezTHvOKnYOM/lsP951xvuqja4gicmhuP6L6i16XD9B5qdNH11jRO3TdqpT+tbdUqST1GomxRD5CZOfOoidG1sRiDeGvGI8og4WB4N/tUeeVTrRT55DD3VotaXDqM8LMe7RSs4kTSt5ZFP9KrTtUq+cJ+D7YGY6lM9b04QVH2q51A+fXJBgiBu24tAJsffCXrjp7Y8cDXH33Ec4l292fluup8+uTJBMJ1Pn1xKco91z2Cncp0+MdmI5db87fjLdclHN1csW79s6c0r168eWbfurCR7ig9yrCvrIEd/vvJ9BQ+CyG9tIi84pUM4VUZtJzUYtcVsYZIXm3+bYsTPvHEdN1HXKO8CyOPhlzc/Y546uGJ5F0MeX5Cs3B21PbLYtrnmooLb0k5WLggfIKlDHrvSqPbGQ1z+lOR5JuHMWL/zC24rfM3Rgr7hss3rc5Pfvm1pBdv5lJChCvEPRYXqXfO5vFg/3Lxu+tT+BtHBj7Oe96w9/bmD5hRFGNXFfvMOdT4HwOV55dbYPTn5y9/c8SXjh00L4uPIHsKhafDtpFcRBl9EKsv9eSpqrzxhX0QDxZs9tyjSHo+psak1ehyTcRbcPtE+nc+Cv9p4jqZ+1vHG5HfVsw5r82tXjqxasXTVsxZg6fr3LFttgbAp9qoueL54VUU8JlOp+JmPTiqPqdim6faInbNNa0c76MfJRmy+jn5iwhB1m2YO1NYceKdapS2gW7VKmzysGFm+5r03rFk3svQ9K1ev58OUh7pGF+G/gPRKjVaS7NPoNK1dCLhrlHe+oFusTs2FBa1c39GR27KZRvMWQdeWB9cFu6xpCoeyCnxULIJ6HXNq9NWXfPOMW1513Lw1l9102zff9uQHjx075buNE76/4Wdv+rdvrOG69Hl4H47SLVOfo32m2jLZ0lrVlsnquWr9QZv0U8nvnpdRSP96XkZ3CvIycMsrthNub4sID2+zOA7KHOPAF+K19Dv4QE+cccRpThSUaopOTdCZ7l7UnOR31bbqlclzfGnQyNKVq5eOvG9k+bOBkzWrly5ftvw9I0vXrF22fNXI0pvXLrvhhpG1Nl97rpiyqb5P6Lxmu7zvPiGD4zJpYeiC5mlhwXrWioVNo36rl+/uCsTPMSbLV38NF+fxvRs5ZcR77wbyxyeAMQYW8r3CwYy4quwTtcqtQvO8dFGHPL4TaqDZXYcZwG9IzBFNrw3jfGeWxcXUEJTVNuXXuYM7qVzDqL2b7nHQn0l+T+c46MuM56jtKp0O+Fwyrm5V8H0ftKC+9Rkv6pQ86rfhj5dAbJfiDWtX3rRs/Uh8f8/IRasX2ti+IB7amRCvgdSgjq7xCeujcPRDeZWmg6t1ZvK7alfLQlPLl61atTTpmKXXbli9fNzbenaeOLJ29bJVr0mgptjDuqQsDyvnLVkDBbVmgu7CZru80haTFBsV8NloGsyFAHOhA+YigMFF9zgpT834UxPT8ykPpfoCykPrcCHlobYaT3H9be80Bq7UpoAa5eGNliUF5y6uMjhX9s16WXmz0cUmW7zaaTiN16LeGeIbf0nvEP9QVEhPJ7zc0I0i8ehkm18SI7jgWYO4+ODj+Yk5RE4Re5+oSa2To44xPnLAsaaxdrFGoRYhXld5fsf8Im3VWnyiW/mCaSHm/ig9xNwf+X1NzO9P4fm8ZifPrpDUVI/35udXPd4b3VVrlq14bfI8xaP6+b1lqc6F1/gZT0+5dFP18RQvR9Wyzqv7KW8A8iZ2OkftZZKyYkdVhrZPTn4r74lH1LzLFqhrlpRdn5hvRsV0xGdv1dwzHlGtz5IR9ZJnTc75a9e8t3PCx4OQqgTmd3BFfxmO4X3rhIfShi5z2aZzIGNO8jwdBlebvvbWLURqXjTF6xYDvXWLoNTfW7forVtMt3ULi+pUtG5xUW/dordugWV76xadNhfT82ndwm7mWLFy7cizwbmbYnfrppG16/mEd87bJCd8qmPzlZdna/AGJsPLvl+UgYYl6x8VA8StUwg7k/7WstOvufhQ8mk3ceBNqLMpr92X69csXbtsxcr3HUVc5vUQrXzeeLKVzzvKK2nA2DR7qNiCPHIaLzkPyx02MerBS4wSMF2GqUfdqY9+1+l9fwCskhq854D543J8GI/fsScUCfiJkTL5O+DANYN4YPko2kdHC5rGm61ToOVbP3LdyNqlN25Ys37lyOr1rNuH5eNi4vtHOW8VlzYQb704nAkmf5WE1Ry/XWcKFWzNg1dJheG03kB+rR7/F9o2nCbtOA8A", - "debug_symbols": "TJ3JjjTNjlzf5a61SB9Ip+tVtBA0NhpodAMaVg29uypoTpptbh3771d+PAYyIyO9Iv/9H//9f/zX//tP//mf//V//tv//sd//E///o//+r/++V/+5Z//6T//y7/9t//yf/753/7177/++z9+3/+M/Y//uKaN//cf/jG+vP/+d/yHf+yJHws/Nn4Yfjh+HPwI/Lj5w374gVEMoxhGMYxiGMUwimEUwyiGURyjOEZxjOIYxTGKYxTHKI5RHKM4RjkY5WCUg1EORjkY5WCUg1EORjkY5WCUwCiBUQKjBEYJjBIYJTBKYJTAKIFRLka5GOVilItRLka5GOVilItRLka5GGX8fu/neD/n+7nez/1+2vvp7+d5P+P9fOONN95444033njjjTfeeOONN954442/8ez7efFz/t7P8X7O93O9n/v9tPfT38/zfr7x5htv/Y3n38/xfs73c72f+/2099Pfz7/x7vfz2971wX2wfwWjYBasgm+rzwdW4AWn4Bs5PrgP8tRP+Eb+9k6e/gmr4G/kuT+wAi84BVFwH3zlABgFs2AV1MheI3uN7DXyVx7z2z1fgSR8JQIYBbNgFewCK/CCU1Ajnxo5auSokaNGjho5auSokaNGjho5auSokW+NfGvkWyPfGvnWyLdG/spqfkfnKyxAFFzA/KoLMApmwSrYBVbgBacgCmrkUSOPGnnUyKNGHjXyqJFHjTxq5FEjjxp51sizRp418qyRZ408a+RZI88aedbIs0ZeNfKqkVeNvGrkVSOvGnnVyKtGXjXyqpF3jbxr5F0j7xp518i7Rt418q6Rd428a2Srka1GthrZamSrka1GthrZamSrka1G9hrZa+SvBtf4YBXsAivwglMQBffBV4OAUVAjnxr51MinRv5qcO0PTkEUfCP/db/51SBgFMyCVbALrMALTkEU1Mi3Rr418q2R7+tI8+4CK/CCUxAFr9et369gFMyCVbALrMAL/kbe84MouA++GgSMglmwCnaBFXhBjTxq5FEjzxp51shfDe71wSrYBVbgBacgCu6DrwYBo6BGXjXyqpFXjfzVoP0+OAVRcB98NQgYBbNgFewCK6iRd428a+RdI1uNbDWy1chWI1uNbDWy1chWI1uNbDWy18heI3uN7DWy18heI3uN7DWy18heI58a+dTIp0Y+NfKpkU+NfGrkUyOfGvnUyFEjR40c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Xeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DofXeej63x0nY+u89F1PrrOR9f56DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89l1PrvOZ9f57DqfXeez63x2nc+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9f56jpfXeer63x1na+u89V1vrrOV9c51iXlauWsc9AtyjoHjabZtJp2kzV5UztOO047oh3RjmhHtCPaEe2IdkQ7oh3RjtuO247bjtuO247bjtuO247bjlsOLFwCjabZtJp2kzV502mKpnaMdox2jHaMdox2jHaMdox2jHaMdsx2zHbMdsx2zHbMdsx2zHbMdsx2rHasdqx2rHasdqx2rHasdqx2rHbsdux27Hbsdux27Hbsdux27Hbsdlg7rB3WDmuHtcPaYe2wdlg7rB3eDm+Ht8Pb4e3wdng7us531/nuOt9d57vrPBdA+UhaTbvJmrzpNEXTLfrq/NFoake0I9oR7Yh2RDuiHdGO247bjtuO247bjtuO247bjtuOW45cHPVoNM2m1bSbrMmbTlM0tWO0Y7RjtGO0Y7RjtGO0Y7RjtGO0Y7ZjtmO2Y7ZjtmO2Y7ZjtmO2Y7ZjtWO1Y7VjtWO1Y7VjtWO1Y7VjtWO3Y7djt2O3Y7djt2O3Y7djt2O3w9ph7bB2WDusHdYOa4e1w9ph7fB2eDu8Hd4Ob4e3w9vh7fB2eDtOO047us6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3r3LrOrevcus6t69y6zq3rPBdgOf4CajTNptW0m6zJm05TNN2i0Y7RjtGO0Y7RjtGO0Y7RjtGO0Y7ZjtmO2Y7ZjtmO2Y6vzs8v6TRF0y366vzRaJpNq2k3WVM7vjo/ue+/On90i746fzSaZtNq2k3W5E3t2O3Y7bB2fHV+VtJsWk27yZq86TRF0y366vxRO7wd3g5vh7fD2+Ht8HZ4O047TjtOO047TjtOO047TjtOO047oh1fnZ/8076vzh+tpj9HzCRr8qY/R2CUaLpFX52HJY2m2bSadpM1edNpiqb7KBd5PRpNs2k1fQ783aI1edPnuEnRdIu+On80mmbTatpN1uRN7RjtGO2Y7fjq/P6SZtNq2k3W5E2nKZpu0Vfnj9qx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdth7bB2WDusHdYOa4e1w9ph7bB2eDu8Hd4Ob4e3w9vh7fB2eDu8Hacdpx2nHacdpx2nHacdpx2nHacd0Y5oR7Qj2hHtiHZEO6Id0Y5ox23Hbcdtx23Hbcdtx23Hbcdtxy1HLiR7NJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdrx1fn9OmYuLns0mmbTatpN1uRNpyma2rHasdqx2rHasdqx2rHasdqx2rHasdux27Hbsdux27Hbsdux27Hbsdth7bB2WDusHdYOa4e1w9ph7bB2eDu8Hd4Ob4e3w9vh7fB2eDu8Hacdpx2nHacdpx2nHacdpx2nHacd0Y5oR7Qj2hHtiHZEO6Id0Y5ox23Hbcdtx23Hbcdtx23Hbcdtxy1HLlZ7NJpm02raTdbkTacpmtox2jHaMdox2jHaMdox2jHaMdrRdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/X+e06v13nt+v8dp3frvPbdX67zm/XeS6Bu5Z0mqLpFmWdg0bTbFpNu8ma2nHbcdtxn2PmerjrSaNpNq2m3WRN3nSaoukWjXaMdox2jHaMdox2jHaMdox2jHbMdsx2zHbMdsx2zHbMdsx2zHbMdqx2rHasdqx2rHasdqx2rHasdqx27Hbsdux27Hbsdux27Hbsdux27HZYO6wd1g5rh7XD2mHtsHZYO/LhT7/fh/kAqIeDOD9ciYu4iUZ04iEG8Tbmg6IeDiJth7ZD26Ht0HZoO7Qd2oK2oC1oC9qCtqAtaAvagrag7dJ2abu0XdoubZe2S9ul7dJ224bnUz0cxElcxE00ohMPMYi0DdoGbYO2QdugbdA2aBu0DdoGbZO2SdukbdI2aZu0TdombZO2SduibdG2aFu0LdoWbYu2RduibdG2adu0bdo2bZu2TdumbdO2adu0GW1Gm9FmtBltRpvRZrQZbUab0+a0sZcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvGewlg71ksJcM9pLBXjLYSwZ7yWAvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLJXjLZSyZ7yWQvmewlk71kspdM9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yWIvWewli71ksZcs9pLFXrLYSxZ7yUIv8cQg3kb0EuAgTuIibqIRnUjbom3RtmlDLzmJk7iIm2hEJx5iEG8jegmQNqPNaDPajDajzWgz2ow2p81pc9qcNqfNaXPanDanzWk7tB3aDm2HtkPboe3Qdmg7tB3agragLWgL2oK2oC1oC9qCtqDt0nZpu7Rd2i5tl7ZL26Xt0nbbtn8/4iBO4iJuohGdeIhBpG3QNmgbtA3aBm2Dtuwl39NnZ646LAziZxvfUxhz4WHhIE7iIm6iEZ14iEGkbdG2aFu0LdoWbYu2RduibdG2aNu0bdo2bZu2TdumbdO2adu0bdqMNqPNaDPajDajzWgz2ow2o81pc9qcNqfNaXPanDanzWlz2g5th7ZD26Ht0HZoO7Qd2g5th7agLWgL2oK2oC1oC9qCtqAtaLu0XdoubZe2S9ul7dJ2abu03bblQsbCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26CNvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNhLjL3E2EuMvcTYS4y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucveSwlxz2ksNecthLDnvJYS857CWHveSwlxz2ksNecthLDnrJSVzETTSiEw8xiLcRvQQ4iLRN2iZtk7bsJXMkHmIQb2P2koeDOImLuIlGpG3RtmhbtG3aNm2btk3bpm3Tlr1k/hIPMYi3MXvJw0GcxEXcRCPSZrQZbUab0+a0OW1Om9PmtDltTpvT5rQd2g5th7ZD26Ht0HZoO7Qd2g5tQVvQFrQFbUFb0Ba0BW1BW9B2abu0XdoubZe2S9ul7dJ2abtty0WfhYM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07ZpYy8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSy15y2Usue8llL7nsJZe95LKXXPaSi14yE43oxEMM4m1ELwEO4iQuIm2LtkXbom3RtmjbtG3aNm2btk3bpm3TtmnbtG3ajDajzWgz2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1oC9qCtqANvcQTnXiIaYvE24heAhzESVzETTSiEw+Rtlu29fv9iIM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07Zp27Rt2jZtmzajzWgz2ow2o81oM9qMNqPNaHPanDanzWlz2pw2p81pc9qctkPboe3Qdmg7tB3aDm2HtkPboS1oC9qCtqAtaAvagragLWgL2i5tl7ZL26Xt0nZpu7Rd2i5t7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMthLBnvJYC8Z7CWDvWSwlwz2ksFeMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLJnvJZC+Z7CWTvWSyl0z2ksleMtlLsO71+1rZhXWvD29j9pK1EgdxEhdxE43oxEMM4m08tB3a0EtO4iJuohGdeIhBvI3oJcBBpC1oC9qCtqAtaAvagrZL26Xt0nZpu7Rd2i5tl7ZL220b1r0+HMRJXMRNNKITDzGIt3HQNmgbtA3aBm2DtkHboG3QNmibtE3aJm2Ttklb9pL8kl6se314iJ/tfdfubcxe8jDPyZ04iYu4iUZ04iEG8TbiW+qBtG3aNm2btk3bpm3TtmnbtBltRpvRZrQZbUab0Wa0GW1Gm9PmtDltTpvT5rQ5bU6b0+a0HdoObYe2Q9uh7dB2aDu0HdoObUFb0Ba0BW1BW9AWtAVtQVvQdmm7tF3aLm2Xtkvbpe3Sdmm7bcO614eDOImLuIlGdOIhBpG2QdugbdA2aBu0DdoGbYO2QdugbdI2acNnwjdxETfRiE48xCDeRqwvAQ4ibYu2RduibdG2aFu0Ldo2bZu2TdumbdO2adu0bdo2bZs2o81oM9qMNqPNaDPajDajzWhz2pw2p81pc9qcNqfNaXPanLZD26Ht0HZoO7Qd2g5th7ZD26EtaAvagragLWgL2oK2oC1oC9oubZe2S9ul7dJ2abu0Xdoubbdtb90rcBAncRE30YhOPMQg0jZoG7QN2rKXbE/cRCPmlUIkHmIQb2P2koeDOImLuIlGpG3SNmmbtC3aFm2LtkXbom3RtmhbtC3aFm2btk3bpm3TtmnbtG3aNm2btk2b0Wa0GW1Gm9FmtBltRpvRZrQ5bU6b0+a0OW1Om9PmtDltTtuh7dB2aDu0HdoObYe2Q9uh7dAWtAVtQVvQFrQFbUFb0Ba0BW2Xtkvbpe3Sdmm7tF3aLm2Xtts2rHt9OIiTuIibaEQnHmIQaRu0DdoGbYO2Qdugjb3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLnL3E2UucvcTZS5y9xNlLDnvJYS857CWHveSwlxz2ksNecthLDnvJYS857CWHveSwlxz2ksNecthLDnvJYS/ButfvO10X1r0Cs5c8HMRJXMRNNKITD5G2SduiLXvJ90DnhXWvDxfxs31PO15Y9/rQiZ/Nb2IQb2P2ku8JxgvrXh9O4iJuohGdeIhBvI1Gm9FmtBlt2UuOJRrRiWnzxCDeRvSSkziIk7iIm2hEJx5iEG/joe3Qdmg7tB3aDm2HtkPboe3QFrQFbUFb0Ba0BW1BW9AWtAVtl7ZL26Xt0nZpu7Rd2i5tl7bbNqx7fTiIk7iIm2hEJx5iEGkbtA3aBm2DtkHboG3QNmgbtA3aJm2TtknbpG3SNmmbtE3aJm2TtkXbom3RtmhbtC3aFm2LtkXbom3TtmnbtG3aNm2btk3bpm3Ttmkz2ow2o81oM9qMNqPNaDPajDb2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfaSYC8J9pJgLwn2kmAvCfYSrHv9Hl++sO714SJ+ttiJRnTiZ/se+7uw7vXhbcxectOWveThJH62G4mbaMQ/29+ntomHGMT74fcakOteCwfxz/b3AW7iIm6iEZ14iEG8jV8vKRxE2gZtg7ZB26Bt0DZoG7RN2iZtk7ZJ26Rt0jZpm7RN2iZti7ZF26Jt0bZoW7Qt2hZti7ZF26Zt07Zp27Rt2jZtm7ZN26Zt02a0GW1Gm9FmtBltRpvRZrQZbU6b0+a0OW1Om9PmtDltTpvTdmg7tB3aDm2HtkPboe3Qdmg7tAVtQVvQFrQFbUFb0Ba0BW1B26Xt0nZpu7Rd2i5tl7ZL26Xtlm3nutfCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpm7RN2iZtk7ZJ26Rt0jZpm7Qt2hZti7ZF26Jt0bZoW7Qt2hZtm7ZN26Zt07Zp27Rt2jZtm7ZNm9FmtBltRpvRZrQZbUab0YZe4h+ilwAH8bN9f5a4c91r4SZ+tm/J+c51r4WH+NkmBruN2UsefraVg2UvebiIn23lYNlLHjrxs62bGMTbmL1k5xZnL3k4iZ/te+e+c91roRE/28ZghxjEz2a5QdlLHg7iZ/u+bXLnutfCTfxsvhKdeIif7eR8s5ck5rrXws/2fXHPznWvhYv42U4kGtGJn+3cxCDexuwlCziIk7hqp+a610Ijeu3UXPdaGMRbOzXXvRYO4mf7vjdn57rXwk00ohMPMYi3MXvJw0GkbdG2aFu0LdoWbYu2RdumbdO2adu0bdo2bZu2TdumbdNmtBltRpvRlr0kTqIRnfjZLv5tEG9j9pK7EgdxEhdxE43oxEMM4m08tB3aDm2HtuwlqJbsJQ+deLpaspc8vI3ZS1At2UseTuLqasle8tCIuW3AQwzin239cjpfLykcxPlhbtDXSwo30T7M6Xy9pPAQ48O03VuY614LP9v3cLKd614LF3ETjejEQwzibfx6SSFtg7aRtkjcRCOmLec7DjGIn23ah18vKRzEz5avQ7nutXATP1u+zOS618JD/Gzf8sid614ffr2k8LOttH29pHARP9vOwb5eUujEz7YxWBBv49dLVjbHXPdaOImfzX6Jm2iNWJGQ9A1riXmaWRryNHu4iUZ04iEG8RbmksjCQZzERdxEIzrxEINI26Bt0DZoG7QN2gZtg7ZB26Bt0DZpm7RN2iZtk7ZJ26Rt0jZpm7Qt2hZti7ZF26Jt0bZoW7Qt2hZtm7ZN26Zt07Zpw2nmiU48xCDeRvsRP5v/EidxETfxs30fauxcEln42b5PMnYuiSy8jd9LVuEgTuIibqIRnUib0+a0HdpO2ixxEhdxE43oxLSdxCDexu8la+XLWy6JLJzERdxEI362k/P9XrIKg3gb8yXr5MzyJevhJH62yMOSveShET9bYLBDjMJc/Pi3ZxO/cb+vJty5zHHlFUouc1zfXcKdyxwLg3gbsz88HMRv3Ju27A8PN9GIacs5ZH94mLacZPYHYPaHh4M4iYv4Z/vbwEQjOvEQ48OVeBu//vD3njJxECdxEdOW4mVEJx5iEG/j1x/+dlziIE7iIn62kZP8+kOhE9PmiUG8jbaJOUJuxVfde+RJ4DmdnJkP4iQu4iZ+g+V711yZWHiIQbyNX0kXfra8fMiViYWLuIlpy/keJx5i2nJm5zbGj/jZVp60X0nvfNOcKxN3XoDkysRCIzrxEIP42VYqvpIuHMRJXMRNNKITDzGIbcuViYWDOImLuIlG/Gx57ZQrEwuDeBu/8i8cxG/cvRON6MRDDOJtzCrcXyfIBYKFqfiOfC7Z29+HJTuX7BVuohGdeIhBvI32Iw4ibUab0Wa0GW1Gm9GW5ZTv1nMZ3s6LzFyGt/NyMpfhFR7iN0JeWuYyvIdZOA8HcRIXcRON6MRDpO3QFrQFbUFb0Ba0ZYlYnhpZDHllk0vr/lpd4iQu4iYa0Yk5bp4wWQwPc77fCZNL6woHMWfmiTnCSQxing/fXs/lcn8bkDiIk7iIOe5NNKITP5tj3CDexknbpG3SNmnL17eHfTRzuVzhIQaxj2YulyscxElcxE2kbdG2aFu0Ldo2bZu2rNg8NXIJHE4NR23iH9xG1CZwECdxEXedD7kErtD7JMjafBiNWZs4NbI2cT6gNoHepwZqMw8AahN4Gw+PJmozTwLUJnARd58EWZsPnUjboe3QFrQFz50sBv/2b64NKxzEbzp5MZ1rwwo30YhOPMQg3sYsnIdpi8RJXMRNNKITP9vJ+WbhPLyNWTgPP9v3peI714YVLuJny6vtXBtW6MS0WWIQb2MWzsO0eWKOexKN6MRDzHFv4jdufMc4V4HtvIrPVWCFk7iIny1vOeYqsEInHuJny4v/XPq1I+ebNZRX/Ln0a0dOJ2sob0Tm0q9CIzrxEIN4G/MiMu8d5tKvws92U5wXkQ830YhOPMQ/29/lTeJt/OqtcBDnhzmdr94KN9E+zJl99VZ4iGnLw33SlnOIH3EQJ3ERN/Gz5UV6Lv0qPMQg3sbvdbNwECdxETeRtkvbpe22LRd5/V2vJU7iahz5Xz1xEdN2Eo3oxEMM4m2cuW2RmHO4iZO4iJtoRCceYhBv4/oRaVu0LdoWbYu2Rdui7Ste+55utnOBleUnfLnAyvJNWy6wKnTiIQbxNlqOCxzEb74zj5st4iZ+486v5nPRlOUd21w0VZhbnJP01QfAN9GITsxx88hnFT68jVmFOLBZhQ8nkbZD26Ht0JZVCMxqmcBDDGL2ndzivMp8OIiTuIib+M0h3wHm4qbCQwziLczFTYWDOImLuIlGdOIhti2XMVneMs9lTIWLuIlGdOIhBvE2ZhU+pG3SNmmbtE3aJm2TtknbpG3RtmhbtC3aFm2LtkXbom3RtmjbtG3aNm2btk3bpm3TtmnbtG3ajDajzWgz2ow2o81oM9qMNqPNaXPanDanzWlz2pw2p81pc9oObYe2Q9uh7dB2aDu0HdoObYe2oC1oC9qCtqAtaAvagragLWi7tF3aLm2Xtkvbpe3Sdmm7tN2y2e/3Iw7iJC7iJhrRiYcYRNoGbYO2QdugbdA2aBu0DdoGbYO2SdukDb1kJS7iJhrRiYeYLzP3w2wgDwdxEhdxE43oxEMMIm2btk3bpm3TtmnbtG3aNm2btk2b0Wa0GW1Gm9FmtBltRpvRZrQ5bU6b0+a0OW1Om9PmtDltTtuh7dB2aDu0HdoObYe2Q9uh7dAWtAVtQVvQFrQFbUFb0Ba0BW2Xtkvbpe3Sdmm7tF3aLm2Xttu2XLtUOIiTuIibaEQnHmIQaRu0DdoGbYO2QdugbdA2aBu0DdombZO2SdukbdI2aZu0Tdombewlg71ksJcMXIx44iJuYrark+jEQwzibcTFCDCbY9pwMQJcxLRFohGdeIhBvI3ZS77b8pZrlwoncRE30YhOPMQg3kanzWlz2py27CXf3TrLtUuFTjzEIN7G7CXfBwaWa5cKJzFtlriJRnRijpsHNvvDziOU/eHhJuYIeYSyPzw8xG++3317y/VID7M/PBzEz2a5QdkfHm6iEXPcb/flGiP7bpdarjEqXMSc7y/RiE48xCDexqz5h2nzxElcxJyvJRrRiYcYxNuYNf9wECdxEWmbtGXNf/dpLdcYmefUs+Yf3sas+YeDOImLuIlGdCJti7ZF26Zt07Zp27Rt2rLmvzUYls/WKzzEIN7GrPmHuScjcRIXMW15wmTNP3TiZzsYLIi3MWv+5DmZNf9wEj/bycOSNf/QiJ/tuz9p+Wy9wiB+tshjnDX/cBA/2819ljX/cBM/2835Zs0/PMTPdnOXZCcA5vXDw8/2LTG0fLZe4SL+2fyXxfD1h0Inng9zi7/+UHgbv/7gI7f46w+Fk7g+zC3++kOhET/bzA36rh8Kg/jZvhs1lgvJCgfxs30fnlsuJCvcxM/23ZWwXEhWeIifbWGw2/j1ksLPli+AuZCscBE/W3bwXEhW6MTPlm07F5IV3savl3i2wVxIVjiJn81ysK+XFBrxs2UN5UKywiB+tu8zFMuFZIWD+Nm+zy8sF5IVbqIRnXiIQbyN+0ccRNo2bZu2TdvXS/zkjvp6SWEQP9vJg/X1ksJB/GyRe/LrJYWb+NmyeHMhWeEhRh9Nu41fLykcfTS/XlK4iLuPphvRiaeP5tdLCm/j10s88pT7eknhJH62m0fz6yWFRvxsF//2EIP42bKB5EKywkGcvde/XlK4idZ7PXvJw0OM3uvZS4DZSx6O3uvZSx4u4p/t/IBGdOL5MKfz9ZLCW5jP1jvfOibL5WWFk/hnO9/nDJbP1is04mfLLpeLzgqD+Nm+jxwsF50VDuJnmznY10sKN/GzzRzs6yWFh/jZvsVAlovOHn69pPCzZZfLRWeFi/jZsonlorNCJ362vDLPRWeFt/HrJSevuXLRWeEkfra8DM1FZ4VG/Gwbgx1iED9bVkAuOiscxM+Wl1S56KxwE09dHmxca8zEQZzERdxEIzrxEL/55qVlPi/vfB+TW65KKxzESVzETTSiEw8xiLQd2g5th7avP5y8VMtVaYVGdOIhBjGvf3Ov57XGw0H8bPmKk+vPDvZOOPEQg3gbv05QOIiTuIibSNul7dJ2abtty/VnhYM4iYu4iUZ04iEGkbZB26Bt0DZoG7QN2gZtg7ZB26Bt0jZpm7RN2iZtk7ZJ26Rt0jZpW7Qt2hZti7ZF26Jt0bZoW7Qt2jZtm7ZN26Zt07Zp27Rt2jZtmzajzWgz2ow2o81oM9qMNqPNaHPanDanzWlz2pw2p81pc9qctkPboe3Qdmg7tB3aDm2HtkPboS1oC9qCtqAtaGMvMfYSYy8x9hJjLzH2EmMvMfYSQy+xxE00ohMPMYi30NFLgIM4iYu4iUZ04iEGMW3fy4yjlwAHcRIXcRPTthKdeIhBvI3oJcBBnMRF3ETaJm2TNvSSSLyN6CXAz5aXlrnUr3ARP1teWjq6Rv4a+sNJHMRvhG/xkuXT7go30YhOPMRvvnkZmkv9HmZ/eDiIactJZn94uIlpy6lnf3h4iGnLqWd/AGZ/eDiIacuNz/6QNxJyAeDJWwa5ALAwiLcxO0G+UcgFgOfmEcpOcHO+2Qluziw7wUMjOjFtObPsBA9vY3aCh2m7iX+K+OV0vvKPX07nK//Ia/t8mF388GuHGMTb+JV/4SBOYtpyn91N9D6NLs+oyzP19pl6fj/iIE7iIm6iEZ14iEGkbdD21Xx8f9hvuUqxcBG/DfoWzFiuUix04iEG8TZ+NV84iJO4iLRN2mbaduIhBvE2rh9xENOWW7wWcRONmLabeIhB/Gx5YynXLsa3Nsly7WLhZ8t3X7l2sfCz5VuuXLtY6MRDDOJttB9xECdxEWkz2ow2o81oM9qcNqfNaXPanDanzWlz2pw2p+3Qdmg7tB3aDm2HtkPboe3QdmgL2oK2oC1oC9qCtqAtaAvagrZsIN/6M8tljIWTuIi7XpJyGWOhEw8xiLcwn2BXOIiTmFvhiVGvevlUusibnflUusJBnMRF3EQj5n74yikXN2I/5OJGbGYubizcRCPm/r2JhxjE27j6aObixsJJXMRNNKITT88ha/7hbdw/4ug5oOaBi0gbaz5Y88GaD9Z8sOaDNR/W504Y96RxTxr3JGo+52Dck8Y9yZoP1nyw5oM1H6z5YM0Haz6cxw01D+SedO5J53FDzQO5J1nzwZoP1nyw5oM1H6z5YM0Haz6Cxy24J4N7Mrgng3syaz5vhOVizMLPlne/cjFm4W3Mmn/42VbOIWv+4SJuohGdeIhBTNs3yVyMWZjXDzdxVxXmssvIDyJy2WXhIQaxj9AdP+IgTuIibqIR+wjlYszCIPYRysWYhYM4iYu4ibkVJzGItzH7Q95ozGWXkasMctll4SJuohGdeIhBvI27711d3D0AbqIRnXiIQbyNuHsAHETajDajzWgz2ow2o81oc9qcNqfNaXPanDanzWlz2py2Q9uh7dB2aDu0HdoObYe2Q9uhLWgL2njP8QZtQVvQFrQFbUFb0HZpu7Rd2i5tl7ZL26Xt0nZpu2Xz3+9HHMRJXMRNNKITDzGItA3aBm2DtkHboG3QNmgbtA3aBm2TtknbpG3SNmmbtE3aJm2Ttknbom3RtmhbtC3aFm2LtkXbom3RtmnbtG3aNm2btk3bpm3TtmnbtBltRpvRZrQZbUab0Wa0GW1Gm9PmtDltTpvT5rQ5bU6b0+a0HdoObYe2Q9uh7dB2aDu0HdoObUFb0Ba0BW1BW9AWtAVtQVvQdmm7tF3aLm2Xtkvbpe3SdmljLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSwV4y2EsGe8lgLxnsJYO9ZLCXDPaSXGsZ32esnmstC514iEG8jfkO5eEgTuIi0ma0GW1Gm9FmtDltTpvT5rR5rfJyrLV86MRDDOJtzHco38JNz7WWhZOYNvzbTTRibttOPMQg3sZ8h/JwECdxETfRiLQFbUFb0HZpu7Rd2i5tl7ZL26Ut36F8K1Q8V2vG96G853PigPmcuMJBnMRF3EQjOvEQg1ir8xxrOB8OYq3Oc6zhfLiJuTrvl+jEQwzibcw1nA8HcRIXcRNpm7Tl+5ZvyYLnusyw/K/5DsVyK/IdykMjOvEb4VsM5LnWMr6P1D3XWhZuohGdeIjf/v1WJHiutXyYNf9wECdxETfRiGnLvZ41/zCItzFr3vIYZ80/zNUWlriIm2hEJ6Yt92/elfDcv3lXApg1/3AQv23z3CVZ855bkTX/0IhOPMQg3sas+YeDOIm0ZXVj6lmbnvsha/OhEXMO+LeHGMRbmGsiCwdxEhdxE43oxEMMIm2DtkHboG3QNmgbtA3aBm2DtkHbpG3SlvcUvpsknmsiC2udrq9pRCeexrynkBWb6xwjO0yuc8y1t57rHAudWGtvPdc5Ft7GXDMdOZ1cM/1wEhdxE43oxEMM4m002oy2rNjsiLl2Mb4HRHiuXYzvDrLn2sWHWZsPBzFHyB2V9XZyr2e9PbyNWW8PB3ESv/0bufuy3h4a0YmHGMTbmPX2MG2eOImLuIlpyyOUVQjMF8tvuaHnwsLCTcxfy92XBfmwFin76kXKvrBI+cONRcrAHNcScwRPPG/psudiwcLbmAuPv3vxnosFCycxlznnuLnw+KERnXiIQbyNufD44SBOIm2TtrxxFzmdLKc8+3IBYGS15ALAwkXcxG+E77Nmz0V98X3W7Lmor3ASF3ETjfjt35szyxfAh0G8jfkC+HAQJ3ER05ZHM18AHzrxENOWhzCLDJhF9q2c9VzUd3+58d+LWuEhBvE2fkVWOIiTuIibSNupheiei/oKg1gL0T0X9RUOYi5ozl2di34fbqIRnXiIQbyNuej34SDSdmm7uc9yV9/cO99/zeV791sY4Ll8r3ASFzFH8MQc4Tt/c0le4SBO4iJuYu7fm+jEQwzibZw/4iBOYtoscRON6MTP9n3Y77kkr/Czfc/i8FySVziIk/jZRu6drzYLjejEQwzibdw/4iBOIm27Fox7LskrdGItGHfDQn/gbcRC/xwMC/2Bk7iIm2hEJx5iEG+j0+a0ee6znG/W8chTI+v4W5HguczuYdbxw0H8Rph53L7avPnSkUvnCm/jV5uFgziJ3/6dWRexiUZ04iEG8TbeHzHnm6fnncRF3MS05d7Jin2Y437HLRe+3e+jLc+Fb4VOPMQg3sas2IeDOImLSNuoP7rwXPhWeIj1RxeeC98e4k9zgPmnOTNxEhdxE43oxEMM4m3MP815SNuiLWvz+4DO87l19/ug0vO5dXflP8gqfDiIk/iNsHKDdo5gibfRfsRBnMRF/Pbv91md52K2QiceYhBvo/+Ig5i2PCy+iJtoxLTlMc4qfPjZ8m5SLnF7mFX4cBA/W94WyiVuhZtoRCceYhBvY1bsw0GkLeqPkTxXuxUa0d9fvXiudisMYv4JTQ6GP6EBDuIkLuImGtGJhxjEtuXCt8LcZysx944l5t7xxCDexqzjhzlCJOYIN/EQg3gb89X04SB++zdvqOQCtcJNNKITDzGItzFfTfOGVS5QK5zERUxb7p2s2Ic57k68jVmxDwdxEhcxx839m3X8MLci9+Q+xLTldLK6gVndeSsil6IVpi13X1b3w8+Wd1FyKVrhZ8t70LkUrfCzeW5mVjcwqzvvyJ6s7oefLW/J5FK0wrTlBmV1P0xbblBW98O05QZldQOzuvM+QS5FK0xbblBW98PPlrcBcila4WfLOwK5FK3wq4A32G3Ma+WHgziJi5i23CX5evzQiWnLLc7X44e3MV+PHw7iJC7iJhrRibTdtuWis5tXV/kFqTdvA+Sis5vv5/MLUgsPMYi3cfR8cyla4SQu4iYa0YmHyPmO3jv5TL5C2rLmsUFZ3digyflOzjer++EgTiLnuzjfxfkuzndxvovzXZzv5nw357u5dzZtm7asbmxQ1jE2yDhf43yzjh9uIo+mcb7G+Rrna5yvc77O+Trn65yvc77OveO0OW1ZsdigrE1s0OF8D+d7ePYdnn2HR/PwaOYr7/fAUs8lY4X5WpgKvPICN9GI37h5uymXgd28b5TLwPJPZT2XgRVuor0/lfVcBlZ4iF8vyZsDuQwMmMvACgdxEhdxE43oxEMMIm1ZhfnanQu+bl5K5IKvmzescsFXYRBvY77G5o7KJ+rd7+8OPJ+oV3iIQbyNWW8Pv/2bt4VyaVfhIm6iEZ14iEFMW25x1tvDQZzEtI3ETUzbSnTiIQbxNmZtPhzESVzETaQtF2nkbQss+HoYxO9D47wNgAVfDwfx+9A4b5JgwdfDTTSiEw8xiLcxF2k8HETaDm1ZsTfnm7WJsy9rM6slF3EVTuIi5gg38W+E8ctbWrkyq3kIT+ElvIUtOc/+/H7x4iMcwrf45Bqt5iE8hXP2kbiJRnQinCs5hOE8H4+fMJz5uwPOm/zt8+/Pyg8Waz00ohMPMYi3MRdYPBzESaRt0pZfNv77/u7j5Gqt5iMcwpec3zhePISn8BLewvDmvl8ufIRD+JL3Txj/Prdlh/Al2094CE9hzDOPl22y49/nsfMpvITz33/3g04uomp24e/4zTxNskIf3sas0O++y8EyqoeT+B2/mRudy6geGtGJhxjE25jLqB4O4iTSFrTlF37/Zh5BVDMmj2rGPFHNj5fwFsY4354fqM7vU5IzUJ2Pp/AS3sImjL19k49wCF8yKvTxEJ7CSxheSzZhFz7C6f2Wr59cCFU80/vdBDm5FOqP89/PKbyEt7AJu/ARDuFLRrU+Fm+uilq5C3NV1MNN/E6x7/bMwaqoh4f4nWIrD2auigLmqqiHgziJi7iJRnTiIdK2aUMtP8ZeyrkZ9lIeQTvCIXzJqPHvyW9noJa/ez5noJYfH+EQvuTzE869/X1qc3ItU/MS3sIm7MJHOIThzbMrfsJDeArDm0c/NhnVim1HtT42YRfGfL59Pn/c3okqfjyFMf5J3sImjPEj+cjvhjD38xziHeId4kUVP97CJuzC4h3iQoV+t6vORIU+3sI55nfr6UxU6OMjHMI5vuX4qNDHQ3gKp/e79X0mXje/W0xn4nXzcQhj/O/4TrxuPh7CU3gJb2EThjePO15/H4fwJeP19/EQnsJLGGPmOeD43dy3eC1+PIWX8BY24Zyz5z5H/T4O4UtG/T4ewlN4CafX8xihfh+78BEO4UtG/eLYoX4fT+EljG38JQf3G667wXilfjyEsS15Ll3ZV6jxx0cYc04vrq+TF2r/MfaVJfMYrd8S3sIm7MJHOIQvefyEh7B4h7gGrzoWXp0fXzJenR9jW8C86ljThF0YxxccwpeMGv9uL561eLWz1hRewuJd4l3iRe0/DuFL3j9h8W5xoa499xXq+nEI55jfDdazUNePh/AUzvG/u6Vn4br6sQm7cHq/79A5C7V/8rxC7T+ewhg/zzfU/mMTduEjHMKXjNo/edxR+4+n8BLewibswoeMuj55DuD19+S+RS0/duEjHMKXjBqP3Oeo8cdTeAlvYRN24SOc3shjhNpP3qj9x0N4Ci/h3cduo/Yfu/ARxjZ+/W2jrnO/bbymP97CJoxtWcncVxs1/ngIY87pxev74y2MfWXJLr97hENYvEu8S7yo/cdLeAubsHiXuPIe2QVO4iJuIrbDk3EPI/fxvmT7CePYnuQpvISxn3Lfo77f77rwERavidfF60N4Ci/hLSxeFxdqOnLbUdOPp3CO+d1DPBs1/diEXTjHv3le4/X88SXj9fxxem+ej6j7m+cU6v6xC2P8PNdQ948vGXX/eAhP4SUMbx531P1jFz7CIXybDXX/eAhjzEjG797kS8br9uMhPIWX8Dfn8a0iO7mCq9mFj3AIX3LWffEQnskzeQlvYRN24SMcfewMdQ9G3T8ewtjGX7Jzv+H1/HEIX/LGtqxk2Ve4Zn9swphzevcRDmHsq+88MZNjZHKMTI6RidfEa+JF7T8+wnJumJwbLl4XV34mlW0mH5NWeIhBxHbk+ZgfI2dLyieiFW4iDmz+4nHhI4ydhH9/+1fjRxxEGoPGoDGM6MRDDCJtl4qLEzN3zDVhF875583WfPBZ823OR581Z0HkTdV8+FnzEt7C6f0eq3pyxdcf7+RLHj9hjG/JU3gJb2ETduEjDK8nXzIK/fEQnsJLeAubMMb89nmu5vrjm7yEt7AJu/ARzjnnLdRcAFaMgn48hKfwEt7CJpzevF3rKPTHIXzJ9hMewpPHzpbwFjZhbOPXzHJ1WO03H8JTeAljW/JcctlXHsKXfDDn9J4hPIWxr/I8OXKMjhyjI8foiPeI94g3fsJDWM6NkHMjxBviCuz/PMcutuUkD+EpvIS3sAm78HkffZ9cBlZ4C3MZWOEgTuIibmItZDgHJf+t0TwHJQ9GyT8ewticm7yEt7AJu/ARDuH71h4crCl7OIiTuIibaEQnnsb16y1esjVoBo+X8BaWrVmyNUu2ZsnWvGaQ/JoBeAhzgzY3aHODNjdoc4M2Nyg/+n7I3WfcfViAkltssjUo9ccufIRla0y2xmVrXLbG5ZxwOSdczgnnBjk3yLlBzg1ybtDhBh2eD4e773D3YYVKbvGRrTlyhh85w0PO8JCtCdmakK0J2ZqQcyLknAg5J4IbFNygyw263KDLDbrcoMvz4XL3Xe6+7AR5jz2fXlY4iJOYm5IfXWElWd7nxkqyh0HM/fStbj6BTvB4COd++lY1H6wmw6/marKHRqRx0Dho7HWlJ3pd6YleV3ryIWiFtE0q8qp95OdxgRd88PoJY/6WPIWX8BbO45yfRgVq//ERDmF4v4MTeMHPT68CL/iPtzDGz/njBf/xEQ7hS8YL/uMhnN78hCjwgv94C5uwCx/hEL5kVHh+kpLLyv449y1e8B+H8CXjBf/xEMacc5/jBf/xFjZhFz7CIXzJqPX8hCtQ64+n8BLewibsPHao9cchfMm4EPiW+5/ACz72G17wH7vwEca2fOfS/XFfXVzUP17CGD+STdiFMf5NDvldHqM7fsLiHeId4sUr/2MTduEjLN4prqzq3FX5kLJCIzoxx8tPS7CULcsVS9keTmJONj+muyjuxyack82P5rCc7f1qEG/jpnHTuGnci7iJRnQibZsKFHF+PHhRxI+3MOaPf+/CRziE8yDnR3MXL+WPh/AUhjdPQBR6ftx0UeiPQxjj58mFQn88hKfwEt7CJpxezwONQn8cwpeMQn88hKfwEsaYedxxBZ8fo2FZW/EUXsJb2IQx59znKOjHIXyLA8vaiofwFF7C8HqyCbvwEQ7hS0ahf8cusLSteAovYRyXnRy13+KHd+xgFPTjIYxtOcm9rwJL1YqPMMZPL17MwXgxf4zxb/Lk764lvIXFu8S7xIsX88eXvH/CQ1i8W1xZ1d+KscjVbIW3Ma/UH+Z4B5x/MTcSjejEnOwBh/Alo7hP7ngf/as+iYtIo9PoNPohBvE2nh+RtkMFivjkjkERPw5hzD9PcBTx4yE8hfMgnzyR8Wr92IRdGN48AVHoJ08iFPrjKYzx8+RCoT82YRc+wiF8m7FCbnyr2gMr5Iqn8BLewibswoeMIv4+nwuschvfZ2aBVW7FLnyEQ/iSUdDf52SBVW7FU3gJb2ETduEjDK8nXzIK/fEQnsJLePexGyj0xy58hHFcvmY2UMTYb7hSf7yFTRjbcpJlX+GK/PEQxvjpxYv54y2M8fM8MTlGJsfI5BiZeF28Ll68mD9ewnJuuJwbLl4XF558kLsZTz4ALuIm5ng3z8f845Bf7qa82w7Mu+0Pc7Lfh3CBhW3FSzgne3PH5x3396tOPEQag8ZLY77nfjiJi7iJtN1WYIHc+D78CyyQK57CmL8lb2ETduE8yN8Hb4EFcsWXjFfrx/DmfFDo34dJgYVwxS6M8W9yCF8yCv3xEJ7CS/jzzu9D2cBiuWIXPsIhfMlZ6MVDGGPOZPxu7tt1yfsnPISn8BLGnHOfbxN24SMcwpdsP+EhDG8eI1vCW9iEXfgIB48dCh2MQn88hHFcdrJzv/kRDuFLPtiWPJeO7KuzhU0Y46f3HOEQxvh5noQco5BjFHKMQrwh3hBvuPARlnMj5Ny44r3iykcLZTvBs74eHmIQc7zvs5DAY72yvPFYr4ebmJP9PoQLrIArPsI52e+Dt8CjvfCr+Wivh4NI46Bx0JiP9nroxEMMIm2TChTxAJuwC2P+lhzCl4wifpwH+fvgLbAarngJb2F4TzLGj+RLRqE/xvg3eQov4S1swi58hNObl+NYGfcYhf54CE/hJbyFTRhj5nF3/G7uW1/CW9iEXfgIY865z1HQYBT04yE8hZfwFjZhePMYodAfh/Alo9AfD+HJY4dCf7yFTRjH5WtmWA339tsdwlN4CWNb8ly6sq9uCN9mrHqb32cAgVVvxVMY49/kLb9rwi58hENYvOMnPISn8BIW7xBXvoDP76Z+YDXc/O7NB1bDFU/hJbyFTdiFz3t0WuRiuMLbiOePAQdxEhdxE3MfrdwG1PzjS0bNPx7CU3gJb2ETdmHxbvFu8Zp4TbwmXhOvidfEa+LF4wBPYhBvIx4HCIRzJ+/3NL/IBXGFTsQGWXIIXzIawsod308KjN1PCoxcMFdI46Hx0JhPCnwYxNuYTwp8SFtQgVfylRuLYn8cwph/Fh2awOMhPIXzgOwsBDSBxybswun9/vwlsARufjfdA0vgiqcwxl/JW9iEXfgIh/Alowl8f/oTWD5XPIWX8BY2YRc+ZDSB74OLwBK4+X2YEFgCV+zCRziELxkv9N8HCIElcMVTeAlvYRN24SOc3u/GfmCZ3GM0g8dDeAov4c1jh2bw2IWPMM637/zE0ri331Doj7ewCeeYlueSyb7yn/AQxpzTiwuAx1s4x7c8T1yOkcsxcjlGLt4j3iNeXAA8XsJybhw5N454j7jw4p73gQ0v7t/nC2F4cX+8hU3YhY9wCN/3XNjIx6AVDuIkLuImGtGJ37h5C9rx5F7gIM73oNvwfnJveD+5N7yf3BveT+4N7yf3hveTe8P7yb3h/eTe8H5yb/igbdA2aBu0DdoGbYO2QdukbdI2aZu0TdombZO2SVteAHyfmkSup3uIhpAfEDgawuM8Md6/WcJbOE+M/IAAy+yK88TIG+lYZld8yWgIjzH+TsY4lny+R/PiPwfxNuIxvvlv8Rhf4CSuD1OSX0f+0IhOPMQg3kb/EQdxEmlz2lDy+ZENFsxNHA+Udn78gQVzxUt4C+c4WQpYADfzEwIsgCuewkt4C5tw7u28i+oo58chfMl4KX88hKfwEoY3zxa8lD924SMMbx47XOcnH7zE5/XVwUv84ym8hLewCbvwEQ7hSx7izecJ5/2dXERXuIj7Q/xbIzrxfJgblE9LfHgb82mJDwdxEhdxE43oRNombajxvJDDKrmZnz1gldz8lhcGVskVH+Eg40U8z/CDF+ssyYMX68cufIRD+JJx5Z7vMA6u3B9P4SW8hU3YhY8wvDP5kvFC/3gIw5vHDi/0j/G7X1UeVPTjIZy/m/fRDyr68XfY8s1ZPjit0ImnEVV+wRgj55WPXMr3A7mQrdCJOUbONR92+PA25sMO891FrmIrnMRF3EQjOvEQg3gLc21b4SDm0cv7WIFavPjveZTyRjnWsT1GLT4ewhgnkjHOTQ7hS8b77MdDeAp/e3t9f5US+Ri0ZhN24SMcwpecr7TF8J7kKbyEtzC8M9mF4d3JIXzJ+yc8hKfwEt7CJuzC4s0HDHtuVj5gGJgPGH74HfO8Msi1bYWL+J1heUmRC9sKnXiIQbyN+YDhh4M4iYtIm9Pm2Ht5Bh7spdzzB3spz66zhLewCec4ecsZK9VW3jnGSrXiJbyFTdiFc2/n3VysVCu+5HxlLh7CU3gJb2HMP8/868JHOITh/Y5+PnqtOW9MR2J+vPdLPMQg3kY8Qxw4iJO4iJtoRNryNTbfP+dCtcLbmK+x36rCyC/bLJzE71TJd/i5jq3QiE48xCDexnwi8cNBnETaFm25hC1bBRar5UcfWKyWRYfFag8XcRNPfaSL56nl2YznqT2cxEXcRCPm/r2JhxjE25jPOnw4iJO4iGnLvY7n+wOdeIifLevq4rngiXgu+EwcxElcxM+GMzWfi/jQiYcYxNuYH30/HMRJXETa8kU6L2TziWyFh/idO7nOJZ/T9jBfpB9+505eUudqtsJF3EQjOvEQg3gf3lzFVjiIk5j7zBJz75zE3DvxYdbxw0GcRHtrpm6uP8vVRTeXnz2cP+IgTuIi5rqnlWhEJx5iEG9jLjx9OIg535u4iJtoxLTl3smKBWbFfp+d3PyaynyA+s2vqSw8xCDeRiwuAw7iJC7iJtKWL56WG5Qvng+D+B15y/nmi+fDQfyO/Hcz6+Zqs8JNNKITDzGIt/H8iINI26Eta3Pmrs4qXHnkswpX/oOswoeTuIi15vjm10nm6tybC8gKB3ESF3ETcwFwnvb5RxwPDzGItzCXjRUO4iSmbSVuohGdmLZIDGL+9cVXWQPPBQcO4iTmX1/MxE00ohMPMYi3EX/rARzESaQtX00jtyJfTR868Tt3vreCN5eVFd7GfDWNHCxfTR9O4iJuohGdeIhBvI2btk1bvsbunG/W8XfRcPNhaPk09psryh5mHT8cxBwhj5vV39LcXBxWeBv9RxzESfz273fv+uaysEIjOvEQg3gb89X0Ydry9MTz/YGLuIlpy72TFfsQV4m5yfETHsJTeAlvYVwVp+ldFYNxVZz78V0Vg+HNvfOuisHpzZefgavix+nNFxU8ba04vTO3BVfFj9ObLxYDV8WP05svAVhkVgyvJU9heD15C8N7kl0Y3kgOYXi/bcQis+L0fp8tXzyFrTi92Uqx+Kw4vdk2sfisOL3ZfbD4rPirlJv/JK+pHw7iJC7iJsKYewnvph8fYRhzD+DdNBjvph8P4Sm8hLewCbvwERbvEi/eNWfXxRK0tXJv491xdlgsQSsO4UvOe13FMn+T+ZvM32T+JvM3mb/J/E3mbzJ/l/3m4nXxunEb8b4Y2+gy/yPzx/vlx1N4Ccv8j8z/yPyPzP/I/I/MP2T+IfMPmX/IfgvxhnjRMbCN6AzYxivzvzJ/dIbHJizH/cr8r8z/cv54RlvxEJ7CS3gLm7ALH2F61+sAkbx7G9fg/Ndw4SMcwjzueC5bMY77SJ7C63uGdWrzCccPjehEjP31A6w2W/namqvNzgBuohG/Mb73Vzefu1YYxPthDpyPQH04iJO4iJtoRCceYhBpM9pQwTvng0rNSwA8XW3lq+dCpT6+ZFTqY4yTRy8/Tl6WRyA/WyoO4UtGpT4ewrm387Ua68mKt7AJu/ARDuFLRqXmdQ7WkxVP4SUMbx5cVOpjeC35CIfwJeM1//EQnsJLeAubsHjzK+Pz5TOXohXewlyIdvJ1NNehFU7id4blC3MuQis0ohMPMYi3Mb8y/uEgTiJtgzbU9/fHgRerzdb3We/FarNl+W9Qx4+X8BbOcTy3C6/D333ci2epFU/hJbyFTTj39vcZ8MXqsuIQvmTc1X48hKfwEoY3DxZetx+78BGG15IvGa/bnvsBr9uP03vyd1H1J/fP97p9Nv6zEZ14iEG8jfkFBQ8HcRIXkTanDR3j+zutiwVnxSF8yegYj4fwFF7CW9iE4c39j47xOIQvGR3j8RDGv89zFZUORqU/HsJTeAljnnm8UOnJWCi2vs9BLxaKFW/h/Pf5FhALxYqPcB6/k3gbs1gf5vGLxElcxDx+nmhEJx5iEG9jfv3Aw0GcxEWkbdKGK+58R44lYutbS3GxRGxF/htU9OMtbMIYJ7cLFRq5t1Ghj5fwFjZhF869/X0ievHEtOJLRoU+HsJTeAlvYXjzYOH1+vERDmF48+jj9foxvLnfcGV989/jdfzxFjZhFz7CIXzJqNbHQ1i8+Z0FeV8vV4sVGvE7xfK1Lh+4VhjE7xTLF+R83FrhIE7iIm6iEZ14iEGk7dKGWr55RuWr8/5lbeZ19/7lEczr7uLbjEesFa/klYxxdvIRDuFLHj/hITyTPXkJb2ETduEjHMKXPOGdyUN4Ci9heE+ykb/Xa8v2jOVe+/sk5mK5V/ES3sIm7MJHOIQvef+ExbvFu8W7xbvFu8W7xbvFu8Vr4jXxGryRnN6Rp0Y2g2ITduEjHMKXnM2geAhPYfHmerE8s/O7OQud+K1Ouzn3rxEU3savDVhWe64sK5zERdxEIzrxEIN4G4O2oC2w9/IEDOylLI7AXrLkS74/4SGMcXJMFHfe2sPysOLbjOVhxUN4Cufezlt+WB5WbMIufIRD+JLRDB7D68lTeAlvYXhHsgvDu5JD+JLRDB4P4Sm8hLewCbuwePPuex66/AbPh3n3/eF3ly+PVT6CrXARv7t8+UY9V5YVOvEQg3gb8+77w0GcxEWkbdOGnpA3YbGcbOcNViwn23lTFcvJirewCWOcr8qwPGznez4sDytewlvYhF0493beYM0npzVfcr6wFw/hKbyEtzDmn2f+ceEjHMLw5n6LnzC8uQ9R3Y9NGNuV+xZV/xjblfsQVQ9G1T/G+DmHO4WX8BY2YRc+wiF8mwNd4vEQnsJLeAubsAsf4RAW7xDvEO8Q7xDvEC+6RN62C3SJx0c4hC8ZXeLx9zqQ74TjNQD8Zxc+wiGcQ+Y7SaxVwymMtWrFWzjHzzuBWKtWfIRz/Lzrh7Vq73dxmfB4CIt3i3eLd5uwCx/hEBaviQttIO9C4jlrxS6MbbHkEL5kXAI8zvHz/VWgbTxewlsY3pOM8fN0QHsAoz08xvh5vNAeHi/hLWzCLnyE05v3CvEstsdoD4+H8BRewlvYhDFmngMo/bzKxyq14i1swi58hDHn3Oco/WSsUisewlN4CW9hE4bXk49wCF8ySv/xEJ597PAstuItbMI4Ll/94plr2G8XL/6Pp/ASxracZO6rixp/fMkL46cXbxEeT2GMf5O3/K4Ju7B4l3iXeFH7j4fwFF7C4t3iQl3nxePF5f/jITyFc8y863ffZX5uox3hEM7x8+4nHsNWPIRz/Lyzed9lfv4uavyxCYvXxevidV7w4vFsxUN4Cov3iAt17bmvUNdg1PVjbEue86jrx0t4C+f4nuc2LgceH+EQhjf3P2rfc26o/cdbGOPn+Ybaf3yEQ/gWf9878dMwNKT6u2n7haVhazANruFoCA1XAkr8+5ObL2CAhXA0hIYrATVfYWjAJhjC0rA1mAbXcDSEhisBXeFbjfiFoWFqWBq2BtPgdWy/cDSEhisBPeG7hvnClj2KV/4KruFowMadDKY7Ee2gwtIAD2aAq4EKrgEenFWmh9H0MLoeRtcZuM7AdQZoGRVMg55IrieS6wyOSk/f+vrC1mAaXEMOHTiVo+9/fWFomBrS8/2p0Be2BtOQnsDxiaMDhIYr4eoMrs7g6gzQSipsDabBNegMrkjxiLcdC2Fp2BqwcYbgGo6G0JCeyMLAl6F2GBqmBszgIMATCEdDaIAnz1E8Fq7D0DA1LA1bg2nIGdwfwtEQGq4ENJQKQ8PUsDRg6DxdBq4XLnY8mkOFqWFp2BpMAzYBhwRto0JouBJwdVFhaJgalgbMAIcRDaWCazgaQsOVgIbyDjAaSoWpYWnAkcN5jU7x9iiuMF5A26gwNGDjcPId3YloGxWOBngwA1x1vICGUgEenFWhhzH0MIYextAZhM4gdAZoKBWuhKsn0tUT6eoMrkqx1Oft0RsaLsNbB1jhG9p+P4T+tOsLpsE1nPydgRAaroRsG/abCEMGGFPD0qAzGDqDoTPAooEKoeFKwHqCCjqDqdLsFIYXFqzz6xAasHFZMljq12FomBpWBkfYGkyDa8AM8lTG0+jsh4O1h4apAR5sz94aTINrOBpCw5WQDcUGzpBsKB2mhqVhazANruFIcAyN08UxAHa8mwbXcDSEhivhYBNwSM7QMDUsDVuDaXANRwNmgMN4roT4aRgapoalYcsBDtPgGo4GHLnso1g2WHv0Lg1bg2nAxuHku7ITsUiww9AATyAsDVsDPBfBdYCjITToDIbOYOgMxtSwNGwNpkFnMFSKTuEDYWpYGraGHHr+ELBOZyJcCVyZ9IXchIkB0DYqLA25CfP9jukAruFo0BksncHWGeyhYWpYGrYGncFWKTrFxE5Ep6gwNWDjDGFrMA2uIc+Q6Qih4UrwnwbM4CDAgzMRDaWCa4AH5ygaSoUrAQ2lwtAwNSwNOYOFMwQNpYJrOBpCw5WAhlJhaMDQOCSBAbDj0RxeuD8NQ8PUsDRgE3BI0DYquIajITRcBjwnr8PQgBk4wtKwNZgG13A0BA8wHphXAQ2lwtCAI7cRnHsU6xU7hIYrYWLjDoLsRCxa7GAa4MEMcB1SITTAk2cVljrWAGtomBp0BktnsHQGuA6pcDSEBjmRsOixg0rRKTYm+v4W4YWjITTk0DtP5bd+0V5YGraG3IQ9EFzD0ZCbsHF87MoA/tMwNOgMXGfgOgMslargGo6G0KAzOCpFp9jYiegUFVwDNg4lg05R4UpAp6iQZ8hGYeDSo8LSsDVgBjiV0VA2zkQ0lBfQUCrAg2OKhlJhadgaTINrOBpyBm9XoaEg4Jl7HYaGqWFp2BpMA4bO0wWPzzNbCEvD1mAaXMPRgE0whCsBbaPC0DA1LA1bg2nADBzhaAgNVwIaSoWhYfIAY7Flh63BNODIZR/F8/Zqj+K9TIWpYWnAxh0E3Yl4x1LhSsB1iGEGuA6pMDXAcxH0MJoeRtPDaDoD0xmYzgDXIRWGBj2RXE8k1xm4SnHp4TgtcemBq04srewwNSwNW4NpcA3oypBiPXSFK+H9DcULQ8PUsDRsDfjTIBwFNBRcQRoaygtoKBWGBmwpRkNDqbA1mAbXcDSEBvxZVJ4U/v4u6oWhYWpYGrYG0+AajgT8hSR2CBZwvi3FCs4OS8PWIFuKVZwdjobQcCWg71QYGnRLp27p1C2duqVTt3Tqls7QoPt66b5+fySJHbJ0S9FdKriGo0G3dOmWbt3SrVu6p4alYWvQLd26pVu3dOuWbt1S0y01PatM97Xpvn5/UYkdYrqlFhqkfrDcs4NuqeuWum6p65a6nlWuZ5XrWeW6pa5benRLj27p0S09uqVHz6qj+/rovs5HL+BFJtd9Ng/hKfw5Bt4i5RMGLy4ncklocwjf/IXsjO97eCsMDTMDdnI+oeH9fj6iodiExX3FfcWNr+BMxrfxFg/hKbyETThycgvhSnjfv/kCNsgQpoalYWuwDI7gGo6G0IAZ5Gs5loUOnNFYF9pha4AH24Pv+6lwNISGK+F9U+cLQ0POAG813hf1VtgaTINrOBpCw5WAb//B+w48fnDghRDPH+wQGq4EfAVQhaEBm4BD8r6X84WtwTS4hqMhNFwJ+I4QvB9439JbYWpYGrYG0+BygPHFfxVCw5WA7/tbG2HLHn1f4fmCazgasHE4+UJ34vu+zheWBngwg/eVnS+4BnhwVoUextDDePUwXp3B1RlcncH7fs8XTIOeSFdPpCszwPrSDus9eObjLWzCLpzD4v1Qrhi9qP5cMdo8hXPuNhC2BtOQc8cVPr66t34/hC95inuKe4obX/X5eAubsAuLd4oLbQGX3u87fCtsDdig9zuu4WgIDXk64O0UlpV2GBqmBszgIMATCEdDaIAnT8j3lb4VhoapYWnYGkxDzgDvRd43+1YIDVcCukeFoWFqWBowNE4RfPEnLjfeV/xWmBqWhq3BNGATcEje93++EBquhPcVoC8MDVPD0oAZ4DCie1RwDUdDaLgS0D3eAUb3qDA1LA04cijm902h2KPvq0Iz3PddoS8MDdi4gyA78X0BcIWjAZ5AuBJw0VEBnosgh/F9D3CFrUFnMHQGQ2fwvkf0hSth/jQMDTqDqVI8su0HDuFLxlPbHuew54WvEeFznFyH2uzCOffzQmi4EtAvsGwMT118v5+PXSxewuLe4t7ixlPfHofwJePBb4/Fa+JCW8B6rvddwRVCAzYo6+N9XXCFoWFqyNMBa/SwVrWDaXANmAHOW3QPLIp73xtcYWqAByckukcF0+AajobQcCWge2Cx2vsG4QpTw9KwNZgG13AkoC1g5dr7JmGsAXtfJVzBNRwNoeF2GO/7hHN12HhfKFxhalgatgbT4BqOBszAEa4EdI8KQ8PUsDTsPsDjfdVwBddwNODI7QzvG0knwtKwNZgGbNxB0J34vn/0haEBHszgfQXpC1sDPBfBdYCjITToDLbOYOsM3veVvrA0bA2mQWewVYpnuuIg4KGuj5fwFs5hc0Xd+OEZrth/eIgrGE9xfZxz//5A/gtTw9KQc784MHic6/t9Fz7C4nZxH3Hjq0sfT+ElvIXFe8SFtnCxx97Xlr4wNWCDUB/vm0tfMA2uIU+Hi52Li4oKVwIuKipgBpgbusfFaYfuUcE1wIMTEt2jwmV4X1JcYWiYGpaGbwb5vZ1fMA2u4WgIDVcCHtReYWjA0BMBAyyEKwFPaK8wNEwNSwM2wRBMg2s4GkLDlfC+1PSFoQEzcISlYWswDa7haAge4PeVxi+ge1QYGnDkNoLLHn1fffpCaLgS3refHgTdie97Tl8wDfBgBu+rTl8IDfDgrHI9jK6H0fUwus7AdQauM3jfi/rC0aAnkuuJdHQGR6W42zlwWuJuZ4WjITTgji92PJ/n/oWlYWvAfV2cO1hLVuFowJ1lnBTvAZYY4D3B8oWhQWdwdQZXZ4AH3VRwDUdDaJAZvOdXVsBN64NgGlwDNu4ihIYrAYtCKuRt87yYH1i22mFp2BpyBgdzw0cuedU+sDi1Aj5yqQDPQpgaloatwTS4hqMBM9gIVwI+6q0wNEwNS8PWYBowdJ4ub3HqwY7HZykVtgbT4BqOBmwCDgk+6n0BH/VWGBqmhqVhazANOYPAYcSnLBVCw5WAT1kqDA1TDjA+ZamwNZgGnKPZuN6y1bdH8VFvhalhacihAyff0Z2IFSIVrgSsEMHV61ucWmFqSA8u8N7i1BpAD2PoYQydQegMQmeAj3orDA16Il09ka7O4KoUX9KEVyYsW+0wNEwN2LiNkG0d1yHvq5YrhAacB9kt3+LUCkMDdqIjLBngfUvMC6ZBZzB0BkNnwK+Q+S4CfhqGhqlBZzBVik6BNy5YtloBnaICNg6/g05RYWnYGvIMwfU9lq12OBpCQ84AF/JYnGq4kMfi1A5bAzwLwTUcDaHhSkBDqTA0YAY4Q9BQKmwNpsE1HA2h4UpAp8A1+Vucimvytzi1Qmi4EtA2KgwN2AQcErSNCluDaXANR0NouBKyoTiur7E4tcPUsDRsDabB5QCjoVQIDVcCegjeNb9lq2+PYlFIBddwNETOIE++tzgVO/EtTq2wNGATJoJpcA0nw0IIHUAO41ucWkFnMHQGQ2eA65AKpsE1HA06g6nSieOzEbBxhmAaXMPREBquhPXTgF6FvfO+eeqFpWFrMA2u4WgICfzC5y9MDUvD1mAaXMPREBquBH7z8xd0BqYzMJ2B6QxMZ2A6A9MZmM7AdAauM3hfJffC1LA0bA042o6QHrxQvm+EfuF969wLqHqcSGdqWBpwVgWC6QCu4WjQGRydQegM8BWUFaaGpWFr0BmESi9O2IswNEwNuXF4X4LVrR1Mg2vIkhk4R9F3KlwGrG7tkDPIv1cZWMOaD8H6gmlwDfAYQmi4EsZPw9AwNSwNmIEjmAbXcDSEhith/jQMDRg6EDDARbgS0F0qDA1Tw9KQm5AfZwysYe3gGo6G0HAl5J2SDkNDzmDiMGbf6bA1mAbXcDSEHOB9JdhPw9CAzf4huOxROxpCw5Xg2DicfK470bcG04BNwAz8aAgN2Ik4q44exqOH8ehhPDqDozM4OoPjGo4GPZGOnkihMwiVvi+sxTF931j7wtEQGrBxOJXft9PiML6vp31ha8B5cBBcw9GAnYjj876kNgfw9y21LwwNU8PSsDWYBtdwNIQGncFQKTpF/knUwLLVDq4hNy7X2A0sW+1wJaBTVMgzZMGTb3k6LA1bQ84Ar41YnOq59mVgcWoFNJQK8BjC1LA0bA2mwTUcDZiBI1wJaCgVhoapYWnYGkwDhs7TBatOfWHHozlU2BpMg2s4GnITNg4J2sYLaBsVhoapYWnYGkxDzmDjMKKhVAgNVwIaSoWhYcoBRkOpsDWYBmx29lF8+XXtUbzlqTA1LA3YOJx8oTsxQsOVgOuQjRngOqTC1ICdiLPq6mG8ehivHsarM7g6gyszwHNNOwwNU8PSsDW4BhyfPC2xKtVzjd7AqtQOU8PSsDWYBteQvQp3trEqtcOVgHsoFYaGqWFp2Br+PJFLxEYuSm2+5K+bNGMrA2F//8cGm7AL41TH3kO/qHAloF/k0r2Rzyqt3//aRfMSFvcW9xb3PsIhfMn2ExaviQvdIxcDDixB7RAacoPejkL3qDA0TA15bjwPukcF0+AaMAMcQPQIwwmJHlFhaoAHJxd6RAXT4BqOhtBwJaCVGE4JtJIKU8PSsDWYBtdwJKB7OE4R9AjHjkePqOAajobQcBmw6tRzAdXAY007TA1Lw9ZgGlzD0YAZbIQrAa2kwtAwNSwNmwcYC1Y7uIajAUcuX0Xwbd1vj+LrujtsDaYBG2cIuhNx0VFhaIAHM8BFR4WtAZ6D4DrA0RAadAZbZ7B1BrjoqLA0bA2mQWewVfr1CXv78LsaacbAgbA1mAbXcDSEhisB7QSf2GFNaoepIWeA63c8DLWDacAMLsLREBrut204dfPR6MVDeAov4S1swi58hIOcT0PHa2yuV23G1mFno4VUMA2u4WgIDVcCrlPw0SCWq3aYGjADnP3oQRVMA2aArUEPqhAavv2LF/xc1No8hKfwEt7CJuzCRzjI6C/4BA5rWTssDdi+9zumwTVg+wIhNGAP58mEtawdhoacAT6FxFNXO2wNpsE1HA2hIWeAjxfxUNYOQ8PUsDRsDd9+xpv9XPiK56eMXPeKp3iMXPbaPISn8BLewib8HceBPfxdxzSH8CVbejHP7E/FU3gJb2ETduEjHGT0H3zMisWvHZYG7LuFYBpcA47eRggNOHrY4bjQqTA0YAbYb7jQqbA1mAbXcDSEBswAuxgXOhWGhqlhadga/maw7XF8jB31daJ8EPC3auQnPISn8BLewib8t4Ebr9m5ZrY5hG/xzAWz+fDfj4fwFF7CW9iEXfgIB3nw/JlYDdthaeD5M7EatoNr4Pkz8fjXDjx/Jh7/2mFo4Pkzf3Np2BpMg2s4GkIDz5/5Wz8NQ8PUsDRsDX3+zFwzi/Nn5pJZHPeZK2abh/AUXsJb2ISd58Y+wiEs54/J+WNy/picPybnj8n5Y3L+mJw/JuePyfnz+k8gTA1Lw9aAo4eNe/3nhaMhNHzbt8Ff+2kewlN4CW9hE3bhQ0ZzuTigaC4VpoalYWswDbmBFychLoEqhIYrAZdAF6cXLoEqTA2YAfYqLoEqmIZvBueHkyMvgU5+Oj2x7Pb8MNF8G/YClt12GBqmhqUBA+SJgVWzHTDARpgaMIAh/G3Cyhf4mWtrm134CIfwJU8YHMEyHIQcCep5hEM4R8LEvz7RPISn8BLewhAHgmvAMbgIoeFKyHdKJz9tmfl014VujFWytdP20RAaroT8UOcM7KD8UKfD1KDHI983dTANOgPTGTiGxi7wqWFpyKEHjko2hA6u4WgIDVdCXpCciU3IC5IOU8PSkDOY2KN5QdLBNeQMJk6NvCA580mvhPhpGBqmhqVhazANrgEzwKkToQEzwNlyfxqGhqkhZ7CwcdkzOpgG13A0hIbLgKfDdsgZ5McjE98T3wHnwUbADF4wDa7haAgJ6DP5IcjEmtsOUwM22xG2BtMAaSAcDZBehCth/jTkDPLP9ydW43ZYGrYG0+AajoacQX6GMbEat0JezXQYGqaGpQH74CAcNkx8VfzrB1iaW2H/NAwNU8PSsDUYW/98XeyFoyE0oIthouhiFYaGqWFp2BpMg2s4Ehx7FKcyWlqFqWFp2BpwTHHyoaVVOBpCw5WAllYBM8AphpZWYWnYGnIGhnMHLa3C0ZAzMBwftLQX0NIq5Axw0Ye1vflNm1/IGRgmipZWwTS4hqMhJHyNa+I8/NpW4SJuohG9ECtwj71wNISGv01FV8/1t4WDOImLuIkYO08YrKA9eXt85gpatKdcP1u4iN9lwgIa0YmHGMTbiJLHGwQsq+2QBwdvBbCstsPWkLPPu6gTT3Y9+ZfbE0927fDN/yHGgh9lXcE0uIajIXrfbe5949437n3j3jfufRTs2+V2ZZejYB3/DAVbAfvDEJYGbAPOh69gN+b5lWvhIQbxNuZ7kYcYG5NDwTkmlzdX3z8K4m3Mr5/EXs4brg8ncRE30Yjw4RRAeVXIs/7gqOOK4QVcMVTI2R+cD3j1Pxgar/4V8p4X8HL34YmsHYaGqQGWhbA1mAbnYcKi1w6hQWcwdAZDZzB0BkNnMHQGQ2cwdAZDZzB0BkNnMHUGU2cwdQa4EKiwq76wMvbVClbGdjgaQsOVgNfqg5mhpCsMDV9pBXARN9GITjzEIN7GLOSHg0ib0Wa0GW1GG16N87b2xALVDlcCyj5vXk8sUO2QuxxvmLBAtcPWYBpcw9EQGq4EvE5XGBp0BkdncHQGR2eAtoE3kFi62iE0XAl4na4wNGAGG2Fp2Bq+l6ABdOIhBvE2fu2jEGPj/ELzwF03rFA9uGmGFaodLgNWqHbANlyEqWFp2BpMw3cePUx//lnIxMrVDlcCmgfu2GDlaoepIf351xYTK1c7pD//hHpi5WqHo+Hbk5hZ3rAAfo2jcBAncRExtiNgG7DbcEmAez5Yutphalgavm0I3BrC0tUOruFoCA3fSyF2Tt7ufDiI3025AVzETTSiEw8RvheuhHw30GFpwOwxBTsavpdxzP3rJA+/PlI48l/jsGYX6bA0YM/hOLhpgBsHxY8GbAl2vWNLcFSziwRu9WC9auAtE9ardlga0jOwWdkRAjdXsPY08A4bj1mNgfMvMBomGhgNc8sLiJiYQV5AdAgJeWMhcAsFy00DN0qw3DQGtue6BoyGuV2MhrllD3gBy007DA056/y0b2K5aYetwTS4hqMhNFwJAx5HwGgHAf8sjxyWjgYaDJaOdpgalgbXkKPl8r+JBaIdcjR0VSwDDVwdYEln4OofSzo7DA05A7zNwJLODluDiSev2Pv/ORpCw5WA0nt7x4aGqWFp0H2AonybbaFB9w4KEOcb1ncG7uhgfWfgvg3Wd3ZwDUdDaLgSUIAVsEcxaxRghaUBM8BJcTADbBxKEw0Fiz0DzSy/fr5KxlG0L6BoK6Rnv7A1mIYcDe8/sKQzNo7PzbUgwEXESC9gJGwyCrbC0RAacsa5dmFiOWeHoWFqWBq2BtPgGuDJXYsVnIHbGliaGbh5gQWYgfcjWIDZYWiYGtb3jerATTSiEw8xiLcR3yEPHMRJpG3RtmhbtC3aFm2Ltk3bpm3TtmnbtG3aNm25SgH7NBcpPJzERdxEIzrxEIN4G502p81pc9qcNqfNaXPanDan7dB2aDu0HdpQnngjjqWVHa4ElCfuNmBpJZakTiytjDcayhP3WPDYzsCdlFwziVsS+dDOwkXcRCM68RCDeAuxQjLwbhDrIKP+n79RzvvvhxjE2/hdCxcO4iQu4ibCZwiu4UhAleLdLxY6Bm6ZYKFj4JYJFjp2cA1HQ2i4EvCyWmFomBqWBp3B0hksnQGuhnF7BUsgO1wJeJGuMDRMDUvD1mAaXIPOYOsMts7AdAamMzCdAV6kcesHayU7mAbXcDSEBFw/43YR1j3GO0O+Yj448F8xFx7idz7iNPmK+eFXzIWDOImLiDm+kPvijY36rTA05L7ADQWsa+ywNZgG13A0hIYrAd2gwtCgM7g6A7xg45YG1jV2cA05A3z6jXWNHXIGuLuAp3UGbg7gaZ2B9+x4WmeHpSFngHfmeI5nh5wB1nTgOZ6B99+5wLF+/TaOH3EQJ3ERc2y8OcfaxcinOUysXYyLbcCrfIWpIbcBb86xdrGDaXANRwL6B962Yx1i4E031iEG3nTjG+I7uIajITRcCegSFYaGqQEzwM5Gl6hgGjADHAZ0iQqh4UrILnHxfh7fKt9haviOzvuNTTTi9+cemMbXHQqDeBu/y4HCQYQPBzov9jtsDaYhJBzMHmf7mRowGk6OszWYBv8eTAo8xCDexvzugIeDOImLuIlGpC1oC9qCtkvbpe3Sdmm7tF3aLm2Xtktb9oqb9zcWntrZYWjAfnWEpWFrwH4NBNfwnZc372IsPLWzw5WQ9+Q6DA05g7zzsbBOsUPOIG+DLKxTvAOzzo5y8zbIwjrFDqEBM8AmzJ+GoeHb7/iNfHj4w000ohNP48LYBwHbgN2zsA0XwTS4hqMht2Fi92R/qZD9pcPQMDV8W4Fty+5yJ/Zhdpc7MefsLh3SP7EB2UN+j/Mv3HA88NCJ99+PcAjndPP9/sJXyncYGqaGpWFrMA2u4WgIDTqDozM4OoOjM0BDWdh7aCgVTINrOBpCAh4/gX2Gp088nsL4y0HwFjZh6N4vHA2h4Uq4Pw1DAzYYBXSXBmwwzpFrGlxDHnKc1nlZUnybsdKweAhP4SW8hU3YhY9wCIt3iHeId4h3iHeId4h3iHeIF20lb1YtPA+0AtpKBexwR5galoatATv8IGCHQ4pvTBrgEL5kdJ68U7XwMNAOU8PSsDWYBtdwNISGK2HrDLbOYOsM8EWyP/AWNmEXPsIhfMn4BqXHnxln6njfnwRewrnh+/2CaXANR0Nu+MbeRnd7Ad2twtKA0SBFp8o7eQurHjtcCehUFTAaThB0nY0TBF2nQmi4EuKnYWjIg7JxUGJp2BpMg2s4GkLDlYBGtFEXaEQVpoalIWdg2PFoRBVyBobdm42oQ2j4ZoDdhgWMxUN4Ci/hLQxDNk4sSrx552hhUeLNm0ULixI7LA1bA7YEQ+PSpcLREBquBPSYvCm1sCixw9SwNGwNpiFn4Nie7DEdQsOVgDbj2B60mQpTQ87AMWu0mbwftPCI0A6YQSAcDZgBJoo28wLaTIWhYWpYGrYG0+AajgadwdYZmM7AdAamMzCdgekMTGdgOgPTGZjOwHQGrjNwnYHrDFxn4DoD1xm4zsB1Bq4zcJ3B0RkcncHRGRydwdEZHJ3B0RkcncHRGRydATpbrnNaWMjYYWpYGvBWBmzCLnyEQ/iS0dMeD+EpnOPn7bO/kAMd9BG8I0PA40hv3ktbeBxph6lhadgaTINrgCcrEg8dffsODx19OwUPHe1gGlxD7pe8Cbfw0NEOVwJaVAU5MfDQ0Q5Lw9ZgGlzD0RAyN7SoF9ZPw9AwZW5oURW2Bp3B0hksnYG2qKUtammLWtqi8NTSms7Wo7D1KGw9CmhRb25bj8LWo6AtammLWtqilraopS1qaYta2qKWtig8tbTmZnoUTI+C61FwPQpoUXmbdmHpZgfsg4NgGlzD0ZAziDf0lYAWVWFomBqWhq3BNOQM8v7rwmNPO2iZoSsFahtdqcLUsDToyYe2VEEPfeihDz30oQV4tQCvHvqrh/7qob966K8e+quH/urpf/X0v3LyYW3ozRvSC2tDO2wN2L0bAbvXEI6G0HAl4HqswtAwNSwNWwM8jhAargS0tArwHISpYWnYGnDVhc1GS6twNISGK2H9NAwNUwOu1TFRNK4KR0NowJbmVReegfreIOAZqB22Bhw5HG20pwpHQ3rwcohnoNYA9tMwNOgMTGdgOoP3nu0F13A0hAadgasUfQfv2bB2tINryKHzturC2tEOOfTFqYy+U2FoyI3DrUKsHe2wNeQMLuaGvlPhaAgNmAEOI5pQhaFhasAMcLC+VvP9kTrC0RAabgbskK/VMAwNU8PSsDWYBswAe/QeDaHhMuQKU4ahYWpYGjB0HpJcIvr9fT3C0DA1LA1bg2nAJhyEoyE0XAnzp2FomBqWBswgEEyDazgaQsOVsH48wLnElGFqWBpwjjpCyB5dV8L+aRgaMPRF0J24XcPRkJ6BGeQa9Qq5Sr1DevCpgpkeRtPDaHoYTWdgOgPTGVhouBJcTyTXE8l1Bq7SbCjvkGY/Kb5kfFkdtgXfVfd4Cudm4cOSfOApg2lwDUdDaMCOzZeUXHTKMDTkBHAw35fkgrewCbvwEQ7hS37fjgsewuK94r3iveK94r3iveK99PrvJzyEp/ASxv5+wTS4BnywshBCAz7YyZ3vuKapMDTgg52DsDRgBo5gGjCD98+OhtCQmw/GN2I+HsJTeAlvYRiyqzi6Cj7JcnSVXG28HF2lwtKwNeSWvK1fruFoCA1XApoPPkNxNJ8KU8PSsDWYhpwBbjI72lKF0HAloC3hDr2jLVWYGnIGuDftaEv4TMDRlipgBtjXaEsVMAPseLSlF9CWKgwNU8PSsDWYBtdwNOgMXGdwdAZHZ3B0BkdncHQGR2dwdAZHZ3B0BkdnEDqD0BmEziB0BqEzCJ1B6AxCZxA6g9AZXJ3B1RlcncHVGVydwdUZ4EIJH6c4LpQqhIbLcHChhAvZgwulClPD0rA1mAbXcDSEBFxP5armddCl8FnIQZeqgNE2wtEQGq4EXDVVGBqmBngMQY7Pmbp30KsqDA1TA/aOI2wNpsE1yBlyls5gyRly9k/D0DA1LA1bg8lEt2s4GkKD7gP0KrwjOuhVFbBH4UGvqrA1mIacAT6NOehVFULDlYBeVWFomBqWhpwBPqA56FUVjhx6tCe8TT5oTy+gPVUYGqYcxqOH/uihP3rojx56tKcKoUEPvbano+3paHs62p6Otqej7eloezrang6aED6KOmhCFaYG7F7sNzQhfPp00IQquIajITRchkATqjA0TA3wHATXcDSEBnhySwNv6ioMDVMDLpsvwtZgGlzD0RAaroT50zA07FqSk6uhC52Ybwp+4BC+ZPQrfIwX6FcVpoalYWswDZ8cu/HrVoVBzE1zuNGpKgwN3yViLrlbWP9cvIVN2IWPcAhfMpYjPR7C4jXxmnhNvCZeE6+J18Tr4nXxunjRlPKPMFagKVUwDXku+fudoyHPJXx8GuhQL6BDVUg/zpR8C1i8hLewCbswDFnlgT6DT2sDfQYf0Ab6TAXT4BqwJTidcBlU4UpAB6owNOQM8AFBoANV2BpyhQ52Zb6vKz7CuTLo/fvbjGXSxUN4Ci/hLWzCLnyEQ1i8aEb4HPCiGeGzgotmVGFp2BpMg2s4GkLDlYBmVEFnMHUGU2cwdQZTZzB1BlNnMHUGuL7CxxAX/arC0DA1LA1bA2YwEVzD0YAZOMKVgK5VYWnItUaYNNYaPQ7hS8Zao8dDeAovYWzHQcjtwEdKF9dIFY6G0HAl4BqpwtAwNSwNW4POwHUGrjNwnQHaET7uumhHFYaGqWFp2BpwLAPBNRwNeX/mgi/5fUk6eAhP4SUMNw4GWlgF14Ctx+mGFlbhSkALqzA0TA3YepyVaGEVTANmgBMRF1EVQgNm8J1C+4dLpfx/dq7AziWHO9dfF+Yv559W7B+ujF5AM6owNEwNS0NO/2JoNKMKruFowAwwSTSjF9CMKmAG2DA0owpLA2YQCKbBNRwNmMFF+GYwftiebDkjPwzYuUabYWswDZ5hIZwMGyEyYHsWPJh1tpwOQ8PUgBlg1ntrMA2uIWeQt7t3PiT2e/5mhnwXNwYmmu/ixsAhyXdxY2CAfBfXYWswDa7haAgNmAH2tf806Mn6mtILW4NpcA1HQ0onDmM2pQrZlDrkZk/skGxKHZaGrcE0uIajITRcCfHToDMInUFgBjgksTWYBtdwNIQGzAD7+v40DA1TQ85g4dzJ1tTBNOQMFmadrQmLZ3cu+WbIGeRL3c5F3ww5A3SkXPbNsDRsDabBNRwNoeFKGD8NOoOhMxg6g6EzGDqDoTMYOoOhMxg6g6kzmDqDqTOYOoOpM5g6g6kzmDqDqTOYOoOlM1g6g6UzWDqDpTNYOoOlM1g6g6UzWDqDrTPYOoOtM9g6g60z2DqDrTNA58sb4juXgzNcCWiDFb6rhHwDtrEivHgJb2ETduEjHMKX7NjAg4C29gI2IxCOhtBwJaCtVRgapgbsrough+XoTgndKWhRFaaGPCy56n0PtKgKpsE16IkROoPQE+PqiXH1xLh6Ylw9MV6Lwtxei3rBNeiJgRb15oYWhTDRoirIDKa2qKktamqLmtqipraoqS1q/uTUnD85CnP8NAwNU+Y2loatQWegLWpqi5raoqa2qKktamqLmlPOg/la1Atbg2mQ82CiRVUIDToDbVFTW9TUFjW1RU1tUVNb1NQWNZecB3PpUVh6FLYeha1HAS0qP8HYEy2qAo7CRDANruFowD7A3NCiXkCLqjA0TA1Lw9ZgGjADbAKu1Cp8ncrwr3ywUUy0qrzHv3OpOMPWYBr0YLsebNeD7VpyR0sOTayCnvBHD/bRg330YB892EdPeG188+jpFnq6hZ5ur70FgmlwDdhS7De0N8Os0d5eQHurMDRMDUvD1mAaXANvZuz1+2kYGqaGpWFrgGciuIajAVu6EK4ENLEK2NKNMDUsDVuDaXANR0NouBLQxCroDKbOYOoMps5g6gymzmDqDKbOYOoMls5g6QzQxFBzC00sP6bYC02sgmlwDUdDaLgS0MQqDA1Tg84gb8ajOWGZebELfxc6Gwc3b4MVX3LeBkNjxALz4im8hLewCbvwEQ7hS3bxunjRs/KTnb3QmfJjib3Qmfz9sysBnanC0JCjOTYVXcZxbNFlKlwJ6DIVhoapIY+GoxDRfyqYBtdwNISGKwH9pwJmgCOK/lNhadgaMAOcKeg/FfLO6Bs5hG8znhZcPIQhD4SU5/38vXFlVcE0uAbccAHn1uf93r3Rk15AT6owNEwNS8PWYBpcw9GgM0DneduGXpF/fbM3esUL6BUV8rTFr+T67eIlvIVN2IWPcAhfcv4pSrF4t3i3eLd4t3i3eLd4t3i3eE28Jl4Tr4nXxGviNfHisiY/X9gbN6Aq5Dsw8PtWafAQnsI40oaAkXCu4inA+D/wEODHQ/gb6f3793hw8Bb+tuHNDo//fXyEQ/iS8ejfx0N4Ci/hLSzeEC/6RH4KsbE6e+RThjZWZ49AdaEbVDANriFHy5vYGyutR/5Rx8ZK6w5bg2lwDUdDHo28jb4N9f0C6rvC0DA1LA1bg2nADAbC0RAargRcc+BmJJZqd8AAgRAargS0gfzziI2V1h3QI8FLeAubcDrybys2FlYP3K7Hwur5eAlv4W8k3JHEcuviI/wZ5hNccr5vKR7CU3gJb2ETduEjLF4TL96uXEwOBZx/VrENb0rwyYPhpb9CaLgS8NYDny9glfTABwdYJd3haAgNVwJe+itgp2DWMTUsDVuDaXANR0NowAxwPuClv8LQMDVgBjgL7taAGWQR5hro74t7EIaGqWFp2BpMg2s4GkLDlTB0BlnseNeay6Cbl/Cnx1tJrIEuduHPjXtmWABdfMlZ48VDeAov4S1swi4s3inehT3rCNh/7//B/sOmLddwNISE7AIz/yRg+6v2iWAaXMPREBquBNR8rmTfWMfcYWpYGrYG0+AajgbMAEcLxf+C/zQMDZgBzhRfGjCDg2AaXMPRgBlgj/qVcH4ahoapYWnYGkyDazgadAbZZXAVjGXMxUP40x8c9uwwxVv4czvGzPZSfIRD+JKztRQP4Sm8hLeweK948wLidXasQH4vO1iBPPNPIzZWIHcwDa4Bo+VRz+cKf1+4hbA0bA2mwTUcDXk08uE/GyuQK2Sj6DA0TA1Lw9ZgGjCDjXA0hIYrYWEGF2FoSE/+dcHGOuOJz+uwzrjD0DA1LA1bg2lwDUdDaNAZ4JuBsNX4aqDHU/jT43Yb1hgXm3A29gM+wiF8ydlBiofwFF7CW9iExeviRX/Ah59YLjzx/hfLhed6/8w0uIYjITAaNhXXDXgRw9LfDqbBNRwNoSGPBm71YFFwh6FhalgatgbT4BqwPTiiNzRcBiwK7oAZLISpATMwhK3BNLgG7IODEBquBFxrVBgapoalYWswDa5BZ5C95GBDs5U8zk5SnI39gqfwEs7GjjGziRS78BEO4UvO/lE8hKfwEhbvEi+uQlC6WBE8cdc60FNyqf4O9JQKW4NpyNFwazlwrYHbqoFrjQpLw9ZgGlxDHo1cZb4D1xoVrgRca1QYGqaGpWFrwAwmgms4GkIDZoA9+v9re7tdaXokO+9e5rgPkn8RpG5FEIT2eGwM0JgRRiMDhqF7dxZXklxv7a+ioiq5T7rj+d5dwf+VTDKShJYMQDpoe2jJgMIgDMpQGXo6WBqtUJkBvaRYAEVI8ISeA6wRIiR4Qs8B1kkREjyh5wDrLQgJnoAcYIhCfwYgB6hE6M8A5AAVAv0ZgByg80F/BiAHKDb0Z0DPAaZPDfozoOcAk6YG/RnQc4BVvwb9GdBzgLW9Bv0Z0HOAFZgG/RmAHPRiI0J4AnIggMjQ51jw3OVn2IVsIVvJrmQj7V59iA2eEBh62ljwQWzwhMxQGIRBGSpDI8AsZkBg4BwkzgHeiLAqgzjfiMUoxPlGrCU1aNGAyJAYMgOXJ3N5Mpcnc3kyl6dweQqXp3B5CpencI0WzkHhHEClrmJDi65iC5dHuDzQogHCoAxcHuHyKJdHuTzK5VEuj3J5lMujXB7lGlXOgXIOoEVXsaE4V7Erl6dyeaA4AxpB4x7SuDyNy9O4PI3L07g8jcvTuDyNy9NWecpxHAyBITKUWeyCkF4UuyCkF0UoCOmdEBgiQ2LIDEgnA4ThUZ4rza4gw27L7gIybKRRAPAkgIendv1VJbstuwtBQ566Dgw7kv1IoaFK+nRk2IVsIVvJrmS3ZXfJGHYgO5JN6WZK99IE7XCN/AboLdHQlBj5AxJDZujerurALOQqN2YhAyJDYsgMhaG3RkPTYOQPqAyNACN/QGCIDIkBOUDtYOQPEAZlQA7QUzDyL8D8pK+rFgTVTogMiSEzFAZhUIbK0Aga56CrRUP7drEYdiL7TD4daM+HUkxbyO698vJZyW7TRiztsAPZkexEdia7kC1kK9krXQTKXgVAOGzqq8IF4bCpB8EXhMNOUIZKgFXTHh5fENqa+jpuQWjrBGFQhsrQCLpEpB44XxDaOiEyJIbMUBiEQRmQgwRoBPlgCAzIAWo0J4aeg4Da6fOLCT0H4XLQcxBQb4/5RQpohMf0YtgPjZl2IDuSncjOZBeyhWwlm9ItlG5Xo9Q3n04IDJEhMWSGwiAMylAZGoEiB2ggDQyRITFkhkLQ9SNFFK7rx4TMUBiEQRl6riMatevHgIbfoIWbMlQG/Kb3csSoTggMvZUr7ER2Jru3coMtZCvZvZUVdlt2OMgOZEeyE9mZ7EK2kK1kU7qB0sXmSl9yLYguTRGlgUpEZBsqMaAyNAJoQV/9LIgUTf07hoJI0QnKUBkaAUb8gN4afZGvIFJ0QmLIDIVBGJShMiAH/XGBSNEJgSEyIAfoKSUzIAeo0f5GkfL1G2WoDI0Ao39AYIgMiSEzFAbOwWP0j9p9DP5pt2U/hn7qy8elB5BOO5L96JZXmz+G/bQL2UK2kl3JbsuuB9mB7Eg2pVspXehDBjTUH3LaUH9o6BYZEkNmgLc+QBD+mfqiYkH454TIkBgyQ2FAazSAMlSGRhAOhsAQGRIDclAAhUEYlKHnoC8mFoR/DsDovyoEo/8CzBEGBIaet77MWBB8OeoAujBAGZCDCGgE0IUBPZ2+aFkQfDkcZG6FzK2QOQeZc5A5B9CFAY2gcD8o3A8K56BwohjwfT20JAz4AY0AA76g3jDgB0SGxNDTKUgHA36AMCgDctCVCRGYqaC74KE+IDH0dAT9AA/1AcKgDJWhEfRXjAk9B4IeginCgMSQGQqDMChDJcCoF3SXBgeoeMwXBihDZWgLMvRgAIoggMiQGDJDYRAGZagMyEFvRoReTggMkSExZIayGhihlxOUoRIgUqNHWZeMkAzUaMZLx4DCIAwoXO98iNAclQjZGBAZkA5ygFeLAYWhp9MXlUtOyg4qAzdj5hxkzkHmHEBQBmSGwiAMnIPMiRaaK+VrBnFBZigMKNwFNFfKcjAEhp6OXpAYMkNPR9E+IuxAGSoD50A5B8o5gKAMSAyZoTBwDpQThVIoKhFKMSAxoHAYMlCKAcKgDD0dxcDAy8QFmEYMCAzIAboyBEXREyEoA5QBkUjooxAUAE7VnRAYIkNiyAwIhAoAYVCGytAIICgDAkNkgOsEgINe8eUK47ogMESGxJAZUAQBCIMyVIZGAEEZEBgiA3KggMxQGIRBGSpDWw2Mw3cnBIbIgD5aAEo1iqnHgEaAqccAFK4CuBIhGwOEAekgB5iHDGgEEBQsj+JU3eFAuBmFm1E4B8I5EM4BBGVAZeCOpNyRlHOgnCiU4rhAGSpDI8DUA4ugiA291rkQGzqhMPR0sESM2NAJlaGng7VfxIYOB5CNAZGBc9A4B41z0IRBGSoDrdshnnRCZOiueyBvQaDoBGVA4QTQCKAUAwIDIkUVkBgyQ2FADioA6fSeeMWFDggMPYAIS7sIDZ2QGQqDMChDZejxS1iLxYG6EwJDZEgMmaEwCEGG6wSAA1R8zgyFQRiUoTKgCGgSxH4NCAyRITFkhsIgDMgBmhExYAMaAaLABgSGyJCogSEoAwqDMKCPol9roBrVyJAYMgMKh86nXInaCOrBgHSQgxoZEkNPJ6BXVW7Gys1YuRkr56ByDhrnoAWGyMAdqXFHapyDRoninNprCwzn1E6IDIkBhQsA7OskQGVoBF02MpbhcU7thMjQixCu32R2UBiEgXMQOAeBcxAPhsAQGRID5yByolAKbB4gMHRCYEDhBJAYMkNh6D0EK7U4znZCZWgEEBSsSCOYNGPpGcGkEwpDT6fHBBcEk06oDI0AgjIgMESGngMs1l8BpQMKgzAoQ2VoBBCUAXCNJkFwaETFS2VoBHowBIbIgCKgSSAbAwqDMChDZWgEEJQByAGaEYIyIDFkhsIgDEoNDEEZ0AggKAPQRwugUI02YVCGyoDC9c6HINKrEhFEOiEzIJ0GEAZl6OlgwR1BpMNBOBgCA+cgcA4C5wAfrQwQBmWoDJyDyIli6oEXdgSJZry5Ikp0gjJUhkYAQRkQGBBjIoDEkBkKgzAoQ2VoBHnFABVEkmYs/COSdEJhEAaUFLUDQRnQCCAoAwJDZEgMKCkqpBQGYVCGytAIEPcxIDBEBooOQozpKCl0Z0BlaATKJVUuqXJJlUsK3RlQGISBS6pcUuWSVi5p5ZJWLimiOwZwXVeu6yviCxVSuaRQlwGBITJwSRuXtHFJG5e0ca9q3Ksa9aorxhQZvWJMB0SGxJAZCoMwKAPV9RVJigpBJOlVUkSSTsgMhYFKimjSCZWBSxoPhsAQGbikkUsauaSRSxq5pJFLGqlXjXjSC7iuoUjYpMGJshOEQRlQ0v4wuuJJsUVyxZMOSAyoUQEUBmFAjSqgsoNGgKiyAZyDwjkonAOKhy+N4uFLo3j40q54+As4B8KJ4qsYbB8juHRCYeiFw7YugksnVIZGABHCLimCSydEhsTQc5DRppjiYGcVIaQTGgGmONhMbZjiDIgMiSEzFAZhQA7QQzDFGdAIIEIDAkNkSAyZAa4f3UUQNZr7JxeCqNEJiSEzFAZh6EXoO6uCSNMJjQBTnAGBITIkhszQc9A3YAWRphOUoTI0AqjLgDAbWHB47ITEkBkwABugUY1iijMgMEQGFC4CuBLxZjSgMqAIyAHejAYEBlRiBnAzZm7GzM2YOQeZc5A5B5jiXIApzgDuSIU7UuEcFE4USnFVIuYuF8jBEBhQuAJYX63JFZk6QBnQDwTQCCAbA1CJaB9Epl4ONDFkBs6Bcg6Uc6CVoRFg7jIgMHAOKicKpSioRCjFgEYApRD8BkoxIDIkht5DBAMD05UBwqAMPQf9Qx5BiGnuG6OCGNMJiQHpZEBhEAZlqAyNAIIyADkogMiQGDJDYRAGZagEUIq+7yyISM19C1gQkTpBGSpDI4BsDMBnpQcgMiSGzFAYhEEZKgM+a+3NiIjUCYEhMiSGzFCogSEoA5ShEkBD+ka8BCjFVaNYXRlQGIQBhUPnE65ELMoOiAwoAnJwfZ57QWFAJaJXCTejcDMKN6NyDpRzoJwDzEMGZAbuSModSTkHyolCKSK6Jd5yBmSGwoDCXYCvwbsM4mzVCYEB/eCCxJAZUIlonybsQBkqA+UAcasTAkNkSAyZoTAIAyWKQ1Nz3+wWHJo6ITH0wvUdacGhqROEQRl6D+nvTIJDUwdg6jEgMPQc9HcMQfBq7hujguDVCcqAdDKgEUBQBgSGyJAYMgNyUADCoAyVoRFAUAYEhsgA1wqAA1T89YX/BYEhMiSGzNCL0NAkkI0BylAZGgEEZUBgiAw4ZgDNCEEZUBiEQRkqQ6MGhqAMCAyRAQOwAZRqFO8yAxoB3mUGoHDofJUrEW8sA4QBRUAOMA8Z0AgwD2noVY2bsXEzNm7GxjlonIPGOcA8ZEBloI6EQNcJgSExdKXo+z+CCNYJlaERYOrRN+sEcao460YQpzqhMKAfCEAZKgMqsbcPjikdDrDLMyAycA4i5yByDrAeMkAZKkMjSJyDxIlCKRoqEUoxQBkerkvfkRaEwA7oSjEhMMQOqOs+9ZiQGQqDdEDeMtLpPRGBrhMCA9LJgMSQGQqDMChDZUAO0EPkYAgMkSExZIbCIAQK1+guCgeoeM0MhUEYlKEy9CIENEmXjQmBITIkhsxQGISh5+AaWV1QJjSCdjAEhsiQqIFbZigMwoAB2HUUIbBXjSIEdkJiyAwoXARQJSLQdUA4GFCEBIgMiQGVmAGFHQiDMnAOAucgcg5iYIgMiSEzcA4iJ4rTCSFcCIGdEBkSAwpXAPpP4xg8ydcJhRc0AshG310WBLpOiAyoRKSDs9eHg8IgDJyDzDnInAOcvT4gMESGxMA5KJwolCIAoBQDAkMvXN+RFoTATsgMhaH3kL67LAiBnVAZGgEEJaIrQ1AieiIEZUBhQDrooxCUAZWhEUBQBgSGyIAcoIdAUAYUBmFQhsrQCCAoA+Aa3aXBASq+VYa2AIGuEwJDZOhF6Lu+gkDXCYVBGJShMjQCCMqAnoO+aSsIdJ2QGDJDYRAGXQ2MQ00nNAIIygAMwAYoq0YRAjtBGSoDCtc7HwJdRyWmxJAZUATkIAmDMqASM4CbMXMzZm7GzDnInIPMOcA8ZIAwKENl4BwUThRTj75nJAiBLX3LRxACO0EZKkMjgKAMCAzQKrQ2LnAYkBkKgzAoQ2VoBIqeiMJBUAZkhsIgDMpQGRoBBGVAYOAcVM5B5RxUzkHlHFTOQeUcVM5B4xw0zgFOUcVLfrmOTL4gMxQG5ACD6ToyuXdlxMNOCAy9pFgwxvmqEzJDL2nfEBOhw5RF6DBlkesw5Qs4B4FzEDgH12HKFySGzFAYOAeBE8UMpW/WCSJlJyQGFC4DCoMwKENvxr47JoiUHdAnMhMCA3IgAKSjAGFQBqRTAY0AujMgMESGxJAZkIMGEAZlqAyNAG9GAwJDZOiusW+GeNiCLSzEw04IDJEhMWSGXgTsWiEedoIyVIZGgOnKgMAQGZADNCN0Z0BhEAZlqAyNGhi6MyAwRAa0HPo1BOWqUQjKgEYAQRmAwqHzNa5EvNgMEAakgxxgIjOgLUDYbMEGEsJmLwcIm52QGDJDYRAGZagM1JEQUDuBcxA4UcxQsHGASNmCLSxEyk5oBJihDAgMkSExdK3CyjZOWp0gDMpQGRrBdX3DBYEB6SRAYRAGHdcYiK6rGkTXVQ2i66oG0XVVg+i6qkF0XdUguq5qEF1XNYiuqxpEM6WbKd1M6RZKt1C6hdItlG6hdAulWyjdQukWSrdQukLpCqUrlC5mNdj2QnTthN5hsR2FM1knoFcVQGVoBNAdQTNCdwY8MoBN+R52O+1MdiEbaWAkQj+ww9PjZ4Ogs/cbG4adyX54ugqFGxsuW8l+VOHw2Zb9kJdpB7Ij2YnsTHYhW8hWsindttJFUG1BARA6W7CZiNDZgn09hM5OqAyNAG862LBDGGzBBhfCYCcoQ2VoBFCLAb01sKeF81QnJIbMUBiEQRkqA3LQ+wOiZScEhsiAHKBG8UI0oOcAW1KIlp2gDJWhEWBiMiAwRIbEkBk4B11QsN7Tw2inXcl+9A6sh/QY2mkHsh+9EovkPYB22pnsQraQrWRXstuyu6AMO5BN6QqlC9XALh5iYwtmrYiNLdhQQ2zshMiQGOANrjG/wB4N4lwnBIbIkBgyA1oDww3vNQOUoTI0AkxDBgSGyIAcYOhggjKgMAhDzwE21BABewECWAu2phDAOkEY4CABKkPfxugVep2RetmB7Eg20sgAeCqA/iVfb2hEqA47kN0/F0Se8FnwZWey8SEkbCFbya5kt2VfZ5fBDmRHshPZmWxKN1G6GPTozghILRhrCEgtWBBHQOqEwiAMD2+C3RgElwp2YxBcOiEzFAZhUIbaAU1TGkF/AZkQGCJDYsgMhQE5QO2IMlSGRqDIAXqKBgbkQAGJITMUBmFQhsrQCOrBEBg4BxAINDb04bIL2XhewVayK9mYt3f7ekGBHciOZCeyM9mFbCFbya5kz3T1OA6yUbMV0OuvbywpAlOl7wspAlMnNIIuDhO6t773oggylb73oggynVAZGkE8GAJDb42+PaEIMp2QGQqDMChDZWgECTmIgMAQGRIDcqCAwtA3jQ9UCELYD1Q8QtgHJIbMUBiEQRkqQyO4roy6gHOA40ca7ER2Jhsfi8IWspXsLrroQdcBAt3G+QGXHciOZCeyM9mFbCFbyaZ0hdJFGOqB5kSw6dW/EWx6oGgINh1QGRoBAsWu/l1XQIBeR5oOUIbK0AjawYCQBPRvHIA8IDFkhsIgDMpQGZCD3lo423RCYIgMyEEBZAbkQAHCoAyVATnoNYrI0wmBITIkhsxQGIRBGSoD5wCXPqCguPThsiPZj+T7i5XiINVhF7K7vlw+lexKdls2tOWyA9mR7ER2JruQTekmShcHsEcUAJrStyIVQae4skfDdQPdBcKgBFCOiFYvK3BQEWc6oTAIgzJUBoQu9lGJCNQJgSEyJIbMUBiEATnIgMrQCHDY8gDkADUKLRnQ00lo++uSGFQVgtAHRIbEkBkKgzAoQ2VoBI1zcMWIwY5kJ7IRZQe7kC1kIzYYdiW7TRuxpsMOZEeyE9mZ7EK2kK1kr3QRb4qbfRRRpbjZRxFViit7FFGlE5ShEsT1WcQJ6/sARezoBGFQhsrQCBDq1bdUFLGjEyJDYsgMhUEYlAHlqYBGcF0vdUFgQA4SIDEgBwVQGIRBGVAHqFHMNS6AYgwIDJEhMWSGwiAMysA56FqiKGiXkmEHsruwo9m7jgw7k92FHT67iAxbya5kt2V3ARl2IDuSncjOZFO6Sulen7ygANCUgq4GTekbG4q40wmFQRjwWSNava2PFxUxpBMyQ2EQBmXAx4sYlZhrABBDOiEwRIbEkBkKA3IQAcpQGRoB5hr93UtxWOoEzNkboDAIgzJUhkaA9xY8eRFqOqE/23t4kCLUdELPAR7QCDWd0HOAxzBCTSf0HOBJhVDTAZhb4GmNo1cnIAeoREwvBiAHqBBMMAYgBxWgDMgBip0aQdcfSSh2158JPQd4cCIidULPQUKxu/5M6DnA0w2Hsk7oOcAjAbGqAwpygGKXwIAcoNhYURnwyEFFqbv8DFvIVrIr2W3ZWEtJFwSGyNDTxjMDUaoTCoMwKENlaARYSxkQGCID50A5B1gxyWgZrIvgoYOQVcEzAyGrExJDZigMXJ7K5alcnsrlaVyexuVpXJ7G5WlcnsY12jgHjXKAI1yvYiNK9So2olSvIiBKdYIwKENloPIgfnVCYIgMiSEzFAZh4PKEysA5iJwDaNFVbCjOVezI5YlcHijOBVCcAYGBy5O4PInLk7g8icuTuDyJy5O4PJnLk7lGM+cgcw6gK1exoR5XsQuXp3B5SmRIDNxDCvcQrMf2cJkTlKE+biO5/qot+6Eg0w5kI40CgCcBdE8Vdlt2P7N92N1Tgx3JTmTnh62wC9lCtpJdyW7L7me2DzuQHclOZFO6ldK9NAFwjXzkFCMf86CMkT8gMxSG7g0TAgSaCuZBCDSdkBgyQ2EQht4aWEpFoOmERoCRPyAwRIbEkBmQgwAQBmWoDMhB7ykINJ2AHFRAZEgMmaEwCIMyVIZGALUYwDl4qAUu2dAeqDrtTPajd2DW0qNUp61kP3olZkM9RHXYD5WYdiA7kp3IzmQXsoVsJZvSzZQuVKOH2yhCUUXQNNAGQY+ENgyoDI0AswiBa8wVBHWDucIAZagMjQBzhQG9NXoMhSLgdEJiyAyFQRiUoTIgBxg6mF8MCAyRATlAT8H8YkDPgaJ2ML8Y0HOgl4OeA0W9PeYXuJhDe7zptAPZkexEdia7kC1kK9mV7JVujz+ddi93D2dShJ9OSAyZoTAIgzJUhkYANRqAHCggMiSGzFAYhAD60Xf1FXGlEwqDMChDZei57gG9irjSCfhNAlSGRoD5QUVdY34wIDI8WhmTgB4iOu1C9qOV8+VWya5kP1oZM4seHDrtQHYkO5GdyS5kC9lKdiWb0hVKF+8aFQ0NlehfbSrCQ6VHHijCQyc0AqjEACxMwzVGfEPdYMQPqAyNACN+QGDA+ncGJIbMUBiEQRkqQyPAG0UPkVBEhE6IDIkBOUBPwbxiAHKAGu1vFHpcv6kMbQFiRScEhsiQGDJDYRAGZejdo8Fuy+6XTA370S0xR+oHr047kd27ZYVdyBaylexKdlt2PMgOZEeyE9mUbqR0cZ12D5NQBIMqZsk4XVV7KILidNUJmaEwwFsfID3s8wQFRIbEkBkKgzCgNVDTuTI0gnIwBIbIkBgyA3JQAMKgDJWh5wAbfThDdUIPKUUJsAaKrUrEdU6oDI0A66ADAkNkSAyZoTBwDpRzoJwD5RxUzkHlHFTOQeUcVM5B5RxUzkFFDtD3KnKAflQbQTsYAkNkSAyZoTAIgzJwDnqAKJ569aEx0w5kP0LxesCc9sNYp53JfnQAPGR7OOm0lexKdlt2OMgOZEeyE9mZbEo3ULoBNdv7LWJIFVvK9dqfrYDMUBiEoXvDwiziQRVrsYgHnZAZCoMwKENvDazSIh50QJ+ETAgMkSExZIbCgPI0gDJUhkYAkcFbCc5VnYAcCCAxZIbCIAzKUBkaAURmQGDgHPQJC0Sq9lWPYReyH8kf198r2ZXsR9rQeISTDjuQHclOZGeyC9lCtpJdyaZ0K6ULtcHSOmJIFWvmiCFVLJMjhnRCI4CmDOjesEyOeFDFyjjiQSdUhrYAJ6JOCAy9NfByghNRJ2SGwiAMylAZGkFADgIgMESGxIAcCKAwIAcKaAQI9BiAdBogMvR0sECImNMJhaGng8k1wk4nVIZG0F9bJgSGyJAYMkNh4BwkzkHiHCTOQeYcZM5B5hxkzkHmHGTOQeYcZM5B5hxkzgH0By9SOEV1QmRIDJmhMDweRVc/gq5gKCCAdUJkSAzwjA4vNGIQpjqBRwzmNVi/RZjqhMiAEiBvmNcMB4VBGDgHyjlQzkHlMVt5zGJeMyAxcA4qJwpxwSoywlAnBAYUrgISQ2YoDOggGFgQpAGVoU2oCEjV/spREZGqfRGz4hDVCYWhp9NXdStiVSdUhkYA2RkQGCIDcpAAmaEwCIMyVIZGAEEaANcFAAcCqAyNAHoyIDBEBhShAjJDYRAGZagMjQB6MgA5QDNCTwYkhsxQGIRBqYGhJwMaAfRkAPqoAgrVKCYqA5ShMnTXgs4nXImQjQGZoacjyAFelAYoQ09H0KuEm1G5GZWbUTkHyjlQzgEEZYAwcEdS7kjKOaicKJQiog7wBjRAGJQBhUNXhmxEFLtFhsTQ0+mL2BWhrBOEAZWI9oFsDAdtAUJZJwSGyJAYMkNhEAZloBwgenVCd90/XayIUZ1QGFC4ClCGytAIoBQ9sLNeQaoDIkNiQFjRAUDcEjIKQRnQCCAofeW8Iih1QmRIDJmhMAgDcpAAlaERQFAGBIbIkBgyA1z37hIwv1BUPMRhQGLIDIVBGFAENAlkY0AjwDxkQGCIDIkhMyAHaMYr+uwCZagMjeCKQLsgUANfMWgXJIbMgD6qgEY1iqnHgMAQGbrris5XuRIhGwMqA2L3kAPMQwYEhp5ORa9q3IyNm7FxMzbOQeMcNM4BBAWAwNYJgSEyJIbCsBYUT2gEkI0BgQGFS4C1oFgR1DpBGXo6fc2m4qjUAZCNAajEAojkICaGzMA5iJyDyDm4FmIvaAQQlAGBgXOQOFEoRUWFQCkGNAIoRd/DqIhwnRAZEkNPp+9hVES4ThAGZeg56BsAFXGs2vc9KuJYJyQGhJJGQGEQBmWoDI0AgjIAOUAPuUJZL0gMmaEwCIMyVAIoRUN3wQSjoeIhDgOUoTI0AsjGABQBTQLZGJAYMkNhEAZlqAzIAZoRgjIgMESGxJAZCjUwBGWAMtQFiHnVHhRYEdl61SgiWycUBmHowYZ9H6cifvWqRMSvTogMqf8GOejzkAmFocc09s9CKyJbp4PKQM2IyNYJnIPIOYCgDMgMhUEYOAeRE70+iEGuU2LIDIUBhUuAtfFYr8DUAYEh9t9kQGLIDKhEtE8WdqAMlYFzUDgHhXOAIJEBiSEzFAbOQeFEu1JUPFgQdzohMaBwFVAYhEEZetxr33WqiDsd0KceEwJDz0FAV+6CUgMaqwvKBGXo6QSUpwvKgC4oEwJDZEgMmQE5QA+pwqAMlaERtIMhMEQGuEZ3aXDQKx6hphMCQ2RIDJkBRagAYVCGytAIwsEQGCIDctAAmaEwCIMyVIa2GhhBqBMCQ2RAH1WArhpFROqERpAOhu4aL6uIOx2VmAqDMPR08HKHuNMJjaALSu3B+hVxp8NB5mbM3IyZc5A5B5lzkJWhMnBHKtyRCuegcKJXoFkGKENlaASCwiUAwq9QowhEHVAYehHi5UAZKgMqEb+hELSarxC0CyID50A5B8o5UGFQhsrQCCrnoHKiUIqISoRSDFAGFA5DBkpxAZRiQGDoPSRiYPSpx4TMUBh6DhK6MgSlb4pUHKI6ITD0dPqad0Vs64TMUBiEQRkqA3LQewhiWycEhsiQGDJDYRACKEVf6q8ITa19x6ciNHVCYRAGZagMKEJvEoSmTggMkSExZIbCIAzIQQNUhkYAQRkQGCJDogaGoAwoDMKAPtp1FEeljhotkSExZIbuum+BVcSnjkrE5y8XQDYG9HQycoB5yIDE0NPJ6FXCzSjcjMLNKJwD4Rwo5wDzkAGRgTuSckdSzoFyolAKbA9cwaoDIkNiQOHQlRGgVi6oDI0AstF3kyrOQJ0QGVCJaJ+W2UFhEAbOQeMcNMoBTkedEBgiQ2LIDMLQ26fvJlXEnU4IDChcBSSGzFAYeg/BBpJg6jGgMjQCCAr2mRCrWrGLgFjVCYWhp4M2RazqhMrQCCAoAwJDZEAOUFUQlAGFQRiUoTI0AgjKALguADhAxUMcBjQCTDAGBIbIgCKgSSAbAwqDMChDZWgEEJQByAGaEYIyIDFkhsIgDEoNDEEZ0AggKAPQRxVQqEbxLjNAGSpDd419JkS8jkrEG8uAzNDTwW4SIl4nKENPB/tMiHgdDho3Y+NmbJyDxjlonAPMQwYIA3ekxh2pUQ4Q5Dqhu8aeEUJZK2adCGWdoAyVoRFAUAYEBnywhUSvD+ouyAyFQRiUoTI0Anw8g6cZzkCtmEHiDNQJhUEYUNLLW2VoBBCUAYEhMiQGlDQCCoMwKENlaATXp3YXBIbIUKhCMpcUujOgMjSCwiUtXNLCJS1cUujOgMIgDFzSwiUtXFLhkgqXVLikkhi4roXr+vpcFxUiXFKoy4DAEBm4pMolVS6pckmVe5Vyr1LuVZVLWrmklUtauaSVS1q5pJV7VeW6rlzX1+d8qJDGJW08fhqPn8bjp3FJG5e0cUkblbQeB0NgiAxU0npkhsIgDMpQGahX1XAwBIZHOjiZoeIE1gnCoAyPdHAzdsU5qziMoSJGdkJiyP03KCmuyhsgDNpBAZUdNAIcdzKAc5A4B4lzcN0BfkFhEAZl4BxkThSXauI9q17Xfl9QGHrh8PpSr1t6L6gMjeC6pTcAAkNkSAw9B1eb4ng0zP0RFjuhEeCqPEzqERY7ITIkhsxQGIQBOUAPue4Av6ARXHeAXxAYIkNiyAxwje5yXe6Nir8u974gMWSGwiAMvQiYrdfryt4LGgGuyhsQGCJDYsgMPQeY5iGedoIyVIa2APG0E8Jq4HbdDn5BYsgMGIAN0FaNIlB2QmCIDChcBFAlNlyVN6AyoAjIwXW59wWBAZWYAdSMLWaGwsA5iJyDyDm47gAHXHeAXxAYIgPnIHGi18FIqMTrYCTAdTDSBYEBhSuArkiQgHYdf3SBMqAfCKARXBfzXoBKRPtcxx/BwXX80QWZgXNQOAeFc3Adf3RBI8BRagMCA+dAOFEoBd6z2nXt9wWN4LqlF7+5bum9IDIkht5D8JLSrlt6LxAGZeg5wLsMAl1x73FFoOuExIB00EchKAOEQRkqQyO47gC/ADlAD7nuAL8gMWSGwiAMylAnnBIC1wqAgwoQBmWoDI3gutz7gl6EHhXWjuvK3gsSQ2YoDMKgDJWh56CHEzUEuk4IDJEhMWSGMhu4Hdft4BcoQyWAhvSX/IYQ2FGjuKV3QGEQBhQudshcibiLd0BkQBGQg+ty7wsKAyoxA7gZMzdj5mYsnIPCOSicg+sO8AsyA3ekwh2pcA4KJ3oduohueR26eEFmKAwo3AVdkfoWSTuuoxUvCAzoBxckhsyASkT74ADX4UAZKgPnoHIOKufgugP8gsSQGQoD56ByolAKRSVe135fkBh64SqGzHVL7wXCoAy9h1QMjOuW3g7huqX3gsDQc9Bj5hoCXXHvcUOg6wRlQDoZ0AggKAMCQ2RIDJkBOSgAYVCGytAIrjvALwgMkQGuFQAHveLDdbn3BYEhMiSGzNCL0KPCWriu7L1AGSpDI4CgDAgMkaHnoKEZISgDCoMwKENlaNTA1+3gFwSGyIAB2ABKNYp3mQGNAO8yA1A4dD7hSsQbywBhQBGQg+ty7wsaAeYhDb1KuRmVm1G5GZVzoJwD5Rxcd4BfUBm4I1XuSJVzUDnR63hotMJ1PPQFlaERXNd+oytfh0CjEq9DoC8oDOgHAlCGyoBK7O0Tr0OgIyAwRIbEkBkKgzAoQ2VoBIFzEDhRKEWP52vxuvb7AmV4uMaV1y1et/QCrlt6LwgMsUMAJIbMUBikA/KGq2Z6jFlDoOuEwIB0MiAxZIbCIAzKUBmQg95D4nUH+AWBITIkhsxQGITguvYb3eW63BsVf13ufUFhEAZlqAy9CAFNcl3Ze0FgiAyJITMUBmHoOcDIQqDrhEaA+2YGBIbIkKiBr9vBLygMwoAB2HUUIbCjRnH5zIDEkBlQOHS+ypWIeyQuwEUSA1AE5OC63PuCxIBKRK9q3IyNm7FxMzbOQaMcIOp1QmCIDIkhMxQGSjRdF0wkQGCIDIkBq8cK6Cu0KGmiqydaoqsnGgJdKybBCHSdEBmwSt0AmR0UBmHgHETOQeQcXFdPXBAYIkNi4BwkThT7wXg3QwjshMDQC4dXnisEdkBmKAx9CR4vNgiBnVAZGgE2dvD+g0DXiveFcQLrBYUB6QhAGSpDI8C28YDAEBmQA/QQbBsPKAzCoAyVoRFgY2cAXKO7YF8Gk/or0HVAI0Cg64DAEBl6ETDDvwJdBxQGYVCGytAIsG08ADlAM2LHZkBiyAyFQRiUGhg7NgPagitSdgBaLgDKqtErBHaAMlQGFK53vivQFZV4BboOyAwoAnKAaJMByoBKFAA14xXoOiAwcA4i5yByDrBtPEAYlKEycA4SJwqlwKzmOnp1gDAoA1z3rnwdsIqZ0HXA6oDEgCJUQGEQBhQB7YPI+eGgESByfgDnoHAOCueALslqmS7JapkuyWqZLslqVzzsBcKJQinwboYQ2AmFoReuXb9RhsrQCKAUeLFBCOyEyJAYkAN0ZQgK3hcQ6DqhEUBQ8CKQISgDIkNiyAyFQRiQA/QQCMqARgBBGRAYIkNiyAxw3bsLAl0bJvUIdJ2QGDJDYRAG7RABlaER9HnIhMAQGRJDZkAOEkAYlKEyNIJ4MITVwDjEdUJiyAxouQBoVKMIMBkQGCIDCpcBXIlJGSoDioAc5IMhMKASBcDNmLkZMzdj5hxkzkHmHORGUA4G7kiFO1LhHBROtMC1AuC6SxpCYCcEhsiQGDJDYejT8Kvl8C4zoDI0ArzLDAgMkSEx9HQSEsWt3QMqQyPArZoDAkNkSAyZoTBwDirnoHIOKuegcQ4a56BxDhrnoHEOGufgulUTnQ+vPAMqQ1uASNnWv3RqiIfFlaEN8bATCkPvsHg/xXGtEypD71V48UTY7HCAy70HRAbOQeAcBM4BbvUdoAyVoRFEzkHkRPsMpeH9FJGyE5QBhcuARtB1Z0Jg6EOmf8vTECk7ITMUBuQA7QPdCcgodGdAYEA6FZAYMkNhEAZlqAzIAXoIdGdAYIgMiSEzFAYhgO5EdBeoS0TFQ10GFAZhUIbK0IsQ0SR6MASGyJAYMkNhEAbkAM2olaER1IMhMESGRA1cM0NhEAa0XH+4IlJ21GiLDIkhM6Bw6HyNK7G1BTgBdgLSUUBkSAxIpwIKOxAGZagMnIPAOcBEZkBkSAyZgXMQONHr/u8MCAyRITHAdQN0RcJrn163fF/QCCAb/YOohnjYCZGhF6F/CNP0uuX7clAYhIFzkDgHiXOApdcBgSEyJAbOQeZEoRQJlQilGBAYUDjUG5RiQGYoDL2HJKTTX3kmVIZGAEHpAYENga4toSdCUAYUBqSDPgpBGVAZGgEEZUBgiAzIAXoIBGVAYRAGZagMjQCCMqC7zugufR7SMioe4jCgEfR5yITAEBl6ETKaBLIxoDAIgzJUhrYAsa0TkIMCiAyJITMUBmHQ1cCIbZ3QCCAoA9ByCVBWjSKcdYIyVAYUrnc+hLNelYhw1gmZAekgB5iHDFAGpFMB1IwIZ50QGDgHiXOQOAeYhwwQBmWoDJyDzIli6tG/WmoIZ209WLEhnHWCMlSGRgBBGRAYulZhZRvhrBMyQ2EQBmWoDI2gv/8EROkgnHVCZigMKCk6RZeNIOjkXTYmBIbeWAWVCNkYkBlQo0iny8Z0oAyVgXNQOQeVc1AjQ2LIDIWBc1A5UQhKuSAyJAYUDkMGgjJAGJQB3QUDA4ICQDjrhMCAHFQA0mkAYVCGnk4PCGyIbR0A2RgQGCJDYsgMPQc9brAh6nWCMlSGRoAFlQGBITLAdQLAQa94BK1OCAyRITFkBhRBAMKgDJWhEeDFZkBgiAzIAZoR6jKgMAiDMlSGRg18qcsFgSEyoI8WgFKNYh4yoBFgHjIAhUPnE65EzEMGCAPSQQ4wDxnQCDAPwYYYYluHA+VmVG5G5Rwo50A5B5iHDKgM3JEqd6TKOaicKN5YsBGCcNYJlaERYIaCnTuEs06IDInhUbjj6jtdUCYIgzJUhjYgHjjedUJg6JX42CF8QGEQBmVASTOgEUBQBgSGs6Shv5Y/IDFkhsIgDMpQGRoBZOMxqX9AYsgMhUEYlADqoqgqaMhjV/EB8IZEoSEDhAHeGqAy9Hp77AydAA0ZEBh6eR4RhQ9IDJmhMAiDMlQG5CB2gIYMCAyRITFkht5yxwWV6g2CcoFwjUJQKnoVVmgHJIbMUBhQUnQxSM2AytAIIDUVOYDUDIgMyAGaEVIzoDAgB2hTSM2AyoAcoFdBahoaGFLT0CRYQ2moROjOgMzQ02moA+jOgEYA3RmAdFAHmK5cXRnTlQHCoAxtQcBNFq0AEkNmKB0EIAzKUBkaAW60GBAYIkNi6EW4coB5yIDK0AgwD7kcYB4yIDIkBpQ0AAqDMChDZWgE6WAIDJGhpwN56iGwC1BStA+kZkAjgNQMQEkrIDIkhsxQGIShlxRju4fALmgE5WAIDJEhMWSGwiAMKGkfc4iHnRAYIkN6XHt5HIDMUBiEASVNgMrQCPRgCAyRITFkBu2Joulx5+eARoBbP6G9Add+DogMiSEzFIZeo4JeVZWhMjSCdjAEBqSD8jSUJwMqQ1sQcX+OKCAwRIbEkBkKgzAoQ2VoBIFzEDgHgXMQOAeBcxA4B4FzEDgHES1XAIEhMiQG1KgACoMwKENlaATpYAgMyAEymhJDZigMyEEFKENlaAT5oKbPgSEyJIbMUBiEQRmov/UzZU9ogMiQGHo64QD0dEIACIMyVIZe0tBHVsT9wgMCQ2ToOQjIKBQpoEmgSAOEQRkqQyPAvcQDAkNkSAycg8fkR1Edj6nPMHWZZ9qKsj806jIfCjXMM1VB7T7UaZhpmXmZZZmyTF1mXWab5kONhrlSayu1hnpEn4UOhetfem3FXpYeU7sgMESG7i1GQPcWE6ARhIMhMESGxNDrPhZAYRAGZagMjQBqMyAwIAcBkBgyQ2FADgSgDMhBBfQcJFQV1GZAYIgMiSEzFAZhUIbKwDl4qA1eWXoU7jDjMs+08XrR42+HWZZ5popXqB55O8y6zDbNx1xnmGGZcZlpmXmZZZkrtbJSu24qvwC1hdxBL1IGFAZhUAKoQkLjYewnBWSGwiAMylAZUPd9cCXMUwYEhsiQGDJDYRAG5AC9uVaGRtAOhp6DjH7RLx2e0HOQUaOYwQwoDMKgDJWhLcjQlAHIgQAiQ2LIDIVBGJShMjx6JMyHCg0zLDMuMy0zLxO+e6Nm6EiugMCA2VEGJIbMUBiEQRkqQyPA29IA1FUD9LoqB6AwCIMyVIZGgLnJgF7SEgCRITFkBuQgAoRBGSpDIygHQ2BADtCTMGspqBDMWgYUBmFQhsrQqE2FW1u4tTFrGZAYMkNhEAYlYBXKmJsMiAyJASUtAFKhzCqULxUCQIUKHECFBkQG1Oj1m8wOCoMwcA4q56ByDi4VuiAwRIbEwDlonCjkpfRKLJCXAYGhu5YDkBgyQ2Ho6UgAKENlaASY5kgEIJ0EyAyFAelkgDJUhkYAERoQGCIDclAAmaEwCIMyVIZGgMnMALhWAByg4qEuAxoB1GVAYIgMvQiYXxeoy4DCIAzKUBkaAdRlQM8BpukF6jIgMWSGwiAMSg0MdRnQCKAuAzAAG6BQjUI2BihDZUDh0PmUKxGyMSAzoAjIAaY1A5QBlYhepdyMlZuxcjNWzkHlHFTOAQRlgDBwR6rckSrnoHGiUAq8jpRWGIRBGVC43pXloHcTOSJDYkA/EEBhEAZUogIqO6C3I+G3I+G3I+G3I+G3I7neji4oDMKgDJyDyIlCKbBxI1CKAYWhu8b2jEApBlSGRgClwNxd8NozIDIkhp4DvJQIBAUvIAJBGdAIICjY6BAIyoDIkBgyQ2EQBuQAPQSCMqARQFAGBIbIkBgyA1yju2C2ga0WgTgMSAyZoTAIQy8C9l0EsjGgEWAeMiAwRIbEkBl6DrBgLxCUAcpQGRoBBGVAoAaGoAxIDJkBA7ABGtUoph4DAkNkQOHQ+RpXImRjQGVAEXoOFPOQAYEBlZgB1Ix6ZIbCIAzKUBkaAQRlQGCIDJyDwIlCKbBBpJh6YOdHIRsDAkNkKAzwpoBGAHHAHopCArA10YNfz2WjA9AI+kCfEDoEQGRIDJnS6QN9/oswKENl6G9geM9S7OIMCAyRgesA84Or2JgfDODaEXhDdxGUJwJQnutfMkNhEAZlqAyNQFGj6JYaGCIDcoBOocgBCqfIAYqgyAHqWvs7bb4cVIZGUHu9YQ24H/l6OkAl9rEdsArdj3xdIAzKUBkaQZeACb2kWKzuAbMLEgNygLw15AD11pADFKEhB6id1ks6/qwtqNjfGdBXCdDFKnZxBhQGpKMAZUBJG6ARhIOhlxRLtj1GdkFi6CXFtKhHzy4QBmWoDD0HWFetXSkmBIbIkBgyQ2EQBqTTO1/FHjFGSY+EPf8FtZOEQRmQ6wpoBFCXiHqDugyIDD3XWFftAbMLCoMwKENlaAR9GhGwvtkDZhdEhsSQGQqDUO0UpAOQgyEwRAakgw4L3RlQGIThMeoVktbPf13QCPoe8YTAEBkSQ2ZAjWZAZWgE9WBASdGRamRIDJnhMRoVy4E9YHaBMlSGRtD3iCcEhsiAGr1AGJQBJUUdtLagR88uQEkrIDKgpA2QGQpDzwHWhRt0Z0BlaATQnQGBITL0HOQAyAyFQRiUoTL0usarb4+eDYqX4n5mbFC8xvYzYxcUBmFQhsrQCPo6rGIJpIffLogMiaHnAC+rPfx2gTAoQ2VoBPlgCAyRoaeD1bwGRcqoKijSgMrQCKBIAwJDZECbonagSAMKgzD0kmKZrsfiLmgEcjAEhsiQGDJDYUBJM6ARYCY0ACVFy2EmNCAxoKQCKAwoKSoeWjWgMiAHyBu0akBgiAyJITMUBuQAwxlzpAGVoRFgjjQgMKBXobUb96rGvapxr2rcq9rqVeE4DobAEBlWrwrHkRkKgzCsXhV6yO6CRhAOhsAQGRJDZrh61f8+6Z/+y//3T3j2P7Y/MMy6pdOq02qwzt+lx+8wbyrHyfnBfeYT++RNpqXTqtNqw+ovUrDCtOK00rTytGYaaaaRZhppptFnR/Gx792nRrDCtOK00rTytMq0ZFo6rTqtmUaZaZSZRplplJlGmWmUmUaZaZSZRplplJmGzDRkpiEzDZlpCNI4u5SUacm0dFp1Wm1YekwrTCtOK01rpqEzDZ1p6ExDZxqKNM7BUY9phWnFaaVp5WnByylvDb84FazFaaVp5WmVacm0dFp1Wm1Y/VTYYYZlxmWmZeZllmXKMnWZdZkrtbBSCyu1gNQenwOEtMy8zLJMmWY8lomfPT45ifjZ49sPDEyYskxdZl1mmyZGJ8ywzLjMtMyVWlqppZVaWqmllVpaqeWVWl6p5ZVaXqnllVpeqeWVWl6p5ZVaXqmVlVpZqZWVWlmplZVaWamVlVpZqZWVWlmpyUpNVmqyUpOVmqzUZKUmKzVZqclKTVZqulLTlZqu1HSlpis1XanpSk1XarpS05VaXanVlVpdqdWVWl2p1ZVaXanVlVpdqdWVWluptZUa1ABfsKdl5mWWZcoydZl1mW2YEaIAMywzLjMtMy+zLFOWqcusy1yphZVa0DGk+6Gtw2zTXGMeQaiXiZw9Xi8w5mHKMnWZyMNj6oEx302MeZgo8WNWiTEPMy0zL7MsU5apy6zLbNPEmIeJ1B6T02vMP+ZoOS0zL7MsU5apy6zLbNO8xnw3wzJXamWlVlZqZaVWVmplpVZWamWlJis1WanJSk1WarJSk5WarNRkpSYrNVmp6UpNV2q6UtOVmq7UdKWmKzVdqelKra4kMKT7CzuGNEx0gj7Xk2XqMruz/i6NId1NDOk+b8aQhhmXmZaZl1mWKcvUZdZltmEiQjQ+XoIQH3qZcZlITR9mXiZSqw9TlqnLRGp9UtumiSENMywzLjMtMy+zLFOWqctcqYWVWlypxZVaXKnFlVpcqcWVWlypxZVaXKnFlVpaqaWVWlqppZVaWqmllVpaqaWVGqTiEcGFONDY3zDK4w0Db/EyZtew0rTytMq0ZFr9jeaxotHHK6w2LCwrditMK04rTStPq0xLpjXTkJmGzDR0pqEzDZ1p6EwDb9aPzz3x8vxYFMKb8yMYGq/N3SrTkmnptOq02rDwktytMK04rZlGm2m0mUababSZRptptJkGJsqhfxmM19v+US0W4vq3sliGg9l/1o+7xRIczJ65ftYNlt90TokvMy+zLBOpPSYEWHSDWZfZ5t9imR9mWOZKDQv8/WdY3tc5k75MWX+ry6zLbPNv07HMsMyVWlplS6tsaaWWVtnSKltaqaVVtrzKlldq2AjQOZO+zJVaXjWZV9nySi2vmsyrbGWlVlZNllW2slIrqybLKltZqZVVk2WVDcO0n0uLcQozLHOlJqsmMVb7Ua4YrDBlmT21fmQvxivMNk2MWJg9tX4cLsYszLTMvP62LFOWuVLDQhp+1qaJRTSYYf4tNADmSg0qALMsc6VWV2p1pVZXam2l1lZqbaXWVmptpdZWam2l1lZqbaXWZmqYSV/mTA0z6ctM6w/yMssyZf2tLhOpYU1zmtASmCu1sFKDlvT9C2gJzLJMpFbHXDz0z4KhJTB7aj1+BFoCs6fW40CgJT0gA1rSoymgJTDLMntqPcICWtJjGKAlMJGajBn6ZSI1HTP00EMFoCU9IAFaArMssz92eygCHrt9wxaP3b7lhsduNzFD7zvumKHDjMvsD/m+144ZOsyyTKRW5ryy775jXgmzTRNTTJhIrc8r4zLTMvMyoSVhTDwvU5dZl9mmiREAMywzLjMtE6Woc4oJsy6zDfOaYh5tTjFhxmWmZeJJO6eYlynL1GXWZbZpoq/DxENdz+mS9AVZLIf2SfawriXXYy65HnPJ9ZhLro8Jl/YlXiyyPpZ8K/FDXXVaSOWx5oRU+iI+rPN3jX4X59/k//14+n+5+vwo57XcHHo0vUxLp1Wn1YaFodOtXlOPuHEMnG711n5sDWDYdKtMC2mM5ebTemSkr59j0PcY/zitNK08rTItOIsPF+mrSjh/+Y9//+e//+e//vu//ff//I9/+ZeHk/Ef/uc//Zf/+v/90//4+3/8y7/95z/9l3/7X//4x9/+6f/5+z/+V/+j//k//v5v/f//8+//cf7r2eb/8m//5/n/p8P/61//8S8P63//bf36eP1TXLrTf/24fGM6OGdyXhfntH9kIOXey4aL9IeL+NpFn0IgE0eaDtJTHtJrB/WhUt1BTe2lg/zaQT9/ojs4d4q+ciAjB49NpJcerHosdbhI0kfdX9ejGq0ZHx0TFXm+uS0XSf5wUa3WHP0htbIcSHUXQ+IqRtKXxQiGjyJpdKnTXFUhTy6C0aX69TNokFLiSxdGr1SV2anyKkcRt4eaRzGqhNcejG4VezQoWvR8E5s+cvzTRTEyIWNw1aavMyFGJlRHXZ7P/NUc6dv20NftYfUKfcxx0Cv0aC9dNEvuHqG6l9zl8MpFPO62aQy32zTGu20aDcUMj5DtqVgiKxsP4XAXpQf8XEUp4WVRjO4Z62jUc6L1sn+bYtFkdouQXrap3hZvy0XqR0tewtmMp2CzxojEOUaoMuLzg9CqjToaRI6l32eX+6Bn1LZ6RqNWfe4ZyeihrV8HiCdqoZwkeSpLsnTnmANFI2mGu1XyMT3kc5LxslVSsSYnZSpXjfRMDH8+E5OhoOfKjs46zYGeR+ci1p9edEP/qHf7h1mWnI5jliWV9LIs2Zp49rXDSzlqo7L8OfJzuNs/rF7qV0G7RiRNAclCpflRI9ajXsrQsXPXiNom6J8+jL6KT0gvNRWu1fKnD6s0/cKpq7/X9NqH0VNrHL2s5vDag9VPw3zWRyMPlprGPBvl3LJbbVI/6B5eKSzhvhSWeLerm83ab01AUZrRKCVbVbqkMBrdq5S7DVvkdsOa46TH3GOcnK8Hr7Nhvinp6OTnHpfRR6189O1K+DhXwF76EENJc5v5KMfxulFsBatTfM6ZOs3xnxVMjE4qfe0SD5cUXz/jxHjm5zAfLjmE+p0PldFNc8362ofRMqeL0TKqieeEfz4pxahVzWm8bWiux2sf1ryyrAnMejqda8l/eqjWk7aNERcj949nH4aWljgqtKTjOw9tzjtCee3B6l1pZkJyeD3r0Gi9K8zxVkRe+zDHStG8pmHV6OdqSem5szE6x2nr8ULStdx9KJgjpc5HU240+/lREr0/UrTeHyna7o6UetwfKTXcHSmmB9dIMXuo5DWFk5Jf9/Oa774pWL2rhDnlKI+Uvxpt2s+ZQVn0MObW1VoYTWuFmdc149N7YK13R5uZixzGs+2cwhwvc2G9jcb+fcX13qTh5dtoC9YSbRujLSmtl4en0Wb5OF8Cx4QhPyayL32k+++z7XYvtWu0rlHPvfT5RcHy0cMxLx9Wq+jdTZBW7+6CtHZ3G8SuiTpHybkT8LIm+tftxnJJnbPRzMs2+uQkWvPzOHt5qvqdk3zMGsnYLnzlJN/v5/0D91/s6DKXrqP8USEfdHSZLRM1i9G89W5P75/h3+vqwVo33tDX+zdoKEgzlCNYe0Tx0LWEnnh5sTw5SdYcbBZG8VHYF06qxDC3NkownJQNfd3acPL1dVtCMk0bgjH6g/XITyGv7SIxnDRz/XiK2dk45CQ/bSQet5c6rc7a77W7OqvKd6O/zYZ5HDT7usOb+wu+0R/z7dFvbTvdH/04BPVau6H3np+VYT3041p/TonHnHzgpN/zdlVpPQwnVjctdVbJ+aQLr1/CgrX/tPY5uJOlVD7JSb/KduQkNiMn1uJtvwTnqpUjvM6LuWEcZqU8TQ6fBm+ynv+iaUqAKK3tP7WPOfbKsSJ1SjZyYq7tzynA40JHo2I3vPCHtOGNvx8Ice+VP+QN7/wh337pt1243vpNGTj/eD4j/gzEeo432TFXzbfnqnZ3r2tl/KCNgh/d3dqGOie8c0E6UwxPax/40BniIKqGD6uf9ps4rsLkQlEOT5VaLGXt8y5Ia6Q1nZ9OgjV255A554zh9bCzNqNKmXu3pbCTD2ZWsl669TBmVuZ2VGlr37U0mvc+dfhiTuITdbRo5MTQ1RznrlY+R+Fykp5zYj/G5/g9aMr6HN9kbkpNCciHEexVjM56LhjODi/H8XLLM1ibUuHoV2OPnVMawM+7nvbAyXOVKRUOwntWI2vjwN3nzbVMX5+3x57zuWnuS3mfm9bGlPO5ae1LuZ+b1taU87lpuvA9N+3+4WwXDRvaxdqecraLpg3tYm1OOdvFdOFrF/MFK8zJ6uNLl9dTAGt3Kpb5ghXNwW9uT7l7SNvQQ+pxu4fUsKGH1Hi7h5guNsx4c5hrCaUZL77VmqzmGaxUCtXHj2d3lfvP7qq3n93WHpX72V3b7z+7+7dwY33EmK9a20znZCfTFE8tNzsk3tqucg9ga7/KOYBb2TCAm9wewKaLDRIfZ5WmP+bNzxLfzDWauEJJW37ZLv1rybs9JB4bJgHxuD0J6B9u3u0h8bg9CbBd+HqI9fqtee53ayFhbc/ZUHMncHQyevl+CjSO1o5VWQt4Rbmf5vrkxFwFyHPB+KCAn2cndn2Etl5mQntZH+a3ODrjEAIvaeCbRHZiPb7nkkahUIafLtL9t7tofSHlfbuL1q6V7+3uTT6cAhJ0g4BYaytOAbGXvZ0CYu1ZOQXEdOESELuTOdfeorVn5V17i3FHT433e2rc0VPjjp4a7/fUuKOnpvs9NW3oqdZHfXODp9I894eiml9MOd92Y9rRP9KGdaqYbq9TxaQ7+ke93z/q/f5hPbZlZuNcrQive4i1z4R7pi85bJaTuKGb5bShm1nbVe5uZn6F4etm1tc17m5mze2c3cx0seGB6Xxvj9Zmlf+9Pe5YMo/WdpW7j5R0u49Y21XuPmJ+PuXrI6aLDW9lMr+wUY2v30KsrSr6aDJLTa9n/8X8ZDrQl5erNO3PGI9o7VU9IsL/at88tvzkxFpVTXWekZA5rik/58T6xKXV8WJ2mq+/NrSnEfOIg8fJ8q8FXvKGJZUdn1DFHd9QxfsfUcUdX1HF+59RxfvfUdlTgLDC/yN/HvfcQ6ytKncP0R1TAN0xBdD7UwDdMQXQ+1MAvT8FsMUsz6i3TIe1/BCzemx43TU/hvK97tohEZrmvgrtifyYiNR0/zljfVDlfs5Yu1Xu54y1W+V+ztQdK+Z1QxhgrLfDAGPbEAYY2+0wQNuFc/CaR7qtrUihHvKjm7UdawBtxxpAu78G0HasAbT7awDt/hqAPfx9ypyODUGA6bgdBPgmH75Olo4Nj/903H78908e73aydNx+/NsuNijIejM756L6UkGSeSzXkecG0cGbTPLBK2KL8zCIpq83iJJ9CN9o21r09YCxlkTKjIkuPNVNz9Wxo5uG+9007Oim4X43Dfe7qTmfcj7oUtwwi0lxw75/irf3/VPcsO+f4u19f9uFr3Gtof/QjJWN4/XQj7qjceuOxr09RU1pwxQ1pdtTVNvFhpHrfcBY21RbHjDrG758lNebw8napXI+YKxdKucDZscHVen+B1VpxwdV6f4HVen+B1V271jnl+SY2+vekTe8SaW84U0qZbnfuLqjcev9xr0f9W+eGjsPPCsiL08Cts5dS2V+85Mrf8L0fJqL9dA/5jf3j8uzyUn5wEmPfhs7dtFwYn745zowO1k7S74Ts00XvuOVk/UdlfN85WQNfd8By8namvKemu1vFTVaxeoeIa8NXeNchyRmcIrnk/tkfULl/OTedOE7qNmujjL3LpOY1WFtS+ncZTtN6utPHw3YTuo8Kv/00Qwn9f64tTaVnOPWcuEct3r/XPSktw9GT+YXVN5x624VY9ya3aPNuGVtNLP80T3MXSnfiffJ2lHytm3d0LbtdttW87NU93nPthv3Eel1xxnp9fYh6W90SKaY1falmNXQlojo60+gk/kZVcnrrBxa0nm+f8QW+DYnuufenzGnqhtktd6X1XpfVtsGWW33ZbXtkNW6QVbt7jGPHjj3g+V192hyv3tY21LO7tHuK7P59ZSve2Tr4ylf98hH2NA93K3ydfdYr8nHUb97IzuLOo8NPPLrPpbNE/98tyDl434/zcftfmq68PXTfGzop+F+Pw0b+qm/VdRolfKrCxg6P3zOZ6leLmBka0tK4jxWTnJ6/djP1qZUCzSbOl4+9d/Uh676qF/Wqe+GqWxfMXWsHfqQX/qwNqW8o9bck/KNWsuFc9SaO1LOUWue9ucbteYlU95R624VY9SavWOdbBt5FfYjH2WuGcaS0uveYYaRzuMxS5P2pY+5i2P62HAhW0637+kzXTh7erp/U19Ot6/qy9ZmlBx5dA7hHa0fPd38aMpzJ5uZjdLmMdBy8FmSP7LRdrxmZ2tHyvuane/fNWX3EN9ledn6aGpDy+hcASn88ffPlnE7aV86qfP0ltP82sm8ffZxgOmXTtoxt6RazF/21pBnRNzDTq97q93pvUtUb9zonJidtoSv3bR1Fkyl96HPhqDOPb+mdGXTzyHodtK+dTLLc5rlOyfn5gO10VENN3blrtD0EI6Qv22jSuf1VN5j/tDNPMTw4cbov/4n+uu3VjEDQ9fmirEiYb4NuC4FzeblON6XeNPJuizxnIFUw4nvjMqo2SjNhpUAub8SIPdXAmTDSoDeXwnQHSsBsmElwO4dsqYmNX/lI4VZmBSafuvjuO0jrQlOoqWAz3zMxj3dvfah9f77ke3D935kliXPeP+Upd738WUfS3FG3KRcX7et+Q0VTWzOpSdj8FsZ0Rl1c+57vpZC88Q/Z+PaPjY0roZVFmPgmjsix7xOIQSKhfqwUtcn/9XoZdYXVL7TC7N92F9b15YdxjTcykeea4mZL/j7UR3mM3vdH5l4P/TH7bP5/jpgK/ef2U1uP7Ob3H5mt/v7/7nd3v8vx7Hhme1uFUNPW76/Dmj68K0DFvuEPp+M2T3dtYZXjtu91HTh66XluN9Ly3G/l4Yt4SUl7Lh3Oty+eNquVd+6V7E+n3Kte9mV6l6eedc2zrfkN268r/5v3HgXi9648S4WvXPjXCyy+61zsegDJ+1bJ77FItOJf7HoXcfzrvL4xfrlVK/Yn1V5lmfMGVbOa5bGdzk/378eb98BWNLtOwDfFGVd/ZGNBR47H764ZjsjbZ1RG45oZCTfr9PbN6vZLjZUx/lUmyuAIVvVUX+zp5c83yXKOcN6nY1svtPMdys6bCseTw/h+/tXdi7mM4LfrH7mwuqjYU57c+Rj8v0u+kN36WA5vnPSynqKNw6f+cjJPEYlBA4l/KRS56QkN6tp66+6eDy51zOqhtdFqTtapu5omXq/ZeyRK/RqxPeOP49c8/sd5+Wfxb6iyjV2zXy0+YlYaH/sZeRPCjM39UPjl5sfTm5fUl3K7VuqbRe+J0yxz3P03Q1ZrO+qgujcez5t2gaXj5y4Lpgs5pl/zgsmi7WS6L1gspjfIzg/mS2y4YDqIrcPqC6y4YDqorcPqLZduD6ZtXuI807GYn1e5bxPsVhH/nkvDihqHk/pOwWpWJ9X+U5BsgvjPKC+WHtN3gPqi3lDlXfcmcfCeceddeyfc9zVuGHcWVtWznFnuvCNOy072kV2tIveb5e6o13a/XZpv6qH3gvqSttwlnppGw5SLW3DEVWl3T6iqrQNR1SVdvuIKtuFc+SaPcR3lrocW85Slx2n7cmx4Sx1OW6fpS7HhrPU5bh9lrrtYoOKOO9AE3uPxXccsxwbnv8SNjz/Jdx+/kvY8PyXcPv5b7twqoil7r47v8T6xMp755eYh/a57vwS83Iq59RdQrs/dRfzbinX1P1NPpwDJu6Q1HhfUuMOSY33JTXellS7kzlfqSRueKWSuKOnpvs9Ne7oqWlHT033e2ra0VPT/Z6aNvRUKxzadeeXWHtU3hcISTv6R97x6M/3H/15x6M/33/053S/f1iPbeedX2Ie/Oe880vyhovUJdcd3WzDRepSbl+kLmXDRepSbl+kbrvY8MD0vqda21QfvKeWDav/UnRHH6n3+8iG1X+R26v/tosNbyG+O7/EjFFx3vklYp6J6LqLRcxvZpx3sYi1T+W9i0WsfSrvXSz2NMJ355fIhmvURTccpy664Th10dvHqYtuOE5d9PZx6rYLn8CbUwDnnV+iuqOH7JgC6I4pQL0/Bag7pgD1/hSg3p8C2GLmu1lG6oY9Vam391TN54z3zi+xD5vzPWdq2/CcMS+n8j5nrI+r3M+ZumEnUszNKu/gtTarnIPX2qpyD15rs8o5eE0XzsFrFcV5FYq0DWsAemxYA9Dj9hqAHhvWAPS4vQZgu/A1rj38fcqs5gdWTmVW824plzK/yYe3k214/Gu4/fjXsOHxr+H24992sUFBnFeyqHUYoPNKFvsV0Xnnl5rvQ64rWdRaEvFdyaJhRzeN97tp3NFN4/1uGu93U3M+5XzQadwwi9EoOxpX7zdu3dG47X7jtvsaZD0rnXd+qblJ5W3ctGGKqun2FFXThimqpttTVNvFhpHrfcBY21RbHjDOO780h9sPGGuXyvmAyTu6ab7fTfOObprvd9Msv6pB3ju/NO94kyo73qTK/TepsuNNqtx/kyr3A6msL3ayHvPzQ038SdcHX0FlmR+WZs2vv4LSYu77e76CUmt3yvcVlO1iw3e2Z2PMA2eDWgfcmU5W46acv3SS5qLfuTf4+mIntZw4G8ban3I2jOliR8OUmQ+RYFWHWnu6bUaoPI5nevVl2TsniTaGS33pxNBUkXk1zLnA8Pp7brW2p3JcH+v/EWv7dFq9WttT59bHfAc5wsuz0NTcnXKdlqXmh1QlzzEjNFt+XtBVa2spHI1OlWj0Udfz4RS2m5DXxT3nYrm+dGN2We23cKONUza6rLlL5TssU/X+7T+qt2//MV34jjTSev/2H623b//RuuH2H3+rqNEqZu9wHZZp+nAelvnOx3Hbh++gS63eQ/xL/DIfrkM73+TDdSajvyyGD7MseX6Onc6nxUsfLf92PlwHf/p9fDlenAd/qnX4n/fgTzsjvoM/63Hc7mRvfGxoXN/Bn/UwTx/xHfz5JiOugz+r9QmUbypTzfuQnAd/mvnwHfz5dqIqNFHNLyaq1dqc8s52TSe+g3LsaarOm0BO83VntzaWnPOgan0A5ZsHmS5886BqbU0550HVCsb2zYNq0PvzIH+rWLpuvsTMZ3Zo7bWcxh1SaL3FOMNSTCe6TupXfiP7yImsO01Ea/rSyVoYlqrp65cyPv+zydcvZSuA6XxBK4Ybs17mMbOiOX5buWsxoh5iOIm3Ff7NHdPHkoH61dA51xDm2b3BeHqn2+//1dqjcj8004YqNZt2BoWcrRy/7PLhSHQeav56HSIUmhXp1yMnxIMmV8bIsY5lmvVClxDnp5Nh3hzrNLe7Hsc6vToLrVo7Vd6zoUwnznP7Nixp2qdLtfldZ2jx69OlfJFQ1dxpkrmJeOaYivOUD2tDNKa1r0K6+tnpUjqffOe61+udlZp/20no35+Mbla/dKLrVGRtr+ukFvMz1dm+Wb5z0eZBVzx//8hFOGhhVYrhxHqn6dckYdzlRpsrn9TputzsHDRGP7NE/txLWDekHcapXdaDQtbJX0KN254rxNoFyG26WLl4bEu6s6FrqfpcUtCX2bAuqEpp3jBP06rw9C5haXtZqly4p4dcn5xYYe7HrI506PHSiX1GzVp0T+mPbbPjKSflth5a7RLOLjYfVKfdXs4k7F6W5x6v5GT0VPMLhPnB7PnWKy9LYz4g4oxUEb5S8BMXrjo1D9vyPmNMJ97Hg/kt1Q4n7meM6cT7jFG5/YyxXDifMZYL9zPG2mTyPmPMOnU+Y+yPkL1CZH4J5Ro0bw6G8Yx+24Vr9L9x4StIvj/6bSfegbtFQmrdMPpNJ97R38Lt0d/C7dFvXpflHf3WXpV39Jt16h791rclQqdt00pEeCqL4SKn9elAootmnqdDb05Ccb4eWp9SOQeveYiJd/CaTpzjrh2/7cQ7eG0nzsHbrH0i3+A1XfgGr+nCO3ibdeqfc/Dadbpj8La5RNxKeTl4m/UtVQl53dfBJ+U/D177+AHf4G0h3R685mzXO3h3TJmbtWe1xYl78NonEDoHr/1JlWvwWi6cgze0DYPX+hrKO3jNOvUOXmstMy4nkavkx/C1vqk6tzHmszdQqPmP4WsfD+UcvlFvD1/zZCfv8DWdeEdeOn7ZiXv4mk68w9f+rso1fC0XzuFr7px5h6/1SZR3+Jp1umP4prUdmYK8PtqlWbPeXOdNV7nxjuSPp++O4WttNTmHb90xfOuO4ZvzLztxD1/TiXf4Zr09fC0XzuFruXAPX+vrKu/wzXnD8DVPM0vzc6KQaA3/6ZSZVuw7COfgpa0EEb+LMsc/RxR95kLH9s65W/Sdi36APdbuw3HfRfnSxawL+bYuZNaFfFsXOgui39YFu/iyLvgGxC/rQmdd6Ld1UWdB6rd1wS6+rIs6JaPqt7nQed5v/TIX7RhPg/ZtXbCLb3Mxr4JrhuSYJx96o/bs4xOdX0E1+4D92SwaYzWcmN+F6l+I8PP33HZhnKF2b5z44hhtJ844xjcHubk2UurtbdQ3LlwTSvOkMO+E0nTinQvW9MtO3BPKumEbtdXb26imC+eEsm7YRm31/jaqXafeCWXbsIHR2u1tVPsENueg0S17D1tGnuXEPWhMJ95BY31O5Rw0lgvnoDE/6nIOmnBYJ/15R00rO17DzPPPyjpYiiLun4+nOYtj3vc1r9lNgSPD5NmJ2Unowx2q2XOK9OTE0DSZR7FLSV+6mF+ICH2p8qGLY87wXubizZFycX6yd/zx+vCUDeuov1zaOnY8b3HSXjlxn7J3znmNXmZtUIW8LnPOqRrFydZ78vwuSwLNvn86sbpqiGWuXoR0tC1uQnxdueZKSlvV8vq8XvvUv7WG0cLLSfxZmnb3RcA+sc/77IwbVjCh5L/rxfv0fOPF+fgMR7wdAGD78D1AbR/+J2i8HwPwpmLdj1Dz+L5jSXXhO+aPp6wkK7R6vs9n+kzkaQyfLqyPq+YLcOZr2eVJB+xTBH2T6DMj+fYsOm149bSduMdw0t/24lcC04tbCewLq3xKYPnwKoHlw68EOW1QArNinUrwplLmBKXFryt2HtTStNxvHMOHPXbS/ObsHIrhSydxneCfDqtWN+xZ2U4e07Q51cr1y6yEMFvn3H4u33qhGVtqX+elrI81Cx3I96kXWR/V1/Z1idbwSdEskd7XpaL3danoDl2SX++2ad0tlop+WylOXTJ9OHXJ2TimD3MK6iyL6cNZFudU2NJY803Fq7H2O5NXY3VHZ9UtGqtbNFa3aKxu0VjdorG6RWN1g8bqBo3VLRpbf73bujVWN2isbtBYva2x9jK5qyi2C1dJvIv1lsCa2yhegbU3dLwC23b01LZFYNsWgW1bBLZtEdi2RWDbFoFtGwS2bRDYtkNgw/Hr3dYtsG2DwLYNAtvuC6y5ee8TWNOFT2CdIQRq3dG1YZXgTZiJU2BD2NBTTSdugX3jxSmwthevwNpevAL7xotTYN+UyCmwIdwXWNOHU2BNH36Bjb/ebb0Ca1eKT2BtHz6B9TaOpUt28Nv6qlLKy7tUbRfr0Fw+dOejkETfEXFvnPiOELQ/P/A9cPLtlvV+BGE27IYlkzcfyngfOClvGLkp73jg2F68D5yUdzxwTC/uB47txfvAsUvkfeDkcP+Bk8P9B07ecPDF49DT3+627geOWSnOB47pw/nAcTaOJW3m55k+gTVd+ATW+ZGoJbBlh8CWLQJbdvTUskVgyxaBLVsEtmwR2LJFYMsWgZUNAisbBFa2CKz8erd1C6xsEFjZILByX2DN4yt8Amu68Ams8xANS2DN4028AmsftOIVWN3RU3WLwOoWgdUtAqtbBFa3CKxuEdi6QWDrBoGtWwS2/nq3dQts3SCwdYPA1vsCe9yOq7Bd+AT2uB1VYR/+5hXYvGPTL7QdPbVtEdi2RWDbFoFtWwS2bRHYtkNg43FfYE0fToE1fbgFNh6/3m29AmtXik9gbR8+gfU2jlpHjt4uiu3CVRLvAayWwJpH43oF1j6k1ymwMWzoqaYTt8C+8eIUWNuLV2BtL16BfePFKbBvSuQV2LhBYOMGgY1bBDb+erd1C2zcILBxg8DGDbp03N70s114Nv3syymCzNtHY319w0WI6d4dSvYp+76Hjd6OMPGe9W+4sG9hcD5s3twH4X3YpA2fHJpO/A8b24v3YWN6cT9sTC/uh43txfuwsUvkfdjk+1/Kmj68D5u840vZmH+927ofNvn+txu2D+fDJt9eZXhzS43nYfPGhedh8+5uqXmNqNB1pu25Nop5QnVdByto1de3kZ5+rICo2uZpBi3wVYbxqURW1Pe6ybDxRYaPT5qfsnL7IoKiG84TCtHa+fCdBfbOx5wNlFLDdz5cB4q98+G7mGnD4Ui2E+8H2VH0t724P+u2vXg/6456/7Nu04f3saU7PuuOuuGzbrtivQc8mIt7biW4f62ZHDsuNjryjn6v7be9+EePth2jp8b7o6fG+6Onxh2jp5YNo0c3XKEpccsD3XqDc46edP9+s3T/frN0/36ztEMG0hYZaL/uxS8DLe+QgQ2fb8UNn2/FLZ9vpR2fb9kV65WBsuH66dDXe26OnrLh/mnbibffp0N+24t79NhevKOnr7DcHD2mD+foMX34R0+4f1XRm4r1jh7zqkHfbQlnccw5gee6BNuH776ENz5cFybYPnw3Jvh9lG99uO5MeOPDdWmC7cN3a4Lfx7f14bs34Y0P18UJtg/fzQl+H9/Wh+/uhDc+XJcn2D58tyf4fXydD9/9CeYttN77Eywn3vsTQrLON/NeoHB6sa7U8t2gYBbHe4OC7cR5g4LpxHmDgh5691XNduF6VXvjwnWMZdhxoG3YcaBtyuW3vfgnm3nDefCnl9sHwts+vJPNvONI+FTuHwn/pmKdk001Dwp2v6qV+4fAxrph9MS6o98X/W0v/tFTduwWJLm/W2D68I4e2bFbkGTDboFdse5XNWtpwHujQhLzdkvfjQrJ3lby3aiQxBg/vhsVbBeuGxXeuPDcqGBd9em9USGptSLgvFHhAyevb1Swe5nzRoWk1uPCeaNCsja2vDcqJPM4QPeNCp+4MW5UqM64KOtGBesDEueNCsn6qsd5o0LecY76nqljzb/txf8IrTv2ClK9v1dg+vA+QuuWvYIdJxTaFbvjRoV81HWpOknBjy3D1KxAXNeNCsna+XDeqJB3hBGldjt4QMuOe8nKjtCb1Npve/ErQdsRPJCP+8EDpg+nEpg+3EqQjw3BA3bFOpWgWGcpxDorJR2ZJn4hP5fHep7XOVkKlWKu81NcYksbxnEOt3f/iyUF7hC6tmPnMYf0217c49j24h7HQe6P4yD3x3GQHeM43L+b803FukPodjwFc7x9O6eEDU9B24m738fy2178oyfuWJDN8f6CrOnDO3rijgXZnDYsyNoVu+MpmNLcDjm3o8LLp6DpJB9r+/+QaDxKrR2vPV6klrw2iVaB5BMfbV67Ji3qlz7W4lYrr33E24flv/Hh+6bFO3CsDyjDjpMzwo6TM/KOUwpNJ+5v7d54cX5rZ3vxfmtne/F+a/fGi/Nbuzclcn5rl8v9D7tNH95nRtnxYXcuv95tvd/a2ZXi1KVy/8Nub+OYPoLcL0uQ+2VxTu2t7wbNNy/v98z2O6BXY3ccVGg68WusbNFY2aKxskVjZYvGyhaN1Q0aqxs0VrdorP56t3VrrG7QWN2gsbpBY83lR2dZTB/OsjiXQa1rn8qOa5/KlnnsjrMKTSd+ja1bNLZu0di6RWPrFo2tWzS2bdDYtkFj2xaNbb/ebd0a2zZobNugsfcPTnuz2esri+3DVxbvprOlsXnH/dB5x81PZcdxhaYTt8a+8eLUWNuLV2NtL16NfePFqbFvSuTU2BLua6zpw6mxpg+3xpbw693Wq7F2pfh0yfbh0yVv45jaZsakOjXW9OHUWGdsrHk/9Iazz94EUXs1dseJhaYTv8bGLRobt2hs3KKxcYvGxi0amzZobNqgsWmLxqZf77ZujU0bNDZt0Ni0QWPz/T0v24dTY/PtPS/74yqvxoYd9x2VHXteZcueV9my51W27HmVLXteZcueV9my51U27HmVDXteZcueVym/3m3dGrthz6ts2PMq9/e83nx86jlf8o0L1w2m9ifBzhtMbSe+G0zfHAvifOYc7f4zx3k8iXnHXtsQZ2GfY+N95siGw2FNJ/5njuw409j24n7myI4zjd948T5zZMeZxkXvn2ls+vA+c3THmcbmKbF7uq37maP3zzS2fTifOc7GMc9FbvfXp20fzvOZ2+31aft8O6/Gph2XlJinz7s7a92isXWLxtYtGlu3aGzdorF1i8a2DRrbNmhs26Kx7de7rVtj2waNbRs0tpX7unT/kpJ0+5KSNyfVOpW+3o/28J6Ya9XosUPpjx1KL2HDJ7SmE7fSv/HiVHrbi1fpbS9epX/jxan0b0rkVHoJ97/8Nn04ld704VZ689ajPd3Wq/R2pfh0yfbh0yVv45japvd3Im0fTo3V2zuR9pUL7luYdkTUmU8/d2dNWzQ2bdHYtEVj0xaNTVs0Nm3R2LRBY9MGjU1bNDb/erd1a2zaoLFpg8amDRpr30njmU6/8+G69K/cnk7bLnzX7ZXbk+k+xG8LvexYmpay4fRt04lf6G0vXqE3vbiF3vTiFnrbi1fo7RJ5hb7cPzTe9OEV+rLj0HiRX++2bqEv97fMbB9OoS+3t8yKfcZqa/OEgnAcy4184OT8YVtOqE7kuYHNbtLqQVn5zksObVyLk2PQl8VJO+ok7agTTTvqxLzyy1cnZgRpK+uAcT5oRI5PnKwO23jX+9mJefLDWQtlyslBT42P3PiOSrBduE5KeOPCc1BCtibA3pZ548TXMtk85tXdMqYbX8vYLlwt88aFq2Ws8+dLm8djnWaj2kifOInrwMt8vHRiHiUa8zzoJOawZuJPPoJY5xiG3NbUhk4J+unECtGaZ5rWtPJxzpo+8FHzkMQqwfJhHbF1tHmacDj49rRnJ8bidpUhq7WplRHztCKdc3qlU3zT922jL9vG7iRpPiXOTiLf+SjzvoRYUjL6iHWicFvvjU3at05o8L12Yp566+usqZpLWVnXK042Lm6w3Rw1zCOnj5q+dtOUZjakBB+60TRPAz5Uwtdu2noxqEc13Fhv5xrbnAbL62fXB07at07amtS3Yjixm5pel2p6HRz4RvLrXHAo9IL+PIjUOnOIbx16qZHmeevadB4w3lgkkzznwzxWmA5cz80oTLn//FLzIEPf88v04Xx+aaj3n19qnWPofH6ptcflfn7520attjHPSJ7n4YfWXj98NKbbz413OZlLL5GvUvqZE6NO0mzhfJitY50h77x6yM5JDvO4ZklWh81mhz1Wh63f1WsMYU5RQn09j1Vrsd9br+ZXVKXNriZHNnq9ueXmqldTX2uY5+HXQA38rK/2c8v5CvnGie8VMtmXNHtfIc+a1d/34zxQ0fbhO1DxjQ/XgYpmcJOuDZ36WmHb/bdINdfFvE9h66sW71PY8uF9CmfZ8BTOev8pnOuOp7C7bfS7PuJ7iTRdON8hzVOGvO+Qb5y45gLW9MjXU2Pa8QZpenG/sr3x4n1j2/HCtuN9bcfr2pYHll2v7vfyuGWtIW5Zaoi/XiL/QkPc0WvNbw+dvdbvo33pw9dr7Q9Uvb32TU9xrlTYswrnQoV1dqFroSIaD+FzLWVIfdJGd9KEH9mwbpeL8+mXEs+QPvGRZgRBSvX1dNH8jMu14WfWh8zXtXO1qhj1Ya1l1SPPpx/19vA8Bbcu62rzI9fWvvYxG/fs7fGlk9juNov1trcuzpVIgSFH83uYU1a+I+/Zg1WKUGYYUih8bP4HNRFyXLPEmF76OJvEihlocTbsaVPTPr/93u3mlofHzV0zF+fCAA385zux1NqS8g5804dz4LfbO/3JvJB1LiicZn3lod7u5/VuPzff/5393PTh7uf2dU2+fm7tzsd4zJeqSH00huj3UWalxlJe+zBHS87zXfW0qSw/Rks90u3RYvvwjZZq3sd1Xz/+qJHC64nxOfzCaBuJs30lcU/TL33ofR98ic+zD2vqMV94M10GG0NxeyhzqeuPMMxPPOhcLMvHaw/WmsxcEK1Fv/Mwb0msHDj5nQdJLz1YR+XlNIMMc6qvfZhLXOvC1SihvPQRqrVdFWKZWhrpxecvvLS7fcv24etdb3y4+te7GqkzaDnyzVA3vMi3XtIx3+PSUb/2IisMW9O3XspafSj563pJayUzH2WLl/atlzwvyH5cjPW1l3UfWRb53ssqkX7dd/OUx5Dr1y2d53Xd53Tt+HYsljq3NfK3Pmqcy7zpax/H9JFv+5Dj63zMjQCxR7Lho99DBR+p3c+HoZGl3FV7y4NP600PLqW3TnHz6rzfh3znw6nxtg+fwps+nPpuzmuargvca/3KR5K57Hiar3u5PV8uc0NU9PV8OZhfl7nWLs1s9LVAZKMeycqGtYRadDSMsoSF+uzEillJdb2V8W7mj5xYU84Vx5N4ue6nE+vtPRx5bYbwZ0dPBTJrts4lgFj/eGn+4KWqzsXH05SXPuzXzNVJTtt88RZ772CugwZyos+npBhjr19qi7HHQQDPGbF8lDQ/5SqsI88+NJrPlxkXr/w52Cc+ZHa0P2IiPvLR0pyANL5D9MmH2bzlmC/ej5Ur+dbL+lbotOuXXiIFAZyCb3Q163CEMh9ZwvPvpzU824dvJfGND9daoppn9lb6BqsdL6OAquWlhTmdacFYrzJ9xPkMbzHWb9arSqVJd5Mve9o5tZxrmsKBL3/RR+r9dUDTh3MdsB6/ug74Z42E7+u1LC8xfuklzE+GTjtbI9i6ZsjbOqYPb+v87i7PnzVS9OvWyeTltb5aNeLTNNODb3fELEkPGr5KwveS/+whLd7dK7J9nLKYZtuo0CTrMy86470e2+vhWy9L6ZXj6D7pa1VXL2np9Y6idZFU0IPKc9T2lZcYZ5RyTAe/AafvfIT4nY8yQ4NjkfCVjzP/cb4U/LHm9KePdj8MwHKRjzBfPfnci/B0DIHpI8xXz1Pb8ksfoVmbV055tn345LlZp6H75NmsjzgVIEeehv+sD2tz4JyZzUUB+tz+pxczTHpGrZ3zmpfvwG8ysg6qaPx282Fx1vvNEev3XmbU91G+r9o2g2kPOV53euu9Mc1Ai5wsH7efne32s9MqhzeywPThjSxoVmixN7IghGRtdM7QgspZCc+LvS3G+1pk+nBqkXmblkuL3lSI0NavWhVyOxAwmfI+JwAp8ZvADy2yLilzBuA1K97LGYBn+/A9eUMsG3yYq4Lr9TdmrtXnbpas2JO1Pkn7RfrkIm6ICrKdnAtfc5JYKp0qlkL7xE1Na02g5va9m6WMHLLww415FN+Rp5fjj4Dvp/FnRSaf6yQzpvj099qJXaD17fLjRO/4Zb2ce3nrheCgOeMPN/2r0d/288c3lEle143tJab5WhDppe0vvBR7aW2trMVvvaT1MWbmjzE/80KRXIUCXf7Cy4bD3e3KXftsMVWjcs2bn5wfc1l14lyANV24Zlx2SZxTrjfV4Z1zWftbbt22FrS8pxk0c3/L+R1lK0ZvdX5HafpwfkfZrM1Y73eUzdrccn5H2cRe0fJ9R+lvG2PomZ3EeZhBk2JuTrkOM7AC9WWdQCd/fByePnCiRxg9TflAhI+cuA8zMJ3UuS18rtRZTuyjCtfM67TpKSrHB25OxVrPv0x7bZ+6CXm5ycbH7nb1zu9uRXP8to2cd9JVc0nJdd5Etb/Mdh03YfpwnjbRzP0p32kTfWfemIn6Tpto9kdhvlo1W9d3beGb7nok+jSUp+ef9fpQ1uAJ+vUYDOvc39OlMXjMaU6ZMyUO1v5spjQj5jiS8WgfTYVnPkLSryfU+VgfNcSwY1pueXnz9nSsrbs/Hh0/ptQbPtBqGz7Qai39rg/nKtebd9t1xK3wubJ/Ua2392ZtH481h5UVq882e493bWnyWtdnXmqZfbaWr/PS5hZgPI7wpRf3IoadF4oc+1Oy//RyZjTdf1F/48X5ov7Gi/NF/fQiG17U7cqd3T/8sf72YbX4RPtdtfhE+4MmskQ7HPdXaq11eC1zhn1u5/N2XvlgMT+sb6hSzP/7y8V8l2bHI9z+1DBYLqrM+XnlKzl+1ojcXtExXfhWdMzj/rwrOvaZgb4VnVNHw45dNGvZoMy95yjpddNA0m+uC51OvMt+r9eFTifl7rqQ7cO3LnT60NvrQvEw98Bc60Knj3Z/XeiDtlGrbdLthaF4pB0nW9k5cZ1yGQ/rKmDf+/Hpo9xforK9eNeo3uTFuUj1xotzleqNlzIffyLHYXjJ9qHRdMxPi6/f19/6cS6avfHjXjV768e5bPauxX3rZu+8+BbO7NHkW+Oxh7Vz6eyNE9/a2dlC7b42lOP+2pmdE2+92i3sWzx712u9q2fv/HiXz9768a6fmZNK3/qZPS/1rJ+1DVEqhxkKlWacaiwcUKUfONH55Wpqf5y+9YGT8w07z+FT2ksn8ZD7oV3Hhp3o4/5O9HF/J/rYsRN9bNiJPttlw/lZ4c2H/CvKPOjrfhbMWKa1Qtsyv6nnD5zo/AY//HFPwJOTeFgf4/nC3U4fxpPLF+72xodTSKxHeRBdF4iJhtcNbJ6YMheFsqb2XdtkmV+LZM1m29QNbdM2tM0GkTdvXyjzcRXPOZ8hrXVDb60bemvd0Fvtz/rXKeePKderO/OC7JnZm7vHc636XHXjPv88z6rmidppfrOi2XjNNjcXvYsx7f4R0qYP72KM+bWXdzHG2rvyLsa0vGMxxt021mKM3UtmtPiZlfydkxRmec7dN/3ayXHfSZI12aPAw2cnp04415ZK/DYnK8Y6ta9z4joE/oPiWEtlZnHyfJYn3lb5mZPy6zmZF3uncyNtg5Nvx875ZqHTSVWjTsz4gHWQtUZLUcys6Nz2TSqvxT5Yt5u6e5vtZEcba1jFMVQpmHcYHUrrA+Xrmp0fXKRqdDfzzd65DhSCblgHMnPijKF6M1NaZ9qffebVK3UM0V7Woo82+G7uT7w4dyXNWFfnplWI9y+FOZ3cvhTG9uGcJ4V4/1KYaH6o5JwnhbjhUpgP2sZYvTE7iXPPKqT70hisG9PdwcyWE3cws5kTbzCz6cQbzCxb9mXevbx5o5DtenFGIdtOnFHI5X68bNHbWym2D+dOSrBudvI+Qe3PcLxP0Jzu12q7v5Hypru6o5BlyzbKOzfeXZQ3a4br60l5fQxKDObtMKLzTLOHl/KVF+fcIm344tc8j6WtJfsWjY8mrasAzjoYPU6lvv7O9qwR6yp3SeNJWoSDS//MiH0TAH12yadnxvaBE53Pr3OV63jpJJqjcI+X8/3tWF2tfutF12VTfJzRTy/WVpfOh6nyBtFHPugSzFK/9HHu6q14Cxp9f+HFijj0Bbi+qdi29iBatPqbMXpKnfGT5yrxenC0D3zIOiVKhFq4/aiSdneHOJghCWkef5mScqTf0wJ10HBfCawp9VmpK/ZYePH/x2PQOoqzzGNZzhcveZUT08Xamz3N/J0LV31YW25uZTSduDVN62978Suj6cWtjNb9WV5lNO/gcipjDTuU0TpAz62MZsU6lTGGtENNrM8lfaMnWrHUPhmwXbhk4I0LX0HafRmwnbgHcEu/7cUvA6YXtwxYn7t4ZcDy4ZUB87MbtwxY0V5uGTAr1i0D5jnUa2GL8lHCny6iGe2V5gtkTvx1SP7zvKiY8ob3nGgFODmHsXkLnXcY21fZOQdgPH7di3sY2168wzhan2c5h7HpwzmMTR/uYWw+Q73D2K7YHcO4zZXLVooxjK0NphLmzmoJWl4PY+vVzz+MrSAn5zC2ghTdw1h2TKej9Z3XHi/+YWx6cQ9jc7/LOYwtH95hbH7V5B7GZtSWdxjbH/M5h3G2espyErlWfg5k6xy7c519Po//OA/+eSBbi+X+gWx+7OUbyOYtgN6BbDpxD0FrUXiPF/9ANr24B7J13a13IFs+vAPZ8uEfyNbwcQ9ks2J3DOS0ds5S4ItMfgxka9sr13mAQm68efY8kHXLQM63NxCi7hjIumUg5/bbXvwDOe/YQIjl/gaC6cM7kMuODYRYNmwg2BXrHcjmLkRa11UkurWylefimCdz0vHwqzAiH/goUwo4EuZDH/POjELXGn7mQ+ZxA3+cUv+1j/Ktj1kf8nV9yKwP+bo+dJZFv64P9vFtffBVft/Wx7pTRb+ujzrLUr+uD/bxbX3UqSBVv86HDkGs9dt8tGM8I9rX9cE+vs7H/MitWRpkblJ7TymwnLgPBojWFoiG2TTK15H9hRfz6zL9C11OKX9QHO8X+LYT58ENphPvuQ3WLpdzM8Z04duMqbf3qGPbEK1iO3FPE2v9bS/+yWbdsScb2/09WdOHd7LZduzJxrZhT9auWO9ks23ZA2n392Tbjj2QtmP3Ih3Hb3txjx7bi3f0JOucO+foMX04R4/pwz160obDDN9UrHf0mCe5r9ETha8qb/k5K1aUVZhHCqSQebb15MTcXuIvU/j+Z312YqibzDM0hA/z+MjF/PZB+E7ez1wcc873MhdmZZR+Vhv06PjjveI5G9aKQJkfc2U+Q+OGk/bSid3L5qcgUemA1Z+9zD79Yh1ckVM1imPFFB7zsyMJfITGsxPza64Q503yIZxDY4ubEF+6sVdb2qoWGjdPqy3J2pSlRY4WXk/qk3mZl+vFIIUNq522E/fDL+pve/E/QuOOMIKU7ocRmD68j9C0I4wgpQ1hBHbFulc7rQXC41hSXfg8neO5PNY3s/MNP9OnE88rpsmKn0nzhThHXjV50oG448OJlNrdybTZSdxKkLZMg83bnbZ48StBjjuUwDrp36sElg+vEpg3DriVYMMVXm8q1qsEdqXMCQrfaPuhj3lCSdNyv3EMH/bYSfM7rMdc90snsc7QjHRYtbpjY8t0EvothtdUK9cvsxLCbJ1zs7p864VmbKl9nZeyPkEsdMzXp15kfS5O95Z/WqI1fFK0SrThg6604YOutOWDriS/3m3TfKENqei3leLUJdOHU5ecjWP6MKegzrKYPpxlcU6FLY0131S8Gmu/M3k1Vnd0Vt2isbpFY3WLxuoWjdUtGqtbNLZu0Ni6QWPrFo2tv95t3RpbN2hs3aCxdYPGmivlzrKYPpxlca7YWz7MDRWnxr7Z2vFqbNvRWdsWjW1bNLZt0di2RWPbFo1tOzQ2H/c11vTh1FjTh1tj8/Hr3darsXal+HTJ9uHTJW/jaPl2L99XFtuHryzemAJTY48dGrtjrSCHDZ3VdOLW2DdenBpre/FqrO3Fq7FvvDg19k2JvBobN2hs3KCxcYvGxl/vtm6NjRs0Nm7Q2HhfY+2QuPVxJt/A91FU3Toklg+h+ShQ0XmPjO3Eed2Q/bGC85lT7ret96MJy4duWDt583WN95mTNhxMYDrxP3NsL95nTmo7njmmF/czx/bifebYJfI+c/L98zRMH95nTt5xnkbOv95t3c8cs1KczxzTh/OZ42wcU9vMLzudGmv6cGqs8wtTsz52aGzeorFlR2ctWzS2bNHYskVjyxaNLVs0tmzRWNmgsbJBY2WLxsqvd1u3xsoGjZUNGisbNNY8BsOpsaYPp8Y6j+OwfJinpXg11j63xauxuqOz6haN1S0aq1s0VrdorG7RWN2isXWDxtYNGlu3aGz99W7r1ti6QWPrBo2tGzQ23I+zsH04NTbcjrOwD5bzamzasQeYdxxiaDrxa2zborFti8a2LRrbtmhs26Gx5bivsaYPp8aaPtwaW45f77ZejbUrxadLtg+fLnkbR80jTe+XxfbhK4v3kFfbxwaNtU8DdmpsCRs6q+nErbFvvDg11vbi1Vjbi1dj33hxauybEnk1Nm7Q2LhBY+MWjY2/3m3dGhs3aGzcoLFxgy6V23uAtgvXHqD9gbTMCzgj7QH+OJSumNfazO6+GjY/F6TejzmxfTifN/V2zIl99YPzefPmEgrv8yZv+BTRdOJ/3thevM8b04v7eWN6cT9vbC/e541dIu/zptz/gtb04X3elB1f0PZr73+327qfN+X+WoPtw/m8KbfXGt5cjeN53rxx4XnevLt+ad6bKXSB5/P1S0XMY6/rOnBBq76+fvP0Y4VI1TZPOWiBL+7784bVYDbNurev8bV9j0+dn7Jy+6qDYMWuOG9gMl34bmAqt8+IDrLhvCLbiffj6KLHb3txf2Jte/F+Yl30/nlFpg/vo0J3nFdUdMN5RXbFeu+ma1bYp/eAgqK3DygIVkC7e/S0HWejlxp/24t/9NQdBxSUev+AAtOHd/TUHQcUlLrhgAK7Yr0HFFh3g/sfou3+SZPx/v1l8f79ZfH+/WVxx/1lccfJ6mXL0YGmF78MtB0nFslx/33L9OGUAdOHWwbk2PG+1bacWBQ2PETluH+7QckbRo/pxNvv5Wi/7cU9emwv7tET7n8hY/rwjp6w4wsZ2fFhl12x3tFTzSUP3+0GEu7fbiDh/u0Gtg/f7QamD+ftBm4f5VsfvtsNbB++2w1MH87bDdw+vq0P5+0Gtg/f7QamD+ftBm4f39aH83YD24fvdgPTh/N2A7ePr/Phu93AjCT03m5gOXHfbiBpx+0Gku7fbmAWx3u7ge3EebuB6cR5u0E6bq932i5cr2pvXLiOlDx2HC577DhcVnL9bS/+yWbecbuBlPu3G5g+vJPNsuN2AykbbjewK9Y52TSPiPa/qpXbtxukmDaMnrjjinWR47e9+EeP7NgtELm/W2D68I4e2bFbILJht8CuWPermrU04L3dQGTD7QaiG243EL19u4HtwnW7wRsXntsNrHvrvbcbiG643eADJ6/P8bd7mfN2A9ENtxuIbrjdoDfhy5y4bzf4xI1xu0F1xiJZtxtYcXPO2w2k3r/dIO840zxvefhV/W0v/kdo3bJX0DbsFbQNewVty15B27BXYFfsjtsN8lHXvegkBT+2DKXdvt1A2v3bDfKOq8Kk3b/dIOsOJdgxhvWIv+3FrQS2F68S6HE/eMD04VQC04dbCfTYEDxgV6w39Ma64/2cA41KSUemiV94eo6qdTVWqHOyFCrFOeenWEDzIlPvOFbzziNfEJAVx+4OAjKduEfglluPTC/+cWx6cY9j61MW7zi2fHjHsflJjXscW8fZucexWbHeJ/qxY0lJN8TOHBuWlGwn7n4f62978Y+euGNBVtP9BVnTh3f0pB0Lspo2LMjaFbvjKZjS3A5JieL7n5+CppN8rO3/Q6LxKE31t71ILXltEq0CySc+2rwCTVrUL32sxa1WDB/3v2+zffi+I/EOHMvHseH7tjcK6/y+Ta0XDffgs5y4v29748X5fZvtxft9m+3F+33bGy/O79velMj5fZta217eZ0bJ958Zlg//M6P8erf1ft9mV4pTl8r988q8jWP6MKfUzrKYPpxlcU7trW/1zDcv7zfE9jugV2NlR2eVLRorWzRWtmisbNFY2aKxskVjdYPG6gaN1S0aq7/ebd0aqxs0VjdorG7Q2OP+PaK2D2dZnMug1h13ecPZa2/Wy70aW3d01rpFY+sWja1bNLZu0di6RWPrFo1tGzS2bdDYtkVj2693W7fGtg0a2zZobLuvsfZmr68stg9fWbybzqbG7rirOe+4f6kfCnG3s5pO3Br7xotTY20vXo21vXg19o0Xp8a+KZFTY2u4r7GmD6fGmj7cGlvDr3dbr8baleLTJduHT5e8jWNqm9y/R9T24dRYZ2yspbFxw3rsmyBqr8bGHZ01btHYuEVj4xaNjVs0Nm7R2LhFY9MGjU0bNDZt0dj0693WrbFpg8amDRqbNmhsub/nZftwamy5vedlf1zl1dhjx31DdceeV92y51W37HnVLXtedcueV92y51W37HnVDXtedcOeV92y51XLr3dbt8Zu2POqG/a86v09rzcfn3rOdHzjwnWGsP1JsPMeUduJ8x5R+1gQ5zMn3L9H1Hs8iXnmZ77/zHlzjo33mWN9V+UevJYT/zPH9uJ95phe3M8c04v7mWN78T5z7BJ5nzlm/LLzmaP1/jPH/OTM/cypv95t3c8cvX/3pu3D+cxxNo6pbceG9eljw/r0cXt9OsYdd4PEHXeD1Lajs7YtGtu2aGzborFti8a2LRrbtmhs26CxbYPGth0a245f77ZujW0bNLZt0Nh2X2Pj/btB4v27QeyTap2n39f70R7eE3OtiDrzQGNvRJ19tLJT6VvY8Amt6cSt9G+8OJXe9uJVetuLV+nfeHEq/ZsSOZW+xftffps+nEpv+vArffz1butVertSfLpk+/DpkrdxTG3T+zuRtg+nxurtnUj7ygWvxsqOiLqWdnTWtEVj0xaNTVs0Nm3R2LRFY9MWjc0bNDZv0Ni8RWPzr3dbt8bmDRqbN2hsvq2xb66kcd18VO6vkge5vzZt+3DecSe316bDjri+sCWur5UNx2+bTvxKb3vxKr3pxa30phe30ttevEpvl8ir9HL/1Pjm7Prl23z4lV5+vdu6lX6DLrUNutQ26JL1WYiUedC6rHNg4vGJi9ymi/zShRUD7suE6cGVB/MYtX7vD7T1j4Ebkt+HtHkKBl/V95GPujS+HeUrH+ezYZ5yecTXZQnN2udOx9ykTkdNX3rxnUnwxofrTIJ3PjxnEtgH7dHZkPn4rnX/8JG/9BGXj/S6XWKzVghTbKO/pxTyi/p44yPNh11KVV/70N/1kcMsS47hu7adZ0JG5eNePmqXeR5r1PalgnA+vvVR58z7NL/1MecOto/bql5vq3qo5jec/T7w62H9Wjve+JinG51me+3juP2gtX246kOttzKdtXGubdEk6ukISNvH7KOn+aWPuk4NrtQqn/moMx+Vb734yMd6S+VrFT7zMcfK6e7LfLQwethpflsfrSwfr9vF+roilzXJPt9k7vvQ/J0Pma/LWcrxpQ+dTwU1+pj10qFr2J69/vUBa+kw96/KnBeeBaO1EPkoJ66j3s6c3D7qTazj1ZwnvcmGI9rOsvy6F+9Bb2+8OA96O6fjtw96s334XthtH94X9tPL/YPe3lSs86A362QL/yA2P9VyDuI3OXEO4nj71OK64fjyeuwYfin+thf/IE5xxyBO5f4gTuX+IE5lxyBOdcMgThvOLLae5uU41j0T8fUsK/WTFF96ifMI9BLpFpFzuvTkxFpK0Lii92nt+8mJXZq5/FcObVZp8o7SlN8tTZhnwp/md7PGksIsS4rpOx9x5SOWHT70Sx/zOr4/2+UjHzrfCKJ+Xaey6jR+6SMuH/kwemq6HRf3xodrxdwtrIaPumEjr27Yx0tHaRuk2XLi3cd758W3j/fGi3Mf740X5z7eOy++fbx3JfLt46XDuoTLO6OwfHhnFJYP/4xCfr3bOvfx3lSKU5VMH05VcjaO/V1juF+WGO6Xxfn+afgwVwecCmuvUngVVnd0Vd2isLpFYXWLwuoWhdUtCqtbFLZuUNi6QWHrFoWtv95t3QpbNyhs3aCw9bbCmh/1pzY7Wv5jX7586aN95yPPnZOQU/jSx1ouySLf+lhl0eNLH3M57FTG9KWPeetjKIeRD2tVvNS5npa/87Be+Fr60sN8/W35pgc5vsyDzv3Fo37loX/iDw+p3c1Dft2a1mXNvtY0Pbha0/bgaU2fB6s1TQ+u1rQ8+FrTmQerNc135Txng7ymE8Oft4ydM0Xr0kJXtMsbH65IldNH/V0fvmgXOxh5Pg5j+kO7n+vUmumXuVou4Xi1bGhmI6+AGZ6n/EU20v1F0GDtVTkXQc3SlDg76rly+LI0to8ya6TI6xoJ1bwHsuRjeinHl16cgXt1Q+BevR+4Z15H5Aq9MT24Am/S7fCfdDv4xzzWrc3pVmu8+/i0g2n7WDPpxicXPfkIqmZE+DGvgD1tep/9zI+zj9o+fH30jQ/XhVfWJ0hHpVe/mowzoWwvM47o4SW99GJt13n7ie3D209kUz+RDf1ENvQTud1PDBHIaz5F737hdOV0UObGf1F6VpbmdbAiGM4K+crB/LSs8j3ypXgd1BmH0Q556SAF661x3UCdKEIt1fTswzrbYE2iRC0fvnzQ+++zD+tjvzSeK43Cyf+iMurdgriaVChmOehzJsTq2WEG/FFNPPuwMpFGJpSWAf4iE1YI5WqPcw61vKQfM1JryzSIyowjoZe3v/Binma3ZnGJVhSTto+8zLzExDr8oZe2luSpif/Ci1UvOsXnIZNWvdQt9VK31Ev99XppZfaXRqu+H/Y69qLxey/zgdvqtyMg9i0i1MtBK+o/vagVwXTOueZ2hWour2czb/zUY/nh5/9f+LEOU61t1XCgcS3xEy8rei9IKV96qTqaqdJj+KcPu5Vmj4lHtXqMdWbgJ61k+/G3Uk07Wsn04m4ly4u7laxnUp67bSXz8/lnK1kf9OT1aWJJ8Xsva2XBHNdvPrWcHxeV9nVeZN7eHIXmPh97WZMffpp86GV9PCrt6zbSsD7+yvV7LyuiVsLXXlaJtH2dlxrWZ2Q5fO9l9t1aytde6vxssrb0rZc256mPg0m+9zLr5Xxsf+1ljaP29ThKcb2DxPpt7Z6TslEvKcdvR2MqMwg0lXx8O0PMSxlykG/ndvmIy4t+O3P25yXfz4v14j9jAoS+CD9T9ToI4cgrBIWjE54Wyc1X9zSfh/yi6H/blRljoa9+n6J9gN+GYszWqBTV8DMb5qEJcyGIA5U/cjF3T86nz7cujvnOnL5oj1p1PLFOkzKR/as5NdJyTnjpIkXrXLlMW7YHRXic798feCnH3FkrIR2WF/OTljVYlaKu5ZOchLxywgt1H5VHdE7wRfX42suMWjm73NdeeAmWvxp+8mIesCV1dhV6N/2gt/3pQq3eZsVG1XmKQ6g0UcvxowqJq0JS+7pa61pR/mMMP3tJ8X7j2F58G9PvyjM/ezjLo98O5JjWnnCxhk+6HzRg+/Bt+MdUf9fHjrYp5yrBrFWxhCDvWS9448e9XhBz2uQn337Xf1PDuvptNWtYzPel0V2O8FqcLBe+DbM3PlwbZu983NwwCwdtiAorgduFLDE5p84kscdThEm0zkOsbe6ppvxNNs45x1wdiHzcxc9s2PsBtGK9xp7+cGKeHRSXMFIX++nEinUueT1FS/5jvaM9+zGPv6VvmSnaJaXnR7q1BxbSXB8Lmb/u/sxLntOLUEIxvJhbYc74bbta0jpJKNXX1WL1uCCrZs2Ob+4oHHFVypFo/ebUlU/c5LRCATJp0pMbSwxSSfPdLwktpv5Fkayum+Y7y+mSROX40czWYkc9ZmjjadMD9WfFWLdjtHXuyzlTp7WXDyomHyuKOv/x6ezhfis+Z44rNCCu9inPpbEvDypr8zQViud7Wql452bFKZw2vRH+dGN0unOTcO3P0xrzD6GzTo8Khb66KTkchtCZ21h1BgcGPmfop7jYufHLrm6RXd0iu7pFdusO2dUNsvu2+9YpducTO77uvtXsvnPO/0e0UPsoK+vjqNOmD7V+ZsU6FePQ+WJ32rRg9UPszA+1vGL3LjdrJVID71D/dOO6+yacWkUV7F5AkyZrjkyP2B+a2czwmxWTVehjx1Cf3xre3Pg0N4NJXPLzemIzTxye4UjnBpYldM3qtrM4vGL+44Ov2DZc43h62XA+9Zu8eM+4iU3N92bf6TTx/j1Ytg/3V4rp2CG3ZqU4T5Z5M4DKXMYW4bez5wHUv0x+vU46QwaU34pCCM9erIjA9aKYGn0jGGr8QlT0oBDJ8iMfYr6vzjjNJvFlPk4v5hal5rUWkV6vt5peUpkr6ud0+/jWi8wPwxKvy//0Esw9gjSjMTj+9bluQzA3S2WWh/tbeO5v1o25KutRqH+EdDwPQ2s/zC3Z5wrobclOYcNdYSlZX2m5Jdv24v2sPIX7Ymv68Itt3CC2dgOt7cI/jzf/mZW4o2pjul+1Th9qdhSr469l9VC+7fje+UGKO+YHKW7osnFLl007umzcMT+wNV/GQ6xwRn5ovnm/VpphfOdCFu9z1w9yUueS+h+nFf/MidXdiqyQN+sQymRtbPmfPkl3PH3MDTLn0ye1HYPQvNTKPQjz/TNcTR/+Qbjheq03lbJlELYVJ1KK0fWt7aQS1r1WgcNEPhuEdbbxEYKVFSu8LMz2iaFlo+fntmMUlmPHKLQ+DfWOwrLjONhU0o5RaG2VeUeheTqJexRaW2XuUWhWinsUmi9Rurb+VKwXOuv4tvNVbLbQabfXWx/J2ijbsfWhB303Jq9X4JL5Xad3BS5Jur0Cl6xIUf9Qtg6b9w5la5PM/zpnbZL53xbk9kXnb8rjlibdMkHQDRME3TJB0B0TBN0yQTAHoXsVT2XHKp65DXTM0xrin2En7SthooWMH8JkneJ27t0sOWC5fg4/T9W8UTTMqMncsuUlmKEnc2ssFzrCIsZPvNC+Y9ZmebFe/dd293GYWbEuOCjzqOhcqvHNg+1FjnWvQKrfe5mvl1K+zguVSKwvbd7kZV4cl/X4vl7mhmHWeGwokcbwrRdN6yoZ6nQfe1l5aWVHiZp866XS9/Y5f+9ltnSVsKFE1fou/E1e5tkYuYX2vZfZ0i3JhhK1pF96KUdaVx4Uo17yYT3nT32Z4Sdy8FXMz/Gt+TBvx5hz7fOJSjol8RMvJa1QDb5Z+iMvOneVlOKhf/h4U7t1rQVYKpWtbbKPale31K5uqV3dULt2uN56wvIRo89P2BzChreZbG2UOd9msrVN5n6bydZugXtzyvbifSfK4f55xaYP9ztEDhvumPEWR8u3jex9xcsxbHjFyzHebx6nD7NOYtzRxLFsaGKzYt2vieYLRJkvePGPA2I/ew0pB52nUA19sz4ka+tLmIOObGlPL6zZ2idzLwHntEVp0walTVuUNm1R2rRFEKytMr8gWFtlXkGwfPgHc9pwvrxdKd7BbA6gENeL/Lm88HoE2Z9zzmDQwG8OP5xYO2XrI1k+1i49f1eQsxm0uA6X4LuKP/UyP3KIMX/vJZCX+rWXsrzwp3Xf50W/r9115BcfFHwjL82sXWv9ad1pUOVLH3Ud4n9Q9PFPJ2VH+Fcu98O/ctkR/pXLjsCtXDZobdmitTsu+bIrxf0wLDvCv7LsCP/Kcj/8y+vDnB2X++Ffdr26JxmyI/wrS91QrzvCv7JuCP+yK2XPJKPOr7JDo1WVH/MDNYV2TPWVDlhIP+vEmtTGtagS/4jJ/iAj6+yKP9Z9f2bEfPTMMDR+Znzko8l696F9tr9wYt0vkcO8Ctn8li3bu2Teh6C1S+Z9CNq7W96HYI079N7Mi1uXrGVWvy7V+xcimz78umQdUebWJbNSNulSEJcuWU74ygm+x+OHE/PbsXX4chC6TzzVH16sVf2yPhHka3N+yJv58Viq67CU9vqQsGx9sYWb4OHkSOlLJ2F9bxK0fetknUETg5UT83jKdRyvmMWxHuttnd7ccv3OSTzmNnU84uucFOvLMdfFM+/ykVeslTQjH/F38xHW58Kh5i8rlc5puOFk9tYbTvjxFatRrWbI13pipBa+dJLDuloubnFSvnUS10V5OX/tZG7sne+LG4rzvRNdxan1vpNyfOukhOWEHjo/nFjbRr4x/CYfc/iFYoycEup9LTFVvkwtEUvT4nFf5U0nbpWPt9X1TT6cKm9dDbYjH06Vf+ckbHDiU3nbiVflzcmrV+VNJ16V9zsp3zpxqvwbJz6VdxfneydOlfc6MVXedOJV+VTvj+G2QeXz8bsqrzMoLKoYlZrjhsFnOvEOPr+T8q0T5+B748Q3+NzF+d6Jc/B5nZiDz3TiHXwl3B58dj6cg8/a6vIOPuttPK7jLGI1mtfeR/G9jRdzS8c7T7OcuOdp5b622vlwztPk+N18eOdpb5yEDU6c87Ti/QLLmqdZn4K5HxWmE++jwu+kfOvE+ah448T3qHAX53snzkeF14n5qDCdeB8Vev9dy86H81Gh91cFbJV3vo3rhjVX04lb5et9ddUda641/m4+vCqvG9Zc3zhxqrzuWHOtO9Zc644117pjzbXuWHOtO9Zc644117pjzbXuWHOtO9Zc2311rTvWXFv9XZV3vo3LcdwffLYT5+D7wEn51olv8L1z4hp8/uJ878Q3+NxOrMFnO3EOPjna3U7/Jh++wSfh9qqAHboged2XGF7HP0hIG0IXxPokyxu6INY5cN7QBbE2tLyhC7YTZ+jCGye+0AUJ7f5iiezY1JIdm1pyf1NLdmxqyf1NLdmxqSU7NrVkx6aW7NjUkh2bWrJjU0t2bGrJjk0t2bGpJTs2tWTHppbs2NSSHZtacn9TS3Zsasn9Ta03Ku9bLBFzk8Cr8pYTt8rn++pq58Op8ll+Nx9elX/jJGxw4lR504lX5UvYoPKmE6/K+52Ub504Vf6NE5/Ku4vzvROnynudmCpvOvGq/P1trTf5cKq8xN9Vee9iieQNg8904h18fiflWyfOwffGiW/wuYvzvRPn4PM6MQef6cQ7+PR2yMCbfDgHn3X1l3fwyf3QBdENHxLIjk0t2bGpJfc3tWTHppbc39SSHZtasmNTS3ZsasmOTS3ZsaklOza1ZMemluzY1JIdm1qyY1NLdmxqyY5NLdmxqSX3N7Vkx6aW3N/UeqPyvrdxPTasuZpOvCqv9z/TepMPn8rrkX83H06Vf+ckbHDiU3nbiVPl9diw5mo7car8B07Kt058Kv/OiUvl/cX53olP5d1OLJW3nThVXu9/pvUmHz6V13j8rso738Y1bviQwHbiHXx+J+VbJ87BFzd8SOAvzvdOnIPP68QcfHHDhwSabocMvMmHc/Cl+x8SRO9SWDWOnDOd1HWSZaUR/KGTebb/6eTbnLTZR9KRXh9k+eZIzTpzUij84cODOWXdqyQ5feulrbNPmnXLgGbzns/RyOdopntYn10YHbamefVpTTQDTuGHF6vHxtnIJeZVnBw/cjKPOCyJivPTiXWQyxx/TfOXNZKPWSNi1ojuqBHdUSPtZo2Yl3zUPOfitfCVJc/Xc6j5mVadV5aUygcb/qhXy4suJajHkb72Mg+lqccfZ7N/4qUebXp53E/1rZewTvaUw/JiHsEX6jy7KwSaKv3wYna4ebNGiTV/5yPNA8BKyvJdj1s3YtbSjGtl1NrayuVY96f8cduIfuClyJTqIn/ckvCJl7OvzCPNwh86+5GXkFePU/06L3OpvoZmlqjs6HHWrVfeHmf62NHj6px01cazrp89zvByPvTXLkji+z2e751T874qd9VaF3B5q9b04apa6/TwMK+v0D8K8qM+jJUtmZNZKdQ0p3D7fWDejpb544LPn17MCwnqvEYjHCsv8sOJdcdhXHcc8hVg+vymYe5ylTybJthnE6rV8fm+q0i1m9JzP6nmJwbzURgyP1A/89LP/byKROed/oUXYwLnPUHPrpa0VkJTfV0tzq7/OHjvZde3DhXMGtdtTCqvO1y19mbXnUOJ75Ntn2RkXQ2dK01of2akmgO5jraRU4/1tT6abnKT8Uw+bZog6Cd1e3axofklaH1dJPNowpTWecN0ArmmT5zkI6/FpWY4sS4TaPPe4HTQSP4hK9YJBOcjf8ikmpd39/uEXs+ZyrxZSvjOoo9y4rx3QtuOC8C13b8AvJ/R79qMsI5erea2l/foVTsv3qNXq31jl/Po1XrcP2rb9OE+erWL2N0Hh10p3qNX36jKujLCEATr6ROnuCkv7Dw/feqbva95MnXi5cynSZM3HySyP/IRzOoo826F8Pj486VWv3Gz1C08IqIMN9YRsDqPp058xvWz0Fbzkq2Smq75WzCkqVofdZ0iMGdelV9Pn+dMtheVNZSr6UU3zAJtL95ZYA0bLjZ400juSXaNzktlzUl2tTfDvNXr9sI3ln7mxd1IO67tsivXOVV/qw3r1S7xhOOHNsR6e6r9Jit9gXpkpb6ebFfz4q5D10ejh9L+3PMsuZo3d7W6JmKtxWy4MXOzbkHS8/khhhvXxTYh0KU0oaj3gXTuqa3ttUBfwT7utflvJ/79n//1P/77P/79n//+n//67//2Px+/jMfjpf3xHIvhYT06bYzTStPK0yrdOrUjyrS0W2ddxjqt1q1Tx9IxrZ7G48GbehqPN6aUppWnVabV03gsGaWexiMILNVp9TQek898YMXhtMK0YrfOvOQ0rdytsyfnMi3p1sPLI430GJG5TuuRRnp0o3JMq6fx0M8Sp5Wm1dN4fOVUyrR6Go8dkdLTeCwzlzqtnsajduWYVk/jse4jcVo9jcc4lDytnsZj1UBkWjqtOq02LD2mFaYVp5Wmlac109CZhs40dKahM40606gzjTrTqDONOtOoM40606gzjTrTqDON9kij32LRwrTitNK08rTKtGRaOq06rTascyVsmWGZcZlpmXmZZZmyTF1mXeZKLazUwkotrNTCSi2s1MJKLazUQk8tysOsy2zT7IM/P/YEQx/9lxmX2VN7KHboAnCZPbXHu03oEnCZusyeWu5JtGmmY5lIrT7MuMy0TKT2KEXXgnO/42HKMnWZPbXHVDF0PciPDYLQBSE/nhKhK8Jl9tQe1xKFrgn58elA6KJwmWWZskxdZl1mm2Y5lhmWGZe5UisrtbJSKyu1slIrK7WyUpOVmqzUZKUmKzVZqclKTVZqslKTlZqs1HSlpis1XanpSk1XarpS05WartR0paYrtbpSqyu1ulKrK7W6UqtITR+mLLOn9lhvC11ALrNNExICMywzLjMtMy+zLFOWuVJrK7U2U4vHscywzLjMtMy8zLJMWaYusy5zpRZWamGlFlZqYaUWVmphpRZWamGlFlZqYaUWV2pxpRZXanGlFldqcaUWV2pxpRZXanGlllZqaaWWVmpppZZWammlllZqaaWWVmpppZZXanmllldqeaWWV2p5pZZXanmllldqeaVWVmplpVZWamWlVlZqZaVWVmplpVZWamWlJis1WanJSk1WarJSk5WarNRkpSYrNVmp6UpNV2q6UtOVmq7UdKWmKzVdqelKTVdqdaVWV2p1pVZXanWlVldqdaW2tCQuLYlLS+LSkri0JC4tiUtL4tKSuLQkLi2JS0vi0pK4tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUlLS9LSkrS0JC0tSUtL0tKStLQkLS1JS0vS0pK0tCQtLUnQkvZ444WWPBYcErQEZl1mmya05PHRVIKWwOypPXY/UteSfpF66lpymWWZ0s30MHWZtZvdWRtm7lpymaGb9WHGZfbUHiubuWvJZZZl9tRCfxHXZfbU+kt015IS0+P9/FhmT+2xjJa7llxmT+2xFJW7llxmWWZP7bEkk7uWXGZP7bFlmbuWwOxacpk9tdxXBuIye2qP6M3cteQye2qPJfXcteQydZk9tcebRO5aArNrSXm80ueuJeVxQW3uWnKZaZk9tcerfu5acpk9NenOdJl1mT21xyZx7lpymT017SsccZlpmT21x6w4dy25zJ7aI1ogdy3pe9i5a8ll9tQeu6+5a8ll9tQe+/K5a8llpmX21B4jIHctucye2mNvIHctucy6zJ7ao4PnriWX+UhN+opO15LLfKR2rng9zLzMskzp5qOxupZcZu3mI7WuJTC7llxmWGZP7RHtmjUts6fWe3XXEulduWvJZeoye2q9V3ctgdm1RHpX7lpymXGZPbXeq7uWXGZPrXflriWXqcvsqfVe3bUEZtcS6b26a4k83tFz15LL7Kk91qZy15LL7Kk93rBz15LL1GX21Ppg6FrSzdK1RKQvl4VlxmX21B57MqVryWX21B7rhqVryWX21B4rX6VryWW2aXYtkccGWulacpk9tUevLl1LpPY1u7zMssye2qNXl64ll9lTq91Zm2bXksvsqT16delacpk9tUdXLl1LLrMss6f26NWla8llPlLTR68uXUv0odWla8llhm4+qqRryWWmbj4S7lpymWWZj9T0MRhK15LL7Kk9BLp0LYHZteQye2qPDl66llxmT+3Rq0vXksvsqaVHy3ctuUxdZk8Ny6Jtml1L9HF8ZOlacu6fPsye2uPgrtK15DJ7ao8OXkpZpixTl9lTe6xdla4lMLuWXOZcjSxdS/SxHlW6llxmXmZZpixTl4eeWul+2zS7llxmWGZcJlJ7VKrmZZZlyjJ1mXWZbZr1WGZYZlzmSq2u1OpKra7U6kqtrtTqSq2t1NpKra3U2kqtrdTaSq2t1NpKra3U2kxNjmOZqMnHOvYRl5mWmZe5VsS7luhje0O6llwm2u2xoH60aYa5ZC0hLBOplYeZlpmXWZaJ1OrD1GXWZbZpxmOZYZlxmUitPcy8zLJMWaYus04TAvKYjAgEBGZcZlrmKlBaBYKAwFxbCmntKUBA+nYFBARmWGZcZk/tscklEBCYZZmyTF1mL9DjISEQkG5CQB4TIoGAwIzLTMtEao9iQkBgyjJ1mUjt0QAQkG5CQGCGZcZlpmUiCXmYskxdZl1mm5nUVSCoRi88VEO7mZaZl1mWKcvUZfbUHtFMAtXoJlQDZlgmkng0FqQCZlmmLHO1EKSidg89icfWnEAqHntzAqmA2Qv0eB8SSAXMnlrru1SP1OrjXUS6VNTHk0y6VNTY/7Yusw1Tu1TUx66Gdqm4zNjN9jAfqdXUt7/yMntq6bHx+//8/T/+9e//xz/+5X+e26KPndP/9W//PHZJT/zP//d/jH/5P/7jX//xj3/9v//7//iPf//nf/k//9d//MtjR7Vvph6P/3nIyH8N8rcYHjuu4frv//Vcjj03T87/lfTfzrcv/Jezuc//1fzf/oafnXBOMc//jY8/eqjQ4z9p/0/1ePiLD3+PX5/Zz3H87tz8KPL45zRzcD6zY/9PeeTgnFv+7Szrlfr5fvq3c1o+PJwrEH87lxNGqucb6vm37fH7Mn9/PvDPJYn5i5D/di7azF+czXAu0Tx+ISOPp3KXMPMY/1b08c+6aqn9LebHf6or22eN9GTb+k9nVrrfcNiFD2H+5pwM5O45zAo7e0Fq4zfnXCCX/u/J8vnYNf//AQ==", - "verification_key": "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\nAAAFiSRi70jt/BTMpcaOrm4=" - }, - { - "name": "refund_public", - "is_unconstrained": true, - "custom_attributes": [ - "public", - "internal" - ], - "abi": { - "parameters": [ - { - "name": "Id", - "type": { - "kind": "field" - }, - "visibility": "private" - } - ], - "return_type": null, - "error_types": { - "206160798890201757": { - "error_kind": "string", - "string": "Storage slot 0 not allowed. Storage slots must start from 1." - }, - "2920182694213909827": { - "error_kind": "string", - "string": "attempt to subtract with overflow" - }, - "3564161243949231814": { - "error_kind": "string", - "string": "Function refund_public can only be called internally" - }, - "5019202896831570965": { - "error_kind": "string", - "string": "attempt to add with overflow" - }, - "6144404149669079610": { - "error_kind": "string", - "string": "AlreadyClaimed" - }, - "9323748002447105156": { - "error_kind": "string", - "string": "NotPassedTimelock" - }, - "13699457482007836410": { - "error_kind": "string", - "string": "Not initialized" - }, - "14225679739041873922": { - "error_kind": "string", - "string": "Index out of bounds" - }, - "17843811134343075018": { - "error_kind": "string", - "string": "Stack too deep" - } - } - }, - "bytecode": "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CgUfHAoFNQAcCh82AAQqNQY3BCo2BwYAKjcGBxwKBQYGHAofNwYEKgYhOAQqNywhACo4ISwEKjUiIQQqNi0iACohIi0EKgYkIQQqNy4iACohIiQEKgYlIQQqNxQiACohIhQEKgYmIQQqNxYiACohIhYEKgYnIQQqNxgiACohIhgEKgYoIQQqNxoiACohIhoEKgYpIQQqNxwGACohBhwcCgUGBRwKHyEFBCoGKiIEKiEeBgAqIgYeHAoFBgIcCh8FAgQqBisfBCoFIAYAKh8GBS0IAQYnAh8EGAAIAR8BJwMGBAEAIgYCHycCIAQXACogHyAtCh8hDCohICIWCiIiJAIAIgAAEqktDgMhACIhAiEjAAASii0IAR8AAAECAS0OBh8cCjQGAC0IASAAAAECAScCIQABLQ4hIC0IASInAiUEIQAIASUBJwMiBAEAIiICJS0KJSYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgImACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmACImAiYtDgsmJwIlBCEnAiYEIC0KDTIjAAAUFwwqMiUnJAIAJwAAI3MjAAAUKS0LICcEKjAnIAAqBiAnLQgBBgAAAQIBLQ4hBi0IASAnAigEIQAIASgBJwMgBAEAIiACKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNIiMAABWEDCoiJSgkAgAoAAAjAyMAABWWLQsGIgQqMSIGAConBiIcCjMGAC0IAScAAAECAS0OISctCAEoJwIpBCEACAEpAScDKAQBACIoAiktCikqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4CKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKgAiKgIqLQ4LKi0KDSAjAAAW9gwqICUpJAIAKQAAIpMjAAAXCC0LJygEKgYoJwAqIicGLQgBIgAAAQIBLQ4hIi0IAScnAigEIQAIASgBJwMnBAEAIicCKC0KKCktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgIpACIpAiktDgspACIpAiktDgIpACIpAiktDgIpACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspACIpAiktDgspLQoNICMAABhjDCogJSgkAgAoAAAiIyMAABh1LQsiJwQqDiciACoGIg4cCi8GAC0IASIAAAECAS0OISItCAEnJwIo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", - "debug_symbols": "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" - }, - { - "name": "sync_private_state", - "is_unconstrained": true, - "custom_attributes": [ - "utility" - ], - "abi": { - "parameters": [], - "return_type": null, - "error_types": { - "576755928210959028": { - "error_kind": "string", - "string": "0 has a square root; you cannot claim it is not square" + ], + "length": 128 }, - "1004672304334401604": { + "17803644318014042523": { "error_kind": "fmtstring", - "length": 48, "item_types": [ - { - "kind": "field" - }, { "kind": "field" } - ] + ], + "length": 58 }, - "2920182694213909827": { + "1998584279744703196": { "error_kind": "string", "string": "attempt to subtract with overflow" }, - "3206131020419630384": { - "error_kind": "fmtstring", - "length": 75, - "item_types": [] - }, - "3305101268118424981": { - "error_kind": "string", - "string": "Attempted to delete past the length of a CapsuleArray" - }, - "3738765135689704617": { + "3080037330898348111": { "error_kind": "fmtstring", - "length": 58, "item_types": [ { - "kind": "field" + "kind": "integer", + "sign": "unsigned", + "width": 32 } - ] - }, - "5019202896831570965": { - "error_kind": "string", - "string": "attempt to add with overflow" - }, - "5727012404371710682": { - "error_kind": "string", - "string": "push out of bounds" - }, - "6485997221020871071": { - "error_kind": "string", - "string": "call to assert_max_bit_size" - }, - "7233212735005103307": { - "error_kind": "string", - "string": "attempt to multiply with overflow" - }, - "8270195893599566439": { - "error_kind": "string", - "string": "Invalid public keys hint for address" + ], + "length": 132 }, - "10676044680617262041": { + "344423948968719440": { "error_kind": "fmtstring", - "length": 98, "item_types": [ { "kind": "integer", @@ -11451,26 +11681,23 @@ { "kind": "field" } - ] + ], + "length": 98 }, - "11732781666457836689": { - "error_kind": "fmtstring", - "length": 77, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "361444214588792908": { + "error_kind": "string", + "string": "attempt to multiply with overflow" }, - "13649294680379557736": { + "4261968856572588300": { "error_kind": "string", - "string": "extend_from_bounded_vec out of bounds" + "string": "Value does not fit in field" + }, + "4440399188109668273": { + "error_kind": "string", + "string": "Input length must be a multiple of 32" }, - "14101993474458164081": { + "7564993426627941149": { "error_kind": "fmtstring", - "length": 61, "item_types": [ { "kind": "field" @@ -11478,76 +11705,58 @@ { "kind": "field" } - ] - }, - "14225679739041873922": { - "error_kind": "string", - "string": "Index out of bounds" - }, - "14657895983200220173": { - "error_kind": "string", - "string": "Attempted to read past the length of a CapsuleArray" + ], + "length": 48 }, - "15200354114977654233": { + "7995966536718645961": { "error_kind": "fmtstring", - "length": 144, "item_types": [ { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] - }, - "15760694058516861966": { - "error_kind": "fmtstring", - "length": 128, - "item_types": [ + "kind": "field" + }, { - "kind": "integer", - "sign": "unsigned", - "width": 32 + "kind": "field" } - ] + ], + "length": 61 }, - "16218014537381711836": { + "8992688621799713766": { "error_kind": "string", - "string": "Value does not fit in field" + "string": "Invalid public keys hint for address" }, - "16446004518090376065": { + "9791669845391776238": { "error_kind": "string", - "string": "Input length must be a multiple of 32" + "string": "0 has a square root; you cannot claim it is not square" }, - "16954218183513903507": { + "9885968605480832328": { "error_kind": "string", - "string": "Attempted to read past end of BoundedVec" - }, - "17226037485472400844": { - "error_kind": "fmtstring", - "length": 132, - "item_types": [ - { - "kind": "integer", - "sign": "unsigned", - "width": 32 - } - ] + "string": "Attempted to read past the length of a CapsuleArray" }, - "17610130137239148460": { + "9921926525851912681": { "error_kind": "fmtstring", - "length": 98, - "item_types": [] + "item_types": [], + "length": 98 }, - "17843811134343075018": { + "992401946138144806": { "error_kind": "string", - "string": "Stack too deep" + "string": "Attempted to read past end of BoundedVec" } - } + }, + "parameters": [], + "return_type": null }, - "bytecode": "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", - "debug_symbols": "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" + "bytecode": "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", + "custom_attributes": [ + "external", + "utility" + ], + "debug_symbols": "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PI94HvE84nnk88jnkc8jn0c+j3we+TzyeeTzyOdxnsd5Hud5nOdxnsd5Hud5nOdxnsdpj2qOujQezUfr0X5kj/xRPMpHz2M8j/E8xvMYz2M8j/E8xvMYz2M8j/E85vOYz2M+j/k85vOYz2M+j/k85vOYz2M9j/U81vNYz2M9j/U81vNYz2M9j/U89vPYz2M/j/089vPYz2M/j/089vPYz8Oehz0Pex72POx5vDq3V+f26txendurc3t1bq/O7dW5vTq3V+f26txendurc3t1bq/O7dW5vTq3V+f26txendurc3t1bq/O7dW5vTq3V+f26txenVe/VVjRfmSP/FE8ykenqeocNB7NR8/jPI/zPM7zOM/jPI/THtWAdWk8mo/Wo/3IHvmjePTnkaPoNNX34kDj0Xy0Hu1H9sgfxaPn8dV5fiteTVmXxqP5aD3aj+yRP4pH+eh5rOexnsd6Hl+d5y7aj+yRP4pH+eg01RdHQePRfPQ89vPYz2M/j/089vPYz8Oehz0Pex72POx52POw52HPw56HPQ9/Hv48/Hn48/Dn4c/Dn4c/j/oyau2w+j5qUX0lFfR5eNF8tB59Hllkj/zRn8ep3fTV+aXT9NX5iaLxaD768zg1ylfnl+yRf1/e/BUGMYnn4VfrjYM4iYu4iUak26Hbodspt++oquWrcRDLbRcu4iYa0YlBTOJ5OH7EQaTboNug2yg3K3RiEJN4HuIrs8BBnMRF3ES6TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptum26Gd2MbkY3o5vRzehmdDO6Gd2Mbk43p5vTzenmdHO6Od2cbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdEu6Hboduh26Hboduh26Hboduh26neeWvx9xECdxETfRiE4MYhLpNug26DbohizJwk00ohODmMTzEFkCHMRJpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26ab0c3oZnQzuhndjG5GN6Ob0c3o5nRzujndnG5ON6eb083p5nRzugXdgm5Bt6Bb0C3oFnQLugXdgm5Jt6Rb0i3plnRLuiXdkm5Jt6Tboduh26Hboduh26Hboduh26HbeW7n9yMO4iQu4iYa0YlBTCLdBt0G3QbdmCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCWHWXKYJYdZcpglh1lymCXVIjjGKBzESVzETTSiE4OYxPPw0O3Q7dCtsmTMwk00ohODmMRzcVYnYeMgTuIibqIRnRjEJNJt0G3QbdBt0G3QbdBt0G3QbdBt0G3SbdJt0m3SbdJt0m3SbdJt0m3SbdFt0W3RbdFt0W3RbdFt0W3RbdFt023TbdNt023TbdNt023TbdNt083oZnSrLBm7cBE3sdyi0IlBTOJ5WFlycRAncRE3kW5ON6eb083pFnQLugXdgm5Bt6Bb0C3oFnQLuiXdkm5Jt6Rb0i3plnRLuiXdkm6Hboduh26Hboduh26Hboduh27nuY3fjziIk7iIm2hEJwYxiXQbdBt0G3QbdBt0G3QbdBt0G3QbdJt0m3SbdJt0m3SbdJt0m3SbdJt0W3RbdFt0W3RbdFt0W3RbdFt0W3TbdNt023TbdNt023TbdNt023TbdDO6Gd2MbkY3oxuzZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDFLFrNkMUsWs2QxSxazZDFLFrNkMUsWs2QxSxazZDFLFrNkMUsWs2QxSxazZDFLFrOkOjHH92DSWa2YjZO4iJtoRCcGMYnn4aLbotuiW2XJHIWbaEQnBjGJ52FlycVBnES6bbptum26bbptum26Gd2MbkY3o5vRzehmdDO6Gd2Mbk43p5vTzenmdHO6Od2cbk43p1vQLegWdAu6Bd2CbkG3oFvQLeiWdEu6Jd2Sbkm3pFvSLemWdEu6Hboduh26Hboduh26Hboduh26nedWnZ2NgziJi7iJRnRiEMttFZ6HlSUXy80LJ3ERN9GITgxiEs9DZAmQbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuRjejm9HN6GZ0M7oZ3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3ZJuh26Hboduh26Hboduh26Hbodu57nZ70ccxElcxE00ohODmES6DboxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLjFlizBJjlhizxJglxiwxZokxS4xZYswSY5YYs8SYJcYsMWaJMUuMWWLMEmOWGLPEmCXGLDFmiTFLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizxJklzixxZokzS5xZ4swSZ5Y4s8SZJc4scWaJM0ucWeLMEmeWOLPEmSXOLHFmiTNLnFnizBJnljizJJglwSwJZkkwS9D3Ok+hEZ0YxCSeh8gS4CBO4iLSbdBt0K2y5Pu5j4m+14vnYWXJxUGcxEXcRCM6kW6TbpNui26Lbotui26LbotulSVrFgYxiedhZcnFQZzERdxEI9Jt023TbdPN6GZ0M7oZ3YxuRjejm9HN6GZ0c7o53ZxuTjenm9PN6eZ0c7o53YJuQbegW9At6BZ0C7oF3YJuQbekW9It6ZZ0S7ol3ZJuSbekW9Lt0O3Q7dDt0O3Q7dDt0O3Q7dDtPDf0vV4cxElcxE00ohODmES6DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26LbotujFLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWZJMkuSWZLMkmSWJLMkmSXJLElmSTJLklmSzJJkliSzJJklySxJZkkyS5JZksySZJYksySZJcksSWbJYZYcZslhlhxmyWGWHGbJYZYcZslhlhxmyWGWHGbJYZYcZgn6XtcuNKITg5jE8xBZAhzESVxEuk26TbpNuk26Tbotui26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptum26Gd2MbkY3o5vRzehmdDO6Gd2Mbk43p5vTzenmdHO6Od2cbk43p1vQLegWdAu6Bd2QJV7oxCCWWxaeh8gS4CBO4iJuohGdGES6Jd0O3Q7dDt0O3Q7dDt0O3Q7dDt1Ouy30vV4cxElcxE00ohODmES6DboNug26DboNug26DboNug26DbpNuk26TbpNuk26TbpNuk26TbpNui26Lbotui26Lbotui26Lbotui26bbptum26bbptum26bbptum26bboZ3YxuRjejm9HN6GZ0M7oZ3YxuTjenm9PN6eZ0c7o53ZxuTjenW9At6BZ0C7oF3YJuQbegW9At6JZ0S7ol3ZJuSbekW9It6ZZ0S7oduh26Hboduh26Hboduh26HboxSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsGs2QwSwazZDBLBrNkMEsms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrNkMksms2QySyazZDJLJrMEfa/fT/ou9L1ePA8rS/YqHMRJXMRNNKITg5jE89Dp5nRDlkThIm6iEZ0YxCSeh8gS4CDSLegWdAu6Bd2CbkG3oFvSLemWdEu6Jd2Sbkm3pFvSLel26Hboduh26Hboduh26Hboduh2nhv6Xi8O4iQu4iYa0YlBTCLdBt0G3QbdBt0G3SpLbBY6MYifm63C87Cy5GLtyV04iYu4iUZ0YhCTeB5Wllyk26Lbotui26Lbotui26Lbotum26bbptum26bbptum26bbptumm9HN6GZ0M7oZ3YxuRjejm9HN6OZ0c7o53ZxuTjenm9PN6eZ0c7oF3YJuQbegW9At6BZ0C7oF3YJuSbekW9It6ZZ0S7ol3ZJuSbek26Hboduh26Hboduh26Hboduh23lu6Hu9OIiTuIibaEQnBjGJdBt0G3RDlozCRdxEIzoxiEk8D3FdAhxEuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuhndjG5GN6Ob0c3oZnQzuhndjG5ON6eb083p5nRzujndnG5ON6db0C3oFnQLugXdgm5Bt6Bb0C3olnRLuiXdkm5Jt6Rb0i3plnRLuh26Hboduh26Hboduh26Hbodup3nhr7Xi4M4iZ+bZeEmGvFzc/zbICbxc/Pv8gB9rxcHcRIXcRON6MQgJpFuk26TbpNuk26TbpNuk26TbpNuk26Lbotui26Lbotui26Lbotui26Lbptum26bbptum26bbptum26bbptuRjejm9HN6GZ0M7oZ3YxuRjejm9PN6eZ0c7o53ZxuTjenm9PN6RZ0C7oF3YJuQbegW9At6BZ0C7ol3ZJuSbekW9It6ZZ0S7ol3ZJuh26Hboduh26Hboduh26Hbodu57mh7/Xi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", + "is_unconstrained": true, + "name": "sync_private_state" } ], + "name": "Train", + "noir_version": "1.0.0-beta.14+82ec52a8c755d30ce655a2005834186a4acfa0c7-aztec", "outputs": { "globals": { "storage": [ @@ -12694,402 +12903,5 @@ ] } }, - "file_map": { - "100": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/dispatch.nr", - "source": "use super::utils::{compute_fn_selector, size_in_fields};\nuse poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault, panic};\n\n/// Returns an `fn public_dispatch(...)` function for the given module that's assumed to be an Aztec contract.\npub comptime fn generate_public_dispatch(m: Module) -> Quoted {\n let functions = m.functions();\n let functions =\n functions.filter(|function: FunctionDefinition| function.has_named_attribute(\"public\"));\n\n let unit = get_type::<()>();\n\n let seen_selectors =\n &mut UHashMap::>::default();\n\n let ifs = functions.map(|function: FunctionDefinition| {\n let parameters = function.parameters();\n let return_type = function.return_type();\n\n let selector: Field = compute_fn_selector(function);\n let fn_name = function.name();\n\n // Since function selectors are computed as the first 4 bytes of the hash of the function signature,\n // it's possible to have collisions. With the following check, we ensure it doesn't happen within\n // the same contract.\n if seen_selectors.contains_key(selector) {\n let existing_fn = seen_selectors.get(selector).unwrap();\n panic(\n f\"Public function selector collision detected between functions '{fn_name}' and '{existing_fn}'\",\n );\n }\n seen_selectors.insert(selector, fn_name);\n\n let mut parameters_size = 0;\n for param in parameters {\n parameters_size += size_in_fields(param.1);\n }\n\n let initial_read = if parameters.len() == 0 {\n quote {}\n } else {\n // The initial calldata_copy offset is 1 to skip the Field selector\n // The expected calldata is the serialization of\n // - FunctionSelector: the selector of the function intended to dispatch\n // - Parameters: the parameters of the function intended to dispatch\n // That is, exactly what is expected for a call to the target function,\n // but with a selector added at the beginning.\n quote {\n let input_calldata: [Field; $parameters_size] = dep::aztec::context::public_context::calldata_copy(1, $parameters_size);\n let mut reader = dep::aztec::protocol_types::utils::reader::Reader::new(input_calldata);\n }\n };\n\n let parameter_index: &mut u32 = &mut 0;\n let reads = parameters.map(|param: (Quoted, Type)| {\n let parameter_index_value = *parameter_index;\n let param_name = f\"arg{parameter_index_value}\".quoted_contents();\n let param_type = param.1;\n let read = quote {\n let $param_name: $param_type = reader.read_struct(dep::aztec::protocol_types::traits::Deserialize::deserialize);\n };\n *parameter_index += 1;\n quote { $read }\n });\n let read = reads.join(quote { });\n\n let mut args = &[];\n for parameter_index in 0..parameters.len() {\n let param_name = f\"arg{parameter_index}\".quoted_contents();\n args = args.push_back(quote { $param_name });\n }\n\n let args = args.join(quote { , });\n // name of the function is assigned just before the call so debug metadata doesn't span most of this macro when figuring out where the call comes from.\n let name = function.name();\n let call = quote { $name($args) };\n\n let return_code = if return_type == unit {\n quote {\n $call;\n // Force early return.\n dep::aztec::context::public_context::avm_return([]);\n }\n } else {\n quote {\n let return_value = dep::aztec::protocol_types::traits::Serialize::serialize($call);\n dep::aztec::context::public_context::avm_return(return_value.as_slice());\n }\n };\n\n let if_ = quote {\n if selector == $selector {\n $initial_read\n $read\n $return_code\n }\n };\n if_\n });\n\n if ifs.len() == 0 {\n // No dispatch function if there are no public functions\n quote {}\n } else {\n let ifs = ifs.push_back(quote { panic(f\"Unknown selector {selector}\") });\n let dispatch = ifs.join(quote { });\n\n let body = quote {\n // We mark this as public because our whole system depends on public\n // functions having this attribute. However, the public MACRO will\n // handle the public_dispatch function specially and do nothing.\n #[public]\n pub unconstrained fn public_dispatch(selector: Field) {\n $dispatch\n }\n };\n\n body\n }\n}\n\ncomptime fn get_type() -> Type {\n let t: T = std::mem::zeroed();\n std::meta::type_of(t)\n}\n" - }, - "104": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/call_interface_stubs.nr", - "source": "use crate::macros::utils::{\n add_to_field_array, AsStrQuote, compute_fn_selector, is_fn_private, is_fn_public, is_fn_view,\n};\nuse std::meta::unquote;\n\ncomptime global FROM_FIELD: TypedExpr = {\n let from_field_trait = quote { protocol_types::traits::FromField }.as_trait_constraint();\n let function_selector_typ =\n quote { protocol_types::abis::function_selector::FunctionSelector }.as_type();\n function_selector_typ.get_trait_impl(from_field_trait).unwrap().methods().filter(|m| {\n m.name() == quote { from_field }\n })[0]\n .as_typed_expr()\n};\n\ncomptime global SERIALIZED_ARGS_NAME: Quoted = quote { serialized_args };\n\npub comptime fn stub_fn(f: FunctionDefinition) -> Quoted {\n let is_static_call = is_fn_view(f);\n\n if is_fn_private(f) {\n if is_static_call {\n create_private_static_stub(f)\n } else {\n create_private_stub(f)\n }\n } else if is_fn_public(f) {\n if is_static_call {\n create_public_static_stub(f)\n } else {\n create_public_stub(f)\n }\n } else {\n create_utility_stub(f)\n }\n}\n\n/// Utility function creating stubs used by all the stub functions in this file.\ncomptime fn create_stub_base(\n f: FunctionDefinition,\n) -> (Quoted, Quoted, Quoted, Quoted, u32, Field) {\n let fn_name = f.name();\n let fn_parameters = f.parameters();\n let fn_parameters_list =\n fn_parameters.map(|(name, typ): (Quoted, Type)| quote { $name: $typ }).join(quote {,});\n let params_num_fields =\n fn_parameters.fold(0, |acc, (_, typ)| acc + crate::macros::utils::size_in_fields(typ));\n\n let serialized_args_index_name = quote { serialized_args_index };\n // Example of what the fold(...) below will generate for `target_address` and `fee_juice_limit_per_tx` function\n // parameters:\n // ```\n // let mut serialized_args = [0;2];\n // let mut serialized_args_index = 0;\n // let target_address_serialized = aztec::protocol_types::traits::Serialize::serialize(target_address)\n // for i in 0..target_address_serialized.len() {\n // serialized_args[serialized_args_index] = target_address_serialized[i];\n // serialized_args_index += 1;\n // }\n // serialized_args[serialized_args_index] = fee_juice_limit_per_tx as Field\n // serialized_args_index += 1;\n // ```\n let serialized_args_array_construction = fn_parameters.fold(\n quote {\n let mut $SERIALIZED_ARGS_NAME = [0; $params_num_fields];\n let mut $serialized_args_index_name: u32 = 0;\n },\n |args, param: (Quoted, Type)| {\n let (name, typ) = param;\n let arg_to_append =\n add_to_field_array(SERIALIZED_ARGS_NAME, serialized_args_index_name, name, typ);\n quote {\n $args\n $arg_to_append\n }\n },\n );\n\n let (fn_name_str, _) = fn_name.as_str_quote();\n let fn_name_len: u32 = unquote!(quote { $fn_name_str.as_bytes().len()});\n let fn_selector: Field = compute_fn_selector(f);\n\n (\n fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len,\n fn_selector,\n )\n}\n\ncomptime fn create_private_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_array_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_array_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_private_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PrivateStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PrivateStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_public_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n false\n )\n }\n }\n}\n\ncomptime fn create_public_static_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::PublicStaticCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::PublicStaticCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n\ncomptime fn create_utility_stub(f: FunctionDefinition) -> Quoted {\n let (fn_name, fn_parameters_list, serialized_args_slice_construction, fn_name_str, fn_name_len, fn_selector) =\n create_stub_base(f);\n let fn_return_type = f.return_type();\n\n quote {\n pub fn $fn_name(self, $fn_parameters_list) -> dep::aztec::context::call_interfaces::UtilityCallInterface<$fn_name_len, $fn_return_type> {\n $serialized_args_slice_construction\n let selector = $FROM_FIELD($fn_selector);\n dep::aztec::context::call_interfaces::UtilityCallInterface::new(\n self.target_contract,\n selector,\n $fn_name_str,\n $SERIALIZED_ARGS_NAME,\n )\n }\n }\n}\n" - }, - "105": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/initialization_utils.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\n/// This function is not only used in macros but it's also used by external people to check that an instance has been\n/// initialized with the correct constructor arguments. Don't hide this unless you implement factory functionality.\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n" - }, - "108": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/functions/utils.nr", - "source": "use crate::macros::{\n functions::{\n auth_registry::AUTHORIZE_ONCE_REGISTRY, call_interface_stubs::stub_fn, stub_registry,\n },\n notes::NOTES,\n utils::{\n add_to_hasher, fn_has_authorize_once, fn_has_noinitcheck, get_fn_visibility,\n is_fn_contract_library_method, is_fn_initializer, is_fn_internal, is_fn_private,\n is_fn_public, is_fn_test, is_fn_utility, is_fn_view, modify_fn_body, module_has_initializer,\n module_has_storage,\n },\n};\nuse std::meta::{ctstring::AsCtString, type_of};\n\npub(crate) comptime fn transform_private(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Private functions undergo a lot of transformations from their Aztec.nr form into a circuit that can be fed to the\n // Private Kernel Circuit.\n // First we change the function signature so that it also receives `PrivateContextInputs`, which contain information\n // about the execution context (e.g. the caller).\n let original_params = f.parameters();\n f.set_parameters(&[(\n quote { inputs },\n quote { crate::context::inputs::private_context_inputs::PrivateContextInputs }.as_type(),\n )]\n .append(original_params));\n\n let mut body = f.body().as_block().unwrap();\n\n // The original params are hashed and passed to the `context` object, so that the kernel can verify we've received\n // the correct values.\n // TODO: Optimize args_hasher for small number of arguments\n let args_hasher_name = quote { args_hasher };\n let args_hasher = original_params.fold(\n quote {\n let mut $args_hasher_name = dep::aztec::hash::ArgsHasher::new();\n },\n |args_hasher, param: (Quoted, Type)| {\n let (name, typ) = param;\n let appended_arg = add_to_hasher(args_hasher_name, name, typ);\n quote {\n $args_hasher\n $appended_arg\n }\n },\n );\n\n let context_creation = quote {\n let mut context = dep::aztec::context::private_context::PrivateContext::new(inputs, dep::aztec::protocol_types::traits::Hash::hash($args_hasher_name));\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !is_fn_initializer(f) & !fn_has_noinitcheck(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // All private functions perform message discovery, since they may need to access notes. This is slightly\n // inefficient and could be improved by only doing it once we actually attempt to read any. Note that the message\n // discovery call syncs private events as well. We do not sync those here if there are no notes because we don't\n // have an API that would access events from private functions.\n let message_discovery_call = if NOTES.len() > 0 {\n create_message_discovery_call()\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n // Finally, we need to change the return type to be `PrivateCircuitPublicInputs`, which is what the Private Kernel\n // circuit expects.\n let return_value_var_name = quote { macro__returned__values };\n\n let return_value_type = f.return_type();\n let return_value = if body.len() == 0 {\n quote {}\n } else if return_value_type != type_of(()) {\n // The original return value is passed to a second args hasher which the context receives.\n let (body_without_return, last_body_expr) = body.pop_back();\n let return_value = last_body_expr.quoted();\n let return_value_assignment =\n quote { let $return_value_var_name: $return_value_type = $return_value; };\n let return_hasher_name = quote { return_hasher };\n let return_value_into_hasher =\n add_to_hasher(return_hasher_name, return_value_var_name, return_value_type);\n\n body = body_without_return;\n\n quote {\n let mut $return_hasher_name = dep::aztec::hash::ArgsHasher::new();\n $return_value_assignment\n $return_value_into_hasher\n context.set_return_hash($return_hasher_name);\n }\n } else {\n let (body_without_return, last_body_expr) = body.pop_back();\n if !last_body_expr.has_semicolon()\n & last_body_expr.as_for().is_none()\n & last_body_expr.as_assert().is_none()\n & last_body_expr.as_for_range().is_none()\n & last_body_expr.as_assert_eq().is_none()\n & last_body_expr.as_let().is_none() {\n let unused_return_value_name = f\"_{return_value_var_name}\".quoted_contents();\n body = body_without_return.push_back(\n quote { let $unused_return_value_name = $last_body_expr; }.as_expr().unwrap(),\n );\n }\n quote {}\n };\n\n let context_finish = quote { context.finish() };\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $args_hasher\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $message_discovery_call\n $authorize_once_check\n };\n\n let to_append = quote {\n $return_value\n $mark_as_initialized\n $context_finish\n };\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n f.set_return_type(\n quote { dep::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs }\n .as_type(),\n );\n f.set_return_data();\n}\n\npub(crate) comptime fn transform_public(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n let module_has_initializer = module_has_initializer(f.module());\n let module_has_storage = module_has_storage(f.module());\n\n // Public functions undergo a lot of transformations from their Aztec.nr form.\n let original_params = f.parameters();\n\n let args_len_quote = if original_params.len() == 0 {\n // If the function has no parameters, we set the args_len to 0.\n quote { 0 }\n } else {\n // The following will give us ::N + ::N + ...\n original_params\n .map(|(_, param_type): (Quoted, Type)| {\n quote {\n <$param_type as $crate::protocol_types::traits::Serialize>::N\n }\n })\n .join(quote {+})\n };\n\n // Unlike in the private case, in public the `context` does not need to receive the hash of the original params.\n let context_creation = quote {\n let mut context = dep::aztec::context::public_context::PublicContext::new(|| {\n // We start from 1 because we skip the selector for the dispatch function.\n let serialized_args : [Field; $args_len_quote] = dep::aztec::context::public_context::calldata_copy(1, $args_len_quote);\n dep::aztec::hash::hash_args_array(serialized_args)\n });\n };\n\n // Modifications introduced by the different marker attributes.\n let internal_check = if is_fn_internal(f) {\n create_internal_check(f)\n } else {\n quote {}\n };\n\n let view_check = if is_fn_view(f) {\n create_view_check(f)\n } else {\n quote {}\n };\n\n let (assert_initializer, mark_as_initialized) = if is_fn_initializer(f) {\n (create_assert_correct_initializer_args(f), create_mark_as_initialized(f))\n } else {\n (quote {}, quote {})\n };\n\n let storage_init = if module_has_storage {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n quote {\n #[allow(unused_variables)]\n let storage = Storage::init(&mut context);\n }\n } else {\n quote {}\n };\n\n // Initialization checks are not included in contracts that don't have initializers.\n let init_check = if module_has_initializer & !fn_has_noinitcheck(f) & !is_fn_initializer(f) {\n create_init_check(f)\n } else {\n quote {}\n };\n\n // Inject the authwit check if the function is marked with #[authorize_once].\n let authorize_once_check = if fn_has_authorize_once(f) {\n create_authorize_once_check(f)\n } else {\n quote {}\n };\n\n let to_prepend = quote {\n $context_creation\n $assert_initializer\n $init_check\n $internal_check\n $view_check\n $storage_init\n $authorize_once_check\n };\n\n let to_append = quote {\n $mark_as_initialized\n };\n\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, to_append);\n f.set_body(modified_body);\n\n // All public functions are automatically made unconstrained, even if they were not marked as such. This is because\n // instead of compiling into a circuit, they will compile to bytecode that will be later transpiled into AVM\n // bytecode.\n f.set_unconstrained(true);\n f.set_return_public(true);\n}\n\npub(crate) comptime fn transform_utility(f: FunctionDefinition) {\n let fn_stub = stub_fn(f);\n stub_registry::register(f.module(), fn_stub);\n\n // Create utility context\n let context_creation =\n quote { let mut context = dep::aztec::context::utility_context::UtilityContext::new(); };\n let module_has_storage = module_has_storage(f.module());\n\n // Initialize Storage if module has storage\n let storage_init = if module_has_storage {\n quote {\n // Some functions don't access storage, but it'd be quite difficult to only inject this variable if it is\n // referenced. We instead ignore 'unused variable' warnings for it.\n #[allow(unused_variables)]\n let storage = Storage::init(context);\n }\n } else {\n quote {}\n };\n\n // All utility functions perform message discovery, since they may need to access private notes that would be\n // found during this process or they may be used to sync private events from TypeScript\n // (`sync_private_state` function gets invoked by PXE::getPrivateEvents function).\n let message_discovery_call = create_message_discovery_call();\n\n // A quote to be injected at the beginning of the function body.\n let to_prepend = quote {\n dep::aztec::oracle::version::assert_compatible_oracle_version();\n $context_creation\n $storage_init\n $message_discovery_call\n };\n let body = f.body().as_block().unwrap();\n let modified_body = modify_fn_body(body, to_prepend, quote {});\n f.set_body(modified_body);\n\n f.set_return_public(true);\n}\n\ncomptime fn create_internal_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called internally\";\n quote { assert(context.msg_sender() == context.this_address(), $assertion_message); }\n}\n\ncomptime fn create_view_check(f: FunctionDefinition) -> Quoted {\n let name = f.name();\n let assertion_message = f\"Function {name} can only be called statically\";\n if is_fn_private(f) {\n // Here `context` is of type context::PrivateContext\n quote { assert(context.inputs.call_context.is_static_call, $assertion_message); }\n } else {\n // Here `context` is of type context::PublicContext\n quote { assert(context.is_static_call(), $assertion_message); }\n }\n}\n\ncomptime fn create_assert_correct_initializer_args(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_initialization_matches_address_preimage_{fn_visibility}(context);\"\n .quoted_contents()\n}\n\ncomptime fn create_mark_as_initialized(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::mark_as_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\ncomptime fn create_init_check(f: FunctionDefinition) -> Quoted {\n let fn_visibility = get_fn_visibility(f);\n f\"dep::aztec::macros::functions::initialization_utils::assert_is_initialized_{fn_visibility}(&mut context);\"\n .quoted_contents()\n}\n\n/// Injects a call to `aztec::messages::discovery::discover_new_messages`, causing for new notes to be added to PXE and made\n/// available for the current execution.\npub(crate) comptime fn create_message_discovery_call() -> Quoted {\n quote {\n /// Safety: message discovery returns nothing and is performed solely for its side-effects. It is therefore\n /// always safe to call.\n unsafe {\n dep::aztec::messages::discovery::discover_new_messages(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n );\n };\n }\n}\n\n/// Injects an authwit verification check of the form:\n/// ```\n/// if (!from.eq(context.msg_sender())) {\n/// assert_current_call_valid_authwit::(&mut context, from);\n/// } else {\n/// assert(authwit_nonce, \"Invalid authwit nonce. When 'from' and 'msg_sender' are the same, authwit_nonce must be zero\");\n/// }\n/// ```\n/// where `from` and `authwit_nonce` are the names of the parameters that are expected to be present in the function definition.\n/// This check is injected by the `#[authorize_once(\"from_arg_name\", \"nonce_arg_name\")]`, which allows the user to define\n/// which parameters to use.\npub(crate) comptime fn create_authorize_once_check(f: FunctionDefinition) -> Quoted {\n let maybe_authorize_once_args = AUTHORIZE_ONCE_REGISTRY.get(f);\n let authorize_once_args = if maybe_authorize_once_args.is_some() {\n maybe_authorize_once_args.unwrap()\n } else {\n // We need to for authorize_once to have already executed so that we can retrieve its params - this depends on\n // the order in which the attributes are applied.\n panic(\n f\"Functions marked with #[authorize_once] must have the #[private] or #[public] attribute placed last\",\n )\n };\n\n let (from_arg_name, nonce_arg_name) = authorize_once_args;\n let name: Quoted = f.name();\n\n let from_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{from_arg_name}\".quoted_contents());\n let (from_arg_name_quoted, from_arg_type) = if from_arg_candidates.len() == 1 {\n from_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {from_arg_name} parameter. Please specify which one to use in #[authorize_once(\\\"...\\\", \\\"authwit_nonce\\\")]\",\n )\n };\n if from_arg_type\n != quote { dep::protocol_types::address::aztec_address::AztecAddress }.as_type() {\n panic(\n f\"Argument {from_arg_name_quoted} in function {name} must be of type AztecAddress, but is of type {from_arg_type}\",\n )\n }\n\n let nonce_arg_candidates =\n f.parameters().filter(|(name, _)| name == f\"{nonce_arg_name}\".quoted_contents());\n let (nonce_arg_name_quoted, nonce_arg_type) = if nonce_arg_candidates.len() == 1 {\n nonce_arg_candidates[0]\n } else {\n panic(\n f\"Function {name} does not have a {nonce_arg_name}. Please specify which one to use in #[authorize_once(\\\"from\\\", \\\"...\\\")]\",\n )\n };\n if nonce_arg_type != quote { Field }.as_type() {\n panic(\n f\"Argument {nonce_arg_name_quoted} in function {name} must be of type Field, but is of type {nonce_arg_type}\",\n );\n }\n\n let nonce_check_quote = f\"{nonce_arg_name_quoted} == 0\".quoted_contents();\n\n let fn_call = if is_fn_private(f) {\n // At this point, the original args of the fn have already been altered by the macro\n // to include PrivateContextInputs, so we need to adjust the args_len accordingly.\n let args_len = f.parameters().len() - 1;\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit::<$args_len> }\n } else {\n quote { dep::aztec::authwit::auth::assert_current_call_valid_authwit_public }\n };\n let invalid_nonce_message = f\"Invalid authwit nonce. When '{from_arg_name}' and 'msg_sender' are the same, '{nonce_arg_name}' must be zero\"\n .as_ctstring()\n .as_quoted_str();\n quote { \n if (!$from_arg_name_quoted.eq(context.msg_sender())) {\n $fn_call(&mut context, $from_arg_name_quoted);\n } else {\n assert($nonce_check_quote, $invalid_nonce_message);\n }\n }\n}\n\n/// Checks if each function in the module is marked with either #[private], #[public], #[utility],\n/// #[contract_library_method], or #[test]. Non-macroified functions are not allowed in contracts.\npub(crate) comptime fn check_each_fn_macroified(m: Module) {\n for f in m.functions() {\n let name = f.name();\n if !is_fn_private(f)\n & !is_fn_public(f)\n & !is_fn_utility(f)\n & !is_fn_contract_library_method(f)\n & !is_fn_test(f) {\n panic(\n f\"Function {name} must be marked as either #[private], #[public], #[utility], #[contract_library_method], or #[test]\",\n );\n }\n }\n}\n" - }, - "110": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/notes.nr", - "source": "use crate::note::note_getter_options::PropertySelector;\nuse std::{collections::bounded_vec::BoundedVec, meta::{ctstring::AsCtString, type_of}};\n\n/// Maximum number of note types within 1 contract.\ncomptime global MAX_NOTE_TYPES: u32 = 128;\n\n/// A BoundedVec containing all the note types within this contract.\npub comptime mut global NOTES: BoundedVec = BoundedVec::new();\n\ncomptime mut global NOTE_TYPE_ID_COUNTER: u32 = 0;\n\n/// The note type id is set by enumerating the note types.\ncomptime fn get_next_note_type_id() -> Field {\n // We assert that the note type id fits within 7 bits\n assert(\n NOTE_TYPE_ID_COUNTER < MAX_NOTE_TYPES,\n f\"A contract can contain at most {MAX_NOTE_TYPES} different note types\",\n );\n\n let note_type_id = NOTE_TYPE_ID_COUNTER as Field;\n NOTE_TYPE_ID_COUNTER += 1;\n note_type_id\n}\n\n/// Generates default `NoteType` implementation for a given note struct `s` and returns it as a quote.\n///\n/// impl NoteType for NoteStruct {\n/// fn get_id() -> Field {\n/// ...\n/// }\n/// }\ncomptime fn generate_note_type_impl(s: TypeDefinition, note_type_id: Field) -> Quoted {\n let name = s.name();\n let typ = s.as_type();\n let note_type_name: str<_> = f\"{name}\".as_ctstring().as_quoted_str!();\n let max_note_packed_len = crate::messages::discovery::private_notes::MAX_NOTE_PACKED_LEN;\n\n quote {\n impl aztec::note::note_interface::NoteType for $name {\n fn get_id() -> Field {\n // This static assertion ensures the note's packed length doesn't exceed the maximum allowed size.\n // While this check would ideally live in the Packable trait implementation, we place it here since\n // this function is always generated by our macros and the Packable trait implementation is not.\n // Note: We set the note type name and max packed length as local variables because injecting them\n // directly into the error message doesn't work.\n let note_type_name = $note_type_name;\n let max_note_packed_len: u32 = $max_note_packed_len; // Casting to u32 to avoid the value to be printed in hex.\n let note_packed_len = <$typ as Packable>::N;\n std::static_assert(note_packed_len <= $max_note_packed_len, f\"{note_type_name} has a packed length of {note_packed_len} fields, which exceeds the maximum allowed length of {max_note_packed_len} fields\");\n\n $note_type_id\n }\n }\n }\n}\n\n/// Generates default `NoteHash` trait implementation for a given note struct `s` and returns it as a quote.\n///\n/// # Generated Implementation\n/// ```\n/// impl NoteHash for NoteStruct {\n/// fn compute_note_hash(self, storage_slot: Field) -> Field { ... }\n///\n/// fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field { ... }\n///\n/// unconstrained fn compute_nullifier_unconstrained(note_hash_for_nullify: Field) -> Field { ... }\n/// }\n/// ```\ncomptime fn generate_note_hash_trait_impl(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n quote {\n impl aztec::note::note_interface::NoteHash for $name {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n let inputs = aztec::protocol_types::traits::Packable::pack(self).concat( [storage_slot]);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(inputs, aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_HASH)\n }\n\n fn compute_nullifier(\n self,\n context: &mut aztec::context::PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = context.request_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(\n self,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = aztec::keys::getters::get_public_keys(self.owner).npk_m;\n // We invoke hash as a static trait function rather than calling owner_npk_m.hash() directly\n // in the quote to avoid \"trait not in scope\" compiler warnings.\n let owner_npk_m_hash = aztec::protocol_types::traits::Hash::hash(owner_npk_m);\n let secret = aztec::keys::getters::get_nsk_app(owner_npk_m_hash);\n aztec::protocol_types::hash::poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n aztec::protocol_types::constants::GENERATOR_INDEX__NOTE_NULLIFIER as Field,\n )\n }\n }\n }\n}\n\n/// Generates note properties struct for a given note struct `s`.\n///\n/// Example:\n/// ```\n/// struct TokenNoteProperties {\n/// amount: aztec::note::note_getter_options::PropertySelector,\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector\n/// randomness: aztec::note::note_getter_options::PropertySelector\n/// }\n///\n/// impl aztec::note::note_interface::NoteProperties for TokenNote {\n/// fn properties() -> TokenNoteProperties {\n/// Self {\n/// amount: aztec::note::note_getter_options::PropertySelector { index: 0, offset: 0, length: 32 },\n/// npk_m_hash: aztec::note::note_getter_options::PropertySelector { index: 1, offset: 0, length: 32 },\n/// randomness: aztec::note::note_getter_options::PropertySelector { index: 2, offset: 0, length: 32 }\n/// }\n/// }\n/// }\n/// ```\ncomptime fn generate_note_properties(s: TypeDefinition) -> Quoted {\n let name = s.name();\n\n let struct_name = f\"{name}Properties\".quoted_contents();\n\n let property_selector_type = type_of(PropertySelector { index: 0, offset: 0, length: 0 });\n\n let note_fields = s.fields_as_written();\n\n let properties_types = note_fields\n .map(|(name, _, _)| quote { pub $name: $property_selector_type })\n .join(quote {,});\n\n // TODO #8694: Properly handle non-field types https://github.com/AztecProtocol/aztec-packages/issues/8694\n let mut properties_list = &[];\n for i in 0..note_fields.len() {\n let (name, _, _) = note_fields[i];\n properties_list = properties_list.push_back(\n quote { $name: aztec::note::note_getter_options::PropertySelector { index: $i, offset: 0, length: 32 } },\n );\n }\n\n let properties = properties_list.join(quote {,});\n\n quote {\n pub struct $struct_name {\n $properties_types\n }\n\n impl aztec::note::note_interface::NoteProperties<$struct_name> for $name {\n fn properties() -> $struct_name {\n $struct_name {\n $properties\n }\n }\n }\n }\n}\n\n/// Generates the core note functionality for a struct:\n///\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n/// - NoteHash trait implementation: Handles note hash and nullifier computation\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Have an `owner` field\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Generated Code\n///\n/// For detailed documentation on the generated implementations, see:\n/// - `generate_note_properties()`\n/// - `generate_note_type_impl()`\n/// - `generate_note_hash_trait_impl()`\npub comptime fn note(s: TypeDefinition) -> Quoted {\n assert_has_owner(s);\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_properties = generate_note_properties(s);\n let note_type_id = get_next_note_type_id();\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n let note_hash_impl = generate_note_hash_trait_impl(s);\n\n quote {\n $note_properties\n $note_type_impl\n $note_hash_impl\n }\n}\n\n/// Generates code for a custom note implementation that requires specialized note hash or nullifier computation.\n///\n/// # Generated Code\n/// - NoteTypeProperties: Defines the structure and properties of note fields\n/// - NoteType trait implementation: Provides the note type ID\n///\n/// # Requirements\n///\n/// The note struct must:\n/// - Implement the `Packable` trait\n/// - Not exceed `MAX_NOTE_PACKED_LEN` when packed\n///\n/// Unlike the `#[note]` macro, there is no requirement for an `owner` field.\n///\n/// # Registration\n///\n/// Registers the note in the global `NOTES` BoundedVec to enable note processing functionality.\n///\n/// # Use Cases\n/// Use this macro when implementing a note that needs custom:\n/// - Note hash computation logic\n/// - Nullifier computation logic\n///\n/// The macro omits generating default NoteHash trait implementation, allowing you to provide your own.\n///\n/// # Example\n/// ```\n/// #[custom_note]\n/// struct CustomNote {\n/// value: Field,\n/// metadata: Field\n/// }\n///\n/// impl NoteHash for CustomNote {\n/// // Custom note hash computation...\n/// fn compute_note_hash(...) -> Field { ... }\n///\n/// // Custom nullifier computation...\n/// fn compute_nullifier(...) -> Field { ... }\n/// fn compute_nullifier_unconstrained(...) -> Field { ... }\n/// }\n/// ```\npub comptime fn custom_note(s: TypeDefinition) -> Quoted {\n assert_has_packable(s);\n\n // We register the note in the global `NOTES` BoundedVec because we need that information inside the #[aztec] macro\n // to generate note processing functionality.\n NOTES.push(s.as_type());\n\n let note_type_id = get_next_note_type_id();\n let note_properties = generate_note_properties(s);\n let note_type_impl = generate_note_type_impl(s, note_type_id);\n\n quote {\n $note_properties\n $note_type_impl\n }\n}\n\n/// Asserts that the given note implements the `Packable` trait.\n///\n/// We require that notes have the `Packable` trait implemented because it is used when emitting a note in a log or as\n/// an offchain message.\ncomptime fn assert_has_packable(note: TypeDefinition) {\n let packable_constraint =\n quote { crate::protocol_types::traits::Packable }.as_trait_constraint();\n let note_name = note.name();\n\n assert(\n note.as_type().implements(packable_constraint),\n f\"{note_name} does not implement Packable trait. Either implement it manually or place #[derive(Packable)] on the note struct before #[note] macro invocation.\",\n );\n}\n\n/// Asserts that the note has an 'owner' field.\n///\n/// We require notes implemented with #[note] macro macro to have an 'owner' field because our\n/// auto-generated nullifier functions expect it. This requirement is most likely only temporary.\ncomptime fn assert_has_owner(note: TypeDefinition) {\n let fields = note.fields_as_written();\n let mut has_owner = false;\n for i in 0..fields.len() {\n let (field_name, _, _) = fields[i];\n if field_name == quote { owner } {\n has_owner = true;\n break;\n }\n }\n let note_name = note.name();\n\n assert(\n has_owner,\n f\"{note_name} does not have an 'owner' field. If your notes have no owner, use #[custom_note] insteadof #[note] and implement the NoteHashing trait manually.\",\n );\n}\n" - }, - "111": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/storage.nr", - "source": "use poseidon::poseidon2::Poseidon2Hasher;\nuse std::{collections::umap::UHashMap, hash::BuildHasherDefault};\n\nuse super::utils::AsStrQuote;\nuse super::utils::get_storage_size;\n\n/// Stores a map from a module to the name of the struct that describes its storage layout.\n/// This is then used when generating a `storage_layout()` getter on the contract struct.\npub comptime mut global STORAGE_LAYOUT_NAME: UHashMap> =\n UHashMap::default();\n\n/// Marks a struct as the one describing the storage layout of a contract.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract should have this macro (or `storage_no_init`) applied to it, and the\n/// struct has to be called 'Storage'.\npub comptime fn storage(s: TypeDefinition) -> Quoted {\n let struct_name = s.name();\n if struct_name != quote { Storage } {\n panic(\n f\"The #[storage] macro can only be applied to a struct with name 'Storage', got '{struct_name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage_no_init\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n\n // This macro performs three things:\n // - it marks the contract as having storage, so that `macros::utils::module_has_storage` will return true and\n // functions will have the storage variable injected and initialized via the `init` function.\n // - it implements said `init` function by allocating appropriate storage slots to each state variable.\n // - it exposes the storage layout by creating a `StorageLayout` struct that is exposed via the `abi(storage)`\n // macro.\n let mut slot: u32 = 1;\n let mut storage_vars_constructors = &[];\n let mut storage_layout_fields = &[];\n let mut storage_layout_constructors = &[];\n\n // TODO(#8658): uncomment the code below to inject the Context type parameter.\n //let mut new_storage_fields = &[];\n //let context_generic = s.add_generic(\"Context\");\n for field in s.fields_as_written() {\n // FIXME: This doesn't handle field types with generics\n let (name, typ, _) = field;\n let (storage_field_constructor, storage_size) =\n generate_storage_field_constructor(typ, quote { $slot });\n storage_vars_constructors =\n storage_vars_constructors.push_back(quote { $name: $storage_field_constructor });\n // We have `Storable` in a separate `.nr` file instead of defining it in the last quote of this function\n // because that way a dev gets a more reasonable error if he defines a struct with the same name in\n // a contract.\n storage_layout_fields = storage_layout_fields.push_back(\n quote { pub $name: dep::aztec::state_vars::storage::Storable },\n );\n storage_layout_constructors = storage_layout_constructors.push_back(\n quote { $name: dep::aztec::state_vars::storage::Storable { slot: $slot } },\n );\n //let with_context_generic = add_context_generic(typ, context_generic);\n //println(with_context_generic);\n //new_storage_fields = new_storage_fields.push_back((name, with_context_generic ));\n slot += storage_size;\n }\n\n //s.set_fields(new_storage_fields);\n let storage_vars_constructors = storage_vars_constructors.join(quote {,});\n let storage_impl = quote {\n impl Storage {\n fn init(context: Context) -> Self {\n Self {\n $storage_vars_constructors\n }\n }\n }\n };\n\n let storage_layout_fields = storage_layout_fields.join(quote {,});\n let storage_layout_constructors = storage_layout_constructors.join(quote {,});\n\n let module = s.module();\n let module_name = module.name();\n let storage_layout_name = f\"STORAGE_LAYOUT_{module_name}\".quoted_contents();\n let (module_name_str, module_name_len) = module_name.as_str_quote();\n STORAGE_LAYOUT_NAME.insert(module, storage_layout_name);\n\n quote {\n $storage_impl\n\n pub struct StorageLayoutFields {\n $storage_layout_fields\n }\n\n pub struct StorageLayout {\n pub contract_name: str,\n pub fields: StorageLayoutFields\n }\n\n #[abi(storage)]\n pub global $storage_layout_name: StorageLayout<$module_name_len> = StorageLayout {\n contract_name: $module_name_str,\n fields: StorageLayoutFields { $storage_layout_constructors }\n };\n }\n}\n\n/// Same as `storage`, except the user is in charge of providing an implementation of the `init` constructor function\n/// with signature `fn init(context: Context) -> Self`, which allows for manual control of storage slot\n/// allocation. Similarly, no `StorageLayout` struct will be created.\n///\n/// The contract's storage is accessed via the `storage` variable, which will will automatically be made available in\n/// all functions as an instance of the struct this macro was applied to.\n///\n/// Only a single struct in the entire contract can have this macro (or storage_no_init) applied to it, and the struct\n/// has to be called 'Storage'.\npub comptime fn storage_no_init(s: TypeDefinition) {\n // All `storage` does is provide the `init` implementation, so we don't need to do anything here. Applying this\n // macro however will cause for `macros::utils::module_has_storage` to return true, resulting in the injection of\n // the `storage` variable.\n\n // We do need to make sure that the type is called Storage, since we'll do `Storage::init` later on.\n\n if s.name() != quote { Storage } {\n let name = s.name();\n panic(\n f\"The #[storage_no_init] macro can only be applied to a struct with name 'Storage', got '{name}' instead.\",\n )\n }\n\n assert(\n !s.has_named_attribute(\"storage\"),\n f\"Only one of #[storage] and #[storage_no_init] can be applied to the Storage struct.\",\n );\n}\n\n/// Returns the expression required to initialize a state variable with a given slot, along with its serialization size,\n/// i.e. how many contiguous storage slots the variable requires.\ncomptime fn generate_storage_field_constructor(typ: Type, slot: Quoted) -> (Quoted, u32) {\n assert(\n typ.as_data_type().is_some(),\n \"Storage containers must be generic structs of the form `Container<_, Context>`, or Map\",\n );\n let (container_struct, generics) = typ.as_data_type().unwrap();\n let struct_name = container_struct.name();\n\n let constructor = if is_storage_map(typ) {\n // Map state variables recursively initialize their contents - this includes nested maps.\n let (value_constructor, _) =\n generate_storage_field_constructor(generics[1], quote { slot });\n\n quote { $struct_name::new(context, $slot, | context, slot | { $value_constructor }) }\n } else {\n // We assume below that all state variables implement `fn new(context: Context, slot: Field) -> Self`.\n quote { $struct_name::new(context, $slot)}\n };\n\n (constructor, get_storage_size(typ))\n}\n\n/// Returns true if `typ` is `state_vars::map::Map`.\ncomptime fn is_storage_map(typ: Type) -> bool {\n if typ.as_data_type().is_some() {\n let (def, generics) = typ.as_data_type().unwrap();\n let maybe_map = if (def.name() == quote { Map }) & (generics.len() == 3) {\n let maybe_key = generics[0];\n let maybe_value = generics[1];\n let maybe_context = generics[2];\n quote { crate::state_vars::map::Map<$maybe_key, $maybe_value, $maybe_context> }.as_type()\n } else {\n quote {()}.as_type()\n };\n typ == maybe_map\n } else {\n false\n }\n}\n\ncomptime fn add_context_generic(typ: Type, context_generic: Type) -> Type {\n let (def, mut generics) = typ.as_data_type().expect(\n f\"Storage containers must be generic structs of the form `Container<..., Context>`\",\n );\n let name = def.name();\n\n if is_storage_map(typ) {\n generics[generics.len() - 2] = add_context_generic(generics[1], context_generic);\n generics[generics.len() - 1] = context_generic;\n } else {\n generics[generics.len() - 1] = context_generic;\n }\n\n let generics = generics.map(|typ: Type| quote {$typ}).join(quote {,});\n quote { $name<$generics> }.as_type()\n}\n" - }, - "113": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/mod.nr", - "source": "use protocol_types::{address::AztecAddress, debug_log::{debug_log, debug_log_format}};\n\npub mod nonce_discovery;\npub mod partial_notes;\npub mod private_events;\npub mod private_notes;\npub mod process_message;\n\nuse crate::{\n messages::{\n discovery::{private_notes::MAX_NOTE_PACKED_LEN, process_message::do_process_message},\n processing::{\n get_private_logs, pending_tagged_log::PendingTaggedLog,\n validate_enqueued_notes_and_events,\n },\n },\n utils::array,\n};\n\npub struct NoteHashAndNullifier {\n /// The result of NoteHash::compute_note_hash\n pub note_hash: Field,\n /// The result of NoteHash::compute_nullifier_unconstrained (since all of message discovery is unconstrained)\n pub inner_nullifier: Field,\n}\n\n/// A function which takes a note's packed content, address of the emitting contract, note nonce, storage slot and note\n/// type ID and attempts to compute its note hash (not hashed by note nonce nor siloed by address) and inner nullifier\n/// (not siloed by address).\n///\n/// This function must be user-provided as its implementation requires knowledge of how note type IDs are allocated in a\n/// contract. The `#[aztec]` macro automatically creates such a contract library method called\n/// `_compute_note_hash_and_nullifier`, which looks something like this:\n///\n/// ```\n/// |packed_note, contract_address, note_nonce, storage_slot, note_type_id| {\n/// if note_type_id == MyNoteType::get_id() {\n/// assert(packed_note.len() == MY_NOTE_TYPE_SERIALIZATION_LENGTH);\n///\n/// let note = MyNoteType::unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n///\n/// let note_hash = note.compute_note_hash(storage_slot);\n/// let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n/// RetrievedNote{ note, contract_address, metadata: SettledNoteMetadata::new(note_nonce).into() },\n/// storage_slot\n/// );\n///\n/// let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n///\n/// Option::some(\n/// aztec::messages::discovery::NoteHashAndNullifier {\n/// note_hash, inner_nullifier\n/// }\n/// )\n/// } else if note_type_id == MyOtherNoteType::get_id() {\n/// ... // Similar to above but calling MyOtherNoteType::unpack_content\n/// } else {\n/// Option::none() // Unknown note type ID\n/// };\n/// }\n/// ```\ntype ComputeNoteHashAndNullifier = unconstrained fn[Env](/* packed_note */BoundedVec, /* storage_slot */ Field, /* note_type_id */ Field, /* contract_address */ AztecAddress, /* note nonce */ Field) -> Option;\n\n/// Performs the message discovery process, in which private are downloaded and inspected to find new private notes,\n/// partial notes and events, etc., and pending partial notes are processed to search for their completion logs.\n/// This is the mechanism via which a contract updates its knowledge of its private state.\n///\n/// Receives the address of the contract on which discovery is performed along with its\n/// `compute_note_hash_and_nullifier` function.\npub unconstrained fn discover_new_messages(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n debug_log(\"Performing message discovery\");\n\n // First we process all private logs, which can contain different kinds of messages e.g. private notes, partial\n // notes, private events, etc.\n let mut logs = get_private_logs(contract_address);\n logs.for_each(|i, pending_tagged_log: PendingTaggedLog| {\n debug_log_format(\n \"Processing log with tag {0}\",\n [pending_tagged_log.log.get(0)],\n );\n\n // We remove the tag from the pending tagged log and process the message ciphertext contained in it.\n let message_ciphertext = array::subbvec(pending_tagged_log.log, 1);\n\n do_process_message(\n contract_address,\n compute_note_hash_and_nullifier,\n message_ciphertext,\n pending_tagged_log.context,\n );\n logs.remove(i);\n });\n\n // Then we process all pending partial notes, regardless of whether they were found in the current or previous\n // executions.\n partial_notes::fetch_and_process_partial_note_completion_logs(\n contract_address,\n compute_note_hash_and_nullifier,\n );\n\n // Finally we validate all notes and events that were found as part of the previous processes, resulting in them\n // being added to PXE's database and retrievable via oracles (get_notes) and our TS API (PXE::getPrivateEvents).\n validate_enqueued_notes_and_events(contract_address);\n}\n" - }, - "114": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/nonce_discovery.nr", - "source": "use crate::messages::discovery::{ComputeNoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n constants::MAX_NOTE_HASHES_PER_TX,\n debug_log::debug_log_format,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::ToField,\n};\n\n/// A struct with the discovered information of a complete note, required for delivery to PXE. Note that this is *not*\n/// the complete note information, since it does not include content, storage slot, etc.\npub struct DiscoveredNoteInfo {\n pub note_nonce: Field,\n pub note_hash: Field,\n pub inner_nullifier: Field,\n}\n\n/// Searches for note nonces that will result in a note that was emitted in a transaction. While rare, it is possible\n/// for multiple notes to have the exact same packed content and storage slot but different nonces, resulting in\n/// different unique note hashes. Because of this this function returns a *vector* of discovered notes, though in most\n/// cases it will contain a single element.\n///\n/// Due to how nonces are computed, this function requires knowledge of the transaction in which the note was created,\n/// more specifically the list of all unique note hashes in it plus the value of its first nullifier.\npub unconstrained fn attempt_note_nonce_discovery(\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) -> BoundedVec {\n let discovered_notes = &mut BoundedVec::new();\n\n debug_log_format(\n \"Attempting nonce discovery on {0} potential notes on contract {1} for storage slot {2}\",\n [unique_note_hashes_in_tx.len() as Field, contract_address.to_field(), storage_slot],\n );\n\n // We need to find nonces (typically just one) that result in a note hash that, once siloed into a unique note hash,\n // is one of the note hashes created by the transaction.\n unique_note_hashes_in_tx.for_eachi(|i, expected_unique_note_hash| {\n // Nonces are computed by hashing the first nullifier in the transaction with the index of the note in the\n // new note hashes array. We therefore know for each note in every transaction what its nonce is.\n let candidate_nonce = compute_note_hash_nonce(first_nullifier_in_tx, i);\n\n // Given note nonce, note content and metadata, we can compute the note hash and silo it to check if it matches\n // the note hash at the array index we're currently processing.\n // TODO(#11157): handle failed note_hash_and_nullifier computation\n let hashes = compute_note_hash_and_nullifier(\n packed_note,\n storage_slot,\n note_type_id,\n contract_address,\n candidate_nonce,\n )\n .expect(f\"Failed to compute a note hash for note type {note_type_id}\");\n\n let siloed_note_hash = compute_siloed_note_hash(contract_address, hashes.note_hash);\n let unique_note_hash = compute_unique_note_hash(candidate_nonce, siloed_note_hash);\n\n if unique_note_hash == expected_unique_note_hash {\n // Note that while we did check that the note hash is the preimage of the expected unique note hash, we\n // perform no validations on the nullifier - we fundamentally cannot, since only the application knows\n // how to compute nullifiers. We simply trust it to have provided the correct one: if it hasn't, then\n // PXE may fail to realize that a given note has been nullified already, and calls to the application\n // could result in invalid transactions (with duplicate nullifiers). This is not a concern because an\n // application already has more direct means of making a call to it fail the transaction.\n discovered_notes.push(\n DiscoveredNoteInfo {\n note_nonce: candidate_nonce,\n note_hash: hashes.note_hash,\n inner_nullifier: hashes.inner_nullifier,\n },\n );\n\n // We don't exit the loop - it is possible (though rare) for the exact same note content to be present\n // multiple times in the same transaction with different nonces. This typically doesn't happen due to\n // notes containing random values in order to hide their contents.\n }\n });\n\n debug_log_format(\n \"Found valid nonces for a total of {0} notes\",\n [discovered_notes.len() as Field],\n );\n\n *discovered_notes\n}\n\nmod test {\n use crate::{\n messages::discovery::{NoteHashAndNullifier, private_notes::MAX_NOTE_PACKED_LEN},\n note::{\n note_interface::{NoteHash, NoteType},\n note_metadata::SettledNoteMetadata,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_nullify,\n },\n oracle::random::random,\n test::mocks::mock_note::MockNote,\n utils::array,\n };\n\n use dep::protocol_types::{\n address::AztecAddress,\n hash::{compute_note_hash_nonce, compute_siloed_note_hash, compute_unique_note_hash},\n traits::{FromField, Packable},\n };\n\n use super::attempt_note_nonce_discovery;\n\n // This implementation could be simpler, but this serves as a nice example of the expected flow in a real\n // implementation, and as a sanity check that the interface is sufficient.\n unconstrained fn compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: AztecAddress,\n note_nonce: Field,\n ) -> Option {\n if note_type_id == MockNote::get_id() {\n let note = MockNote::unpack(array::subarray(packed_note.storage(), 0));\n let note_hash = note.compute_note_hash(storage_slot);\n\n let note_hash_for_nullify = compute_note_hash_for_nullify(\n RetrievedNote {\n note,\n contract_address,\n metadata: SettledNoteMetadata::new(note_nonce).into(),\n },\n storage_slot,\n );\n\n let inner_nullifier = note.compute_nullifier_unconstrained(note_hash_for_nullify);\n\n Option::some(NoteHashAndNullifier { note_hash, inner_nullifier })\n } else {\n Option::none()\n }\n }\n\n global VALUE: Field = 7;\n global FIRST_NULLIFIER_IN_TX: Field = 47;\n global CONTRACT_ADDRESS: AztecAddress = AztecAddress::from_field(13);\n global STORAGE_SLOT: Field = 99;\n\n #[test]\n unconstrained fn no_note_hashes() {\n let unique_note_hashes_in_tx = BoundedVec::new();\n let packed_note = BoundedVec::new();\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n #[test(should_fail_with = \"Failed to compute a note hash\")]\n unconstrained fn failed_hash_computation() {\n let unique_note_hashes_in_tx = BoundedVec::from_array([random()]);\n let packed_note = BoundedVec::new();\n let note_type_id = 0; // This note type id is unknown to compute_note_hash_and_nullifier\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n note_type_id,\n packed_note,\n );\n\n assert_eq(discovered_notes.len(), 0);\n }\n\n struct NoteAndData {\n note: MockNote,\n note_nonce: Field,\n note_hash: Field,\n unique_note_hash: Field,\n inner_nullifier: Field,\n }\n\n unconstrained fn construct_note(value: Field, note_index_in_tx: u32) -> NoteAndData {\n let note_nonce = compute_note_hash_nonce(FIRST_NULLIFIER_IN_TX, note_index_in_tx);\n\n let retrieved_note = MockNote::new(value)\n .contract_address(CONTRACT_ADDRESS)\n .note_metadata(SettledNoteMetadata::new(note_nonce).into())\n .build_retrieved_note();\n let note = retrieved_note.note;\n\n let note_hash = note.compute_note_hash(STORAGE_SLOT);\n let unique_note_hash = compute_unique_note_hash(\n note_nonce,\n compute_siloed_note_hash(CONTRACT_ADDRESS, note_hash),\n );\n let inner_nullifier = note.compute_nullifier_unconstrained(compute_note_hash_for_nullify(\n retrieved_note,\n STORAGE_SLOT,\n ));\n\n NoteAndData { note, note_nonce, note_hash, unique_note_hash, inner_nullifier }\n }\n\n #[test]\n unconstrained fn single_note() {\n let note_index_in_tx = 2;\n let note_and_data = construct_note(VALUE, note_index_in_tx);\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(note_index_in_tx, note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(note_and_data.note.pack()),\n );\n\n assert_eq(discovered_notes.len(), 1);\n let discovered_note = discovered_notes.get(0);\n\n assert_eq(discovered_note.note_nonce, note_and_data.note_nonce);\n assert_eq(discovered_note.note_hash, note_and_data.note_hash);\n assert_eq(discovered_note.inner_nullifier, note_and_data.inner_nullifier);\n }\n\n #[test]\n unconstrained fn multiple_notes_same_preimage() {\n let first_note_index_in_tx = 3;\n let first_note_and_data = construct_note(VALUE, first_note_index_in_tx);\n\n let second_note_index_in_tx = 5;\n let second_note_and_data = construct_note(VALUE, second_note_index_in_tx);\n\n // Both notes have the same preimage (and therefore packed representation), so both should be found in the same\n // call.\n assert_eq(first_note_and_data.note, second_note_and_data.note);\n let packed_note = first_note_and_data.note.pack();\n\n let mut unique_note_hashes_in_tx = BoundedVec::from_array([\n random(), random(), random(), random(), random(), random(), random(),\n ]);\n unique_note_hashes_in_tx.set(first_note_index_in_tx, first_note_and_data.unique_note_hash);\n unique_note_hashes_in_tx.set(second_note_index_in_tx, second_note_and_data.unique_note_hash);\n\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n FIRST_NULLIFIER_IN_TX,\n compute_note_hash_and_nullifier,\n CONTRACT_ADDRESS,\n STORAGE_SLOT,\n MockNote::get_id(),\n BoundedVec::from_array(packed_note),\n );\n\n assert_eq(discovered_notes.len(), 2);\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == first_note_and_data.note_nonce)\n & (discovered_note.note_hash == first_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == first_note_and_data.inner_nullifier)\n }));\n\n assert(discovered_notes.any(|discovered_note| {\n (discovered_note.note_nonce == second_note_and_data.note_nonce)\n & (discovered_note.note_hash == second_note_and_data.note_hash)\n & (discovered_note.inner_nullifier == second_note_and_data.inner_nullifier)\n }));\n }\n}\n" - }, - "115": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/partial_notes.nr", - "source": "use crate::{\n capsules::CapsuleArray,\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::{\n enqueue_note_for_validation, get_pending_partial_notes_completion_logs,\n log_retrieval_response::LogRetrievalResponse,\n },\n },\n utils::array,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n debug_log::debug_log_format,\n hash::sha256_to_field,\n traits::{Deserialize, Serialize},\n};\n\nglobal PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 2;\n\n/// Partial notes have a maximum packed length of their private fields bound by extra content in their private message\n/// (e.g. the storage slot, note completion log tag, etc.).\npub global MAX_PARTIAL_NOTE_PRIVATE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\n/// The slot in the PXE capsules where we store a `CapsuleArray` of `DeliveredPendingPartialNote`.\npub global DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT\".as_bytes(),\n);\n\n/// A partial note that was delivered but is still pending completion. Contains the information necessary to find the\n/// log that will complete it and lead to a note being discovered and delivered.\n#[derive(Serialize, Deserialize)]\npub(crate) struct DeliveredPendingPartialNote {\n pub(crate) note_completion_log_tag: Field,\n pub(crate) storage_slot: Field,\n pub(crate) note_type_id: Field,\n pub(crate) packed_private_note_content: BoundedVec,\n pub(crate) recipient: AztecAddress,\n}\n\npub unconstrained fn process_partial_note_private_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content) =\n decode_partial_note_private_msg(msg_metadata, msg_content);\n\n // We store the information of the partial note we found in a persistent capsule in PXE, so that we can later search\n // for the public log that will complete it.\n let pending = DeliveredPendingPartialNote {\n note_completion_log_tag,\n storage_slot,\n note_type_id,\n packed_private_note_content,\n recipient,\n };\n\n CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n )\n .push(pending);\n}\n\n/// Searches for logs that would result in the completion of pending partial notes, ultimately resulting in the notes\n/// being delivered to PXE if completed.\npub unconstrained fn fetch_and_process_partial_note_completion_logs(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n) {\n let pending_partial_notes = CapsuleArray::at(\n contract_address,\n DELIVERED_PENDING_PARTIAL_NOTE_ARRAY_LENGTH_CAPSULES_SLOT,\n );\n\n debug_log_format(\n \"{} pending partial notes\",\n [pending_partial_notes.len() as Field],\n );\n\n // Each of the pending partial notes might get completed by a log containing its public values. For performance\n // reasons, we fetch all of these logs concurrently and then process them one by one, minimizing the amount of time\n // waiting for the node roundtrip.\n let maybe_completion_logs =\n get_pending_partial_notes_completion_logs(contract_address, pending_partial_notes);\n\n // Each entry in the maybe completion logs array corresponds to the entry in the pending partial notes array at the\n // same index. This means we can use the same index as we iterate through the responses to get both the partial note\n // and the log that might complete it.\n assert_eq(maybe_completion_logs.len(), pending_partial_notes.len());\n\n maybe_completion_logs.for_each(|i, maybe_log: Option| {\n // We clear the completion logs as we read them so that the array is empty by the time we next query it.\n // TODO(#14943): use volatile arrays to avoid having to manually clear this.\n maybe_completion_logs.remove(i);\n\n let pending_partial_note = pending_partial_notes.get(i);\n\n if maybe_log.is_none() {\n debug_log_format(\n \"Found no completion logs for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n\n // Note that we're not removing the pending partial note from the capsule array, so we will continue\n // searching for this tagged log when performing message discovery in the future until we either find it or\n // the entry is somehow removed from the array.\n } else {\n debug_log_format(\n \"Completion log found for partial note with tag {}\",\n [pending_partial_note.note_completion_log_tag],\n );\n let log = maybe_log.unwrap();\n\n // Public fields are assumed to all be placed at the end of the packed representation, so we combine the\n // private and public packed fields (i.e. the contents of the private message and public log plaintext to get\n // the complete packed content.\n let complete_packed_note = array::append(\n pending_partial_note.packed_private_note_content,\n log.log_payload,\n );\n\n let discovered_notes = attempt_note_nonce_discovery(\n log.unique_note_hashes_in_tx,\n log.first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n pending_partial_note.storage_slot,\n pending_partial_note.note_type_id,\n complete_packed_note,\n );\n\n // TODO(#11627): is there anything reasonable we can do if we get a log but it doesn't result in a note\n // being found?\n if discovered_notes.len() == 0 {\n panic(\n f\"A partial note's completion log did not result in any notes being found - this should never happen\",\n );\n }\n\n debug_log_format(\n \"Discovered {0} notes for partial note with tag {1}\",\n [discovered_notes.len() as Field, pending_partial_note.note_completion_log_tag],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n pending_partial_note.storage_slot,\n discovered_note.note_nonce,\n complete_packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n log.tx_hash,\n pending_partial_note.recipient,\n );\n });\n\n // Because there is only a single log for a given tag, once we've processed the tagged log then we\n // simply delete the pending work entry, regardless of whether it was actually completed or not.\n pending_partial_notes.remove(i);\n }\n });\n}\n\nfn decode_partial_note_private_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all partial note private messages must have at least {PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the partial note private message encoding below must be updated as well.\n std::static_assert(\n PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 2,\n \"unexpected value for PARTIAL_NOTE_PRIVATE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have two fields that are not the partial note's packed representation, which are the storage slot\n // and the note completion log tag.\n let storage_slot = msg_content.get(0);\n let note_completion_log_tag = msg_content.get(1);\n\n let packed_private_note_content = array::subbvec(msg_content, 2);\n\n (note_type_id, storage_slot, note_completion_log_tag, packed_private_note_content)\n}\n" - }, - "116": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_events.nr", - "source": "use crate::{\n event::event_selector::EventSelector,\n messages::{encoding::MAX_MESSAGE_CONTENT_LEN, processing::enqueue_event_for_validation},\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::GENERATOR_INDEX__EVENT_COMMITMENT,\n hash::poseidon2_hash_with_separator_bounded_vec, traits::FromField,\n};\n\n/// The number of fields in a private event message content that are not the event's serialized representation\n/// (1 field for randomness).\nglobal PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of an event's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, randomness, etc.).\npub global MAX_EVENT_SERIALIZED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN;\n\npub unconstrained fn process_private_event_msg(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n msg_metadata: u64,\n msg_content: BoundedVec,\n tx_hash: Field,\n) {\n // In the case of events, the msg metadata is the event selector.\n let event_type_id = EventSelector::from_field(msg_metadata as Field);\n\n assert(\n msg_content.len() > PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n f\"Invalid private event message: all private event messages must have at least {PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private event message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN\",\n );\n\n let serialized_event_with_randomness = msg_content;\n\n let event_commitment = poseidon2_hash_with_separator_bounded_vec(\n serialized_event_with_randomness,\n GENERATOR_INDEX__EVENT_COMMITMENT,\n );\n\n // Randomness was injected into the event payload in `emit_event_in_private` but we have already used it\n // to compute the event commitment, so we can safely discard it now.\n let serialized_event = array::subbvec(\n serialized_event_with_randomness,\n PRIVATE_EVENT_MSG_CONTENT_NON_EVENT_FIELDS_LEN,\n );\n\n enqueue_event_for_validation(\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n );\n}\n" - }, - "117": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/private_notes.nr", - "source": "use crate::{\n messages::{\n discovery::{ComputeNoteHashAndNullifier, nonce_discovery::attempt_note_nonce_discovery},\n encoding::MAX_MESSAGE_CONTENT_LEN,\n processing::enqueue_note_for_validation,\n },\n utils::array,\n};\nuse protocol_types::{\n address::AztecAddress, constants::MAX_NOTE_HASHES_PER_TX, debug_log::debug_log_format,\n};\n\n/// The number of fields in a private note message content that are not the note's packed representation.\n// See the call to `std::static_assert` below to see what's in these fields.\nglobal PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN: u32 = 1;\n\n/// The maximum length of the packed representation of a note's contents. This is limited by private log size,\n/// encryption overhead and extra fields in the message (e.g. message type id, storage slot, etc.).\npub global MAX_NOTE_PACKED_LEN: u32 =\n MAX_MESSAGE_CONTENT_LEN - PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN;\n\npub unconstrained fn process_private_note_msg(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n msg_metadata: u64,\n msg_content: BoundedVec,\n) {\n let (note_type_id, storage_slot, packed_note) =\n decode_private_note_msg(msg_metadata, msg_content);\n\n attempt_note_discovery(\n contract_address,\n tx_hash,\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n recipient,\n compute_note_hash_and_nullifier,\n storage_slot,\n note_type_id,\n packed_note,\n );\n}\n\n/// Attempts discovery of a note given information about its contents and the transaction in which it is\n/// suspected the note was created.\npub unconstrained fn attempt_note_discovery(\n contract_address: AztecAddress,\n tx_hash: Field,\n unique_note_hashes_in_tx: BoundedVec,\n first_nullifier_in_tx: Field,\n recipient: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n storage_slot: Field,\n note_type_id: Field,\n packed_note: BoundedVec,\n) {\n let discovered_notes = attempt_note_nonce_discovery(\n unique_note_hashes_in_tx,\n first_nullifier_in_tx,\n compute_note_hash_and_nullifier,\n contract_address,\n storage_slot,\n note_type_id,\n packed_note,\n );\n\n debug_log_format(\n \"Discovered {0} notes from a private message\",\n [discovered_notes.len() as Field],\n );\n\n discovered_notes.for_each(|discovered_note| {\n enqueue_note_for_validation(\n contract_address,\n storage_slot,\n discovered_note.note_nonce,\n packed_note,\n discovered_note.note_hash,\n discovered_note.inner_nullifier,\n tx_hash,\n recipient,\n );\n });\n}\n\nfn decode_private_note_msg(\n msg_metadata: u64,\n msg_content: BoundedVec,\n) -> (Field, Field, BoundedVec) {\n let note_type_id = msg_metadata as Field; // TODO: make note type id not be a full field\n\n assert(\n msg_content.len() > PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN,\n f\"Invalid private note message: all private note messages must have at least {PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN} fields\",\n );\n\n // If PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN is changed, causing the assertion below to fail, then the\n // destructuring of the private note message encoding below must be updated as well.\n std::static_assert(\n PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN == 1,\n \"unexpected value for PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN\",\n );\n\n // We currently have a single field that is not the note's packed representation, which is the storage slot.\n let storage_slot = msg_content.get(0);\n let packed_note = array::subbvec(msg_content, PRIVATE_NOTE_MSG_CONTENT_NON_NOTE_FIELDS_LEN);\n\n (note_type_id, storage_slot, packed_note)\n}\n" - }, - "118": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/discovery/process_message.nr", - "source": "use crate::messages::{\n discovery::{\n ComputeNoteHashAndNullifier, partial_notes::process_partial_note_private_msg,\n private_events::process_private_event_msg, private_notes::process_private_note_msg,\n },\n encoding::decode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n msg_type::{\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_EVENT_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID,\n },\n processing::message_context::MessageContext,\n};\n\nuse protocol_types::{\n address::AztecAddress,\n constants::PRIVATE_LOG_CIPHERTEXT_LEN,\n debug_log::{debug_log, debug_log_format},\n};\n\n/// Processes a message that can contain notes, partial notes, or events.\n///\n/// Notes result in nonce discovery being performed prior to delivery, which requires knowledge of the transaction hash\n/// in which the notes would've been created (typically the same transaction in which the log was emitted), along with\n/// the list of unique note hashes in said transaction and the `compute_note_hash_and_nullifier` function. Once\n/// discovered, the notes are enqueued for validation.\n///\n/// Partial notes result in a pending partial note entry being stored in a PXE capsule, which will later be retrieved to\n/// search for the note's completion public log.\n///\n/// Events are processed by computing an event commitment from the serialized event data and its randomness field, then\n/// enqueueing the event data and commitment for validation.\npub unconstrained fn do_process_message(\n contract_address: AztecAddress,\n compute_note_hash_and_nullifier: ComputeNoteHashAndNullifier,\n message_ciphertext: BoundedVec,\n message_context: MessageContext,\n) {\n let message = AES128::decrypt_log(message_ciphertext, message_context.recipient);\n\n // The first thing to do after decrypting the message is to determine what type of message we're processing. We\n // have 3 message types: private notes, partial notes and events.\n\n // We decode the message to obtain the message type id, metadata and content.\n let (msg_type_id, msg_metadata, msg_content) = decode_message(message);\n\n if msg_type_id == PRIVATE_NOTE_MSG_TYPE_ID {\n debug_log(\"Processing private note msg\");\n\n process_private_note_msg(\n contract_address,\n message_context.tx_hash,\n message_context.unique_note_hashes_in_tx,\n message_context.first_nullifier_in_tx,\n message_context.recipient,\n compute_note_hash_and_nullifier,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID {\n debug_log(\"Processing partial note private msg\");\n\n process_partial_note_private_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n );\n } else if msg_type_id == PRIVATE_EVENT_MSG_TYPE_ID {\n debug_log(\"Processing private event msg\");\n\n process_private_event_msg(\n contract_address,\n message_context.recipient,\n msg_metadata,\n msg_content,\n message_context.tx_hash,\n );\n } else {\n debug_log_format(\"Unknown msg type id {0}\", [msg_type_id as Field]);\n }\n}\n" - }, - "119": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encoding.nr", - "source": "// TODO(#12750): don't make these values assume we're using AES.\nuse crate::{\n messages::encryption::log_encryption::PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS, utils::array,\n};\n\npub global MAX_MESSAGE_LEN: u32 = PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS;\n\nglobal MESSAGE_EXPANDED_METADATA_LEN: u32 = 1;\n\n// The standard message layout is composed of:\n// - an initial field called the 'expanded metadata'\n// - an arbitrary number of fields following that called the 'message content'\n//\n// ```\n// message: [ msg_expanded_metadata, ...msg_content ]\n// ```\n//\n// The expanded metadata itself is interpreted as a u128, of which:\n// - the upper 64 bits are the message type id\n// - the lower 64 bits are called the 'message metadata'\n//\n// ```\n// msg_expanded_metadata: [ msg_type_id | msg_metadata ]\n// <--- 64 bits --->|<--- 64 bits --->\n// ```\n//\n// The meaning of the message metadata and message content depend on the value of the message type id. Note that there\n// is nothing special about the message metadata, it _can_ be considered part of the content. It just has a different\n// name to make it distinct from the message content given that it is not a full field.\n\n/// The maximum length of a message's content, i.e. not including the expanded message metadata.\npub global MAX_MESSAGE_CONTENT_LEN: u32 = MAX_MESSAGE_LEN - MESSAGE_EXPANDED_METADATA_LEN;\n\n/// Encodes a message following aztec-nr's standard message encoding. This message can later be decoded with\n/// `decode_message` to retrieve the original values.\n///\n/// - The `msg_type` is an identifier that groups types of messages that are all processed the same way, e.g. private\n/// notes or events. Possible values are defined in `aztec::messages::msg_type`.\n/// - The `msg_metadata` and `msg_content` are the values stored in the message, whose meaning depends on the\n/// `msg_type`. The only special thing about `msg_metadata` that separates it from `msg_content` is that it is a u64\n/// instead of a full Field (due to details of how messages are encoded), allowing applications that can fit values into\n/// this smaller variable to achieve higher data efficiency.\npub fn encode_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; N],\n) -> [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] {\n std::static_assert(\n msg_content.len() <= MAX_MESSAGE_CONTENT_LEN,\n \"Invalid message content: it must have a length of at most MAX_MESSAGE_CONTENT_LEN\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n let mut message: [Field; (N + MESSAGE_EXPANDED_METADATA_LEN)] = std::mem::zeroed();\n\n message[0] = to_expanded_metadata(msg_type, msg_metadata);\n for i in 0..msg_content.len() {\n message[MESSAGE_EXPANDED_METADATA_LEN + i] = msg_content[i];\n }\n\n message\n}\n\n/// Decodes a standard aztec-nr message, i.e. one created via `encode_message`, returning the original encoded values.\n///\n/// Note that `encode_message` returns a fixed size array while this function takes a `BoundedVec`: this is because\n/// prior to decoding the message type is unknown, and consequentially not known at compile time. If working with\n/// fixed-size messages, consider using `BoundedVec::from_array` to convert them.\npub unconstrained fn decode_message(\n message: BoundedVec,\n) -> (u64, u64, BoundedVec) {\n assert(\n message.len() >= MESSAGE_EXPANDED_METADATA_LEN,\n f\"Invalid message: it must have at least {MESSAGE_EXPANDED_METADATA_LEN} fields\",\n );\n\n // If MESSAGE_EXPANDED_METADATA_LEN is changed, causing the assertion below to fail, then the destructuring of\n // the message encoding below must be updated as well.\n std::static_assert(\n MESSAGE_EXPANDED_METADATA_LEN == 1,\n \"unexpected value for MESSAGE_EXPANDED_METADATA_LEN\",\n );\n\n let msg_expanded_metadata = message.get(0);\n let (msg_type_id, msg_metadata) = from_expanded_metadata(msg_expanded_metadata);\n let msg_content = array::subbvec(message, MESSAGE_EXPANDED_METADATA_LEN);\n\n (msg_type_id, msg_metadata, msg_content)\n}\n\nglobal U64_SHIFT_MULTIPLIER: Field = 2.pow_32(64);\n\nfn to_expanded_metadata(msg_type: u64, msg_metadata: u64) -> Field {\n // We use multiplication instead of bit shifting operations to shift the type bits as bit shift operations are\n // expensive in circuits.\n let type_field: Field = (msg_type as Field) * U64_SHIFT_MULTIPLIER;\n let msg_metadata_field = msg_metadata as Field;\n\n type_field + msg_metadata_field\n}\n\nfn from_expanded_metadata(input: Field) -> (u64, u64) {\n input.assert_max_bit_size::<128>();\n let msg_metadata = (input as u64);\n let msg_type = ((input - (msg_metadata as Field)) / U64_SHIFT_MULTIPLIER) as u64;\n // Use division instead of bit shift since bit shifts are expensive in circuits\n (msg_type, msg_metadata)\n}\n\nmod tests {\n use crate::utils::array::subarray::subarray;\n use super::{\n decode_message, encode_message, from_expanded_metadata, MAX_MESSAGE_CONTENT_LEN,\n to_expanded_metadata,\n };\n\n global U64_MAX: u64 = (2.pow_32(64) - 1) as u64;\n global U128_MAX: Field = (2.pow_32(128) - 1);\n\n #[test]\n unconstrained fn encode_decode_empty_message(msg_type: u64, msg_metadata: u64) {\n let encoded = encode_message(msg_type, msg_metadata, []);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), 0);\n }\n\n #[test]\n unconstrained fn encode_decode_short_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN / 2],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn encode_decode_full_message(\n msg_type: u64,\n msg_metadata: u64,\n msg_content: [Field; MAX_MESSAGE_CONTENT_LEN],\n ) {\n let encoded = encode_message(msg_type, msg_metadata, msg_content);\n let (decoded_msg_type, decoded_msg_metadata, decoded_msg_content) =\n decode_message(BoundedVec::from_array(encoded));\n\n assert_eq(decoded_msg_type, msg_type);\n assert_eq(decoded_msg_metadata, msg_metadata);\n assert_eq(decoded_msg_content.len(), msg_content.len());\n assert_eq(subarray(decoded_msg_content.storage(), 0), msg_content);\n }\n\n #[test]\n unconstrained fn to_expanded_metadata_packing() {\n // Test case 1: All bits set\n let packed = to_expanded_metadata(U64_MAX, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let packed = to_expanded_metadata(U64_MAX, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let packed = to_expanded_metadata(0, U64_MAX);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let packed = to_expanded_metadata(0, 0);\n let (msg_type, msg_metadata) = from_expanded_metadata(packed);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn from_expanded_metadata_packing() {\n // Test case 1: All bits set\n let input = U128_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 2: Only log type bits set\n let input = (U128_MAX - U64_MAX as Field);\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, U64_MAX);\n assert_eq(msg_metadata, 0);\n\n // Test case 3: Only msg_metadata bits set\n let input = U64_MAX as Field;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, U64_MAX);\n\n // Test case 4: No bits set\n let input = 0;\n let (msg_type, msg_metadata) = from_expanded_metadata(input);\n assert_eq(msg_type, 0);\n assert_eq(msg_metadata, 0);\n }\n\n #[test]\n unconstrained fn to_from_expanded_metadata(original_msg_type: u64, original_msg_metadata: u64) {\n let packed = to_expanded_metadata(original_msg_type, original_msg_metadata);\n let (unpacked_msg_type, unpacked_msg_metadata) = from_expanded_metadata(packed);\n\n assert_eq(original_msg_type, unpacked_msg_type);\n assert_eq(original_msg_metadata, unpacked_msg_metadata);\n }\n}\n" - }, - "12": { - "path": "std/convert.nr", - "source": "// docs:start:from-trait\npub trait From {\n fn from(input: T) -> Self;\n}\n// docs:end:from-trait\n\nimpl From for T {\n fn from(input: T) -> T {\n input\n }\n}\n\n// docs:start:into-trait\npub trait Into {\n fn into(self) -> T;\n}\n\nimpl Into for U\nwhere\n T: From,\n{\n fn into(self) -> T {\n T::from(self)\n }\n}\n// docs:end:into-trait\n\n// docs:start:from-impls\n// Unsigned integers\n\nimpl From for u16 {\n fn from(value: u8) -> u16 {\n value as u16\n }\n}\n\nimpl From for u32 {\n fn from(value: u8) -> u32 {\n value as u32\n }\n}\n\nimpl From for u32 {\n fn from(value: u16) -> u32 {\n value as u32\n }\n}\n\nimpl From for u64 {\n fn from(value: u8) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u16) -> u64 {\n value as u64\n }\n}\n\nimpl From for u64 {\n fn from(value: u32) -> u64 {\n value as u64\n }\n}\n\nimpl From for u128 {\n fn from(value: u8) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u16) -> u128 {\n value as u128\n }\n}\n\nimpl From for u128 {\n fn from(value: u32) -> u128 {\n value as u128\n }\n}\nimpl From for u128 {\n fn from(value: u64) -> u128 {\n value as u128\n }\n}\n\nimpl From for Field {\n fn from(value: u8) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u16) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u32) -> Field {\n value as Field\n }\n}\nimpl From for Field {\n fn from(value: u64) -> Field {\n value as Field\n }\n}\n\nimpl From for Field {\n fn from(value: u128) -> Field {\n value as Field\n }\n}\n\n// Signed integers\n\nimpl From for i16 {\n fn from(value: i8) -> i16 {\n value as i16\n }\n}\n\nimpl From for i32 {\n fn from(value: i8) -> i32 {\n value as i32\n }\n}\n\nimpl From for i32 {\n fn from(value: i16) -> i32 {\n value as i32\n }\n}\n\nimpl From for i64 {\n fn from(value: i8) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i16) -> i64 {\n value as i64\n }\n}\n\nimpl From for i64 {\n fn from(value: i32) -> i64 {\n value as i64\n }\n}\n\n// Booleans\nimpl From for u8 {\n fn from(value: bool) -> u8 {\n value as u8\n }\n}\nimpl From for u16 {\n fn from(value: bool) -> u16 {\n value as u16\n }\n}\nimpl From for u32 {\n fn from(value: bool) -> u32 {\n value as u32\n }\n}\nimpl From for u64 {\n fn from(value: bool) -> u64 {\n value as u64\n }\n}\nimpl From for u128 {\n fn from(value: bool) -> u128 {\n value as u128\n }\n}\nimpl From for i8 {\n fn from(value: bool) -> i8 {\n value as i8\n }\n}\nimpl From for i16 {\n fn from(value: bool) -> i16 {\n value as i16\n }\n}\nimpl From for i32 {\n fn from(value: bool) -> i32 {\n value as i32\n }\n}\nimpl From for i64 {\n fn from(value: bool) -> i64 {\n value as i64\n }\n}\nimpl From for Field {\n fn from(value: bool) -> Field {\n value as Field\n }\n}\n// docs:end:from-impls\n\n/// A generic interface for casting between primitive types,\n/// equivalent of using the `as` keyword between values.\n///\n/// # Example\n///\n/// ```\n/// let x: Field = 1234567890;\n/// let y: u8 = x as u8;\n/// let z: u8 = x.as_();\n/// assert_eq(y, z);\n/// ```\npub trait AsPrimitive {\n /// The equivalent of doing `self as T`.\n fn as_(self) -> T;\n}\n\n#[generate_as_primitive_impls]\ncomptime fn generate_as_primitive_impls(_: FunctionDefinition) -> Quoted {\n let types = [\n quote { bool },\n quote { u8 },\n quote { u16 },\n quote { u32 },\n quote { u64 },\n quote { u128 },\n quote { i8 },\n quote { i16 },\n quote { i32 },\n quote { i64 },\n ];\n\n let mut impls = &[];\n for type1 in types {\n for type2 in types {\n let body = if type1 == type2 {\n quote { self }\n } else if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for $type2 {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n }\n\n let u_types =\n [quote { bool }, quote { u8 }, quote { u16 }, quote { u32 }, quote { u64 }, quote { u128 }];\n\n for type2 in u_types {\n let body = quote { self as Field };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive for $type2 {\n fn as_(self) -> Field {\n $body\n }\n }\n },\n );\n }\n\n for type1 in u_types {\n let body = if type1 == quote { bool } {\n quote { self != 0 }\n } else {\n quote { self as $type1 }\n };\n\n impls = impls.push_back(\n quote {\n impl AsPrimitive<$type1> for Field {\n fn as_(self) -> $type1 {\n $body\n }\n }\n },\n );\n }\n\n impls.join(quote {})\n}\n" - }, - "120": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/encryption/aes128.nr", - "source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__SYMMETRIC_KEY, GENERATOR_INDEX__SYMMETRIC_KEY_2,\n PRIVATE_LOG_CIPHERTEXT_LEN,\n },\n hash::poseidon2_hash_with_separator,\n point::Point,\n};\n\nuse crate::{\n keys::{\n ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n ephemeral::generate_ephemeral_key_pair,\n },\n messages::{\n encryption::log_encryption::{\n EPH_PK_SIGN_BYTE_SIZE_IN_BYTES, EPH_PK_X_SIZE_IN_FIELDS,\n HEADER_CIPHERTEXT_SIZE_IN_BYTES, LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS,\n },\n logs::arithmetic_generics_utils::{\n get_arr_of_size__log_bytes__from_PT, get_arr_of_size__log_bytes_padding__from_PT,\n },\n },\n oracle::{aes128_decrypt::aes128_decrypt_oracle, shared_secret::get_shared_secret},\n utils::{\n array,\n conversion::{\n bytes_to_fields::{bytes_from_fields, bytes_to_fields},\n fields_to_bytes::{fields_from_bytes, fields_to_bytes},\n },\n point::{get_sign_of_point, point_from_x_coord_and_sign},\n random::get_random_bytes,\n },\n};\n\nuse std::aes128::aes128_encrypt;\n\n/**\n * Computes N close-to-uniformly-random 256 bits from a given ECDH shared_secret.\n *\n * NEVER re-use the same iv and sym_key.\n * DO NOT call this function more than once with the same shared_secret.\n *\n * This function is only known to be safe if shared_secret is computed by combining a \n * random ephemeral key with an address point. See big comment within the body of the function.\n * See big comment within the body of the function.\n */\nfn extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [[u8; 32]; N] {\n /*\n * Unsafe because of https://eprint.iacr.org/2010/264.pdf Page 13, Lemma 2 (and the * two paragraphs below it).\n *\n * If you call this function, you need to be careful and aware of how the arg\n * `shared_secret` has been derived.\n *\n * The paper says that the way you derive aes keys and IVs should be fine with poseidon2\n * (modelled as a RO), as long as you _don't_ use Poseidon2 as a PRG to generate the * two exponents x & y which multiply to the shared secret S:\n *\n * S = [x*y]*G.\n *\n * (Otherwise, you would have to \"key\" poseidon2, i.e. generate a uniformly string K\n * which can be public and compute Hash(x) as poseidon(K,x)).\n * In that lemma, k would be 2*254=508, and m would be the number of points on the * grumpkin curve (which is close to r according to the Hasse bound).\n *\n * Our shared secret S is [esk * address_sk] * G, and the question is: * Can we compute hash(S) using poseidon2 instead of sha256?\n *\n * Well, esk is random and not generated with poseidon2, so that's good.\n * What about address_sk?\n * Well, address_sk = poseidon2(stuff) + ivsk, so there was some\n * discussion about whether address_sk is independent of poseidon2.\n * Given that ivsk is random and independent of poseidon2, the address_sk is also\n * independent of poseidon2.\n *\n * Tl;dr: we believe it's safe to hash S = [esk * address_sk] * G using poseidon2,\n * in order to derive a symmetric key.\n *\n * If you're calling this function for a differently-derived `shared_secret`, be\n * careful.\n *\n */\n\n /* The output of this function needs to be 32 random bytes.\n * A single field won't give us 32 bytes of entropy.\n * So we compute two \"random\" fields, by poseidon-hashing with two different\n * generators.\n * We then extract the last 16 (big endian) bytes of each \"random\" field.\n * Note: we use to_be_bytes because it's slightly more efficient. But we have to\n * be careful not to take bytes from the \"big end\", because the \"big\" byte is\n * not uniformly random over the byte: it only has < 6 bits of randomness, because\n * it's the big end of a 254-bit field element.\n */\n\n let mut all_bytes: [[u8; 32]; N] = std::mem::zeroed();\n // We restrict N to be < 2^8, because of how we compute the domain separator\n // from k below (where k <= N must be 8 bits). In practice, it's extremely\n // unlikely that an app will want to compute >= 256 ciphertexts.\n std::static_assert(N < 256, \"N too large\");\n for k in 0..N {\n // We augment the domain separator with the loop index, so that we can\n // generate N lots of randomness.\n let k_shift = (k as u16 << 8);\n let separator_1 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY as u16;\n let separator_2 = k_shift + GENERATOR_INDEX__SYMMETRIC_KEY_2 as u16;\n\n let rand1: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_1);\n let rand2: Field =\n poseidon2_hash_with_separator([shared_secret.x, shared_secret.y], separator_2);\n\n let rand1_bytes: [u8; 32] = rand1.to_be_bytes();\n let rand2_bytes: [u8; 32] = rand2.to_be_bytes();\n\n let mut bytes: [u8; 32] = [0; 32];\n for i in 0..16 {\n // We take bytes from the \"little end\" of the be-bytes arrays:\n let j = 32 - i - 1;\n bytes[i] = rand1_bytes[j];\n bytes[16 + i] = rand2_bytes[j];\n }\n\n all_bytes[k] = bytes;\n }\n\n all_bytes\n}\n\nfn derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(\n many_random_256_bits: [[u8; 32]; N],\n) -> [([u8; 16], [u8; 16]); N] {\n // Many (sym_key, iv) pairs:\n let mut many_pairs: [([u8; 16], [u8; 16]); N] = std::mem::zeroed();\n for k in 0..N {\n let random_256_bits = many_random_256_bits[k];\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n for i in 0..16 {\n sym_key[i] = random_256_bits[i];\n iv[i] = random_256_bits[i + 16];\n }\n many_pairs[k] = (sym_key, iv);\n }\n\n many_pairs\n}\n\npub fn derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret: Point,\n) -> [([u8; 16], [u8; 16]); N] {\n let many_random_256_bits: [[u8; 32]; N] = extract_many_close_to_uniformly_random_256_bits_from_ecdh_shared_secret_using_poseidon2_unsafe(\n shared_secret,\n );\n\n derive_aes_symmetric_key_and_iv_from_uniformly_random_256_bits(many_random_256_bits)\n}\n\npub struct AES128 {}\n\nimpl LogEncryption for AES128 {\n fn encrypt_log(\n plaintext: [Field; PlaintextLen],\n recipient: AztecAddress,\n ) -> [Field; PRIVATE_LOG_CIPHERTEXT_LEN] {\n // AES 128 operates on bytes, not fields, so we need to convert the fields to bytes.\n // (This process is then reversed when processing the log in `do_process_log`)\n let plaintext_bytes = fields_to_bytes(plaintext);\n\n // *****************************************************************************\n // Compute the shared secret\n // *****************************************************************************\n\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let eph_pk_sign_byte: u8 = get_sign_of_point(eph_pk) as u8;\n\n // (not to be confused with the tagging shared secret)\n let ciphertext_shared_secret =\n derive_ecdh_shared_secret_using_aztec_address(eph_sk, recipient);\n // TODO: also use this shared secret for deriving note randomness.\n\n // *****************************************************************************\n // Convert the plaintext into whatever format the encryption function expects\n // *****************************************************************************\n\n // Already done for this strategy: AES expects bytes.\n\n // *****************************************************************************\n // Encrypt the plaintext\n // *****************************************************************************\n\n // It is safe to call the `unsafe` function here, because we know the `shared_secret`\n // was derived using an AztecAddress (the recipient). See the block comment\n // at the start of this unsafe target function for more info.\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n let ciphertext_bytes = aes128_encrypt(plaintext_bytes, body_iv, body_sym_key);\n\n // |full_pt| = |pt_length| + |pt|\n // |pt_aes_padding| = 16 - (|full_pt| % 16)\n // or... since a % b is the same as a - b * (a // b) (integer division), so:\n // |pt_aes_padding| = 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // |ct| = |full_pt| + |pt_aes_padding|\n // = |full_pt| + 16 - (|full_pt| - 16 * (|full_pt| // 16))\n // = 16 + 16 * (|full_pt| // 16)\n // = 16 * (1 + |full_pt| // 16)\n assert(ciphertext_bytes.len() == 16 * (1 + (PlaintextLen * 32) / 16));\n\n // *****************************************************************************\n // Compute the header ciphertext\n // *****************************************************************************\n\n // Header contains only the length of the ciphertext stored in 2 bytes.\n let mut header_plaintext: [u8; 2] = [0 as u8; 2];\n let ciphertext_bytes_length = ciphertext_bytes.len();\n header_plaintext[0] = (ciphertext_bytes_length >> 8) as u8;\n header_plaintext[1] = ciphertext_bytes_length as u8;\n\n // Note: the aes128_encrypt builtin fn automatically appends bytes to the\n // input, according to pkcs#7; hence why the output `header_ciphertext_bytes` is 16\n // bytes larger than the input in this case.\n let header_ciphertext_bytes = aes128_encrypt(header_plaintext, header_iv, header_sym_key);\n // I recall that converting a slice to an array incurs constraints, so I'll check the length this way instead:\n assert(header_ciphertext_bytes.len() == HEADER_CIPHERTEXT_SIZE_IN_BYTES);\n\n // *****************************************************************************\n // Prepend / append more bytes of data to the ciphertext, before converting back\n // to fields.\n // *****************************************************************************\n\n let mut log_bytes_padding_to_mult_31 =\n get_arr_of_size__log_bytes_padding__from_PT::();\n // Safety: this randomness won't be constrained to be random. It's in the\n // interest of the executor of this fn to encrypt with random bytes.\n log_bytes_padding_to_mult_31 = unsafe { get_random_bytes() };\n\n let mut log_bytes = get_arr_of_size__log_bytes__from_PT::();\n\n assert(\n log_bytes.len() % 31 == 0,\n \"Unexpected error: log_bytes.len() should be divisible by 31, by construction.\",\n );\n\n log_bytes[0] = eph_pk_sign_byte;\n let mut offset = 1;\n for i in 0..header_ciphertext_bytes.len() {\n log_bytes[offset + i] = header_ciphertext_bytes[i];\n }\n offset += header_ciphertext_bytes.len();\n\n for i in 0..ciphertext_bytes.len() {\n log_bytes[offset + i] = ciphertext_bytes[i];\n }\n offset += ciphertext_bytes.len();\n\n for i in 0..log_bytes_padding_to_mult_31.len() {\n log_bytes[offset + i] = log_bytes_padding_to_mult_31[i];\n }\n\n assert(\n offset + log_bytes_padding_to_mult_31.len() == log_bytes.len(),\n \"Something has gone wrong\",\n );\n\n // *****************************************************************************\n // Convert bytes back to fields\n // *****************************************************************************\n\n // TODO(#12749): As Mike pointed out, we need to make logs produced by different encryption schemes\n // indistinguishable from each other and for this reason the output here and in the last for-loop of this function\n // should cover a full field.\n let log_bytes_as_fields = bytes_to_fields(log_bytes);\n\n // *****************************************************************************\n // Prepend / append fields, to create the final log\n // *****************************************************************************\n\n let mut ciphertext: [Field; PRIVATE_LOG_CIPHERTEXT_LEN] = [0; PRIVATE_LOG_CIPHERTEXT_LEN];\n\n ciphertext[0] = eph_pk.x;\n\n let mut offset = 1;\n for i in 0..log_bytes_as_fields.len() {\n ciphertext[offset + i] = log_bytes_as_fields[i];\n }\n offset += log_bytes_as_fields.len();\n\n for i in offset..PRIVATE_LOG_CIPHERTEXT_LEN {\n // We need to get a random value that fits in 31 bytes to not leak information about the size of the log\n // (all the \"real\" log fields contain at most 31 bytes because of the way we convert the bytes to fields).\n // TODO(#12749): Long term, this is not a good solution.\n\n // Safety: we assume that the sender wants for the log to be private - a malicious one could simply reveal its\n // contents publicly. It is therefore fine to trust the sender to provide random padding.\n let field_bytes = unsafe { get_random_bytes::<31>() };\n ciphertext[i] = Field::from_be_bytes::<31>(field_bytes);\n }\n\n ciphertext\n }\n\n unconstrained fn decrypt_log(\n ciphertext: BoundedVec,\n recipient: AztecAddress,\n ) -> BoundedVec {\n let eph_pk_x = ciphertext.get(0);\n\n let ciphertext_without_eph_pk_x_fields = array::subbvec::(\n ciphertext,\n EPH_PK_X_SIZE_IN_FIELDS,\n );\n\n // Convert the ciphertext represented as fields to a byte representation (its original format)\n let ciphertext_without_eph_pk_x = bytes_from_fields(ciphertext_without_eph_pk_x_fields);\n\n // First byte of the ciphertext represents the ephemeral public key sign\n let eph_pk_sign_bool = ciphertext_without_eph_pk_x.get(0) != 0;\n // With the sign and the x-coordinate of the ephemeral public key, we can reconstruct the point\n let eph_pk = point_from_x_coord_and_sign(eph_pk_x, eph_pk_sign_bool);\n\n // Derive shared secret\n let ciphertext_shared_secret = get_shared_secret(recipient, eph_pk);\n\n // Derive symmetric keys:\n let pairs = derive_aes_symmetric_key_and_iv_from_ecdh_shared_secret_using_poseidon2_unsafe::<2>(\n ciphertext_shared_secret,\n );\n let (body_sym_key, body_iv) = pairs[0];\n let (header_sym_key, header_iv) = pairs[1];\n\n // Extract the header ciphertext\n let header_start = EPH_PK_SIGN_BYTE_SIZE_IN_BYTES; // Skip eph_pk_sign byte\n let header_ciphertext: [u8; HEADER_CIPHERTEXT_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), header_start);\n // We need to convert the array to a BoundedVec because the oracle expects a BoundedVec as it's designed to work\n // with logs with unknown length at compile time. This would not be necessary here as the header ciphertext length\n // is fixed. But we do it anyway to not have to have duplicate oracles.\n let header_ciphertext_bvec =\n BoundedVec::::from_array(header_ciphertext);\n\n // Decrypt header\n let header_plaintext =\n aes128_decrypt_oracle(header_ciphertext_bvec, header_iv, header_sym_key);\n\n // Extract ciphertext length from header (2 bytes, big-endian)\n let ciphertext_length =\n ((header_plaintext.get(0) as u32) << 8) | (header_plaintext.get(1) as u32);\n\n // Extract and decrypt main ciphertext\n let ciphertext_start = header_start + HEADER_CIPHERTEXT_SIZE_IN_BYTES;\n let ciphertext_with_padding: [u8; (PRIVATE_LOG_CIPHERTEXT_LEN - EPH_PK_X_SIZE_IN_FIELDS) * 31 - HEADER_CIPHERTEXT_SIZE_IN_BYTES - EPH_PK_SIGN_BYTE_SIZE_IN_BYTES] =\n array::subarray(ciphertext_without_eph_pk_x.storage(), ciphertext_start);\n let ciphertext: BoundedVec =\n BoundedVec::from_parts(ciphertext_with_padding, ciphertext_length);\n\n // Decrypt main ciphertext and return it\n let plaintext_bytes = aes128_decrypt_oracle(ciphertext, body_iv, body_sym_key);\n\n // Each field of the original note log was serialized to 32 bytes so we convert the bytes back to fields.\n fields_from_bytes(plaintext_bytes)\n }\n}\n\nmod test {\n use crate::{\n keys::ecdh_shared_secret::derive_ecdh_shared_secret_using_aztec_address,\n messages::encryption::log_encryption::{LogEncryption, PRIVATE_LOG_PLAINTEXT_SIZE_IN_FIELDS},\n test::helpers::test_environment::TestEnvironment,\n };\n use super::AES128;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::{embedded_curve_ops::EmbeddedCurveScalar, test::OracleMock};\n\n #[test]\n unconstrained fn encrypt_decrypt_log() {\n let env = TestEnvironment::new();\n\n // Log decryption requires oracles that are only available during private execution\n env.private_context(|_| {\n let plaintext = [1, 2, 3];\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n // Mock random values for deterministic test\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(eph_sk).times(1);\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"utilityGetRandomField\").returns(randomness).times(1000000);\n\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n IndexedTaggingSecret::deserialize([69420, 1337]),\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n // Encrypt the log\n let encrypted_log = BoundedVec::from_array(AES128::encrypt_log(plaintext, recipient));\n\n // Mock shared secret for deterministic test\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(\n EmbeddedCurveScalar::from_field(eph_sk),\n recipient,\n );\n let _ = OracleMock::mock(\"utilityGetSharedSecret\").returns(shared_secret);\n\n // Decrypt the log\n let decrypted = AES128::decrypt_log(encrypted_log, recipient);\n\n // The decryption function spits out a BoundedVec because it's designed to work with logs with unknown length\n // at compile time. For this reason we need to convert the original input to a BoundedVec.\n let plaintext_bvec =\n BoundedVec::::from_array(plaintext);\n\n // Verify decryption matches original plaintext\n assert_eq(\n decrypted,\n plaintext_bvec,\n \"Decrypted bytes should match original plaintext\",\n );\n\n // The following is a workaround of \"struct is never constructed\" Noir compilation error (we only ever use\n // static methods of the struct).\n let _ = AES128 {};\n });\n }\n}\n" - }, - "127": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/note.nr", - "source": "use crate::{\n context::PrivateContext,\n messages::{\n encoding::encode_message,\n encryption::{aes128::AES128, log_encryption::LogEncryption},\n logs::utils::prefix_with_tag,\n msg_type::{PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID, PRIVATE_NOTE_MSG_TYPE_ID},\n offchain_messages::emit_offchain_message,\n },\n note::{note_emission::NoteEmission, note_interface::NoteType},\n utils::{array::subarray::subarray, remove_constraints::remove_constraints},\n};\nuse protocol_types::{\n abis::note_hash::NoteHash,\n address::AztecAddress,\n constants::{PRIVATE_LOG_CIPHERTEXT_LEN, PRIVATE_LOG_SIZE_IN_FIELDS},\n traits::Packable,\n};\n\n// TODO: it feels like this existence check is in the wrong place. In fact, why is it needed at all? Under what circumstances have we found a non-existent note being emitted accidentally?\nfn assert_note_exists(context: PrivateContext, note_hash_counter: u32) {\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n}\n\npub fn compute_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(note, storage_slot, recipient, PRIVATE_NOTE_MSG_TYPE_ID)\n}\n\npub fn compute_partial_note_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n compute_log(\n note,\n storage_slot,\n recipient,\n PARTIAL_NOTE_PRIVATE_MSG_TYPE_ID,\n )\n}\n\nfn compute_log(\n note: Note,\n storage_slot: Field,\n recipient: AztecAddress,\n msg_type: u64,\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS]\nwhere\n Note: NoteType + Packable,\n{\n let packed_note = note.pack();\n\n // A note message's content is the storage slot followed by the packed note representation\n let mut msg_content = [0; 1 + ::N];\n msg_content[0] = storage_slot;\n for i in 0..packed_note.len() {\n msg_content[1 + i] = packed_note[i];\n }\n\n // Notes use the note type id for metadata\n let plaintext = encode_message(msg_type, Note::get_id() as u64, msg_content);\n\n let ciphertext = AES128::encrypt_log(plaintext, recipient);\n\n let log = prefix_with_tag(ciphertext, recipient);\n\n log\n}\n\n/// Sends an encrypted message to `recipient` with the content of the note, which they will discover when processing\n/// private logs.\npub fn encode_and_encrypt_note(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n assert_note_exists(*context, note_hash_counter);\n\n let encrypted_log = compute_note_log(note, storage_slot, recipient);\n // Regardless of the original note size `N, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note`, except encryption is unconstrained. This means that the sender is free to make\n/// the log contents be whatever they wish, potentially resulting in scenarios in which the recipient is unable to\n/// decrypt and process the payload, **leading to the note being lost**.\n///\n/// Only use this function in scenarios where the recipient not receiving the note is an acceptable outcome.\npub fn encode_and_encrypt_note_unconstrained(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n // Regardless of the original note size `N`, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_raw_note_log(encrypted_log, length, note_hash_counter);\n }\n}\n\n/// Same as `encode_and_encrypt_note_unconstrained`, except the note is emitted as an offchain message instead of a\n/// private log.\n///\n/// Like `encode_and_encrypt_note_unconstrained`, this function uses unconstrained encryption. The sender can set any\n/// message contents, potentially preventing recipient decryption and resulting in note loss. Since offchain messages\n/// inherently lack delivery guarantees, constrained encryption provides no benefit and is not offered.\n///\n/// While delivery is not guaranteed, message integrity is still protected via cryptographic commitments in the note\n/// hash tree. For guaranteed delivery, use `encode_and_encrypt_note` with private logs instead. See\n/// `messages::offchain_message::emit_offchain_message` for more details on delivery guarantees.\npub fn encode_and_encrypt_note_and_emit_as_offchain_message(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress)](NoteEmission) -> ()\nwhere\n Note: NoteType + Packable,\n{\n |e: NoteEmission| {\n let note = e.note;\n let storage_slot = e.storage_slot;\n let note_hash_counter = e.note_hash_counter;\n\n assert_note_exists(*context, note_hash_counter);\n\n // Safety: this function does not constrain the encryption of the log, as explained on its description.\n let encrypted_log =\n unsafe { remove_constraints(|| compute_note_log(note, storage_slot, recipient)) };\n\n // Remove the tag from the log\n // TODO: This is a tech debt. We should refactor this file such that the log is by default computed without\n // the tag.\n let message_ciphertext: [_; PRIVATE_LOG_CIPHERTEXT_LEN] = subarray(encrypted_log, 1);\n\n emit_offchain_message(message_ciphertext, recipient);\n }\n}\n" - }, - "128": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/logs/utils.nr", - "source": "use crate::oracle::notes::{\n get_app_tag_as_sender, get_sender_for_tags, increment_app_tagging_secret_index_as_sender,\n};\nuse dep::protocol_types::address::AztecAddress;\n\n// TODO(#14565): Add constrained tagging\npub(crate) fn prefix_with_tag(\n log_without_tag: [Field; L],\n recipient: AztecAddress,\n) -> [Field; L + 1] {\n // Safety: we assume that the sender wants for the recipient to find the tagged note, and therefore that they will\n // cooperate and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the\n // note automatically.\n let tag = unsafe {\n let sender = get_sender_for_tags().expect(\n f\"Sender for tags is not set when emitting a private log. Set it by calling `set_sender_for_tags(...)`.\",\n );\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n get_app_tag_as_sender(sender, recipient)\n };\n\n let mut log_with_tag = [0; L + 1];\n\n log_with_tag[0] = tag;\n for i in 0..log_without_tag.len() {\n log_with_tag[i + 1] = log_without_tag[i];\n }\n\n log_with_tag\n}\n\nmod test {\n use super::prefix_with_tag;\n use protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::IndexedTaggingSecret,\n traits::{Deserialize, FromField},\n };\n use std::test::OracleMock;\n\n #[test(should_fail)]\n unconstrained fn no_tag_sender() {\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles - note privateGetSenderForTags returns none\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::::none());\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let _ = prefix_with_tag(log_without_tag, recipient);\n }\n\n #[test]\n unconstrained fn prefixing_with_tag() {\n let sender = AztecAddress::from_field(1);\n let recipient = AztecAddress::from_field(2);\n\n let app_tagging_secret = 42;\n let index = 5;\n\n // I am using the deserialize trait instead of directly instantiating the IndexedTaggingSecret struct because\n // direct instantiation functionality is not exposed.\n let indexed_tagging_secret = IndexedTaggingSecret::deserialize([app_tagging_secret, index]);\n\n // Mock the tagging oracles\n let _ = OracleMock::mock(\"privateGetSenderForTags\").returns(Option::some(sender));\n let _ = OracleMock::mock(\"utilityGetIndexedTaggingSecretAsSender\").returns(\n indexed_tagging_secret,\n );\n let _ = OracleMock::mock(\"privateIncrementAppTaggingSecretIndexAsSender\").returns(());\n\n let log_without_tag = [1, 2, 3];\n let log_with_tag = prefix_with_tag(log_without_tag, recipient);\n\n let expected_result = [indexed_tagging_secret.compute_tag(recipient), 1, 2, 3];\n\n // Check tag was prefixed correctly\n assert_eq(log_with_tag, expected_result, \"Tag was not prefixed correctly\");\n }\n}\n" - }, - "136": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/messages/processing/mod.nr", - "source": "pub(crate) mod event_validation_request;\npub mod message_context;\npub(crate) mod note_validation_request;\npub(crate) mod log_retrieval_request;\npub(crate) mod log_retrieval_response;\npub(crate) mod pending_tagged_log;\n\nuse crate::{\n capsules::CapsuleArray,\n event::event_selector::EventSelector,\n messages::{\n discovery::{\n partial_notes::DeliveredPendingPartialNote, private_events::MAX_EVENT_SERIALIZED_LEN,\n private_notes::MAX_NOTE_PACKED_LEN,\n },\n processing::{\n log_retrieval_request::LogRetrievalRequest,\n log_retrieval_response::LogRetrievalResponse,\n note_validation_request::NoteValidationRequest, pending_tagged_log::PendingTaggedLog,\n },\n },\n oracle,\n};\nuse event_validation_request::EventValidationRequest;\nuse protocol_types::{address::AztecAddress, hash::sha256_to_field};\n\n// Base slot for the pending tagged log array to which the fetch_tagged_logs oracle inserts found private logs.\nglobal PENDING_TAGGED_LOG_ARRAY_BASE_SLOT: Field =\n sha256_to_field(\"AZTEC_NR::PENDING_TAGGED_LOG_ARRAY_BASE_SLOT\".as_bytes());\n\nglobal NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\nglobal LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT: Field = sha256_to_field(\n \"AZTEC_NR::LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT\".as_bytes(),\n);\n\n/// Searches for private logs emitted by `contract_address` that might contain messages for one of the local accounts,\n/// and stores them in a `CapsuleArray` which is then returned.\npub(crate) unconstrained fn get_private_logs(\n contract_address: AztecAddress,\n) -> CapsuleArray {\n // We will eventually perform log discovery via tagging here, but for now we simply call the `fetchTaggedLogs`\n // oracle. This makes PXE synchronize tags, download logs and store the pending tagged logs in a capsule array.\n oracle::message_processing::fetch_tagged_logs(PENDING_TAGGED_LOG_ARRAY_BASE_SLOT);\n\n CapsuleArray::at(contract_address, PENDING_TAGGED_LOG_ARRAY_BASE_SLOT)\n}\n\n/// Enqueues a note for validation by PXE, so that it becomes aware of a note's existence allowing for later retrieval\n/// via `get_notes` oracle. The note will be scoped to `contract_address`, meaning other contracts will not be able to\n/// access it unless authorized.\n///\n/// In order for the note validation and insertion to occur, `validate_enqueued_notes_and_events` must be later called.\n/// For optimal performance, accumulate as many note validation requests as possible and then validate them all at the\n/// end (which results in PXE minimizing the number of network round-trips).\n///\n/// The `packed_note` is what `getNotes` will later return. PXE indexes notes by `storage_slot`, so this value\n/// is typically used to filter notes that correspond to different state variables. `note_hash` and `nullifier` are\n/// the inner hashes, i.e. the raw hashes returned by `NoteHash::compute_note_hash` and\n/// `NoteHash::compute_nullifier`. PXE will verify that the siloed unique note hash was inserted into the tree\n/// at `tx_hash`, and will store the nullifier to later check for nullification.\n///\n/// `recipient` is the account to which the note was sent to. Other accounts will not be able to access this note (e.g.\n/// other accounts will not be able to see one another's token balance notes, even in the same PXE) unless authorized.\npub(crate) unconstrained fn enqueue_note_for_validation(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_nonce: Field,\n packed_note: BoundedVec,\n note_hash: Field,\n nullifier: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `NoteValidationRequest`\n CapsuleArray::at(contract_address, NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n NoteValidationRequest {\n contract_address,\n storage_slot,\n note_nonce,\n packed_note,\n note_hash,\n nullifier,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Enqueues an event for validation by PXE, so that it can be efficiently validated and then inserted into the event\n/// store.\n///\n/// In order for the event validation and insertion to occur, `validate_enqueued_notes_and_events` must be later\n/// called. For optimal performance, accumulate as many event validation requests as possible and then validate them\n/// all at the end (which results in PXE minimizing the number of network round-trips).\npub(crate) unconstrained fn enqueue_event_for_validation(\n contract_address: AztecAddress,\n event_type_id: EventSelector,\n serialized_event: BoundedVec,\n event_commitment: Field,\n tx_hash: Field,\n recipient: AztecAddress,\n) {\n // We store requests in a `CapsuleArray`, which PXE will later read from and deserialize into its version of the\n // Noir `EventValidationRequest`\n CapsuleArray::at(contract_address, EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT).push(\n EventValidationRequest {\n contract_address,\n event_type_id,\n serialized_event,\n event_commitment,\n tx_hash,\n recipient,\n },\n )\n}\n\n/// Validates all note and event validation requests enqueued via `enqueue_note_for_validation` and\n/// `enqueue_event_for_validation`, inserting them into the note database and event store respectively, making them\n/// queryable via `get_notes` oracle and our TS API (PXE::getPrivateEvents).\n///\n/// This automatically clears both validation request queues, so no further work needs to be done by the caller.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(contract_address: AztecAddress) {\n oracle::message_processing::validate_enqueued_notes_and_events(\n contract_address,\n NOTE_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n EVENT_VALIDATION_REQUESTS_ARRAY_BASE_SLOT,\n );\n}\n\n/// Efficiently queries the node for logs that result in the completion of all `DeliveredPendingPartialNote`s stored in\n/// a `CapsuleArray` by performing all node communication concurrently. Returns a second `CapsuleArray` with Options for\n/// the responses that correspond to the pending partial notes at the same index.\n///\n/// For example, given an array with pending partial notes `[ p1, p2, p3 ]`, where `p1` and `p3` have corresponding\n/// completion logs but `p2` does not, the returned `CapsuleArray` will have contents\n/// `[some(p1_log), none(), some(p3_log)]`.\npub(crate) unconstrained fn get_pending_partial_notes_completion_logs(\n contract_address: AztecAddress,\n pending_partial_notes: CapsuleArray,\n) -> CapsuleArray> {\n let log_retrieval_requests =\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT);\n\n // We create a LogRetrievalRequest for each PendingPartialNote in the CapsuleArray. Because we need the indices in\n // the request array to match the indices in the partial note array, we can't use CapsuleArray::for_each, as that\n // function has arbitrary iteration order. Instead, we manually iterate the array from the beginning and push into\n // the requests array, which we expect to be empty.\n let mut i = 0;\n let pending_partial_notes_count = pending_partial_notes.len();\n while i < pending_partial_notes_count {\n let pending_partial_note = pending_partial_notes.get(i);\n log_retrieval_requests.push(\n LogRetrievalRequest {\n contract_address,\n unsiloed_tag: pending_partial_note.note_completion_log_tag,\n },\n );\n i += 1;\n }\n\n oracle::message_processing::bulk_retrieve_logs(\n contract_address,\n LOG_RETRIEVAL_REQUESTS_ARRAY_BASE_SLOT,\n LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT,\n );\n\n CapsuleArray::at(contract_address, LOG_RETRIEVAL_RESPONSES_ARRAY_BASE_SLOT)\n}\n" - }, - "141": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr", - "source": "use crate::context::PrivateContext;\nuse crate::note::{\n note_emission::NoteEmission,\n note_interface::{NoteHash, NoteType},\n retrieved_note::RetrievedNote,\n utils::{compute_note_hash_for_nullify_from_read_request, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::notify_created_note;\nuse protocol_types::traits::Packable;\n\npub fn create_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: Note,\n) -> NoteEmission\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n let note_hash_counter = context.side_effect_counter;\n\n let note_hash = note.compute_note_hash(storage_slot);\n\n let packed_note = Note::pack(note);\n notify_created_note(\n storage_slot,\n Note::get_id(),\n packed_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(note, storage_slot, note_hash_counter)\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n\n destroy_note_unsafe(context, retrieved_note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe(\n context: &mut PrivateContext,\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_from_read_request(retrieved_note, note_hash_for_read_request);\n let nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash = if retrieved_note.metadata.is_settled() {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifying so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n context.push_nullifier_for_note_hash(nullifier, note_hash)\n}\n" - }, - "143": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_emission.nr", - "source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission {\n pub note: Note,\n pub storage_slot: Field,\n pub note_hash_counter: u32, // a note_hash_counter of 0 means settled\n}\n\nimpl NoteEmission {\n pub fn new(note: Note, storage_slot: Field, note_hash_counter: u32) -> Self {\n Self { note, storage_slot, note_hash_counter }\n }\n\n pub fn emit(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission {\n pub emission: Option>,\n}\n\nimpl OuterNoteEmission {\n pub fn new(emission: Option>) -> Self {\n Self { emission }\n }\n\n pub fn emit(self, _emit: fn[Env](NoteEmission) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n" - }, - "145": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_getter.nr", - "source": "use crate::{\n context::PrivateContext,\n note::{\n note_getter_options::{\n NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder,\n },\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n retrieved_note::RetrievedNote,\n utils::compute_note_hash_for_read_request,\n },\n oracle,\n utils::{array, comparison::compare},\n};\n\nuse protocol_types::{constants::MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, traits::{Packable, ToField}};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector(\n packed_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the packed note.\n // This allows easier packing and custom (un)packing schemas. A note property is located\n // inside the packed note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = packed_note[selector.index as u32].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[(31 + offset - i) as u32] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(packed_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (RetrievedNote, Field)\nwhere\n Note: NoteType + NoteHash + Packable,\n{\n // Safety: Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do\n // is check that the metadata is correct, and that the note exists.\n let retrieved_note = unsafe { get_note_internal::(storage_slot) };\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the contract\n // address returned from the oracle matches. Since branching in circuits is expensive, we perform this check on all\n // note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (retrieved_note, note_hash_for_read_request)\n}\n\n/// Returns a BoundedVec of notes that have been proven to have been created by this contract, either in the current or\n/// past transactions (i.e. pending or settled notes). A second BoundedVec contains the note hashes used for the read\n/// requests, which can save constraints when computing the note's nullifiers.\n///\n/// WARNING: recall that notes are never destroyed! Note existence therefore does not imply that the note is _current_\n/// or _valid_ - this typically requires also emitting the note's nullifier to prove that it had not been emitted\n/// before. Because of this, calling this function directly from end-user applications should be discouraged, and safe\n/// abstractions such as aztec-nr's state variables should be used instead.\npub fn get_notes(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // Safety: The notes are constrained below.\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor(\n notes: [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PreprocessorArgs) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PreprocessorArgs,\n) -> [Option; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions,\n ) -> (BoundedVec, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec)\nwhere\n Note: NoteType + NoteHash + Eq + Packable,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the notes (as opposed to simply removing some), the private\n // kernel will later validate that these note actually exist, so transformations would cause for that check\n // to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = array::collapse(filtered_notes);\n let mut note_hashes = BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_packed_note = [0; M];\n for i in 0..options.limit {\n if i < notes.len() {\n let retrieved_note = notes.get_unchecked(i);\n\n // For settled notes, the contract address is implicitly checked since the hash returned from\n // `compute_note_hash_for_read_request` is siloed and kernels verify the siloing during note read request\n // validation. Pending notes however are read with the unsiloed note hash, so we need to check that the\n // contract address returned from the oracle matches. Since branching in circuits is expensive, we perform\n // this check on all note types.\n assert(\n retrieved_note.contract_address.eq(context.this_address()),\n \"Note contract address mismatch.\",\n );\n\n let packed_note = retrieved_note.note.pack();\n check_packed_note(packed_note, options.selects);\n if i != 0 {\n check_notes_order(prev_packed_note, packed_note, options.sorts);\n }\n prev_packed_note = packed_note;\n\n let note_hash_for_read_request =\n compute_note_hash_for_read_request(retrieved_note, storage_slot);\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal(storage_slot: Field) -> RetrievedNote\nwhere\n Note: NoteType + Packable,\n{\n let opt_notes: [_; 1] = oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n );\n\n opt_notes[0].expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal(\n storage_slot: Field,\n options: NoteGetterOptions,\n) -> [Option>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteType + Packable,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\n/// Unconstrained variant of `get_notes`, meant to be used in unconstrained execution contexts. Notably only the note\n/// content is returned, and not any of the information used when proving its existence (e.g. note nonce, note hash,\n/// etc.).\npub unconstrained fn view_notes(\n storage_slot: Field,\n options: NoteViewerOptions,\n) -> BoundedVec\nwhere\n Note: NoteType + Packable + Eq,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n\n // We fetch the notes from the same oracle we use in the constrained case, except we don't bother inspecting the\n // metadata in order to prove existence.\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n );\n\n // Even though we don't expect for the opt_notes array to be sparse, collapse is still useful in this case to\n // convert it into a BoundedVec.\n array::collapse(opt_notes).map(\n // view_notes just returns the actual note, so we drop the metadata\n |retrieved_note| retrieved_note.note,\n )\n}\n\nunconstrained fn flatten_options(\n selects: BoundedVec, N>,\n sorts: BoundedVec, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects as u32] =\n select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects as u32] =\n select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects as u32] =\n select.unwrap_unchecked().property_selector.length;\n select_values[num_selects as u32] = select.unwrap_unchecked().value;\n select_comparators[num_selects as u32] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n" - }, - "148": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/note_metadata.nr", - "source": "use protocol_types::traits::{Packable, Serialize};\n\n// There's temporarily quite a bit of boilerplate here because Noir does not yet support enums. This file will\n// eventually be simplified into something closer to:\n//\n// pub enum NoteMetadata {\n// PendingSamePhase{ note_hash_counter: u32 },\n// PendingOtherPhase{ note_hash_counter: u32, note_nonce: Field },\n// Settled{ note_nonce: Field },\n// }\n//\n// For now, we have `NoteMetadata` acting as a sort of tagged union.\n\nstruct NoteStageEnum {\n /// A note that was created in the transaction that is currently being executed, during the current execution phase,\n /// i.e. non-revertible or revertible.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted unless nullified in this transaction\n /// (becoming a transient note).\n PENDING_SAME_PHASE: u8,\n /// A note that was created in the transaction that is currently being executed, during the previous execution\n /// phase. Because there are only two phases and their order is always the same (first non-revertible and then\n /// revertible) this implies that the note was created in the non-revertible phase, and that the current phase is\n /// the revertible phase.\n ///\n /// These notes are not yet in the note hash tree, though they will be inserted **even if nullified in this\n /// transaction**. This means that they must be nullified as if they were settled (i.e. using the unique note hash)\n /// in order to avoid double spends once they become settled.\n PENDING_PREVIOUS_PHASE: u8,\n /// A note that was created in a prior transaction and is therefore already in the note hash tree.\n SETTLED: u8,\n}\n\nglobal NoteStage: NoteStageEnum =\n NoteStageEnum { PENDING_SAME_PHASE: 1, PENDING_PREVIOUS_PHASE: 2, SETTLED: 3 };\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a note in any of the three valid stages (pending same phase, pending previous phase, or settled). In\n/// order to access the underlying fields callers must first find the appropriate stage (e.g. via `is_settled()`) and\n/// then convert this into the appropriate type (e.g. via `to_settled()`).\n#[derive(Eq, Serialize, Packable)]\npub struct NoteMetadata {\n stage: u8,\n maybe_note_nonce: Field,\n}\n\nimpl NoteMetadata {\n /// Constructs a `NoteMetadata` object from optional note hash counter and nonce. Both a zero note hash counter and\n /// a zero nonce are invalid, so those are used to signal non-existent values.\n pub fn from_raw_data(nonzero_note_hash_counter: bool, maybe_note_nonce: Field) -> Self {\n if nonzero_note_hash_counter {\n if maybe_note_nonce == 0 {\n Self { stage: NoteStage.PENDING_SAME_PHASE, maybe_note_nonce }\n } else {\n Self { stage: NoteStage.PENDING_PREVIOUS_PHASE, maybe_note_nonce }\n }\n } else if maybe_note_nonce != 0 {\n Self { stage: NoteStage.SETTLED, maybe_note_nonce }\n } else {\n panic(\n f\"Note has a zero note hash counter and no nonce - existence cannot be proven\",\n )\n }\n }\n\n /// Returns true if the note is pending **and** from the same phase, i.e. if it's been created in the current\n /// transaction during the current execution phase (either non-revertible or revertible).\n pub fn is_pending_same_phase(self) -> bool {\n self.stage == NoteStage.PENDING_SAME_PHASE\n }\n\n /// Returns true if the note is pending **and** from the previous phase, i.e. if it's been created in the current\n /// transaction during an execution phase prior to the current one. Because private execution only has two phases\n /// with strict ordering, this implies that the note was created in the non-revertible phase, and that the current\n /// phase is the revertible phase.\n pub fn is_pending_previous_phase(self) -> bool {\n self.stage == NoteStage.PENDING_PREVIOUS_PHASE\n }\n\n /// Returns true if the note is settled, i.e. if it's been created in a prior transaction and is therefore already\n /// in the note hash tree.\n pub fn is_settled(self) -> bool {\n self.stage == NoteStage.SETTLED\n }\n\n /// Asserts that the metadata is that of a pending note from the same phase and converts it accordingly.\n pub fn to_pending_same_phase(self) -> PendingSamePhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_SAME_PHASE);\n PendingSamePhaseNoteMetadata::new()\n }\n\n /// Asserts that the metadata is that of a pending note from a previous phase and converts it accordingly.\n pub fn to_pending_previous_phase(self) -> PendingPreviousPhaseNoteMetadata {\n assert_eq(self.stage, NoteStage.PENDING_PREVIOUS_PHASE);\n PendingPreviousPhaseNoteMetadata::new(self.maybe_note_nonce)\n }\n\n /// Asserts that the metadata is that of a settled note and converts it accordingly.\n pub fn to_settled(self) -> SettledNoteMetadata {\n assert_eq(self.stage, NoteStage.SETTLED);\n SettledNoteMetadata::new(self.maybe_note_nonce)\n }\n}\n\nimpl From for NoteMetadata {\n fn from(_value: PendingSamePhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, std::mem::zeroed())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: PendingPreviousPhaseNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(true, value.note_nonce())\n }\n}\n\nimpl From for NoteMetadata {\n fn from(value: SettledNoteMetadata) -> Self {\n NoteMetadata::from_raw_data(false, value.note_nonce())\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending same phase note, i.e. a note that was created in the transaction that is currently being\n/// executed during the current execution phase (either non-revertible or revertible).\npub struct PendingSamePhaseNoteMetadata {\n // This struct contains no fields since there is no metadata associated with a pending same phase note: it has no\n // nonce (since it may get squashed by a nullifier emitted in the same phase), and while it does have a note hash\n // counter we cannot constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingSamePhaseNoteMetadata {\n pub fn new() -> Self {\n Self {}\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a pending previous phase note, i.e. a note that was created in the transaction that is currently\n/// being executed, during the previous execution phase. Because there are only two phases and their order is always the\n/// same (first non-revertible and then revertible) this implies that the note was created in the non-revertible phase,\n/// and that the current phase is the revertible phase.\npub struct PendingPreviousPhaseNoteMetadata {\n note_nonce: Field,\n // This struct does not contain a note hash counter, even though one exists for this note, because we cannot\n // constrain its value (and don't need to - only that it is non-zero).\n}\n\nimpl PendingPreviousPhaseNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n\n/// The metadata required to both prove a note's existence and destroy it, by computing the correct note hash for kernel\n/// read requests, as well as the correct nullifier to avoid double-spends.\n///\n/// This represents a settled note, i.e. a note that was created in a prior transaction and is therefore already in the\n/// note hash tree.\npub struct SettledNoteMetadata {\n note_nonce: Field,\n}\n\nimpl SettledNoteMetadata {\n pub fn new(note_nonce: Field) -> Self {\n Self { note_nonce }\n }\n\n pub fn note_nonce(self) -> Field {\n self.note_nonce\n }\n}\n" - }, - "151": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/note/utils.nr", - "source": "use crate::{\n context::PrivateContext,\n note::{note_interface::NoteHash, retrieved_note::RetrievedNote},\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier, compute_unique_note_hash,\n};\n\n/// Returns the note hash that must be used to issue a private kernel read request for a note.\npub fn compute_note_hash_for_read_request(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash = retrieved_note.note.compute_note_hash(storage_slot);\n\n if retrieved_note.metadata.is_settled() {\n // Settled notes are read by siloing with contract address and nonce (resulting in the final unique note hash,\n // which is already in the note hash tree).\n let siloed_note_hash = compute_siloed_note_hash(retrieved_note.contract_address, note_hash);\n compute_unique_note_hash(\n retrieved_note.metadata.to_settled().note_nonce(),\n siloed_note_hash,\n )\n } else {\n // Pending notes (both same phase and previous phase ones) re read by their non-siloed hash (not even by\n // contract address), which is what is stored in the new note hashes array (at the position hinted by note hash\n // counter).\n note_hash\n }\n}\n\n/// Returns the note hash that must be used to compute a note's nullifier when calling `NoteHash::compute_nullifier` or\n/// `NoteHash::compute_nullifier_unconstrained`.\npub fn compute_note_hash_for_nullify(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n) -> Field\nwhere\n Note: NoteHash,\n{\n compute_note_hash_for_nullify_from_read_request(\n retrieved_note,\n compute_note_hash_for_read_request(retrieved_note, storage_slot),\n )\n}\n\n/// Same as `compute_note_hash_for_nullify`, except it takes the note hash used in a read request (i.e. what\n/// `compute_note_hash_for_read_request` would return). This is useful in scenarios where that hash has already been\n/// computed to reduce constraints by reusing this value.\npub fn compute_note_hash_for_nullify_from_read_request(\n retrieved_note: RetrievedNote,\n note_hash_for_read_request: Field,\n) -> Field {\n // There is just one instance in which the note hash for nullification does not match the note hash used for a read\n // request, which is when dealing with pending previous phase notes. These had their existence proven using their\n // non-siloed note hash along with the note hash counter (like all pending notes), but since they will be\n // unconditionally inserted in the note hash tree (since they cannot be squashed) they must be nullified using the\n // *unique* note hash.\n // If we didn't, it'd be possible to emit a second different nullifier for the same note in a follow up transaction,\n // once the note is settled, resulting in a double spend.\n\n if retrieved_note.metadata.is_pending_previous_phase() {\n let siloed_note_hash =\n compute_siloed_note_hash(retrieved_note.contract_address, note_hash_for_read_request);\n let note_nonce = retrieved_note.metadata.to_pending_previous_phase().note_nonce();\n\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n/// Computes a note's siloed nullifier, i.e. the one that will be inserted into the nullifier tree.\npub fn compute_siloed_note_nullifier(\n retrieved_note: RetrievedNote,\n storage_slot: Field,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteHash,\n{\n let note_hash_for_nullify = compute_note_hash_for_nullify(retrieved_note, storage_slot);\n let inner_nullifier = retrieved_note.note.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier(retrieved_note.contract_address, inner_nullifier)\n}\n" - }, - "155": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(privateCallPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n" - }, - "156": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/capsules.nr", - "source": "use protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// Stores arbitrary information in a per-contract non-volatile database, which can later be retrieved with `load`. If\n/// data was already stored at this slot, it is overwritten.\npub unconstrained fn store(contract_address: AztecAddress, slot: Field, value: T)\nwhere\n T: Serialize,\n{\n let serialized = value.serialize();\n store_oracle(contract_address, slot, serialized);\n}\n\n/// Returns data previously stored via `storeCapsule` in the per-contract non-volatile database. Returns Option::none() if\n/// nothing was stored at the given slot.\npub unconstrained fn load(contract_address: AztecAddress, slot: Field) -> Option\nwhere\n T: Deserialize,\n{\n let serialized_option = load_oracle(contract_address, slot, ::N);\n serialized_option.map(|arr| Deserialize::deserialize(arr))\n}\n\n/// Deletes data in the per-contract non-volatile database. Does nothing if no data was present.\npub unconstrained fn delete(contract_address: AztecAddress, slot: Field) {\n delete_oracle(contract_address, slot);\n}\n\n/// Copies a number of contiguous entries in the per-contract non-volatile database. This allows for efficient data\n/// structures by avoiding repeated calls to `loadCapsule` and `storeCapsule`.\n/// Supports overlapping source and destination regions (which will result in the overlapped source values being\n/// overwritten). All copied slots must exist in the database (i.e. have been stored and not deleted)\npub unconstrained fn copy(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {\n copy_oracle(contract_address, src_slot, dst_slot, num_entries);\n}\n\n#[oracle(utilityStoreCapsule)]\nunconstrained fn store_oracle(\n contract_address: AztecAddress,\n slot: Field,\n values: [Field; N],\n) {}\n\n/// We need to pass in `array_len` (the value of N) as a parameter to tell the oracle how many fields the response must\n/// have.\n///\n/// Note that the oracle returns an Option<[Field; N]> because we cannot return an Option directly. That would\n/// require for the oracle resolver to know the shape of T (e.g. if T were a struct of 3 u32 values then the expected\n/// response shape would be 3 single items, whereas it were a struct containing `u32, [Field;10], u32` then the expected\n/// shape would be single, array, single.). Instead, we return the serialization and deserialize in Noir.\n#[oracle(utilityLoadCapsule)]\nunconstrained fn load_oracle(\n contract_address: AztecAddress,\n slot: Field,\n array_len: u32,\n) -> Option<[Field; N]> {}\n\n#[oracle(utilityDeleteCapsule)]\nunconstrained fn delete_oracle(contract_address: AztecAddress, slot: Field) {}\n\n#[oracle(utilityCopyCapsule)]\nunconstrained fn copy_oracle(\n contract_address: AztecAddress,\n src_slot: Field,\n dst_slot: Field,\n num_entries: u32,\n) {}\n\nmod test {\n // These tests are sort of redundant since we already test the oracle implementation directly in TypeScript, but\n // they are cheap regardless and help ensure both that the TXE implementation works accordingly and that the Noir\n // oracles are hooked up correctly.\n\n use crate::{\n oracle::capsules::{copy, delete, load, store},\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use protocol_types::{address::AztecAddress, traits::{FromField, ToField}};\n\n global SLOT: Field = 1;\n\n #[test]\n unconstrained fn stores_and_loads() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), value);\n });\n }\n\n #[test]\n unconstrained fn store_overwrites() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n\n let new_value = MockStruct::new(7, 8);\n store(contract_address, SLOT, new_value);\n\n assert_eq(load(contract_address, SLOT).unwrap(), new_value);\n });\n }\n\n #[test]\n unconstrained fn loads_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_stored_value() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let value = MockStruct::new(5, 6);\n store(contract_address, SLOT, value);\n delete(contract_address, SLOT);\n\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn deletes_empty_slot() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n delete(contract_address, SLOT);\n let loaded_value: Option = load(contract_address, SLOT);\n assert_eq(loaded_value, Option::none());\n });\n }\n\n #[test]\n unconstrained fn copies_non_overlapping_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 5;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 10;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_src_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 1;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 2;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[1] and src[2] should have been overwritten since they are also dst[0] and dst[1]\n assert_eq(load(contract_address, src).unwrap(), values[0]); // src[0] (unchanged)\n assert_eq(load(contract_address, src + 1).unwrap(), values[0]); // dst[0]\n assert_eq(load(contract_address, src + 2).unwrap(), values[1]); // dst[1]\n });\n }\n\n #[test]\n unconstrained fn copies_overlapping_values_with_dst_ahead() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let src = 2;\n\n let values = [MockStruct::new(5, 6), MockStruct::new(7, 8), MockStruct::new(9, 10)];\n store(contract_address, src, values[0]);\n store(contract_address, src + 1, values[1]);\n store(contract_address, src + 2, values[2]);\n\n let dst = 1;\n copy(contract_address, src, dst, 3);\n\n assert_eq(load(contract_address, dst).unwrap(), values[0]);\n assert_eq(load(contract_address, dst + 1).unwrap(), values[1]);\n assert_eq(load(contract_address, dst + 2).unwrap(), values[2]);\n\n // src[0] and src[1] should have been overwritten since they are also dst[1] and dst[2]\n assert_eq(load(contract_address, src).unwrap(), values[1]); // dst[1]\n assert_eq(load(contract_address, src + 1).unwrap(), values[2]); // dst[2]\n assert_eq(load(contract_address, src + 2).unwrap(), values[2]); // src[2] (unchanged)\n });\n }\n\n #[test(should_fail_with = \"copy empty slot\")]\n unconstrained fn cannot_copy_empty_values() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n copy(contract_address, SLOT, SLOT, 1);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_store_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let value = MockStruct::new(5, 6);\n store(other_contract_address, SLOT, value);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_load_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n let _: Option = load(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_delete_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n delete(other_contract_address, SLOT);\n });\n }\n\n #[test(should_fail_with = \"not allowed to access\")]\n unconstrained fn cannot_copy_other_contract() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let other_contract_address = AztecAddress::from_field(contract_address.to_field() + 1);\n\n copy(other_contract_address, SLOT, SLOT, 0);\n });\n }\n}\n" - }, - "157": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(privateNotifyEnqueuedPublicFunctionCall)]\nunconstrained fn notify_enqueued_public_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_enqueued_public_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_enqueued_public_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_enqueued_public_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a public call has been enqueued, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_enqueued_public_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\n#[oracle(privateNotifySetPublicTeardownFunctionCall)]\nunconstrained fn notify_set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _calldata_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) {}\n\nunconstrained fn notify_set_public_teardown_function_call_wrapper(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n notify_set_public_teardown_function_call_oracle(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_public_teardown_function_call(\n contract_address: AztecAddress,\n calldata_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) {\n // Safety: Notifies the simulator that a teardown call has been set, allowing it to prepare hints for the AVM to process this call.\n unsafe {\n notify_set_public_teardown_function_call_wrapper(\n contract_address,\n calldata_hash,\n side_effect_counter,\n is_static_call,\n )\n }\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(privateNotifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n" - }, - "158": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution.nr", - "source": "use dep::protocol_types::address::AztecAddress;\n\n#[oracle(utilityGetContractAddress)]\nunconstrained fn get_contract_address_oracle() -> AztecAddress {}\n\n#[oracle(utilityGetBlockNumber)]\nunconstrained fn get_block_number_oracle() -> u32 {}\n\n#[oracle(utilityGetTimestamp)]\nunconstrained fn get_timestamp_oracle() -> u64 {}\n\n#[oracle(utilityGetChainId)]\nunconstrained fn get_chain_id_oracle() -> Field {}\n\n#[oracle(utilityGetVersion)]\nunconstrained fn get_version_oracle() -> Field {}\n\npub unconstrained fn get_contract_address() -> AztecAddress {\n get_contract_address_oracle()\n}\n\npub unconstrained fn get_block_number() -> u32 {\n get_block_number_oracle()\n}\n\npub unconstrained fn get_timestamp() -> u64 {\n get_timestamp_oracle()\n}\n\npub unconstrained fn get_chain_id() -> Field {\n get_chain_id_oracle()\n}\n\npub unconstrained fn get_version() -> Field {\n get_version_oracle()\n}\n" - }, - "159": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/execution_cache.nr", - "source": "/// Stores values represented as slice in execution cache to be later obtained by its hash.\npub fn store(values: [Field], hash: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call. When loading the values, however, the caller must check that the values are indeed the preimage.\n unsafe { store_in_execution_cache_oracle_wrapper(values, hash) };\n}\n\nunconstrained fn store_in_execution_cache_oracle_wrapper(values: [Field], hash: Field) {\n store_in_execution_cache_oracle(values, hash);\n}\n\npub unconstrained fn load(hash: Field) -> [Field; N] {\n load_from_execution_cache_oracle(hash)\n}\n\n#[oracle(privateStoreInExecutionCache)]\nunconstrained fn store_in_execution_cache_oracle(_values: [Field], _hash: Field) {}\n\n#[oracle(privateLoadFromExecutionCache)]\nunconstrained fn load_from_execution_cache_oracle(_hash: Field) -> [Field; N] {}\n" - }, - "16": { - "path": "std/embedded_curve_ops.nr", - "source": "use crate::cmp::Eq;\nuse crate::hash::Hash;\nuse crate::ops::arith::{Add, Neg, Sub};\n\n/// A point on the embedded elliptic curve\n/// By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field.\n/// x and y denotes the Weierstrass coordinates of the point, if is_infinite is false.\npub struct EmbeddedCurvePoint {\n pub x: Field,\n pub y: Field,\n pub is_infinite: bool,\n}\n\nimpl EmbeddedCurvePoint {\n /// Elliptic curve point doubling operation\n /// returns the doubled point of a point P, i.e P+P\n pub fn double(self) -> EmbeddedCurvePoint {\n embedded_curve_add(self, self)\n }\n\n /// Returns the null element of the curve; 'the point at infinity'\n pub fn point_at_infinity() -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: 0, y: 0, is_infinite: true }\n }\n\n /// Returns the curve's generator point.\n pub fn generator() -> EmbeddedCurvePoint {\n // Generator point for the grumpkin curve (y^2 = x^3 - 17)\n EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860, // sqrt(-16)\n is_infinite: false,\n }\n }\n}\n\nimpl Add for EmbeddedCurvePoint {\n /// Adds two points P+Q, using the curve addition formula, and also handles point at infinity\n fn add(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n embedded_curve_add(self, other)\n }\n}\n\nimpl Sub for EmbeddedCurvePoint {\n /// Points subtraction operation, using addition and negation\n fn sub(self, other: EmbeddedCurvePoint) -> EmbeddedCurvePoint {\n self + other.neg()\n }\n}\n\nimpl Neg for EmbeddedCurvePoint {\n /// Negates a point P, i.e returns -P, by negating the y coordinate.\n /// If the point is at infinity, then the result is also at infinity.\n fn neg(self) -> EmbeddedCurvePoint {\n EmbeddedCurvePoint { x: self.x, y: -self.y, is_infinite: self.is_infinite }\n }\n}\n\nimpl Eq for EmbeddedCurvePoint {\n /// Checks whether two points are equal\n fn eq(self: Self, b: EmbeddedCurvePoint) -> bool {\n (self.is_infinite & b.is_infinite)\n | ((self.is_infinite == b.is_infinite) & (self.x == b.x) & (self.y == b.y))\n }\n}\n\nimpl Hash for EmbeddedCurvePoint {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n if self.is_infinite {\n self.is_infinite.hash(state);\n } else {\n self.x.hash(state);\n self.y.hash(state);\n }\n }\n}\n\n/// Scalar for the embedded curve represented as low and high limbs\n/// By definition, the scalar field of the embedded curve is base field of the proving system curve.\n/// It may not fit into a Field element, so it is represented with two Field elements; its low and high limbs.\npub struct EmbeddedCurveScalar {\n pub lo: Field,\n pub hi: Field,\n}\n\nimpl EmbeddedCurveScalar {\n pub fn new(lo: Field, hi: Field) -> Self {\n EmbeddedCurveScalar { lo, hi }\n }\n\n #[field(bn254)]\n pub fn from_field(scalar: Field) -> EmbeddedCurveScalar {\n let (a, b) = crate::field::bn254::decompose(scalar);\n EmbeddedCurveScalar { lo: a, hi: b }\n }\n\n //Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\n #[field(bn254)]\n pub(crate) fn from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v = 1;\n let mut lo = 0 as Field;\n let mut hi = 0 as Field;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = crate::embedded_curve_ops::EmbeddedCurveScalar { lo, hi };\n sig_s\n }\n}\n\nimpl Eq for EmbeddedCurveScalar {\n fn eq(self, other: Self) -> bool {\n (other.hi == self.hi) & (other.lo == self.lo)\n }\n}\n\nimpl Hash for EmbeddedCurveScalar {\n fn hash(self, state: &mut H)\n where\n H: crate::hash::Hasher,\n {\n self.hi.hash(state);\n self.lo.hash(state);\n }\n}\n\n// Computes a multi scalar multiplication over the embedded curve.\n// For bn254, We have Grumpkin and Baby JubJub.\n// For bls12-381, we have JubJub and Bandersnatch.\n//\n// The embedded curve being used is decided by the\n// underlying proof system.\n// docs:start:multi_scalar_mul\npub fn multi_scalar_mul(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n) -> EmbeddedCurvePoint\n// docs:end:multi_scalar_mul\n{\n multi_scalar_mul_array_return(points, scalars, true)[0]\n}\n\n#[foreign(multi_scalar_mul)]\npub(crate) fn multi_scalar_mul_array_return(\n points: [EmbeddedCurvePoint; N],\n scalars: [EmbeddedCurveScalar; N],\n predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n// docs:start:fixed_base_scalar_mul\npub fn fixed_base_scalar_mul(scalar: EmbeddedCurveScalar) -> EmbeddedCurvePoint\n// docs:end:fixed_base_scalar_mul\n{\n multi_scalar_mul([EmbeddedCurvePoint::generator()], [scalar])\n}\n\n/// This function only assumes that the points are on the curve\n/// It handles corner cases around the infinity point causing some overhead compared to embedded_curve_add_not_nul and embedded_curve_add_unsafe\n// docs:start:embedded_curve_add\npub fn embedded_curve_add(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n // docs:end:embedded_curve_add\n if crate::runtime::is_unconstrained() {\n // `embedded_curve_add_unsafe` requires the inputs not to be the infinity point, so we check it here.\n // This is because `embedded_curve_add_unsafe` uses the `embedded_curve_add` opcode.\n // For efficiency, the backend does not check the inputs for the infinity point, but it assumes that they are not the infinity point\n // so that it can apply the ec addition formula directly.\n if point1.is_infinite {\n point2\n } else if point2.is_infinite {\n point1\n } else {\n embedded_curve_add_unsafe(point1, point2)\n }\n } else {\n // In a constrained context, we also need to check the inputs are not the infinity point because we also use `embedded_curve_add_unsafe`\n // However we also need to identify the case where the two inputs are the same, because then\n // the addition formula does not work and we need to use the doubling formula instead.\n // In unconstrained context, we can check directly if the input values are the same when solving the opcode, so it is not an issue.\n\n // x_coordinates_match is true if both abscissae are the same\n let x_coordinates_match = point1.x == point2.x;\n // y_coordinates_match is true if both ordinates are the same\n let y_coordinates_match = point1.y == point2.y;\n // double_predicate is true if both abscissae and ordinates are the same\n let double_predicate = (x_coordinates_match & y_coordinates_match);\n // If the abscissae are the same, but not the ordinates, then one point is the opposite of the other\n let infinity_predicate = (x_coordinates_match & !y_coordinates_match);\n let point1_1 = EmbeddedCurvePoint {\n x: point1.x + (x_coordinates_match as Field),\n y: point1.y,\n is_infinite: false,\n };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n // point1_1 is guaranteed to have a different abscissa than point2:\n // - if x_coordinates_match is 0, that means point1.x != point2.x, and point1_1.x = point1.x + 0\n // - if x_coordinates_match is 1, that means point1.x = point2.x, but point1_1.x = point1.x + 1 in this case\n // Because the abscissa is different, the addition formula is guaranteed to succeed, so we can safely use `embedded_curve_add_unsafe`\n // Note that this computation may be garbage: if x_coordinates_match is 1, or if one of the input is the point at infinity.\n let mut result = embedded_curve_add_unsafe(point1_1, point2_1);\n\n // `embedded_curve_add_unsafe` is doing a doubling if the input is the same variable, because in this case it is guaranteed (at 'compile time') that the input is the same.\n let double = embedded_curve_add_unsafe(point1, point1);\n // `embedded_curve_add_unsafe` would not perform doubling, even if the inputs point1 and point2 are the same, because it cannot know this without adding some logic (and some constraints)\n // However we did this logic when we computed `double_predicate`, so we set the result to 2*point1 if point1 and point2 are the same\n result = if double_predicate { double } else { result };\n\n // Same logic as above for unconstrained context, we set the proper result when one of the inputs is the infinity point\n if point1.is_infinite {\n result = point2;\n }\n if point2.is_infinite {\n result = point1;\n }\n\n // Finally, we set the is_infinity flag of the result:\n // Opposite points should sum into the infinity point, however, if one of them is point at infinity, their coordinates are not meaningful\n // so we should not use the fact that the inputs are opposite in this case:\n let mut result_is_infinity =\n infinity_predicate & (!point1.is_infinite & !point2.is_infinite);\n // However, if both of them are at infinity, then the result is also at infinity\n result.is_infinite = result_is_infinity | (point1.is_infinite & point2.is_infinite);\n result\n }\n}\n\n#[foreign(embedded_curve_add)]\nfn embedded_curve_add_array_return(\n _point1: EmbeddedCurvePoint,\n _point2: EmbeddedCurvePoint,\n _predicate: bool,\n) -> [EmbeddedCurvePoint; 1] {}\n\n/// This function assumes that:\n/// The points are on the curve, and\n/// The points don't share an x-coordinate, and\n/// Neither point is the infinity point.\n/// If it is used with correct input, the function ensures the correct non-zero result is returned.\n/// Except for points on the curve, the other assumptions are checked by the function. It will cause assertion failure if they are not respected.\npub fn embedded_curve_add_not_nul(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n assert(point1.x != point2.x);\n assert(!point1.is_infinite);\n assert(!point2.is_infinite);\n // Ensure is_infinite is comptime\n let point1_1 = EmbeddedCurvePoint { x: point1.x, y: point1.y, is_infinite: false };\n let point2_1 = EmbeddedCurvePoint { x: point2.x, y: point2.y, is_infinite: false };\n embedded_curve_add_unsafe(point1_1, point2_1)\n}\n\n/// Unsafe ec addition\n/// If the inputs are the same, it will perform a doubling, but only if point1 and point2 are the same variable.\n/// If they have the same value but are different variables, the result will be incorrect because in this case\n/// it assumes (but does not check) that the points' x-coordinates are not equal.\n/// It also assumes neither point is the infinity point.\npub fn embedded_curve_add_unsafe(\n point1: EmbeddedCurvePoint,\n point2: EmbeddedCurvePoint,\n) -> EmbeddedCurvePoint {\n embedded_curve_add_array_return(point1, point2, true)[0]\n}\n" - }, - "160": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr", - "source": "use protocol_types::{\n address::AztecAddress, contract_class_id::ContractClassId, contract_instance::ContractInstance,\n traits::FromField,\n};\n\n// NOTE: this is for use in private only\n#[oracle(utilityGetContractInstance)]\nunconstrained fn get_contract_instance_oracle(_address: AztecAddress) -> ContractInstance {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(address: AztecAddress) -> ContractInstance {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n // Safety: The to_address function combines all values in the instance object to produce an address,\n // so by checking that we get the expected address we validate the entire struct.\n let instance = unsafe { get_contract_instance_internal(address) };\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\nstruct GetContractInstanceResult {\n exists: bool,\n member: Field,\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {}\n\nunconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_deployer_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_class_id_oracle_avm(address)\n}\nunconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> [GetContractInstanceResult; 1] {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_deployer_internal_avm(address)[0] };\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_class_id_internal_avm(address)[0] };\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option {\n // Safety: AVM opcodes are constrained by the AVM itself\n let GetContractInstanceResult { exists, member } =\n unsafe { get_contract_instance_initialization_hash_internal_avm(address)[0] };\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n" - }, - "164": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/get_public_data_witness.nr", - "source": "use dep::protocol_types::{constants::PUBLIC_DATA_TREE_HEIGHT, data::PublicDataTreeLeafPreimage};\n\npub struct PublicDataWitness {\n pub index: Field,\n pub leaf_preimage: PublicDataTreeLeafPreimage,\n pub path: [Field; PUBLIC_DATA_TREE_HEIGHT],\n}\n\n#[oracle(utilityGetPublicDataWitness)]\nunconstrained fn get_public_data_witness_oracle(\n _block_number: u32,\n _public_data_tree_index: Field,\n) -> PublicDataWitness {}\n\npub unconstrained fn get_public_data_witness(\n block_number: u32,\n public_data_tree_index: Field,\n) -> PublicDataWitness {\n get_public_data_witness_oracle(block_number, public_data_tree_index)\n}\n" - }, - "165": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr", - "source": "use protocol_types::abis::validation_requests::KeyValidationRequest;\n\n#[oracle(utilityGetKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> KeyValidationRequest {}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_oracle(pk_m_hash, key_index)\n}\n" - }, - "166": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/keys.nr", - "source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(utilityGetPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] != 0 } },\n ivpk_m: IvpkM { inner: Point { x: result[3], y: result[4], is_infinite: result[5] != 0 } },\n ovpk_m: OvpkM { inner: Point { x: result[6], y: result[7], is_infinite: result[8] != 0 } },\n tpk_m: TpkM { inner: Point { x: result[9], y: result[10], is_infinite: result[11] != 0 } },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n" - }, - "168": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/message_processing.nr", - "source": "use protocol_types::address::AztecAddress;\n\n/// Finds new private logs that may have been sent to all registered accounts in PXE in the current contract and makes\n/// them available for later processing in Noir by storing them in a capsule array.\npub unconstrained fn fetch_tagged_logs(pending_tagged_log_array_base_slot: Field) {\n fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot);\n}\n\n#[oracle(utilityFetchTaggedLogs)]\nunconstrained fn fetch_tagged_logs_oracle(pending_tagged_log_array_base_slot: Field) {}\n\n// This must be a single oracle and not one for notes and one for events because the entire point is to validate\n// all notes and events in one go, minimizing node round-trips.\npub(crate) unconstrained fn validate_enqueued_notes_and_events(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {\n validate_enqueued_notes_and_events_oracle(\n contract_address,\n note_validation_requests_array_base_slot,\n event_validation_requests_array_base_slot,\n );\n}\n\n#[oracle(utilityValidateEnqueuedNotesAndEvents)]\nunconstrained fn validate_enqueued_notes_and_events_oracle(\n contract_address: AztecAddress,\n note_validation_requests_array_base_slot: Field,\n event_validation_requests_array_base_slot: Field,\n) {}\n\npub(crate) unconstrained fn bulk_retrieve_logs(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {\n bulk_retrieve_logs_oracle(\n contract_address,\n log_retrieval_requests_array_base_slot,\n log_retrieval_responses_array_base_slot,\n );\n}\n\n#[oracle(utilityBulkRetrieveLogs)]\nunconstrained fn bulk_retrieve_logs_oracle(\n contract_address: AztecAddress,\n log_retrieval_requests_array_base_slot: Field,\n log_retrieval_responses_array_base_slot: Field,\n) {}\n" - }, - "17": { - "path": "std/field/bn254.nr", - "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 128 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low = (x as u128) as Field;\n let high = (x - low) / TWO_POW_128;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n // Safety: borrow is enforced to be boolean due to its type.\n // if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n // if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n // Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n // Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n // Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n // Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n" - }, - "170": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/notes.nr", - "source": "use crate::note::{note_interface::NoteType, retrieved_note::RetrievedNote};\n\nuse dep::protocol_types::{\n address::AztecAddress, indexed_tagging_secret::IndexedTaggingSecret, traits::Packable,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n packed_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\n/// Notifies the simulator that a non-note nullifier has been created, so that it can be used for note nonces.\npub fn notify_created_nullifier(nullifier: Field) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to\n // call.\n unsafe { notify_created_nullifier_oracle_wrapper(nullifier) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper(\n storage_slot: Field,\n note_type_id: Field,\n packed_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n notify_created_note_oracle(storage_slot, note_type_id, packed_note, note_hash, counter);\n}\n\n#[oracle(privateNotifyCreatedNote)]\nunconstrained fn notify_created_note_oracle(\n _storage_slot: Field,\n _note_type_id: Field,\n _packed_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(privateNotifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(_nullifier: Field, _note_hash: Field, _counter: u32) {}\n\nunconstrained fn notify_created_nullifier_oracle_wrapper(nullifier: Field) {\n notify_created_nullifier_oracle(nullifier);\n}\n\n#[oracle(privateNotifyCreatedNullifier)]\nunconstrained fn notify_created_nullifier_oracle(_nullifier: Field) {}\n\n#[oracle(utilityGetNotes)]\nunconstrained fn get_notes_oracle(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; M],\n _select_by_offsets: [u8; M],\n _select_by_lengths: [u8; M],\n _select_values: [Field; M],\n _select_comparators: [u8; M],\n _sort_by_indexes: [u8; M],\n _sort_by_offsets: [u8; M],\n _sort_by_lengths: [u8; M],\n _sort_order: [u8; M],\n _limit: u32,\n _offset: u32,\n _status: u8,\n // This is always set to MAX_NOTES. We need to pass it to TS in order to correctly construct the BoundedVec\n _max_notes: u32,\n // This is always set to as Packable>::N. We need to pass it to TS in order to be able to\n // correctly construct the BoundedVec there.\n _packed_retrieved_note_length: u32,\n) -> BoundedVec<[Field; as Packable>::N], MaxNotes>\nwhere\n // TODO(https://github.com/noir-lang/noir/issues/9399): `Note: Packable` should work here.\n RetrievedNote: Packable,\n{}\n\npub unconstrained fn get_notes(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n) -> [Option>; MaxNotes]\nwhere\n Note: NoteType + Packable,\n{\n let packed_retrieved_notes: BoundedVec<[Field; as Packable>::N], MaxNotes>\n = get_notes_oracle::(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n MaxNotes,\n as Packable>::N,\n );\n\n let mut notes = BoundedVec::<_, MaxNotes>::new();\n for i in 0..packed_retrieved_notes.len() {\n let retrieved_note = RetrievedNote::unpack(packed_retrieved_notes.get(i));\n notes.push(retrieved_note);\n }\n\n // At last we convert the bounded vector to an array of options. We do this because that is what the filter\n // function needs to have on the output and we've decided to have the same type on the input and output of\n // the filter and preprocessor functions.\n //\n // We have decided to have the same type on the input and output of the filter and preprocessor functions because\n // it allows us to chain multiple filters and preprocessors together.\n //\n // So why do we want the array of options on the output of the filter function?\n //\n // Filter returns an array of options rather than a BoundedVec for performance reasons. Using an array of options\n // allows setting values at known indices in the output array which is much more efficient than pushing to a\n // BoundedVec where the write position depends on previous iterations. The array can then be efficiently converted\n // to a BoundedVec using utils/array/collapse.nr::collapse function from Aztec.nr. This avoids expensive dynamic\n // memory access patterns that would be required when building up a BoundedVec incrementally. For preprocessor\n // functions we could use BoundedVec return value as there the optimization does not matter since it is applied in\n // an unconstrained context. We, however, use the same return value type to be able to use the same function as\n // both a preprocessor and a filter.\n let mut notes_array = [Option::none(); MaxNotes];\n for i in 0..notes.len() {\n if i < notes.len() {\n notes_array[i] = Option::some(notes.get_unchecked(i));\n }\n }\n\n notes_array\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier)\n}\n\n#[oracle(utilityCheckNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> bool {}\n\n// TODO: Oracles below are generic private log oracles and are not specific to notes. Move them somewhere else.\n\n/// Returns the derived app tagging secret ready to be included in a log for a given sender and recipient pair,\n/// siloed for the current contract address.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_indexed_tagging_secret_as_sender_oracle(sender, recipient).compute_tag(recipient)\n}\n\n#[oracle(utilityGetIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> IndexedTaggingSecret {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(privateIncrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Gets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// The value persists through nested calls, meaning all calls down the stack will use the same\n/// 'senderForTags' value (unless it is replaced).\npub unconstrained fn get_sender_for_tags() -> Option {\n get_sender_for_tags_oracle()\n}\n\n#[oracle(privateGetSenderForTags)]\nunconstrained fn get_sender_for_tags_oracle() -> Option {}\n\n/// Sets the sender for tags.\n///\n/// This unconstrained value is used as the sender when computing an unconstrained shared secret\n/// for a tag in order to emit a log. Constrained tagging should not use this as there is no\n/// guarantee that the recipient knows about the sender, and hence about the shared secret.\n///\n/// Account contracts typically set this value before calling other contracts. The value persists\n/// through nested calls, meaning all calls down the stack will use the same 'senderForTags'\n/// value (unless it is replaced by another call to this setter).\npub unconstrained fn set_sender_for_tags(sender_for_tags: AztecAddress) {\n set_sender_for_tags_oracle(sender_for_tags);\n}\n\n#[oracle(privateSetSenderForTags)]\nunconstrained fn set_sender_for_tags_oracle(_sender_for_tags: AztecAddress) {}\n" - }, - "172": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/random.nr", - "source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(utilityGetRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n" - }, - "173": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/shared_secret.nr", - "source": "use protocol_types::{address::aztec_address::AztecAddress, point::Point};\n\n// TODO(#12656): return an app-siloed secret + document this\n#[oracle(utilityGetSharedSecret)]\nunconstrained fn get_shared_secret_oracle(address: AztecAddress, ephPk: Point) -> Point {}\n\n/// Returns an app-siloed shared secret between `address` and someone who knows the secret key behind an\n/// ephemeral public key `ephPk`. The app-siloing means that contracts cannot retrieve secrets that belong to\n/// other contracts, and therefore cannot e.g. decrypt their messages. This is an important security consideration\n/// given that both the `address` and `ephPk` are public information.\n///\n/// The shared secret `S` is computed as:\n/// `let S = (ivsk + h) * ephPk`\n/// where `ivsk + h` is the 'preaddress' i.e. the preimage of the address, also called the address secret.\n/// TODO(#12656): app-silo this secret\npub unconstrained fn get_shared_secret(address: AztecAddress, ephPk: Point) -> Point {\n get_shared_secret_oracle(address, ephPk)\n}\n" - }, - "175": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", - "source": "use dep::protocol_types::{address::AztecAddress, traits::{Packable, ToField}};\n\n#[oracle(utilityStorageRead)]\nunconstrained fn storage_read_oracle(\n address: Field,\n storage_slot: Field,\n block_number: u32,\n length: u32,\n) -> [Field; N] {}\n\npub unconstrained fn raw_storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> [Field; N] {\n storage_read_oracle(address.to_field(), storage_slot, block_number, N)\n}\n\npub unconstrained fn storage_read(\n address: AztecAddress,\n storage_slot: Field,\n block_number: u32,\n) -> T\nwhere\n T: Packable,\n{\n T::unpack(raw_storage_read(address, storage_slot, block_number))\n}\n\nmod tests {\n use crate::oracle::storage::{raw_storage_read, storage_read};\n use dep::protocol_types::{address::AztecAddress, traits::{FromField, Packable}};\n\n use crate::test::mocks::mock_struct::MockStruct;\n use std::test::OracleMock;\n\n global address: AztecAddress = AztecAddress::from_field(29);\n global slot: Field = 7;\n global block_number: u32 = 17;\n\n #[test]\n unconstrained fn test_raw_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: [Field; 2] = raw_storage_read(address, slot, block_number);\n assert_eq(read[0], 13);\n assert_eq(read[1], 42);\n }\n\n #[test]\n unconstrained fn test_storage_read() {\n let written = MockStruct { a: 13, b: 42 };\n\n let _ = OracleMock::mock(\"utilityStorageRead\").returns(written.pack());\n\n let read: MockStruct = storage_read(address, slot, block_number);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n}\n" - }, - "176": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/oracle/version.nr", - "source": "/// The ORACLE_VERSION constant is used to check that the oracle interface is in sync between PXE and Aztec.nr. We need\n/// to version the oracle interface to ensure that developers get a reasonable error message if they use incompatible\n/// versions of Aztec.nr and PXE. The TypeScript counterpart is in `oracle_version.ts`.\n///\n/// @dev Whenever a contract function or Noir test is run, the `utilityAssertCompatibleOracleVersion` oracle is called and\n/// if the oracle version is incompatible an error is thrown.\npub global ORACLE_VERSION: Field = 1;\n\n/// Asserts that the version of the oracle is compatible with the version expected by the contract.\npub fn assert_compatible_oracle_version() {\n // Safety: This oracle call returns nothing: we only call it to check Aztec.nr and Oracle interface versions are\n // compatible. It is therefore always safe to call.\n unsafe {\n assert_compatible_oracle_version_wrapper();\n }\n}\n\nunconstrained fn assert_compatible_oracle_version_wrapper() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n}\n\n#[oracle(utilityAssertCompatibleOracleVersion)]\nunconstrained fn assert_compatible_oracle_version_oracle(version: Field) {}\n\nmod test {\n use super::{assert_compatible_oracle_version_oracle, ORACLE_VERSION};\n\n #[test]\n unconstrained fn compatible_oracle_version() {\n assert_compatible_oracle_version_oracle(ORACLE_VERSION);\n }\n\n #[test(should_fail_with = \"Incompatible oracle version. PXE is using version '1', but got a request for '318183437'.\")]\n unconstrained fn incompatible_oracle_version() {\n let arbitrary_incorrect_version = 318183437;\n assert_compatible_oracle_version_oracle(arbitrary_incorrect_version);\n }\n}\n" - }, - "179": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/delayed_public_mutable.nr", - "source": "use dep::protocol_types::{\n delayed_public_mutable::{\n delayed_public_mutable_values::{unpack_delay_change, unpack_value_change},\n DelayedPublicMutableValues,\n ScheduledDelayChange,\n ScheduledValueChange,\n },\n traits::Packable,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext, UtilityContext},\n state_vars::storage::HasStorageSlot,\n utils::with_hash::WithHash,\n};\n\nmod test;\n\npub struct DelayedPublicMutable {\n context: Context,\n storage_slot: Field,\n}\n\n// This will make the Aztec macros require that T implements the Packable and Eq traits, and allocate `M` storage\n// slots to this state variable.\nimpl HasStorageSlot for DelayedPublicMutable\nwhere\n WithHash, _>: Packable,\n{\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\n// DelayedPublicMutable stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. DelayedPublicMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in seconds. Reads in private are only valid as long as they are included in a block with a timestamp not\n// too far into the future, so that they can guarantee the value will not have possibly changed by then (because of the\n// delay). The delay for changing a value is initially equal to InitialDelay, but can be changed by calling\n// `schedule_delay_change`.\nimpl DelayedPublicMutable {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n\n pub fn schedule_value_change(self, new_value: T)\n where\n T: Packable,\n {\n let _value_change = self.schedule_and_return_value_change(new_value);\n }\n\n pub fn schedule_and_return_value_change(self, new_value: T) -> ScheduledValueChange\n where\n T: Packable,\n {\n let mut value_change = self.read_value_change();\n let delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n let current_delay = delay_change.get_current(current_timestamp);\n\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let timestamp_of_change = current_timestamp + current_delay;\n value_change.schedule_change(\n new_value,\n current_timestamp,\n current_delay,\n timestamp_of_change,\n );\n\n self.write(value_change, delay_change);\n\n value_change\n }\n\n pub fn schedule_delay_change(self, new_delay: u64)\n where\n T: Packable,\n {\n let mut delay_change = self.read_delay_change();\n\n let current_timestamp = self.context.timestamp();\n\n delay_change.schedule_change(new_delay, current_timestamp);\n\n self.write(self.read_value_change(), delay_change);\n }\n\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n let value_change = self.read_value_change();\n\n value_change.get_current_at(current_timestamp)\n }\n\n pub fn get_current_delay(self) -> u64\n where\n T: Packable,\n {\n let current_timestamp = self.context.timestamp();\n self.read_delay_change().get_current(current_timestamp)\n }\n\n pub fn get_scheduled_value(self) -> (T, u64)\n where\n T: Packable,\n {\n self.read_value_change().get_scheduled()\n }\n\n pub fn get_scheduled_delay(self) -> (u64, u64)\n where\n T: Packable,\n {\n self.read_delay_change().get_scheduled()\n }\n\n fn read_value_change(self) -> ScheduledValueChange\n where\n T: Packable,\n {\n // We don't read ScheduledValueChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_value_change::::N>(packed)\n }\n\n fn read_delay_change(self) -> ScheduledDelayChange\n where\n T: Packable,\n {\n // Since all ScheduledDelayChange member are packed into a single field, we can read a single storage slot\n // here and skip the ones that correspond to ScheduledValueChange members. We are abusing the fact that\n // the field containing the ScheduledDelayChange data is the first one in the storage layout - otherwise we'd\n // need to offset the storage slot to get the position where it'd land.\n // We don't read ScheduledDelayChange directly by having it implement Packable because ScheduledValueChange\n // and ScheduledDelayChange are packed together (sdc and svc.timestamp_of_change are stored in the same slot).\n let packed = self.context.storage_read(self.storage_slot);\n unpack_delay_change::(packed)\n }\n\n fn write(\n self,\n value_change: ScheduledValueChange,\n delay_change: ScheduledDelayChange,\n )\n where\n T: Packable,\n {\n // Whenever we write to public storage, we write both the value change and delay change to storage at once.\n // We do so by wrapping them in a single struct (`DelayedPublicMutableValues`). Then we wrap the resulting struct in\n // `WithHash`.\n // Wrapping in `WithHash` makes for more costly writes but it also makes private proofs much simpler because\n // they only need to produce a historical proof for the hash, which results in a single inclusion proof (as\n // opposed to 4 in the best case scenario in which T is a single field). Private delayed public mutable reads are\n // assumed to be much more frequent than public writes, so this tradeoff makes sense.\n let values = WithHash::new(DelayedPublicMutableValues::new(value_change, delay_change));\n\n self.context.storage_write(self.storage_slot, values);\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub fn get_current_value(self) -> T\n where\n T: Packable,\n {\n // When reading the current value in private we construct a historical state proof for the public value.\n // However, since this value might change, we must constrain the maximum transaction timestamp as this proof\n // will only be valid for the time we can ensure the value will not change, which will depend on the\n // current delay and any scheduled delay changes.\n let (value_change, delay_change, historical_timestamp) =\n self.historical_read_from_public_storage();\n\n // We use the effective minimum delay as opposed to the current delay at the historical timestamp (timestamp of\n // the historical block against which we are executing the private part of the tx) as this one also takes into\n // consideration any scheduled delay changes.\n // For example, consider a scenario in which at timestamp `x` the current delay was 86400 seconds (1 day). We\n // may naively think that the earliest we could change the value would be at timestamp `x + 86400` by scheduling\n // immediately after the historical timestamp, i.e. at timestamp `x + 1`. But if there was a delay change scheduled\n // for timestamp `y` to reduce the delay to 43200 seconds (12 hours), then if a value change was scheduled at\n // timestamp `y` it would go into effect at timestamp `y + 43200`, which is earlier than what we'd expect if we\n // only considered the current delay.\n let effective_minimum_delay =\n delay_change.get_effective_minimum_delay_at(historical_timestamp);\n let time_horizon =\n value_change.get_time_horizon(historical_timestamp, effective_minimum_delay);\n\n // We prevent this transaction from being included in any timestamp after the time horizon, ensuring that the\n // historical public value matches the current one, since it can only change after the horizon.\n self.context.set_include_by_timestamp(time_horizon);\n\n value_change.get_current_at(historical_timestamp)\n }\n\n fn historical_read_from_public_storage(\n self,\n ) -> (ScheduledValueChange, ScheduledDelayChange, u64)\n where\n T: Packable,\n {\n let header = self.context.get_block_header();\n let address = self.context.this_address();\n\n let historical_timestamp = header.global_variables.timestamp;\n\n let values: DelayedPublicMutableValues =\n WithHash::historical_public_storage_read(header, address, self.storage_slot);\n\n (values.svc, values.sdc, historical_timestamp)\n }\n}\n\nimpl DelayedPublicMutable\nwhere\n T: Eq,\n{\n pub unconstrained fn get_current_value(self) -> T\n where\n T: Packable,\n {\n let dpmv: DelayedPublicMutableValues =\n WithHash::utility_public_storage_read(self.context, self.storage_slot);\n\n let current_timestamp = self.context.timestamp();\n dpmv.svc.get_current_at(current_timestamp)\n }\n}\n" - }, - "18": { - "path": "std/field/mod.nr", - "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n __assert_max_bit_size(self, BIT_SIZE);\n }\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = __to_le_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = __to_be_bits(self);\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n fn to_le_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_le_radix(self, radix)\n }\n\n fn to_be_radix(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n __to_be_radix(self, radix)\n }\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(apply_range_constraint)]\nfn __assert_max_bit_size(value: Field, bit_size: u32) {}\n\n// `_radix` must be less than 256\n#[builtin(to_le_radix)]\nfn __to_le_radix(value: Field, radix: u32) -> [u8; N] {}\n\n// `_radix` must be less than 256\n#[builtin(to_be_radix)]\nfn __to_be_radix(value: Field, radix: u32) -> [u8; N] {}\n\n/// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n/// This slice will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_le_bits)]\nfn __to_le_bits(value: Field) -> [u1; N] {}\n\n/// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n/// This array will be zero padded should not all bits be necessary to represent `self`.\n///\n/// # Failures\n/// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n/// be able to represent the original `Field`.\n///\n/// # Safety\n/// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n/// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n/// wrap around due to overflow when verifying the decomposition.\n#[builtin(to_be_bits)]\nfn __to_be_bits(value: Field) -> [u1; N] {}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n // Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n unconstrained fn not_enough_limbs_brillig() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n #[test(should_fail_with = \"Field failed to decompose into specified 16 limbs\")]\n fn not_enough_limbs() {\n let _: [u8; 16] = 0x100000000000000000000000000000000.to_le_bytes();\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n" - }, - "180": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", - "source": "use crate::state_vars::storage::HasStorageSlot;\nuse dep::protocol_types::{storage::map::derive_storage_slot_in_map, traits::ToField};\n\n/// Map\n///\n/// A key-value storage container that maps keys to state variables, similar\n/// to Solidity mappings.\n///\n/// `Map` enables you to associate keys (like addresses or other identifiers)\n/// with state variables in your Aztec smart contract. This is conceptually\n/// similar to Solidity's `mapping(K => V)` syntax, where you can store and\n/// retrieve values by their associated keys.\n///\n/// You can declare a state variable contained within a Map in your contract's\n/// #[storage] struct.\n///\n/// For example, you might use\n/// `Map, Context>` to track\n/// token balances for different users, similar to how you'd use\n/// `mapping(address => uint256)` in Solidity.\n///\n/// > Aside: the verbose `Context` in the declaration is a consequence of\n/// > leveraging Noir's regular syntax for generics to ensure that certain\n/// > state variable methods can only be called in some contexts (private,\n/// > public, utility).\n///\n/// The methods of Map are:\n/// - `at` (access state variable for a given key)\n/// (see the method's own doc comments for more info).\n///\n/// ## Generic Parameters\n/// - `K`: The key type (must implement `ToField` trait for hashing)\n/// - `V`: The value type:\n/// - any Aztec state variable:\n/// - `PublicMutable`\n/// - `PublicImmutable`\n/// - `PrivateMutable`\n/// - `PrivateImmutable`\n/// - `PrivateSet`\n/// - `DelayedPublicMutable`\n/// - `Map`\n/// - `Context`: The execution context (handles private/public function\n/// contexts)\n///\n/// ## Usage\n/// Maps are typically declared in your contract's #[storage] struct and\n/// accessed\n/// using the `at(key)` method to get the state variable for a specific key.\n/// The resulting state variable can then be read from or written to using its\n/// own methods.\n///\n/// ## Advanced\n/// Internally, `Map` uses a single base storage slot to represent the\n/// mapping\n/// itself, similar to Solidity's approach. Individual key-value pairs are\n/// stored at derived storage slots computed by hashing the base storage\n/// slot\n/// with the key using Poseidon2. This ensures:\n/// - No storage slot collisions between different keys\n/// - Uniform distribution of storage slots across the storage space\n/// - Compatibility with Aztec's storage tree structure\n/// - Gas-efficient storage access patterns similar to Solidity mappings\n///\n/// The storage slot derivation uses `derive_storage_slot_in_map(base_slot,\n/// key)` which computes `poseidon2_hash([base_slot, key.to_field()])`,\n/// ensuring cryptographically secure slot separation.\n///\n/// docs:start:map\npub struct Map {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\n// Map reserves a single storage slot regardless of what it stores because\n// nothing is stored at said slot: it is only used to derive the storage slots\n// of nested state variables, which is expected to never result in collisions\n// or slots being close to one another due to these being hashes. This mirrors\n// the strategy adopted by Solidity mappings.\nimpl HasStorageSlot<1> for Map {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl Map {\n /// Initializes a new Map state variable.\n ///\n /// This function is usually automatically called within the #[storage]\n /// macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`.\n /// The Context determines which methods of this struct will\n /// be made available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this Map within the contract.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart\n /// contract dev shouldn't have to worry about this, as\n /// it's managed behind the scenes.\n /// * `state_var_constructor` - A function that creates the value type (V)\n /// given a context and storage slot. This is\n /// typically the constructor of the state\n /// variable type being stored in the Map.\n ///\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n /// Returns the state variable associated with the given key.\n ///\n /// This is equivalent to accessing `mapping[key]` in Solidity. It returns\n /// the state variable instance for the specified key, which can then be\n /// used to read or write the value at that key.\n ///\n /// Unlike Solidity mappings which return the value directly, this returns\n /// the state variable wrapper (like PrivateMutable, PublicMutable, etc.)\n /// that you then call methods on to interact with the actual value.\n ///\n /// # Arguments\n ///\n /// * `key` - The key to look up in the map. Must implement the ToField\n /// trait (which most basic Noir & Aztec types do).\n ///\n /// # Returns\n ///\n /// * `V` - The state variable instance for this key. You can then call\n /// methods like `.read()`, `.write()`, `.get_note()`, etc. on this\n /// depending on the specific state variable type.\n ///\n /// # Example\n ///\n /// ```noir\n /// // Get a user's balance (assuming PrivateMutable)\n /// let user_balance = storage.balances.at(user_address);\n /// let current_note = user_balance.get_note();\n ///\n /// // Update the balance\n /// user_balance.replace(new_note);\n /// ```\n ///\n // docs:start:at\n pub fn at(self, key: K) -> V\n where\n K: ToField,\n {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n" - }, - "182": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr", - "source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER, hash::poseidon2_hash_with_separator,\n traits::Packable,\n};\n\nuse crate::context::{PrivateContext, UtilityContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteHash, NoteType},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::HasStorageSlot;\n\n/// PrivateImmutable\n///\n/// PrivateImmutable is a private state variable type for values that are set once\n/// and remain permanently unchanged.\n///\n/// You can declare a state variable of type PrivateImmutable within your contract's\n/// #[storage] struct:\n///\n/// E.g.:\n/// `your_variable: PrivateImmutable`\n///\n/// The value is represented as a single note that persists for the lifetime of\n/// the state variable. Once initialized, this note is never nullified or replaced\n/// through the state variable interface - it can only be read.\n///\n/// The PrivateImmutable type facilitates: inserting the permanent note during\n/// initialization, and reading that note.\n///\n/// The methods of PrivateImmutable are:\n/// - `initialize`\n/// - `get_note`\n/// (see the methods' own doc comments for more info).\n///\n/// ## Example.\n///\n/// A contract's configuration parameters can be represented as a PrivateImmutable.\n/// Once set during contract deployment or initial setup, these parameters remain\n/// constant for the lifetime of the contract.\n///\n/// ## Privacy\n///\n/// PrivateImmutable has the same privacy properties as PrivateMutable (see\n/// PrivateMutable documentation), including the same privacy considerations\n/// regarding the initialization nullifier potentially leaking information about\n/// which storage slot was initialized.\n///\n/// # Generic Parameters:\n///\n/// * `Note` - A single note of this type will represent the PrivateImmutable's\n/// value at the given storage_slot.\n/// * `Context` - The execution context (PrivateContext or UtilityContext).\n///\n/// docs:start:struct\npub struct PrivateImmutable {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\n// Private storage slots are not really 'slots' but rather a value in the note hash preimage, so there is no notion of a\n// value spilling over multiple slots. For this reason PrivateImmutable (and all other private state variables) needs\n// just one slot to be reserved, regardless of what it stores.\nimpl HasStorageSlot<1> for PrivateImmutable {\n fn get_storage_slot(self) -> Field {\n self.storage_slot\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a new PrivateImmutable state variable.\n ///\n /// This function is usually automatically called within the #[storage] macro.\n /// You typically don't need to call this directly when writing smart contracts.\n ///\n /// # Arguments\n ///\n /// * `context` - One of `PrivateContext`/`PublicContext`/`UtilityContext`. The\n /// Context determines which methods of this struct will be made\n /// available to the calling smart contract function.\n /// * `storage_slot` - A unique identifier for this state variable within the\n /// contract. The permanent note for this PrivateImmutable\n /// state variable will have this `storage_slot`.\n /// Usually, the #[storage] macro will determine an\n /// appropriate storage_slot automatically. A smart contract\n /// dev shouldn't have to worry about this, as it's managed\n /// behind the scenes.\n ///\n /// docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n /// Computes the nullifier that will be created when this PrivateImmutable is\n /// initialized.\n ///\n /// This function is primarily used internally by the `initialize` method, but\n /// may also be useful for contracts that need to check if a PrivateImmutable\n /// has been initialized.\n ///\n /// **IMPORTANT PRIVACY CONSIDERATION:**\n /// This computation has the same privacy implications as PrivateMutable's\n /// initialization nullifier (see PrivateMutable documentation for detailed\n /// explanation). The initialization nullifier can leak information about which\n /// storage slot was initialized.\n ///\n /// See https://github.com/AztecProtocol/aztec-packages/issues/15568 for ideas to\n /// improve this privacy footgun in future.\n ///\n /// # Returns\n ///\n /// * `Field` - The nullifier that will be emitted when this PrivateImmutable is\n /// initialized.\n ///\n /// # Advanced\n ///\n /// The computation uses the Poseidon2 hash function with a specific generator\n /// index to hash the storage slot, creating a deterministic nullifier based on\n /// the storage location.\n ///\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl PrivateImmutable {\n /// Initializes a PrivateImmutable state variable instance with a permanent note.\n ///\n /// This function inserts the single, permanent note for this state variable. It can\n /// only be called once per PrivateImmutable. Subsequent calls will fail because\n /// the initialization nullifier will already exist.\n ///\n /// Unlike PrivateMutable, this note will never be nullified or replaced through\n /// the state variable interface - it persists for the lifetime of the state variable.\n ///\n /// # Arguments\n ///\n /// * `note` - The permanent note to store in this PrivateImmutable. This note\n /// contains the unchanging value of the state variable.\n ///\n /// # Returns\n ///\n /// * `NoteEmission` - A type-safe wrapper that requires you to decide\n /// whether to encrypt and send the note to someone.\n /// You can call `.emit()` on it to encrypt and log\n /// the note, or `.discard()` to skip emission.\n /// See NoteEmission for more details.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Creates and emits an initialization nullifier to mark this storage slot\n /// as initialized. This prevents double-initialization.\n /// - Inserts the provided note into the protocol's Note Hash Tree.\n /// - Returns a NoteEmission type that allows the caller to decide how to encrypt\n /// and deliver the note to its intended recipient.\n ///\n /// The initialization nullifier is deterministically computed from the storage\n /// slot and can leak privacy information (see `compute_initialization_nullifier`\n /// documentation).\n ///\n /// docs:start:initialize\n pub fn initialize(self, note: Note) -> NoteEmission\n where\n Note: NoteType + NoteHash + Packable,\n {\n // We emit an initialization nullifier to indicate that the struct is initialized. This also prevents\n // the value from being initialized again as a nullifier can be included only once.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n /// Reads the permanent note of a PrivateImmutable state variable instance.\n ///\n /// If this PrivateImmutable state variable has not yet been initialized,\n /// no note will exist: the call will fail and the transaction will not\n /// be provable.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// # Advanced\n ///\n /// This function performs the following operations:\n /// - Retrieves the note from the PXE via an oracle call\n /// - Validates that the note exists and belongs to this contract address and\n /// storage slot by pushing a read request to the context\n /// - Returns the note content directly without nullification\n ///\n /// Since the note is immutable, there's no risk of reading stale data or\n /// race conditions - the note never changes after initialization.\n ///\n /// docs:start:get_note\n pub fn get_note(self) -> Note\n where\n Note: NoteType + NoteHash + Packable,\n {\n let storage_slot = self.storage_slot;\n let retrieved_note = get_note(self.context, storage_slot).0;\n\n // Because the notes obtained from PrivateImmutable are not meant to be nullified and get_note(...) function\n // has already constrained the note (by pushing a read request to the context), we can return just the note\n // and skip the additional data in RetrievedNote.\n retrieved_note.note\n }\n // docs:end:get_note\n}\n\nimpl PrivateImmutable\nwhere\n Note: NoteType + NoteHash + Eq,\n{\n /// Checks whether this PrivateImmutable has been initialized.\n ///\n /// # Returns\n ///\n /// * `bool` - `true` if the PrivateImmutable has been initialized (the initialization\n /// nullifier exists), `false` otherwise.\n ///\n /// docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n /// Returns the permanent note in this PrivateImmutable without consuming it.\n ///\n /// This function is only available in a UtilityContext (unconstrained environment)\n /// and is typically used for off-chain queries, view functions, or testing.\n ///\n /// Unlike the constrained `get_note()`, this function does not push read requests\n /// or perform validation. It simply reads the note from the PXE's database.\n ///\n /// # Returns\n ///\n /// * `Note` - The permanent note stored in this PrivateImmutable.\n ///\n /// docs:start:view_note\n pub unconstrained fn view_note(self) -> Note\n where\n Note: Packable,\n {\n let mut options = NoteViewerOptions::::N>::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n" - }, - "19": { - "path": "std/hash/mod.nr", - "source": "// Exposed only for usage in `std::meta`\npub(crate) mod poseidon2;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\n\n#[foreign(sha256_compression)]\n// docs:start:sha256_compression\npub fn sha256_compression(input: [u32; 16], state: [u32; 8]) -> [u32; 8] {}\n// docs:end:sha256_compression\n\n#[foreign(keccakf1600)]\n// docs:start:keccakf1600\npub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {}\n// docs:end:keccakf1600\n\npub mod keccak {\n #[deprecated(\"This function has been moved to std::hash::keccakf1600\")]\n pub fn keccakf1600(input: [u64; 25]) -> [u64; 25] {\n super::keccakf1600(input)\n }\n}\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n// docs:start:blake3\npub fn blake3(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{\n if crate::runtime::is_unconstrained() {\n // Temporary measure while Barretenberg is main proving system.\n // Please open an issue if you're working on another proving system and running into problems due to this.\n crate::static_assert(\n N <= 1024,\n \"Barretenberg cannot prove blake3 hashes with inputs larger than 1024 bytes\",\n );\n }\n __blake3(input)\n}\n\n#[foreign(blake3)]\nfn __blake3(input: [u8; N]) -> [u8; 32] {}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars, true)[0].x\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n // Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn poseidon2_permutation(input: [Field; N], state_len: u32) -> [Field; N] {\n assert_eq(input.len(), state_len);\n poseidon2_permutation_internal(input)\n}\n\n#[foreign(poseidon2_permutation)]\nfn poseidon2_permutation_internal(input: [Field; N]) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::hash::Hash };\n let signature = quote { fn hash(_self: Self, _state: &mut H) where H: $crate::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher {\n type H: Hasher;\n\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault;\n\nimpl BuildHasher for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n type H = H;\n\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl Default for BuildHasherDefault\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u128 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u8 as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u16 as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u32 as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as u64 as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for [T]\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n" - }, - "206": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/append.nr", - "source": "/// Appends the elements of the second `BoundedVec` to the end of the first one. The resulting `BoundedVec` can have any arbitrary maximum length, but it must be\n/// large enough to fit all of the elements of both the first and second vectors.\npub fn append(\n a: BoundedVec,\n b: BoundedVec,\n) -> BoundedVec {\n let mut dst = BoundedVec::new();\n\n dst.extend_from_bounded_vec(a);\n dst.extend_from_bounded_vec(b);\n\n dst\n}\n\nmod test {\n use super::append;\n\n #[test]\n unconstrained fn append_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::new();\n let b: BoundedVec<_, 14> = BoundedVec::new();\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 0);\n assert_eq(result.storage(), std::mem::zeroed());\n }\n\n #[test]\n unconstrained fn append_non_empty_vecs() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let result: BoundedVec = append(a, b);\n\n assert_eq(result.len(), 6);\n assert_eq(result.storage(), [1, 2, 3, 4, 5, 6, std::mem::zeroed(), std::mem::zeroed()]);\n }\n\n #[test(should_fail_with = \"out of bounds\")]\n unconstrained fn append_non_empty_vecs_insufficient_max_len() {\n let a: BoundedVec<_, 3> = BoundedVec::from_array([1, 2, 3]);\n let b: BoundedVec<_, 14> = BoundedVec::from_array([4, 5, 6]);\n\n let _: BoundedVec = append(a, b);\n }\n}\n" - }, - "209": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr", - "source": "/// Returns `DstLen` elements from a source array, starting at `offset`. `DstLen` must not be larger than the number\n/// of elements past `offset`.\n///\n/// Examples:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n///\n/// let bar: [Field; 5] = subarray([1, 2, 3, 4, 5], 2); // fails - we can't return 5 elements since only 3 remain\n/// ```\npub fn subarray(src: [T; SrcLen], offset: u32) -> [T; DstLen] {\n assert(offset + DstLen <= SrcLen, \"DstLen too large for offset\");\n\n let mut dst: [T; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DstLen to be 0, so we always get back an empty array.\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray::([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n" - }, - "210": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/array/subbvec.nr", - "source": "use crate::utils::array;\n\n/// Returns `DstMaxLen` elements from a source BoundedVec, starting at `offset`. `offset` must not be larger than the\n/// original length, and `DstLen` must not be larger than the total number of elements past `offset` (including the\n/// zeroed elements past `len()`).\n///\n/// Only elements at the beginning of the vector can be removed: it is not possible to also remove elements at the end\n/// of the vector by passing a value for `DstLen` that is smaller than `len() - offset`.\n///\n/// Examples:\n/// ```\n/// let foo = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n/// assert_eq(subbvec(foo, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n///\n/// let bar: BoundedVec<_, 1> = subbvec(foo, 2); // fails - we can't return just 1 element since 3 remain\n/// let baz: BoundedVec<_, 10> = subbvec(foo, 3); // fails - we can't return 10 elements since only 7 remain\n/// ```\npub fn subbvec(\n bvec: BoundedVec,\n offset: u32,\n) -> BoundedVec {\n // from_parts_unchecked does not verify that the elements past len are zeroed, but that is not an issue in our case\n // because we're constructing the new storage array as a subarray of the original one (which should have zeroed\n // storage past len), guaranteeing correctness. This is because `subarray` does not allow extending arrays past\n // their original length.\n BoundedVec::from_parts_unchecked(array::subarray(bvec.storage(), offset), bvec.len() - offset)\n}\n\nmod test {\n use super::subbvec;\n\n #[test]\n unconstrained fn subbvec_empty() {\n let bvec = BoundedVec::::from_array([]);\n assert_eq(subbvec(bvec, 0), bvec);\n }\n\n #[test]\n unconstrained fn subbvec_complete() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), bvec);\n\n let smaller_capacity = BoundedVec::<_, 5>::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 0), smaller_capacity);\n }\n\n #[test]\n unconstrained fn subbvec_partial() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 8>::from_array([3, 4, 5]));\n assert_eq(subbvec(bvec, 2), BoundedVec::<_, 3>::from_array([3, 4, 5]));\n }\n\n #[test]\n unconstrained fn subbvec_into_empty() {\n let bvec: BoundedVec<_, 10> = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(subbvec(bvec, 5), BoundedVec::<_, 5>::from_array([]));\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_offset_past_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n let _: BoundedVec<_, 1> = subbvec(bvec, 6);\n }\n\n #[test(should_fail)]\n unconstrained fn subbvec_insufficient_dst_len() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // We're not providing enough space to hold all of the items inside the original BoundedVec. subbvec can cause\n // for the capacity to reduce, but not the length (other than by len - offset).\n let _: BoundedVec<_, 1> = subbvec(bvec, 2);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_causes_enlarge() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // subbvec does not supprt capacity increases\n let _: BoundedVec<_, 11> = subbvec(bvec, 0);\n }\n\n #[test(should_fail_with = \"DstLen too large for offset\")]\n unconstrained fn subbvec_dst_len_too_large_for_offset() {\n let bvec = BoundedVec::<_, 10>::from_array([1, 2, 3, 4, 5]);\n\n // This effectively requests a capacity increase, since there'd be just one element plus the 5 empty slots,\n // which is less than 7.\n let _: BoundedVec<_, 7> = subbvec(bvec, 4);\n }\n}\n" - }, - "212": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/bytes_to_fields.nr", - "source": "use std::static_assert;\n\n// These functions are used to facilitate the conversion of log ciphertext between byte and field representations.\n//\n// `bytes_to_fields` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `bytes_from_fields` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between bytes and fields when processing encrypted logs.\n\n/// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 whole\n/// bytes. Use `bytes_from_fields` to obtain the original bytes array.\n///\n/// The input bytes are chunked into chunks of 31 bytes. Each 31-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (31 bytes) is encoded as [1 * 256^30 + 10 * 256^29 + 3 * 256^28 + ... + 0]\n/// Note: N must be a multiple of 31 bytes\npub fn bytes_to_fields(bytes: [u8; N]) -> [Field; N / 31] {\n // Assert that N is a multiple of 31\n static_assert(N % 31 == 0, \"N must be a multiple of 31\");\n\n let mut fields = [0; N / 31];\n\n // Since N is a multiple of 31, we can simply process all chunks fully\n for i in 0..N / 31 {\n let mut field = 0;\n for j in 0..31 {\n // Shift the existing value left by 8 bits and add the new byte\n field = field * 256 + bytes[i * 31 + j] as Field;\n }\n fields[i] = field;\n }\n\n fields\n}\n\n/// Converts an input BoundedVec of fields into a BoundedVec of bytes in big-endian order. Arbitrary Field arrays\n/// are not allowed: this is assumed to be an array obtained via `bytes_to_fields`, i.e. one that actually represents\n/// bytes. To convert a Field array into bytes, use `fields_to_bytes`.\n///\n/// Each input field must contain at most 31 bytes (this is constrained to be so).\n/// Each field is converted into 31 big-endian bytes, and the resulting 31-byte chunks are concatenated\n/// back together in the order of the original fields.\npub fn bytes_from_fields(fields: BoundedVec) -> BoundedVec {\n let mut bytes = BoundedVec::new();\n\n for i in 0..fields.len() {\n let field = fields.get(i);\n\n // We expect that the field contains at most 31 bytes of information.\n field.assert_max_bit_size::<248>();\n\n // Now we can safely convert the field to 31 bytes.\n let field_as_bytes: [u8; 31] = field.to_be_bytes();\n\n for j in 0..31 {\n bytes.push(field_as_bytes[j]);\n }\n }\n\n bytes\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{bytes_from_fields, bytes_to_fields};\n\n #[test]\n unconstrained fn random_bytes_to_fields_and_back(input: [u8; 93]) {\n let fields = bytes_to_fields(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `bytes_from_fields`\n // function.\n let fields_as_bounded_vec = BoundedVec::<_, 6>::from_array(fields);\n\n let bytes_back = bytes_from_fields(fields_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(bytes_back.len(), input.len());\n assert_eq(subarray(bytes_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"N must be a multiple of 31\")]\n unconstrained fn bytes_to_fields_input_length_not_multiple_of_31() {\n // Try to convert 32 bytes (not a multiple of 31) to fields\n let _fields = bytes_to_fields([0; 32]);\n }\n\n}\n" - }, - "213": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/conversion/fields_to_bytes.nr", - "source": "// These functions are used to facilitate the conversion of log plaintext represented as fields into bytes and back.\n//\n// `fields_to_bytes` uses fixed-size arrays since encryption contexts have compile-time size information.\n// `fields_from_bytes` uses BoundedVec for flexibility in unconstrained contexts where sizes are dynamic.\n//\n// Together they provide bidirectional conversion between fields and bytes.\n\n/// Converts an input array of fields into a single array of bytes. Use `fields_from_bytes` to obtain the original\n/// field array.\n/// Each field is converted to a 32-byte big-endian array.\n///\n/// For example, if you have a field array [123, 456], it will be converted to a 64-byte array:\n/// [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123, // First field (32 bytes)\n/// 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,200] // Second field (32 bytes)\n///\n/// Since a field is ~254 bits, you'll end up with a subtle 2-bit \"gap\" at the big end, every 32 bytes. Be careful\n/// that such a gap doesn't leak information! This could happen if you for example expected the output to be\n/// indistinguishable from random bytes.\npub fn fields_to_bytes(fields: [Field; N]) -> [u8; 32 * N] {\n let mut bytes = [0; 32 * N];\n\n for i in 0..N {\n let field_as_bytes: [u8; 32] = fields[i].to_be_bytes();\n\n for j in 0..32 {\n bytes[i * 32 + j] = field_as_bytes[j];\n }\n }\n\n bytes\n}\n\n/// Converts an input BoundedVec of bytes into a BoundedVec of fields. Arbitrary byte arrays are not allowed: this\n/// is assumed to be an array obtained via `fields_to_bytes`, i.e. one that actually represents fields. To convert\n/// a byte array into Fields, use `bytes_to_fields`.\n///\n/// The input bytes are chunked into chunks of 32 bytes. Each 32-byte chunk is viewed as big-endian, and is converted\n/// into a Field.\n/// For example, [1, 10, 3, ..., 0] (32 bytes) is encoded as [1 * 256^31 + 10 * 256^30 + 3 * 256^29 + ... + 0]\n/// Note 1: N must be a multiple of 32 bytes\n/// Note 2: The max value check code was taken from std::field::to_be_bytes function.\npub fn fields_from_bytes(bytes: BoundedVec) -> BoundedVec {\n // Assert that input length is a multiple of 32\n assert(bytes.len() % 32 == 0, \"Input length must be a multiple of 32\");\n\n let mut fields = BoundedVec::new();\n\n let p = std::field::modulus_be_bytes();\n\n // Since input length is a multiple of 32, we can simply process all chunks fully\n for i in 0..bytes.len() / 32 {\n let mut field = 0;\n\n // Process each byte in the 32-byte chunk\n let mut ok = false;\n\n for j in 0..32 {\n let next_byte = bytes.get(i * 32 + j);\n field = field * 256 + next_byte as Field;\n\n if !ok {\n if next_byte != p[j] {\n assert(next_byte < p[j], \"Value does not fit in field\");\n ok = true;\n }\n }\n }\n assert(ok, \"Value does not fit in field\");\n\n fields.push(field);\n }\n\n fields\n}\n\nmod tests {\n use crate::utils::array::subarray;\n use super::{fields_from_bytes, fields_to_bytes};\n\n #[test]\n unconstrained fn random_fields_to_bytes_and_back(input: [Field; 3]) {\n // Convert to bytes\n let bytes = fields_to_bytes(input);\n\n // At this point in production, the log flies through the system and we get a BoundedVec on the other end.\n // So we need to convert the field array to a BoundedVec to be able to feed it to the `fields_from_bytes`\n // function.\n // 113 is an arbitrary max length that is larger than the input length of 96.\n let bytes_as_bounded_vec = BoundedVec::<_, 113>::from_array(bytes);\n\n // Convert back to fields\n let fields_back = fields_from_bytes(bytes_as_bounded_vec);\n\n // Compare the original input with the round-tripped result\n assert_eq(fields_back.len(), input.len());\n assert_eq(subarray(fields_back.storage(), 0), input);\n }\n\n #[test(should_fail_with = \"Input length must be a multiple of 32\")]\n unconstrained fn to_fields_assert() {\n // 143 is an arbitrary max length that is larger than 33\n let input = BoundedVec::<_, 143>::from_array([\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33,\n ]);\n\n // This should fail since 33 is not a multiple of 32\n let _fields = fields_from_bytes(input);\n }\n\n #[test]\n unconstrained fn fields_from_bytes_max_value() {\n let max_field_as_bytes: [u8; 32] = (-1).to_be_bytes();\n let input = BoundedVec::<_, 32>::from_array(max_field_as_bytes);\n\n let fields = fields_from_bytes(input);\n\n // The result should be a largest value storable in a field (-1 since we are modulo-ing)\n assert_eq(fields.get(0), -1);\n }\n\n // In this test we verify that overflow check works by taking the max allowed value, bumping a random byte\n // and then feeding it to `fields_from_bytes` as input.\n #[test(should_fail_with = \"Value does not fit in field\")]\n unconstrained fn fields_from_bytes_overflow(random_value: u8) {\n let index_of_byte_to_bump = random_value % 32;\n\n // Obtain the byte representation of the maximum field value\n let max_field_value_as_bytes: [u8; 32] = (-1).to_be_bytes();\n\n let byte_to_bump = max_field_value_as_bytes[index_of_byte_to_bump as u32];\n\n // Skip test execution if the selected byte is already at maximum value (255).\n // This is acceptable since we are using fuzz testing to generate many test cases.\n if byte_to_bump != 255 {\n let mut input = BoundedVec::<_, 32>::from_array(max_field_value_as_bytes);\n\n // Increment the selected byte to exceed the field's maximum value\n input.set(index_of_byte_to_bump as u32, byte_to_bump + 1);\n\n // Attempt the conversion, which should fail due to the value exceeding the field's capacity\n let _fields = fields_from_bytes(input);\n }\n }\n\n}\n" - }, - "215": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/field.nr", - "source": "use std::option::Option;\n\nglobal KNOWN_NON_RESIDUE: Field = 5; // This is a non-residue in Noir's native Field.\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\nunconstrained fn is_square(x: Field) -> bool {\n let v = pow(x, -1 / 2);\n v * (v - 1) == 0\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\nunconstrained fn tonelli_shanks_sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n// NB: this doesn't return an option, because in the case of there _not_ being a square root, we still want to return a field element that allows us to then assert in the _constrained_ sqrt function that there is no sqrt.\npub unconstrained fn __sqrt(x: Field) -> (bool, Field) {\n let is_sq = is_square(x);\n if is_sq {\n let sqrt = tonelli_shanks_sqrt(x);\n (true, sqrt)\n } else {\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // sq * sq = sq // 1 * 1 = 1\n // non-sq * non-sq = sq // -1 * -1 = 1\n // sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n let not_sqrt = tonelli_shanks_sqrt(demo_x_not_square);\n (false, not_sqrt)\n }\n}\n\n// Returns (false, 0) if there is no square root.\n// Returns (true, sqrt) if there is a square root.\npub fn sqrt(x: Field) -> Option {\n // Safety: if the hint returns the square root of x, then we simply square it\n // check the result equals x. If x is not square, we return a value that\n // enables us to prove that fact (see the `else` clause below).\n let (is_sq, maybe_sqrt) = unsafe { __sqrt(x) };\n\n if is_sq {\n let sqrt = maybe_sqrt;\n validate_sqrt_hint(x, sqrt);\n Option::some(sqrt)\n } else {\n let not_sqrt_hint = maybe_sqrt;\n validate_not_sqrt_hint(x, not_sqrt_hint);\n Option::none()\n }\n}\n\nfn validate_sqrt_hint(x: Field, hint: Field) {\n assert(hint * hint == x, f\"The claimed_sqrt {hint} is not the sqrt of x {x}\");\n}\n\nfn validate_not_sqrt_hint(x: Field, hint: Field) {\n // We need this assertion, because x = 0 would pass the other assertions in this\n // function, and we don't want people to be able to prove that 0 is not square!\n assert(x != 0, \"0 has a square root; you cannot claim it is not square\");\n // Demonstrate that x is not a square (a.k.a. a \"quadratic non-residue\").\n //\n // Facts:\n // The Legendre symbol (\"LS\") of x, is x^((p-1)/2) (mod p).\n // - If x is a square, LS(x) = 1\n // - If x is not a square, LS(x) = -1\n // - If x = 0, LS(x) = 0.\n //\n // Hence:\n // 1. sq * sq = sq // 1 * 1 = 1\n // 2. non-sq * non-sq = sq // -1 * -1 = 1\n // 3. sq * non-sq = non-sq // -1 * 1 = -1\n //\n // See: https://en.wikipedia.org/wiki/Legendre_symbol\n //\n // We want to demonstrate that this below multiplication falls under bullet-point (2):\n let demo_x_not_square = x * KNOWN_NON_RESIDUE;\n // I.e. we want to demonstrate that `demo_x_not_square` has Legendre symbol 1\n // (i.e. that it is a square), so we prove that it is square below.\n // Why do we want to prove that it has LS 1?\n // Well, since it was computed with a known-non-residue, its squareness implies we're\n // in case 2 (something multiplied by a known-non-residue yielding a result which\n // has a LS of 1), which implies that x must be a non-square. The unconstrained\n // function gave us the sqrt of demo_x_not_square, so all we need to do is\n // assert its squareness:\n assert(\n hint * hint == demo_x_not_square,\n f\"The hint {hint} does not demonstrate that {x} is not a square\",\n );\n}\n\n#[test]\nfn test_sqrt() {\n let x = 9;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_some());\n let sqrt = maybe_sqrt.unwrap_unchecked();\n assert((sqrt == 3) | (sqrt == -3));\n}\n\n#[test]\nfn test_non_square() {\n let x = 5;\n let maybe_sqrt = sqrt(x);\n assert(maybe_sqrt.is_none());\n}\n\n#[test]\nunconstrained fn test_known_non_residue_is_actually_a_non_residue_in_the_field() {\n assert(!is_square(KNOWN_NON_RESIDUE));\n}\n\n#[test]\nfn test_sqrt_0() {\n let x = 0;\n let sqrt = sqrt(x).unwrap();\n assert(sqrt == 0);\n}\n\n#[test]\nfn test_sqrt_1() {\n let x = 1;\n let sqrt = sqrt(x).unwrap();\n assert((sqrt == 1) | (sqrt == -1));\n}\n\n#[test(should_fail_with = \"The claimed_sqrt 0x04 is not the sqrt of x 0x09\")]\nfn test_bad_sqrt_hint_fails() {\n validate_sqrt_hint(9, 4);\n}\n\n#[test(should_fail_with = \"The hint 0x04 does not demonstrate that 0x0a is not a square\")]\nfn test_bad_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(10, 4);\n}\n\n#[test(should_fail_with = \"0 has a square root; you cannot claim it is not square\")]\nfn test_0_not_sqrt_hint_fails() {\n validate_not_sqrt_hint(0, 0);\n}\n\n#[test]\nunconstrained fn test_is_square() {\n assert(is_square(25));\n}\n\n#[test]\nunconstrained fn test_is_not_square() {\n assert(!is_square(10));\n}\n" - }, - "217": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/point.nr", - "source": "use crate::utils::field::sqrt;\nuse dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a point to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(p: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!p.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = p.x.to_be_bytes();\n\n if get_sign_of_point(p) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\n/**\n * Returns: true if p.y <= MOD_DIV_2, else false.\n */\npub fn get_sign_of_point(p: Point) -> bool {\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n !BN254_FR_MODULUS_DIV_2.lt(p.y)\n}\n\npub fn point_from_x_coord(x: Field) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n Point { x, y, is_infinite: false }\n}\n\n/// Uses the x coordinate and sign flag (+/-) to reconstruct the point.\n/// The y coordinate can be derived from the x coordinate and the \"sign\" flag by solving the grumpkin curve\n/// equation for y.\n/// @param x - The x coordinate of the point\n/// @param sign - The \"sign\" of the y coordinate - determines whether y <= (Fr.MODULUS - 1) / 2\npub fn point_from_x_coord_and_sign(x: Field, sign: bool) -> Point {\n // y ^ 2 = x ^ 3 - 17\n let rhs = x * x * x - 17;\n let y = sqrt(rhs).unwrap();\n\n // If y > MOD_DIV_2 and we want positive sign (or vice versa), negate y\n let y_is_positive = !BN254_FR_MODULUS_DIV_2.lt(y);\n let final_y = if y_is_positive == sign { y } else { -y };\n\n Point { x, y: final_y, is_infinite: false }\n}\n\nmod test {\n use crate::utils::point::{point_from_x_coord_and_sign, point_to_bytes};\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_from_x_coord_and_sign() {\n // Test positive y coordinate\n let x = 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73;\n let sign = true;\n let p = point_from_x_coord_and_sign(x, sign);\n\n assert_eq(p.x, x);\n assert_eq(p.y, 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a);\n assert_eq(p.is_infinite, false);\n\n // Test negative y coordinate\n let x2 = 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5;\n let sign2 = false;\n let p2 = point_from_x_coord_and_sign(x2, sign2);\n\n assert_eq(p2.x, x2);\n assert_eq(p2.y, 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0);\n assert_eq(p2.is_infinite, false);\n }\n}\n" - }, - "218": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/random.nr", - "source": "use crate::oracle::random::random;\n\n/// Returns as many random bytes as specified through N.\npub unconstrained fn get_random_bytes() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n" - }, - "222": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/utils/with_hash.nr", - "source": "use crate::{\n context::{PublicContext, UtilityContext},\n history::public_storage::PublicStorageHistoricalRead,\n oracle,\n};\nuse dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress, hash::poseidon2_hash, traits::Packable,\n};\n\n/// A struct that allows for efficient reading of value `T` from public storage in private.\n///\n/// The efficient reads are achieved by verifying large values through a single hash check\n/// and then proving inclusion only of the hash in public storage. This reduces the number\n/// of required tree inclusion proofs from `M` to 1.\n///\n/// # Type Parameters\n/// - `T`: The underlying type being wrapped, must implement `Packable`\n/// - `M`: The number of field elements required to pack values of type `T`\npub struct WithHash {\n value: T,\n packed: [Field; M],\n hash: Field,\n}\n\nimpl WithHash\nwhere\n T: Packable + Eq,\n{\n pub fn new(value: T) -> Self {\n let packed = value.pack();\n Self { value, packed, hash: poseidon2_hash(packed) }\n }\n\n pub fn get_value(self) -> T {\n self.value\n }\n\n pub fn get_hash(self) -> Field {\n self.hash\n }\n\n pub fn public_storage_read(context: PublicContext, storage_slot: Field) -> T {\n context.storage_read(storage_slot)\n }\n\n pub unconstrained fn utility_public_storage_read(\n context: UtilityContext,\n storage_slot: Field,\n ) -> T {\n context.storage_read(storage_slot)\n }\n\n pub fn historical_public_storage_read(\n header: BlockHeader,\n address: AztecAddress,\n storage_slot: Field,\n ) -> T {\n let historical_block_number = header.global_variables.block_number;\n\n // We could simply produce historical inclusion proofs for each field in `packed`, but that would require one\n // full sibling path per storage slot (since due to kernel siloing the storage is not contiguous). Instead, we\n // get an oracle to provide us the values, and instead we prove inclusion of their hash, which is both a much\n // smaller proof (a single slot), and also independent of the size of T (except in that we need to pack and hash T).\n let hint = WithHash::new(\n // Safety: We verify that a hash of the hint/packed data matches the stored hash.\n unsafe {\n oracle::storage::storage_read(address, storage_slot, historical_block_number)\n },\n );\n\n let hash = header.public_storage_historical_read(storage_slot + M as Field, address);\n\n if hash != 0 {\n assert_eq(hash, hint.get_hash(), \"Hint values do not match hash\");\n } else {\n // The hash slot can only hold a zero if it is uninitialized. Therefore, the hints must then be zero\n // (i.e. the default value for public storage) as well.\n assert_eq(\n hint.get_value(),\n T::unpack(std::mem::zeroed()),\n \"Non-zero hint for zero hash\",\n );\n };\n\n hint.get_value()\n }\n}\n\n// Note: I don't derive Packable on `WithHash` because `derive_serialize` function does not support setting \"N = M\"\n// as I do here 3 lines below. This could be worked around by placing the \"where\" clause directly on the `WithHash`\n// struct, but Jake mentioned that the syntax is not expected to be supported at least until Noir 1.0.\n// Relevant discussion on Slack:\n// https://aztecprotocol.slack.com/archives/C04QF64EDNV/p1752593876160699?thread_ts=1752589887.955379&cid=C04QF64EDNV\nimpl Packable for WithHash\nwhere\n T: Packable,\n{\n let N: u32 = M + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n result[i] = self.packed[i];\n }\n result[M] = self.hash;\n\n result\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n let mut value_packed = [0; M];\n for i in 0..M {\n value_packed[i] = packed[i];\n }\n let hash = packed[M];\n\n Self { value: T::unpack(value_packed), packed: value_packed, hash }\n }\n}\n\nmod test {\n use crate::{\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n utils::with_hash::WithHash,\n };\n use dep::protocol_types::hash::poseidon2_hash;\n use dep::protocol_types::traits::{Packable, ToField};\n use dep::std::test::OracleMock;\n\n global STORAGE_SLOT: Field = 47;\n\n #[test]\n unconstrained fn create_and_recover() {\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n let recovered = WithHash::unpack(value_with_hash.pack());\n\n assert_eq(recovered.value, value);\n assert_eq(recovered.packed, value.pack());\n assert_eq(recovered.hash, poseidon2_hash(value.pack()));\n }\n\n #[test]\n unconstrained fn read_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n\n assert_eq(result, std::mem::zeroed());\n });\n }\n\n #[test]\n unconstrained fn read_initialized_value() {\n let env = TestEnvironment::new();\n\n let value = MockStruct { a: 5, b: 3 };\n let value_with_hash = WithHash::new(value);\n\n env.public_context(|context| { context.storage_write(STORAGE_SLOT, value_with_hash); });\n\n env.private_context(|context| {\n let result = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n assert_eq(result, value);\n });\n }\n\n #[test(should_fail_with = \"Non-zero hint for zero hash\")]\n unconstrained fn bad_hint_uninitialized_value() {\n let env = TestEnvironment::new();\n\n env.private_context(|context| {\n let block_header = context.historical_header;\n let address = context.this_address();\n\n // Mock the oracle to return a non-zero hint/packed value\n let value_packed = MockStruct { a: 1, b: 1 }.pack();\n let _ = OracleMock::mock(\"utilityStorageRead\")\n .with_params((\n address.to_field(), STORAGE_SLOT, block_header.global_variables.block_number,\n value_packed.len(),\n ))\n .returns(value_packed)\n .times(1);\n\n // This should fail because the hint value is non-zero and the hash is zero (default value of storage)\n let _ = WithHash::::historical_public_storage_read(\n block_header,\n address,\n STORAGE_SLOT,\n );\n });\n }\n\n #[test(should_fail_with = \"Hint values do not match hash\")]\n unconstrained fn bad_hint_initialized_value() {\n let env = TestEnvironment::new();\n\n env.public_context(|context| {\n // Write the value and hash separately so that the hash is wrong\n let value = MockStruct { a: 5, b: 3 };\n context.storage_write(STORAGE_SLOT, value);\n\n let incorrect_hash = 13;\n let hash_storage_slot = STORAGE_SLOT + (value.pack().len() as Field);\n context.storage_write(hash_storage_slot, [incorrect_hash]);\n });\n\n env.private_context(|context| {\n let _ = WithHash::::historical_public_storage_read(\n context.historical_header,\n context.this_address(),\n STORAGE_SLOT,\n );\n });\n }\n}\n" - }, - "229": { - "path": "/home/nerses/nargo/github.com/noir-lang/poseidon/v0.1.1/src/poseidon2.nr", - "source": "use std::default::Default;\nuse std::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n" - }, - "248": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", - "source": "use crate::traits::{Deserialize, Empty, FromField, Serialize, ToField};\nuse std::meta::derive;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct FunctionSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n pub inner: u32,\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = crate::hash::poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n FunctionSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n\n#[test]\nfn test_is_valid_selector() {\n let selector = FunctionSelector::from_signature(\"IS_VALID()\");\n assert_eq(selector.to_field(), 0x73cdda47);\n}\n\n#[test]\nfn test_long_selector() {\n let selector =\n FunctionSelector::from_signature(\"foo_and_bar_and_baz_and_foo_bar_baz_and_bar_foo\");\n assert_eq(selector.to_field(), 0x7590a997);\n}\n" - }, - "294": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", - "source": "use crate::{\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1, MAX_FIELD_VALUE,\n MAX_PROTOCOL_CONTRACTS,\n },\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, Serialize, ToField},\n utils::field::{pow, sqrt},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse std::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\nuse std::meta::derive;\n\n// Aztec address\n#[derive(Deserialize, Eq, Packable, Serialize)]\npub struct AztecAddress {\n pub inner: Field,\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secret can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_class_id(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\n }\n\n pub fn is_protocol_contract(self) -> bool {\n self.inner.lt(MAX_PROTOCOL_CONTRACTS as Field)\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n // We use the AZTEC_ADDRESS_LENGTH constant to ensure that there is a match between the derived trait\n // implementation and the constant.\n let serialized: [Field; AZTEC_ADDRESS_LENGTH] = address.serialize();\n let deserialized = AztecAddress::deserialize(serialized);\n assert_eq(address, deserialized);\n}\n" - }, - "3": { - "path": "std/array/mod.nr", - "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array along with its index,\n /// returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.mapi(|i, a| i + a * 2);\n /// assert_eq(b, [2, 5, 8]);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(i, self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of this array.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// let mut i = 0;\n /// a.for_each(|x| {\n /// b[i] = x;\n /// i += 1;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n for i in 0..self.len() {\n f(self[i]);\n }\n }\n\n /// Applies a function to each element of this array along with its index.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let mut b = [0; 3];\n /// a.for_eachi(|i, x| {\n /// b[i] = x;\n /// });\n /// assert_eq(a, b);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n for i in 0..self.len() {\n f(i, self[i]);\n }\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n\n /// Concatenates this array with another array.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr1 = [1, 2, 3, 4];\n /// let arr2 = [6, 7, 8, 9, 10, 11];\n /// let concatenated_arr = arr1.concat(arr2);\n /// assert(concatenated_arr == [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n /// }\n /// ```\n pub fn concat(self, array2: [T; M]) -> [T; N + M] {\n let mut result = [crate::mem::zeroed(); N + M];\n for i in 0..N {\n result[i] = self[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n }\n}\n\nimpl [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a, b| a <= b)\n }\n}\n\nimpl [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via(self, ordering: fn[Env](T, T) -> bool) -> Self {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = unsafe { quicksort::quicksort(self, ordering) };\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n}\n\nimpl [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str {}\n}\n\nimpl From> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n\n global arr_with_100_values: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2, 54,\n 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41, 19, 98,\n 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21, 43, 86, 35,\n 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15, 127, 81, 30, 8,\n 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n global expected_with_100_values: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30, 32,\n 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58, 61, 62,\n 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82, 84, 84, 86,\n 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114, 114, 116, 118,\n 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n fn sort_u32(a: u32, b: u32) -> bool {\n a <= b\n }\n\n #[test]\n fn test_sort() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort();\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort();\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_100_values_comptime() {\n let sorted = arr_with_100_values.sort();\n assert(sorted == expected_with_100_values);\n }\n\n #[test]\n fn test_sort_via() {\n let mut arr: [u32; 7] = [3, 6, 8, 10, 1, 2, 1];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 7] = [1, 1, 2, 3, 6, 8, 10];\n assert(sorted == expected);\n }\n\n #[test]\n fn test_sort_via_100_values() {\n let mut arr: [u32; 100] = [\n 42, 123, 87, 93, 48, 80, 50, 5, 104, 84, 70, 47, 119, 66, 71, 121, 3, 29, 42, 118, 2,\n 54, 89, 44, 81, 0, 26, 106, 68, 96, 84, 48, 95, 54, 45, 32, 89, 100, 109, 19, 37, 41,\n 19, 98, 53, 114, 107, 66, 6, 74, 13, 19, 105, 64, 123, 28, 44, 50, 89, 58, 123, 126, 21,\n 43, 86, 35, 21, 62, 82, 0, 108, 120, 72, 72, 62, 80, 12, 71, 70, 86, 116, 73, 38, 15,\n 127, 81, 30, 8, 125, 28, 26, 69, 114, 63, 27, 28, 61, 42, 13, 32,\n ];\n\n let sorted = arr.sort_via(sort_u32);\n\n let expected: [u32; 100] = [\n 0, 0, 2, 3, 5, 6, 8, 12, 13, 13, 15, 19, 19, 19, 21, 21, 26, 26, 27, 28, 28, 28, 29, 30,\n 32, 32, 35, 37, 38, 41, 42, 42, 42, 43, 44, 44, 45, 47, 48, 48, 50, 50, 53, 54, 54, 58,\n 61, 62, 62, 63, 64, 66, 66, 68, 69, 70, 70, 71, 71, 72, 72, 73, 74, 80, 80, 81, 81, 82,\n 84, 84, 86, 86, 87, 89, 89, 89, 93, 95, 96, 98, 100, 104, 105, 106, 107, 108, 109, 114,\n 114, 116, 118, 119, 120, 121, 123, 123, 123, 125, 126, 127,\n ];\n assert(sorted == expected);\n }\n\n #[test]\n fn mapi_empty() {\n assert_eq([].mapi(|i, x| i * x + 1), []);\n }\n\n #[test]\n fn for_each_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_each(|_x| assert(false));\n }\n\n #[test]\n fn for_eachi_empty() {\n let empty_array: [Field; 0] = [];\n empty_array.for_eachi(|_i, _x| assert(false));\n }\n\n #[test]\n fn map_example() {\n let a = [1, 2, 3];\n let b = a.map(|a| a * 2);\n assert_eq(b, [2, 4, 6]);\n }\n\n #[test]\n fn mapi_example() {\n let a = [1, 2, 3];\n let b = a.mapi(|i, a| i + a * 2);\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn for_each_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n let mut i = 0;\n let i_ref = &mut i;\n a.for_each(|x| {\n b_ref[*i_ref] = x * 2;\n *i_ref += 1;\n });\n assert_eq(b, [2, 4, 6]);\n assert_eq(i, 3);\n }\n\n #[test]\n fn for_eachi_example() {\n let a = [1, 2, 3];\n let mut b = [0, 0, 0];\n let b_ref = &mut b;\n a.for_eachi(|i, a| { b_ref[i] = i + a * 2; });\n assert_eq(b, [2, 5, 8]);\n }\n\n #[test]\n fn concat() {\n let arr1 = [1, 2, 3, 4];\n let arr2 = [6, 7, 8, 9, 10, 11];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1, 2, 3, 4, 6, 7, 8, 9, 10, 11]);\n }\n\n #[test]\n fn concat_zero_length_with_something() {\n let arr1 = [];\n let arr2 = [1];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_something_with_zero_length() {\n let arr1 = [1];\n let arr2 = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, [1]);\n }\n\n #[test]\n fn concat_zero_lengths() {\n let arr1: [Field; 0] = [];\n let arr2: [Field; 0] = [];\n let concatenated_arr = arr1.concat(arr2);\n assert_eq(concatenated_arr, []);\n }\n}\n" - }, - "308": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/data/public_data_tree_leaf_preimage.nr", - "source": "use crate::{\n data::public_data_tree_leaf::PublicDataTreeLeaf,\n merkle_tree::leaf_preimage::{IndexedTreeLeafPreimage, LeafPreimage},\n traits::{Empty, Hash},\n};\n\npub struct PublicDataTreeLeafPreimage {\n pub slot: Field,\n pub value: Field,\n pub next_slot: Field,\n pub next_index: u32,\n}\n\nimpl Empty for PublicDataTreeLeafPreimage {\n fn empty() -> Self {\n Self { slot: 0, value: 0, next_slot: 0, next_index: 0 }\n }\n}\n\nimpl Eq for PublicDataTreeLeafPreimage {\n fn eq(self, other: Self) -> bool {\n (self.slot == other.slot)\n & (self.value == other.value)\n & (self.next_slot == other.next_slot)\n & (self.next_index == other.next_index)\n }\n}\n\nimpl Hash for PublicDataTreeLeafPreimage {\n fn hash(self) -> Field {\n if self.is_empty() {\n 0\n } else {\n crate::hash::poseidon2_hash([\n self.slot,\n self.value,\n (self.next_index as Field),\n self.next_slot,\n ])\n }\n }\n}\n\nimpl LeafPreimage for PublicDataTreeLeafPreimage {\n fn get_key(self) -> Field {\n self.slot\n }\n\n fn as_leaf(self) -> Field {\n self.hash()\n }\n}\n\nimpl IndexedTreeLeafPreimage for PublicDataTreeLeafPreimage {\n fn get_next_key(self) -> Field {\n self.next_slot\n }\n\n fn points_to_infinity(self) -> bool {\n (self.next_slot == 0) & (self.next_index == 0)\n }\n\n fn update_pointers(self, next_slot: Field, next_index: u32) -> Self {\n Self { slot: self.slot, value: self.value, next_slot, next_index }\n }\n\n fn update_value(self, write: PublicDataTreeLeaf) -> Self {\n Self {\n slot: self.slot,\n value: write.value,\n next_slot: self.next_slot,\n next_index: self.next_index,\n }\n }\n\n fn build_insertion_leaf(write: PublicDataTreeLeaf, low_leaf: Self) -> Self {\n Self {\n slot: write.slot,\n value: write.value,\n next_slot: low_leaf.next_slot,\n next_index: low_leaf.next_index,\n }\n }\n}\n\nimpl PublicDataTreeLeafPreimage {\n pub fn is_empty(self) -> bool {\n (self.slot == 0) & (self.value == 0) & (self.next_slot == 0) & (self.next_index == 0)\n }\n}\n" - }, - "310": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr", - "source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log(msg: str) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format(msg: str, args: [Field; N]) {\n // Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n // to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper(\n msg: str,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n#[oracle(utilityDebugLog)]\nunconstrained fn debug_log_oracle(_msg: str, args: [Field]) {}\n" - }, - "312": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/delayed_public_mutable_values.nr", - "source": "use crate::{\n delayed_public_mutable::{\n scheduled_delay_change::ScheduledDelayChange, scheduled_value_change::ScheduledValueChange,\n },\n hash::poseidon2_hash,\n traits::{Hash, Packable},\n utils::arrays,\n};\nuse std::meta::derive;\n\nmod test;\n\n/// DelayedPublicMutableValues is just a wrapper around ScheduledValueChange and ScheduledDelayChange that then allows us\n/// to wrap both of these values in WithHash. WithHash allows for efficient read of values in private.\n///\n/// Note that the WithHash optimization does not work in public (due to there being no unconstrained). But we also want\n/// to be able to read the values efficiently in public and we want to be able to read each value separately. Reading\n/// the values separately is tricky because ScheduledValueChange and ScheduledDelayChange are packed together (sdc and\n/// svc.timestamp_of_change are stored in the same slot). For that reason we expose `unpack_value_change` and\n/// `unpack_delay_change` functions that can be used to extract the values from the packed representation. This\n/// is \"hacky\" but there is no way around it.\n#[derive(Eq)]\npub struct DelayedPublicMutableValues {\n pub svc: ScheduledValueChange,\n pub sdc: ScheduledDelayChange,\n}\n\nimpl DelayedPublicMutableValues {\n pub fn new(svc: ScheduledValueChange, sdc: ScheduledDelayChange) -> Self {\n DelayedPublicMutableValues { svc, sdc }\n }\n}\n\npub fn unpack_value_change(packed: [Field; 2 * M + 1]) -> ScheduledValueChange\nwhere\n T: Packable,\n{\n let svc_pre_packed = arrays::subarray(packed, 1);\n let svc_post_packed = arrays::subarray(packed, M + 1);\n\n // We first cast to u32 as the timestamp_of_change is packed into the same field as the delay change and it\n // occupies the first 32 bits of the field.\n let timestamp_of_change = (packed[0] as u32) as u64;\n ScheduledValueChange::new(\n T::unpack(svc_pre_packed),\n T::unpack(svc_post_packed),\n timestamp_of_change,\n )\n}\n\npub fn unpack_delay_change(\n packed: Field,\n) -> ScheduledDelayChange {\n // This function expects to be called with just the first field of the packed representation, which contains sdc\n // and svc timestamp_of_change. We'll discard the svc component.\n let svc_timestamp_of_change = packed as u32;\n\n let mut tmp = (packed - svc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_timestamp_of_change = tmp as u32;\n\n tmp = (tmp - sdc_timestamp_of_change as Field) / TWO_POW_32;\n let sdc_post_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_post_is_some as Field) / TWO_POW_8;\n let sdc_post_inner = tmp as u32;\n\n tmp = (tmp - sdc_post_inner as Field) / TWO_POW_32;\n let sdc_pre_is_some = (tmp as u1) != 0;\n\n tmp = (tmp - sdc_pre_is_some as Field) / TWO_POW_8;\n let sdc_pre_inner = tmp as u32;\n\n // Note that below we cast the values to u64 as that is the default type of timestamp in the system. Us packing\n // the values as u32 is a tech debt that is not worth tackling.\n ScheduledDelayChange {\n pre: if sdc_pre_is_some {\n Option::some(sdc_pre_inner as u64)\n } else {\n Option::none()\n },\n post: if sdc_post_is_some {\n Option::some(sdc_post_inner as u64)\n } else {\n Option::none()\n },\n timestamp_of_change: sdc_timestamp_of_change as u64,\n }\n}\n\nglobal TWO_POW_32: Field = 2.pow_32(32);\nglobal TWO_POW_8: Field = 2.pow_32(8);\n\n// We pack to `2 * N + 1` fields because ScheduledValueChange contains T twice (hence `2 * N`) and we need one extra\n// field to store ScheduledDelayChange and the timestamp_of_change of ScheduledValueChange.\nimpl Packable for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n let N: u32 = 2 * ::N + 1;\n\n fn pack(self) -> [Field; Self::N] {\n let mut result = [0; Self::N];\n\n // We pack sdc.pre, sdc.post, sdc.timestamp_of_change and svc.timestamp_of_change into a single field as follows:\n // [ sdc.pre_inner: u32 | sdc.pre_is_some: u8 | sdc.post_inner: u32 | sdc.post_is_some: u8 | sdc.timestamp_of_change: u32 | svc.timestamp_of_change: u32 ]\n // Note that the code below no longer works after 2106 as by that time the timestamp will overflow u32. This is a tech debt that is not worth tackling.\n result[0] = self.svc.timestamp_of_change as Field\n + ((self.sdc.timestamp_of_change as Field) * 2.pow_32(32))\n + ((self.sdc.post.is_some() as Field) * 2.pow_32(64))\n + ((self.sdc.post.unwrap_unchecked() as Field) * 2.pow_32(72))\n + ((self.sdc.pre.is_some() as Field) * 2.pow_32(104))\n + ((self.sdc.pre.unwrap_unchecked() as Field) * 2.pow_32(112));\n\n // Pack the pre and post values from ScheduledValueChange\n let svc_pre_packed = self.svc.pre.pack();\n let svc_post_packed = self.svc.post.pack();\n for i in 0..::N {\n result[i + 1] = svc_pre_packed[i];\n result[i + 1 + ::N] = svc_post_packed[i];\n }\n result\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let svc = unpack_value_change::(fields);\n let sdc = unpack_delay_change::(fields[0]);\n Self::new(svc, sdc)\n }\n}\n\nimpl Hash for DelayedPublicMutableValues\nwhere\n T: Packable,\n{\n fn hash(self) -> Field {\n poseidon2_hash(self.pack())\n }\n}\n" - }, - "315": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_delay_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to store the minimum delay with which a ScheduledValueChange object can\n// schedule a change.\n// This delay is initially equal to INITIAL_DELAY, and can be safely mutated to any other value over time. This mutation\n// is performed via `schedule_change` in order to satisfy ScheduleValueChange constraints: if e.g. we allowed for the\n// delay to be decreased immediately then it'd be possible for the state variable to schedule a value change with a\n// reduced delay, invalidating prior private reads.\npub struct ScheduledDelayChange {\n // Both pre and post are stored in public storage, so by default they are zeroed. By wrapping them in an Option,\n // they default to Option::none(), which we detect and replace with INITIAL_DELAY. The end result is that a\n // ScheduledDelayChange that has not been initialized has a delay equal to INITIAL_DELAY, which is the desired\n // effect. Once initialized, the Option will never be none again.\n pub(crate) pre: Option,\n pub(crate) post: Option,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledDelayChange {\n pub fn new(pre: Option, post: Option, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the current value of the delay stored in the data structure.\n /// This function only returns a meaningful value when called in public with the current timestamp - for\n /// historical private reads use `get_effective_minimum_delay_at` instead.\n pub fn get_current(self, current_timestamp: u64) -> u64 {\n // The post value becomes the current one at the timestamp of change, so any transaction that is included at or after\n // the timestamp of change will use the post value.\n if current_timestamp < self.timestamp_of_change {\n self.pre.unwrap_or(INITIAL_DELAY)\n } else {\n self.post.unwrap_or(INITIAL_DELAY)\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change delay and the timestamp at which it will become the current\n /// delay. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (u64, u64) {\n (self.post.unwrap_or(INITIAL_DELAY), self.timestamp_of_change)\n }\n\n /// Mutates the delay change by scheduling a change at the current timestamp. This function is only meaningful\n /// when called in public with the current timestamp.\n /// The timestamp at which the new delay will become effective is determined automatically:\n /// - when increasing the delay, the change is effective immediately\n /// - when reducing the delay, the change will take effect after a delay equal to the difference between old and\n /// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2\n /// days.\n pub fn schedule_change(&mut self, new: u64, current_timestamp: u64) {\n let current = self.get_current(current_timestamp);\n\n // When changing the delay value we must ensure that it is not possible to produce a value change with a delay\n // shorter than the current one.\n let time_until_change = if new > current {\n // Increasing the delay value can therefore be done immediately: this does not invalidate prior constraints\n // about how quickly a value might be changed (indeed it strengthens them).\n 0\n } else {\n // Decreasing the delay requires waiting for the difference between current and new delay in order to ensure\n // that overall the current delay is respected.\n //\n // current delay earliest value timestamp of change\n // timestamp timestamp of change if delay remained unchanged\n // =======N=========================|================================X=================>\n // ^ ^ ^\n // |-------------------------|--------------------------------|\n // | time until change new delay |\n // ------------------------------------------------------------\n // current delay\n current - new\n };\n\n self.pre = Option::some(current);\n self.post = Option::some(new);\n self.timestamp_of_change = current_timestamp + time_until_change;\n }\n\n /// Returns the minimum delay before a value might mutate due to a scheduled change, from the perspective of some\n /// historical timestamp (timestamp of a historical block). It only returns a meaningful value when called in\n /// private with historical timestamps. This function can be used alongside\n /// `ScheduledValueChange.get_time_horizon` to properly constrain the `include_by_timestamp` transaction\n /// property when reading delayed mutable state.\n /// This value typically equals the current delay at the timestamp following the historical one (the earliest one in\n /// which a value change could be scheduled), but it also considers scenarios in which a delay reduction is\n /// scheduled to happen in the near future, resulting in a way to schedule a change with an overall delay lower than\n /// the current one.\n pub fn get_effective_minimum_delay_at(self, historical_timestamp: u64) -> u64 {\n if self.timestamp_of_change <= historical_timestamp {\n // If no delay changes were scheduled, then the delay value at the historical timestamp (post) is guaranteed to\n // hold due to how further delay changes would be scheduled by `schedule_change`.\n self.post.unwrap_or(INITIAL_DELAY)\n } else {\n // If a change is scheduled, then the effective delay might be lower than the current one (pre). At the\n // timestamp of change the current delay will be the scheduled one, with an overall delay from the historical\n // timestamp equal to the time until the change plus the new delay. If this value is lower\n // than the current delay, then that is the effective minimum delay.\n //\n // historical\n // timestamp delay actual earliest value\n // v timestamp of change timestamp of change\n // =========NS=====================|=============================X===========Y=====>\n // ^ ^ ^ ^\n // earliest timestamp in | | |\n // which to schedule change | | |\n // | | | |\n // |----------------------|------------------------------ |\n // | time new delay |\n // | until change |\n // | |\n // |----------------------------------------------------------------|\n // current delay at the earliest timestamp in\n // which to scheduled value change\n let time_until_change = self.timestamp_of_change - (historical_timestamp + 1);\n\n min(\n self.pre.unwrap_or(INITIAL_DELAY),\n time_until_change + self.post.unwrap_or(INITIAL_DELAY),\n )\n }\n }\n}\n\nimpl Eq for ScheduledDelayChange {\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledDelayChange {\n fn empty() -> Self {\n Self { pre: Option::none(), post: Option::none(), timestamp_of_change: 0 }\n }\n}\n" - }, - "317": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/delayed_public_mutable/scheduled_value_change.nr", - "source": "use crate::traits::Empty;\nuse std::cmp::min;\n\nmod test;\n\n// This data structure is used by DelayedPublicMutable to represent a value that changes from `pre` to `post` at some timestamp\n// called the `timestamp_of_change`. The value can only be made to change by scheduling a change event at some future\n// timestamp after some minimum delay measured in seconds has elapsed. This means that at any given timestamp we know\n// both the current value and the smallest timestamp at which the value might change - this is called the\n// 'time horizon'.\npub struct ScheduledValueChange {\n pub(crate) pre: T,\n pub(crate) post: T,\n // Timestamp at which `post` value is used instead of `pre`\n pub(crate) timestamp_of_change: u64,\n}\n\nimpl ScheduledValueChange {\n pub fn new(pre: T, post: T, timestamp_of_change: u64) -> Self {\n Self { pre, post, timestamp_of_change }\n }\n\n /// Returns the value stored in the data structure at a given timestamp. This function can be called both in public\n /// (where `timestamp` is simply the current timestamp, i.e. the timestamp at which the current transaction will be\n /// included) and in private (where `timestamp` is the historical timestamp that is used to construct the proof).\n /// Reading in private is only safe if the transaction's `include_by_timestamp` property is set to a value lower or\n /// equal to the time horizon (see `get_time_horizon()`).\n pub fn get_current_at(self, timestamp: u64) -> T {\n // The post value becomes the current one at the timestamp of change. This means different things in each realm:\n // - in public, any transaction that is included at the timestamp of change will use the post value\n // - in private, any transaction that includes the timestamp of change as part of the historical state will use\n // the post value (barring any follow-up changes)\n if timestamp < self.timestamp_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the timestamp at which it will become the current\n /// value. Note that this timestamp may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u64) {\n (self.post, self.timestamp_of_change)\n }\n\n // Returns the previous value. This is the value that is current up until the timestamp of change. Note that this\n // value might not be the current anymore since timestamp of change might have already passed.\n pub fn get_previous(self) -> (T, u64) {\n (self.pre, self.timestamp_of_change)\n }\n\n /// Returns the largest timestamp at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_timestamp`\n /// (timestamp of a historical block at which we are constructing a proof), since due to its asynchronous nature\n /// private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of\n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration. If the delay is mutable\n /// however, then this value is the 'effective minimum delay' (obtained by calling\n /// `ScheduledDelayChange.get_effective_minimum_delay_at`), which equals the minimum time in seconds that needs to\n /// elapse from the next block's timestamp until the value changes, regardless of further delay changes.\n /// The value returned by `get_current_at` in private when called with a historical timestamp is only safe to use\n /// if the transaction's `include_by_timestamp` property is set to a value lower or equal to the time horizon\n /// computed using the same historical timestamp.\n pub fn get_time_horizon(self, historical_timestamp: u64, minimum_delay: u64) -> u64 {\n // The time horizon is the very last timestamp in which the current value is known. Any timestamp past the\n // horizon (i.e. with a timestamp larger than the time horizon) may have a different current value.\n // Reading the current value in private typically requires constraining the maximum valid timestamp to be equal\n // to the time horizon.\n if historical_timestamp >= self.timestamp_of_change {\n // Once the timestamp of change has passed (block with timestamp >= timestamp_of_change was mined),\n // the current value (post) will not change unless a new value change is scheduled. This did not happen at\n // the historical timestamp (or else it would not be greater or equal to the timestamp of change), and\n // therefore could only happen after the historical timestamp. The earliest would be the immediate next\n // timestamp, and so the smallest possible next timestamp of change equals `historical_timestamp + 1 +\n // minimum_delay`. Our time horizon is simply the previous timestamp to that one.\n //\n // timestamp of historical\n // change timestamp time horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n historical_timestamp + minimum_delay\n } else {\n // If the timestamp of change has not yet been reached however, then there are two possible scenarios.\n // a) It could be so far into the future that the time horizon is actually determined by the minimum\n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one.\n // This is similar to the scenario where the timestamp of change is in the past: the time horizon is\n // the timestamp prior to the earliest one in which a new timestamp of change might land.\n //\n // historical\n // timestamp time horizon timestamp of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | |\n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` seconds away from the historical timestamp, in which case\n // the timestamp of change would become the limiting factor for the time horizon, which would equal\n // the timestamp right before the timestamp of change (since by definition the value changes at the\n // timestamp of change).\n //\n // historical time horizon\n // timestamp timestamp of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon |\n // -----------------------------------\n // minimum delay\n //\n // Note that the current implementation does not allow the caller to set the timestamp of change to an\n // arbitrary value, and therefore scenario a) is not currently possible. However implementing #5501 would\n // allow for this to happen.\n // Because historical_timestamp < self.timestamp_of_change, then timestamp_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.timestamp_of_change - 1,\n historical_timestamp + minimum_delay,\n )\n }\n }\n\n /// Mutates the value by scheduling a change at the current timestamp. This function is only meaningful when\n /// called in public with the current timestamp.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_timestamp: u64,\n minimum_delay: u64,\n timestamp_of_change: u64,\n ) {\n assert(timestamp_of_change >= current_timestamp + minimum_delay);\n\n self.pre = self.get_current_at(current_timestamp);\n self.post = new_value;\n self.timestamp_of_change = timestamp_of_change;\n }\n}\n\nimpl Eq for ScheduledValueChange\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.pre == other.pre)\n & (self.post == other.post)\n & (self.timestamp_of_change == other.timestamp_of_change)\n }\n}\n\nimpl Empty for ScheduledValueChange\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { pre: T::empty(), post: T::empty(), timestamp_of_change: 0 }\n }\n}\n" - }, - "319": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", - "source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::{OrderedValue, scoped::Scoped},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__SILOED_NOTE_HASH,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, TWO_POW_64,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::L2ToL1Message,\n poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, ToField},\n utils::field::{field_from_bytes, field_from_bytes_32_trunc},\n};\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\npub fn sha256_to_field(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256::digest(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(note_nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [note_nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_nonce_and_unique_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n let note_nonce = compute_note_hash_nonce(first_nullifier, note_index_in_tx);\n compute_unique_note_hash(note_nonce, siloed_note_hash)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n first_nullifier: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n compute_nonce_and_unique_note_hash(siloed_note_hash, first_nullifier, note_index_in_tx)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n // Q: shouldn't we be checking whether the _whole_ nullifier is empty?\n // A: We don't have to. The init and inner circuits add contract address to non-empty nullifiers.\n // So we know we should silo it if the contract address is not empty.\n if nullifier.contract_address.is_zero() {\n // Q: I don't understand this comment. We could still compute a siloed nullifier from a zero contract address.\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog::new(fields, private_log.inner.log.length)\n }\n}\n\npub fn compute_contract_class_log_hash(log: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS]) -> Field {\n poseidon2_hash(log)\n}\n\npub fn compute_app_secret_key(\n master_secret_key: EmbeddedCurveScalar,\n app_address: AztecAddress,\n app_secret_generator: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [master_secret_key.hi, master_secret_key.lo, app_address.to_field()],\n app_secret_generator,\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let contract_address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n let recipient_bytes: [u8; 20] = recipient.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let rollup_version_id_bytes: [u8; 32] = rollup_version_id.to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n\n let mut bytes: [u8; 148] = std::mem::zeroed();\n for i in 0..32 {\n bytes[i] = contract_address_bytes[i];\n bytes[i + 32] = rollup_version_id_bytes[i];\n // 64 - 84 are for recipient.\n bytes[i + 84] = chain_id_bytes[i];\n bytes[i + 116] = content_bytes[i];\n }\n\n for i in 0..20 {\n bytes[64 + i] = recipient_bytes[i];\n }\n\n sha256_to_field(bytes)\n}\n\npub fn silo_l2_to_l1_message(\n msg: Scoped,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.inner.recipient,\n msg.inner.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n/// Computes sha256 hash of 2 input fields.\n///\n/// @returns A truncated field (i.e., the first byte is always 0).\npub fn accumulate_sha256(v0: Field, v1: Field) -> Field {\n // Concatenate two fields into 32 x 2 = 64 bytes\n let v0_as_bytes: [u8; 32] = v0.to_be_bytes();\n let v1_as_bytes: [u8; 32] = v1.to_be_bytes();\n let hash_input_flattened = v0_as_bytes.concat(v1_as_bytes);\n\n sha256_to_field(hash_input_flattened)\n}\n\n#[inline_always]\npub fn pedersen_hash(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash(inputs: [Field; N]) -> Field {\n poseidon::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = [separator.to_field()].concat(inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as poseidon::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop(\n in_sponge: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert_eq(input[in_len - remainder + i], 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\n}\n\npub fn poseidon2_hash_with_separator_slice(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n// This function is unconstrained because it is intended to be used in unconstrained context only as\n// in constrained contexts it would be too inefficient.\npub unconstrained fn poseidon2_hash_with_separator_bounded_vec(\n inputs: BoundedVec,\n separator: T,\n) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs.get(i));\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\n}\n\n#[test]\nfn poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = poseidon::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = poseidon::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let empty_sponge = Poseidon2Sponge::new((in_len as Field) * TWO_POW_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = Poseidon2Sponge::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_empty_sponge.squeeze());\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256::digest(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0x3b18c58c739716e76429634a61375c45b3b5cd470c22ab6d3e14cee23dd992);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0xaab2a5828156782b12a1dc6f336e2bc627eb1b9514b02d511f66296990c050);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n L2ToL1Message { recipient: EthAddress::from_field(1), content: 2 }.scope(\n AztecAddress::from_field(3),\n ),\n version,\n chainId,\n );\n\n // The following value was generated by `yarn-project/stdlib/src/hash/hash.test.ts`\n let hash_from_typescript = 0x0081edf209e087ad31b3fd24263698723d57190bd1d6e9fe056fc0c0a68ee661;\n\n assert_eq(hash, hash_from_typescript);\n}\n\n#[test]\nunconstrained fn poseidon2_hash_with_separator_bounded_vec_matches_non_bounded_vec_version() {\n let inputs = BoundedVec::::from_array([1, 2, 3]);\n let separator = 42;\n\n // Hash using bounded vec version\n let bounded_result = poseidon2_hash_with_separator_bounded_vec(inputs, separator);\n\n // Hash using regular version\n let regular_result = poseidon2_hash_with_separator([1, 2, 3], separator);\n\n // Results should match\n assert_eq(bounded_result, regular_result);\n}\n" - }, - "320": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr", - "source": "use crate::traits::{Deserialize, Serialize, ToField};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n" - }, - "329": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/merkle_tree/root.nr", - "source": "use crate::{hash::merkle_hash, merkle_tree::merkle_tree::MerkleTree};\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like\n// this because it means we never even need to consider cases where\n// the index is greater than p.\npub fn root_from_sibling_path(\n leaf: Field,\n leaf_index: Field,\n sibling_path: [Field; N],\n) -> Field {\n let mut node = leaf;\n let indices: [u1; N] = leaf_index.to_le_bits();\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\npub fn calculate_subtree_root(leaves: [Field; N]) -> Field {\n MerkleTree::new(leaves).get_root()\n}\n\n// These values are precomputed and we run tests to ensure that they\n// are correct. The values themselves were computed from the cpp code.\n//\n// Would be good if we could use width since the compute_subtree\n// algorithm uses depth.\npub fn calculate_empty_tree_root(depth: u32) -> Field {\n if depth == 0 {\n 0\n } else if depth == 1 {\n 0x0b63a53787021a4a962a452c2921b3663aff1ffd8d5510540f8e659e782956f1\n } else if depth == 2 {\n 0x0e34ac2c09f45a503d2908bcb12f1cbae5fa4065759c88d501c097506a8b2290\n } else if depth == 3 {\n 0x21f9172d72fdcdafc312eee05cf5092980dda821da5b760a9fb8dbdf607c8a20\n } else if depth == 4 {\n 0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e\n } else if depth == 5 {\n 0x120157cfaaa49ce3da30f8b47879114977c24b266d58b0ac18b325d878aafddf\n } else if depth == 6 {\n 0x01c28fe1059ae0237b72334700697bdf465e03df03986fe05200cadeda66bd76\n } else if depth == 7 {\n 0x2d78ed82f93b61ba718b17c2dfe5b52375b4d37cbbed6f1fc98b47614b0cf21b\n } else if depth == 8 {\n 0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1\n } else if depth == 9 {\n 0x1849b85f3c693693e732dfc4577217acc18295193bede09ce8b97ad910310972\n } else if depth == 10 {\n 0x2a775ea761d20435b31fa2c33ff07663e24542ffb9e7b293dfce3042eb104686\n } else {\n panic(f\"depth should be between 0 and 10\")\n }\n}\n\n#[test]\nfn test_merkle_root_interop_test() {\n // This is a test to ensure that we match the cpp implementation.\n // You can grep for `TEST_F(root_rollup_tests, noir_interop_test)`\n // to find the test that matches this.\n let root = calculate_subtree_root([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]);\n assert(0x1a09d935ae110b4c861fcec8f9099ec30b4485022aeb3d3cf9d7168e38fdc231 == root);\n\n let empty_root = calculate_subtree_root([0; 16]);\n assert(0x2373ea368857ec7af97e7b470d705848e2bf93ed7bef142a490f2119bcf82d8e == empty_root);\n}\n\n#[test]\nfn test_empty_subroot() {\n assert(calculate_empty_tree_root(0) == 0);\n\n let expected_empty_root_2 = calculate_subtree_root([0; 2]);\n assert(calculate_empty_tree_root(1) == expected_empty_root_2);\n\n let expected_empty_root_4 = calculate_subtree_root([0; 4]);\n assert(calculate_empty_tree_root(2) == expected_empty_root_4);\n\n let expected_empty_root_8 = calculate_subtree_root([0; 8]);\n assert(calculate_empty_tree_root(3) == expected_empty_root_8);\n\n let expected_empty_root_16 = calculate_subtree_root([0; 16]);\n assert(calculate_empty_tree_root(4) == expected_empty_root_16);\n\n let expected_empty_root_32 = calculate_subtree_root([0; 32]);\n assert(calculate_empty_tree_root(5) == expected_empty_root_32);\n\n let expected_empty_root_64 = calculate_subtree_root([0; 64]);\n assert(calculate_empty_tree_root(6) == expected_empty_root_64);\n\n let expected_empty_root_128 = calculate_subtree_root([0; 128]);\n assert(calculate_empty_tree_root(7) == expected_empty_root_128);\n\n let expected_empty_root_256 = calculate_subtree_root([0; 256]);\n assert(calculate_empty_tree_root(8) == expected_empty_root_256);\n\n let expected_empty_root_512 = calculate_subtree_root([0; 512]);\n assert(calculate_empty_tree_root(9) == expected_empty_root_512);\n\n let expected_empty_root_1024 = calculate_subtree_root([0; 1024]);\n assert(calculate_empty_tree_root(10) == expected_empty_root_1024);\n}\n" - }, - "333": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/meta/mod.nr", - "source": "/// Generates the generic parameter declarations for a struct's trait implementation.\n///\n/// This function takes a struct type definition and generates the generic parameter declarations\n/// that go after the `impl` keyword. For example, given a struct with generics `N: u32` and `T`,\n/// it generates ``.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate generic declarations for\n///\n/// # Returns\n/// A quoted code block containing the generic parameter declarations, or an empty quote if the struct\n/// has no generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// This function generates:\n/// ```\n/// \n/// ```\ncomptime fn get_generics_declarations(s: TypeDefinition) -> Quoted {\n let generics = s.generics();\n\n if generics.len() > 0 {\n let generics_declarations_items = generics\n .map(|(name, maybe_integer_typ)| {\n // The second item in the generics tuple is an Option of an integer type that is Some only if\n // the generic is numeric.\n if maybe_integer_typ.is_some() {\n // The generic is numeric, so we return a quote defined as e.g. \"let N: u32\"\n let integer_type = maybe_integer_typ.unwrap();\n quote {let $name: $integer_type}\n } else {\n // The generic is not numeric, so we return a quote containing the name of the generic (e.g. \"T\")\n quote {$name}\n }\n })\n .join(quote {,});\n quote {<$generics_declarations_items>}\n } else {\n // The struct doesn't have any generics defined, so we just return an empty quote.\n quote {}\n }\n}\n\n/// Generates the `where` clause for a trait implementation that constrains non-numeric generic type parameters.\n///\n/// This function takes a struct type definition and a trait name, and generates a `where` clause that\n/// requires all non-numeric generic type parameters to implement the specified trait.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the where clause for\n/// - `trait_name`: The name of the trait that non-numeric generic parameters must implement\n///\n/// # Returns\n/// A quoted code block containing the where clause, or an empty quote if the struct has no non-numeric\n/// generic parameters\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Container {\n/// items: [T; N],\n/// count: u32\n/// }\n/// ```\n///\n/// And trait name \"Serialize\", this function generates:\n/// ```\n/// where T: Serialize\n/// ```\ncomptime fn get_where_trait_clause(s: TypeDefinition, trait_name: Quoted) -> Quoted {\n let generics = s.generics();\n\n // The second item in the generics tuple is an Option of an integer type that is Some only if the generic is\n // numeric.\n let non_numeric_generics =\n generics.filter(|(_, maybe_integer_typ)| maybe_integer_typ.is_none());\n\n if non_numeric_generics.len() > 0 {\n let non_numeric_generics_declarations =\n non_numeric_generics.map(|(name, _)| quote {$name: $trait_name}).join(quote {,});\n quote {where $non_numeric_generics_declarations}\n } else {\n // There are no non-numeric generics, so we return an empty quote.\n quote {}\n }\n}\n\n/// Generates a `Serialize` trait implementation for a struct type.\n///\n/// # Parameters\n/// - `s`: The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A quoted code block containing the trait implementation\n///\n/// # Example\n/// For a struct defined as:\n/// ```\n/// struct Log {\n/// fields: [Field; N],\n/// length: u32\n/// }\n/// ```\n///\n/// This function generates code equivalent to:\n/// ```\n/// impl Serialize for Log {\n/// let N: u32 = <[Field; N] as Serialize>::N + ::N;\n///\n/// #[inline_always]\n/// fn serialize(self) -> [Field; Self::N] {\n/// let mut result = [0; _];\n/// let mut offset = 0;\n///\n/// let serialized_member = Serialize::serialize(self.fields);\n/// let serialized_member_len = <[Field; N] as Serialize>::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// let serialized_member = Serialize::serialize(self.length);\n/// let serialized_member_len = ::N;\n/// for i in 0..serialized_member_len {\n/// result[i + offset] = serialized_member[i];\n/// }\n/// offset += serialized_member_len;\n///\n/// result\n/// }\n/// }\n/// ```\npub comptime fn derive_serialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Serialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_serialize_clause = get_where_trait_clause(s, quote {Serialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Serialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the serialized member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // For multiple struct members, generate serialization code that:\n // 1. Serializes each member\n // 2. Copies the serialized fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let serialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let serialized_member = $crate::traits::Serialize::serialize(self.$param_name);\n let serialized_member_len = <$param_type as $crate::traits::Serialize>::N;\n for i in 0..serialized_member_len {\n result[i + offset] = serialized_member[i];\n }\n offset += serialized_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; _];\n let mut offset = 0;\n\n $serialization_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Serialize::serialize(self.$param_name)\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Serialize for $typ\n $where_serialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Deserialize` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Deserialize` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Deserialize for MyStruct {\n/// let N: u32 = ::N + ::N;\n///\n/// fn deserialize(serialized: [Field; Self::N]) -> Self {\n/// let mut offset = 0;\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let x = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// let mut member_fields = [0; ::N];\n/// for i in 0..::N {\n/// member_fields[i] = serialized[i + offset];\n/// }\n/// let y = ::deserialize(member_fields);\n/// offset += ::N;\n///\n/// Self { x, y }\n/// }\n/// }\n/// ```\npub(crate) comptime fn derive_deserialize(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Deserialize` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_deserialize_clause = get_where_trait_clause(s, quote {Deserialize});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Deserialize>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly deserializing the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let function_body = if params.len() > 1 {\n // This generates deserialization code for each struct member and concatenates them together.\n let deserialization_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as Deserialize>::N];\n for i in 0..<$param_type as Deserialize>::N {\n member_fields[i] = serialized[i + offset];\n }\n let $param_name = <$param_type as Deserialize>::deserialize(member_fields);\n offset += <$param_type as Deserialize>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n // This will give us e.g. `a, b, c` for a struct with three fields named `a`, `b`, and `c`.\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n\n $deserialization_of_struct_members\n\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Deserialize::deserialize(serialized) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Deserialize for $typ\n $where_deserialize_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n $function_body\n }\n }\n }\n}\n\n/// Generates a `Packable` trait implementation for a given struct `s`.\n///\n/// # Arguments\n/// * `s` - The struct type definition to generate the implementation for\n///\n/// # Returns\n/// A `Quoted` block containing the generated trait implementation\n///\n/// # Requirements\n/// Each struct member type must implement the `Packable` trait (it gets used in the generated code).\n///\n/// # Example\n/// For a struct like:\n/// ```\n/// struct MyStruct {\n/// x: AztecAddress,\n/// y: Field,\n/// }\n/// ```\n///\n/// This generates:\n/// ```\n/// impl Packable for MyStruct {\n/// let N: u32 = 2;\n///\n/// fn pack(self) -> [Field; 2] {\n/// let mut result: [Field; 2] = [0_Field; 2];\n/// let mut offset: u32 = 0_u32;\n/// let packed_member: [Field; 1] = self.x.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// let packed_member: [Field; 1] = self.y.pack();\n/// let packed_member_len: u32 = ::N;\n/// for i in 0_u32..packed_member_len {\n/// {\n/// result[i + offset] = packed_member[i];\n/// }\n/// }\n/// offset = offset + packed_member_len;\n/// result\n/// }\n///\n/// fn unpack(packed: [Field; 2]) -> Self {\n/// let mut offset: u32 = 0_u32;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let x: AztecAddress = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// let mut member_fields: [Field; 1] = [0_Field; 1];\n/// for i in 0_u32..::N {\n/// member_fields[i] = packed[i + offset];\n/// }\n/// let y: Field = ::unpack(member_fields);\n/// offset = offset + ::N;\n/// Self { x: x, y: y }\n/// }\n/// }\n/// ```\npub comptime fn derive_packable(s: TypeDefinition) -> Quoted {\n let typ = s.as_type();\n let nested_struct = typ.as_data_type().unwrap();\n let params = nested_struct.0.fields(nested_struct.1);\n\n // Generates the generic parameter declarations (to be placed after the `impl` keyword) and the `where` clause\n // for the `Packable` trait.\n let generics_declarations = get_generics_declarations(s);\n let where_packable_clause = get_where_trait_clause(s, quote {Packable});\n\n // The following will give us ::N + ::N + ...\n let right_hand_side_of_definition_of_n = params\n .map(|(_, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n <$param_type as $crate::traits::Packable>::N\n }\n })\n .join(quote {+});\n\n // For structs containing a single member, we can enhance performance by directly returning the packed member,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let pack_function_body = if params.len() > 1 {\n // For multiple struct members, generate packing code that:\n // 1. Packs each member\n // 2. Copies the packed fields into the result array at the correct offset\n // 3. Updates the offset for the next member\n let packing_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let packed_member = $crate::traits::Packable::pack(self.$param_name);\n let packed_member_len = <$param_type as $crate::traits::Packable>::N;\n for i in 0..packed_member_len {\n result[i + offset] = packed_member[i];\n }\n offset += packed_member_len;\n }\n })\n .join(quote {});\n\n quote {\n let mut result = [0; Self::N];\n let mut offset = 0;\n\n $packing_of_struct_members\n\n result\n }\n } else {\n let param_name = params[0].0;\n quote {\n $crate::traits::Packable::pack(self.$param_name)\n }\n };\n\n // For structs containing a single member, we can enhance performance by directly unpacking the input array,\n // bypassing the need for loop-based array construction. While this optimization yields significant benefits in\n // Brillig where the loops are expected to not be optimized, it is not relevant in ACIR where the loops are\n // expected to be optimized away.\n let unpack_function_body = if params.len() > 1 {\n // For multiple struct members, generate unpacking code that:\n // 1. Unpacks each member\n // 2. Copies packed fields into member array at correct offset\n // 3. Updates offset for next member\n let unpacking_of_struct_members = params\n .map(|(param_name, param_type, _): (Quoted, Type, Quoted)| {\n quote {\n let mut member_fields = [0; <$param_type as $crate::traits::Packable>::N];\n for i in 0..<$param_type as $crate::traits::Packable>::N {\n member_fields[i] = packed[i + offset];\n }\n let $param_name = <$param_type as $crate::traits::Packable>::unpack(member_fields);\n offset += <$param_type as $crate::traits::Packable>::N;\n }\n })\n .join(quote {});\n\n // We join the struct member names with a comma to be used in the `Self { ... }` syntax\n let struct_members = params\n .map(|(param_name, _, _): (Quoted, Type, Quoted)| quote { $param_name })\n .join(quote {,});\n\n quote {\n let mut offset = 0;\n $unpacking_of_struct_members\n Self { $struct_members }\n }\n } else {\n let param_name = params[0].0;\n quote {\n Self { $param_name: $crate::traits::Packable::unpack(packed) }\n }\n };\n\n quote {\n impl$generics_declarations $crate::traits::Packable for $typ\n $where_packable_clause\n {\n let N: u32 = $right_hand_side_of_definition_of_n;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n $pack_function_body\n }\n\n #[inline_always]\n fn unpack(packed: [Field; Self::N]) -> Self {\n $unpack_function_body\n }\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Packable, Serialize};\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct Smol {\n a: Field,\n b: Field,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct HasArray {\n a: [Field; 2],\n b: bool,\n }\n\n #[derive(Deserialize, Eq, Serialize)]\n pub struct Fancier {\n a: Smol,\n b: [Field; 2],\n c: [u8; 3],\n d: str<16>,\n }\n\n #[derive(Deserialize, Eq, Packable, Serialize)]\n pub struct HasArrayWithGenerics {\n pub fields: [T; N],\n pub length: u32,\n }\n\n #[test]\n fn serde_on_smol() {\n let smol = Smol { a: 1, b: 2 };\n let serialized = smol.serialize();\n assert(serialized == [1, 2], serialized);\n let deserialized = Smol::deserialize(serialized);\n assert(deserialized == smol);\n\n // None of the struct members implements the `Packable` trait so the packed and serialized data should be the same\n let packed = smol.pack();\n assert_eq(packed, serialized, \"Packed does not match serialized\");\n }\n\n #[test]\n fn serde_on_has_array() {\n let has_array = HasArray { a: [1, 2], b: true };\n let serialized = has_array.serialize();\n assert(serialized == [1, 2, 1], serialized);\n let deserialized = HasArray::deserialize(serialized);\n assert(deserialized == has_array);\n }\n\n #[test]\n fn serde_on_fancier() {\n let fancier =\n Fancier { a: Smol { a: 1, b: 2 }, b: [0, 1], c: [1, 2, 3], d: \"metaprogramming!\" };\n let serialized = fancier.serialize();\n assert(\n serialized\n == [\n 1, 2, 0, 1, 1, 2, 3, 0x6d, 0x65, 0x74, 0x61, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61,\n 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x21,\n ],\n serialized,\n );\n let deserialized = Fancier::deserialize(serialized);\n assert(deserialized == fancier);\n }\n\n #[test]\n fn serde_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let serialized = struct_with_array_of_generics.serialize();\n assert(serialized == [1, 2, 3, 3], serialized);\n let deserialized = HasArrayWithGenerics::deserialize(serialized);\n assert(deserialized == struct_with_array_of_generics);\n }\n\n #[test]\n fn packable_on_contains_array_with_generics() {\n let struct_with_array_of_generics = HasArrayWithGenerics { fields: [1, 2, 3], length: 3 };\n let packed = struct_with_array_of_generics.pack();\n assert(packed == [1, 2, 3, 3], packed);\n\n let unpacked = HasArrayWithGenerics::unpack(packed);\n assert(unpacked == struct_with_array_of_generics);\n }\n\n}\n" - }, - "334": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/point.nr", - "source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Packable, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn serialize(self: Self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize for Point {\n let N: u32 = POINT_LENGTH;\n\n fn deserialize(serialized: [Field; Self::N]) -> Self {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] != 0 }\n }\n}\n\n// TODO(#11356): use compact representation here.\nimpl Packable for Point {\n let N: u32 = POINT_LENGTH;\n\n fn pack(self) -> [Field; Self::N] {\n self.serialize()\n }\n\n fn unpack(packed: [Field; Self::N]) -> Self {\n Self::deserialize(packed)\n }\n}\n" - }, - "335": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr", - "source": "use crate::constants::TWO_POW_64;\nuse crate::traits::{Deserialize, Serialize};\nuse std::meta::derive;\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n" - }, - "345": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr", - "source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::{default::Default, meta::derive};\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nmod test {\n use crate::{\n point::POINT_LENGTH,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Serialize},\n };\n use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\n #[test]\n unconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n }\n\n #[test]\n unconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash =\n 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n }\n\n #[test]\n unconstrained fn serde() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n // We use the PUBLIC_KEYS_LENGTH constant to ensure that there is a match between the derived trait\n let serialized: [Field; POINT_LENGTH * 4] = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys, deserialized);\n }\n}\n" - }, - "347": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/storage/map.nr", - "source": "use crate::{hash::poseidon2_hash, traits::ToField};\n\npub fn derive_storage_slot_in_map(storage_slot: Field, key: K) -> Field\nwhere\n K: ToField,\n{\n poseidon2_hash([storage_slot, key.to_field()])\n}\n\nmod test {\n use crate::{address::AztecAddress, storage::map::derive_storage_slot_in_map, traits::FromField};\n\n #[test]\n fn test_derive_storage_slot_in_map_matches_typescript() {\n let map_slot = 0x132258fb6962c4387ba659d9556521102d227549a386d39f0b22d1890d59c2b5;\n let key = AztecAddress::from_field(\n 0x302dbc2f9b50a73283d5fb2f35bc01eae8935615817a0b4219a057b2ba8a5a3f,\n );\n\n let slot = derive_storage_slot_in_map(map_slot, key);\n\n // The following value was generated by `map_slot.test.ts`\n let slot_from_typescript =\n 0x15b9fe39449affd8b377461263e9d2b610b9ad40580553500b4e41d9cbd887ac;\n\n assert_eq(slot, slot_from_typescript);\n }\n}\n" - }, - "360": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", - "source": "use crate::meta::{derive_deserialize, derive_packable, derive_serialize};\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic\n// if a value can actually be zero. In a future refactor, we can\n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\npub trait Empty: Eq {\n fn empty() -> Self;\n\n fn is_empty(self) -> bool {\n self.eq(Self::empty())\n }\n\n // Requires this Noir fix: https://github.com/noir-lang/noir/issues/9002\n // fn assert_not_empty(self, msg: str) { // This msg version was failing with weird compiler errors.\n // // We provide a default impl but it's likely inefficient.\n // // The reason we include this function is because there's a lot of\n // // opportunity for optimisation on a per-struct basis.\n // // You only need to show one element is not empty to know that the whole thing\n // // is not empty.\n // // If you know an element of your struct which should always be nonempty,\n // // you can write an impl that solely checks that that element is nonempty.\n // assert(!self.is_empty(), msg);\n // }\n\n // This default impl is overwritten by types like arrays, because there's a much\n // more efficient approach.\n fn assert_empty(self, msg: str) {\n assert(self.is_empty(), msg);\n }\n}\n\nimpl Empty for Field {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for u1 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u8 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u16 {\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u32 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u64 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\nimpl Empty for u128 {\n #[inline_always]\n fn empty() -> Self {\n 0\n }\n}\n\nimpl Empty for [T; N]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty(); N]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\n\nimpl Empty for [T]\nwhere\n T: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n [T::empty()]\n }\n\n fn is_empty(self) -> bool {\n self.all(|elem| elem.is_empty())\n }\n\n fn assert_empty(self, msg: str) -> () {\n self.for_each(|elem| elem.assert_empty(msg))\n }\n}\nimpl Empty for (A, B)\nwhere\n A: Empty,\n B: Empty,\n{\n #[inline_always]\n fn empty() -> Self {\n (A::empty(), B::empty())\n }\n}\n\nimpl Empty for Option\nwhere\n T: Eq,\n{\n #[inline_always]\n fn empty() -> Self {\n Option::none()\n }\n}\n\n// pub fn is_empty(item: T) -> bool\n// where\n// T: Empty,\n// {\n// item.eq(T::empty())\n// }\n\n// pub fn is_empty_array(array: [T; N]) -> bool\n// where\n// T: Empty,\n// {\n// array.all(|elem| is_empty(elem))\n// }\n\n// pub fn assert_empty(item: T) -> ()\n// where\n// T: Empty,\n// {\n// assert(item.eq(T::empty()))\n// }\n\n// pub fn assert_empty_array(array: [T; N]) -> ()\n// where\n// T: Empty,\n// {\n// // A cheaper option than `is_empty_array` for if you don't need to gracefully\n// // handle a bool result.\n// // Avoids the `&` operator of `is_empty_array`'s `.all()` call.\n// for i in 0..N {\n// assert(is_empty(array[i]));\n// }\n// }\n\npub trait Hash {\n fn hash(self) -> Field;\n}\n\npub trait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n #[inline_always]\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u1 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u8 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u16 {\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u32 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u64 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for u128 {\n #[inline_always]\n fn to_field(self) -> Field {\n self as Field\n }\n}\nimpl ToField for str {\n #[inline_always]\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\npub trait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value != 0\n }\n}\nimpl FromField for u1 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u1\n }\n}\nimpl FromField for u8 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u8\n }\n}\nimpl FromField for u16 {\n fn from_field(value: Field) -> Self {\n value as u16\n }\n}\nimpl FromField for u32 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u32\n }\n}\nimpl FromField for u64 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u64\n }\n}\nimpl FromField for u128 {\n #[inline_always]\n fn from_field(value: Field) -> Self {\n value as u128\n }\n}\n\n// docs:start:serialize\n/// Trait for serializing Noir types into arrays of Fields.\n///\n/// An implementation of the Serialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait (and Deserialize) are\n/// typically used to communicate between Noir and TypeScript (via oracles and function arguments).\n///\n/// # On Following Noir's Intrinsic Serialization\n/// When calling a Noir function from TypeScript (TS), first the function arguments are serialized into an array\n/// of fields. This array is then included in the initial witness. Noir's intrinsic serialization is then used\n/// to deserialize the arguments from the witness. When the same Noir function is called from Noir this Serialize trait\n/// is used instead of the serialization in TS. For this reason we need to have a match between TS serialization,\n/// Noir's intrinsic serialization and the implementation of this trait. If there is a mismatch, the function calls\n/// fail with an arguments hash mismatch error message.\n///\n/// # Associated Constants\n/// * `N` - The length of the output Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Serialize for str {\n/// let N: u32 = N;\n///\n/// fn serialize(self) -> [Field; Self::N] {\n/// let bytes = self.as_bytes();\n/// let mut fields = [0; Self::N];\n/// for i in 0..bytes.len() {\n/// fields[i] = bytes[i] as Field; // Each byte gets its own Field\n/// }\n/// fields\n/// }\n/// }\n/// ```\n#[derive_via(derive_serialize)]\npub trait Serialize {\n let N: u32;\n\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl Serialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let bytes = self.as_bytes();\n let mut fields = [0; Self::N];\n for i in 0..bytes.len() {\n fields[i] = bytes[i] as Field;\n }\n fields\n }\n}\n\n/// Implementation of Deserialize for BoundedVec.\n///\n/// This implementation deserializes a BoundedVec from an array of Fields. The array contains:\n/// 1. The serialized items, each taking up T::N Fields\n/// 2. The length of the BoundedVec as the last Field\n///\n/// # Type Parameters\n/// * `T` - The type of items stored in the BoundedVec, must implement Deserialize\n/// * `M` - The maximum length of the BoundedVec\n///\n/// # Fields Array Layout\n/// [item1_field1, item1_field2, ..., item2_field1, item2_field2, ..., length]\n/// Where:\n/// - itemN_fieldM: The M-th Field of the N-th item (T::N Fields per item)\n/// - length: The number of items in the BoundedVec (1 Field)\n///\n/// Total length N = T::N * M + 1, where:\n/// - T::N is the number of Fields needed to deserialize one item\n/// - M is the maximum length of the BoundedVec\n/// - +1 is for storing the length\n///\n/// # Note\n/// Not deriving this because it's not supported to call derive_deserialize on a \"remote\" struct (and it will never\n/// be supported).\nimpl Deserialize for BoundedVec\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut new_bounded_vec: BoundedVec = BoundedVec::new();\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = fields[::N * M] as u32;\n\n for i in 0..len {\n let mut nested_fields = [0; ::N];\n for j in 0..::N {\n nested_fields[j] = fields[i * ::N + j];\n }\n\n let item = T::deserialize(nested_fields);\n new_bounded_vec.push(item);\n }\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(_fields: [Field; Self::N]) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl Serialize for BoundedVec\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M + 1; // +1 for the length of the BoundedVec\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut fields = [0; Self::N];\n\n let storage = self.storage();\n\n for i in 0..M {\n let serialized_item = storage[i].serialize();\n\n for j in 0..::N {\n fields[i * ::N + j] = serialized_item[j];\n }\n }\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n fields[::N * M] = self.len() as Field;\n\n fields\n }\n}\n\n// docs:start:deserialize\n/// Trait for deserializing Noir types from arrays of Fields.\n///\n/// An implementation of the Deserialize trait has to follow Noir's intrinsic serialization (each member of a struct\n/// converted directly into one or more Fields without any packing or compression). This trait is typically used when\n/// deserializing return values from function calls in Noir. Since the same function could be called from TypeScript\n/// (TS), in which case the TS deserialization would get used, we need to have a match between the 2.\n///\n/// # Associated Constants\n/// * `N` - The length of the input Field array, known at compile time\n///\n/// # Example\n/// ```\n/// impl Deserialize for str {\n/// let N: u32 = M;\n///\n/// #[inline_always]\n/// fn deserialize(fields: [Field; Self::N]) -> Self {\n/// str::::from(fields.map(|value| value as u8))\n/// }\n/// }\n/// ```\n#[derive_via(derive_deserialize)]\npub trait Deserialize {\n let N: u32;\n\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n\nimpl Deserialize for str {\n let N: u32 = M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n str::::from(fields.map(|value| value as u8))\n }\n}\n\n/// Trait for efficiently packing and unpacking Noir types into and from arrays of Fields.\n///\n/// The `Packable` trait allows types to be serialized and deserialized with a focus on minimizing the size of\n/// the resulting Field array. This trait is used when storage efficiency is critical (e.g. when storing data\n/// in the contract's public storage).\n///\n/// # Associated Constants\n/// * `N` - The length of the Field array, known at compile time\n#[derive_via(derive_packable)]\npub trait Packable {\n let N: u32;\n\n /// Packs the current value into a compact array of `Field` elements.\n fn pack(self) -> [Field; N];\n\n /// Unpacks a compact array of `Field` elements into the original value.\n fn unpack(fields: [Field; N]) -> Self;\n}\n\n#[test]\nunconstrained fn bounded_vec_serialization() {\n // Test empty BoundedVec\n let empty_vec: BoundedVec = BoundedVec::from_array([]);\n let serialized = empty_vec.serialize();\n let deserialized = BoundedVec::::deserialize(serialized);\n assert_eq(empty_vec, deserialized);\n assert_eq(deserialized.len(), 0);\n\n // Test partially filled BoundedVec\n let partial_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2]]);\n let serialized = partial_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(partial_vec, deserialized);\n assert_eq(deserialized.len(), 1);\n assert_eq(deserialized.get(0), [1, 2]);\n\n // Test full BoundedVec\n let full_vec: BoundedVec<[u32; 2], 3> = BoundedVec::from_array([[1, 2], [3, 4], [5, 6]]);\n let serialized = full_vec.serialize();\n let deserialized = BoundedVec::<[u32; 2], 3>::deserialize(serialized);\n assert_eq(full_vec, deserialized);\n assert_eq(deserialized.len(), 3);\n assert_eq(deserialized.get(0), [1, 2]);\n assert_eq(deserialized.get(1), [3, 4]);\n assert_eq(deserialized.get(2), [5, 6]);\n}\n" - }, - "362": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_packing.nr", - "source": "use crate::traits::Packable;\n\nglobal BOOL_PACKED_LEN: u32 = 1;\nglobal U8_PACKED_LEN: u32 = 1;\nglobal U16_PACKED_LEN: u32 = 1;\nglobal U32_PACKED_LEN: u32 = 1;\nglobal U64_PACKED_LEN: u32 = 1;\nglobal U128_PACKED_LEN: u32 = 1;\nglobal FIELD_PACKED_LEN: u32 = 1;\nglobal I8_PACKED_LEN: u32 = 1;\nglobal I16_PACKED_LEN: u32 = 1;\nglobal I32_PACKED_LEN: u32 = 1;\nglobal I64_PACKED_LEN: u32 = 1;\n\nimpl Packable for bool {\n let N: u32 = BOOL_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> bool {\n (fields[0] as u1) != 0\n }\n}\n\nimpl Packable for u8 {\n let N: u32 = U8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Packable for u16 {\n let N: u32 = U16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Packable for u32 {\n let N: u32 = U32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Packable for u64 {\n let N: u32 = U64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Packable for u128 {\n let N: u32 = U128_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Packable for Field {\n let N: u32 = FIELD_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Packable for i8 {\n let N: u32 = I8_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Packable for i16 {\n let N: u32 = I16_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Packable for i32 {\n let N: u32 = I32_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Packable for i64 {\n let N: u32 = I64_PACKED_LEN;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Packable for [T; M]\nwhere\n T: Packable,\n{\n let N: u32 = M * ::N;\n\n #[inline_always]\n fn pack(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n for i in 0..M {\n let serialized = self[i].pack();\n for j in 0..::N {\n result[i * ::N + j] = serialized[j];\n }\n }\n result\n }\n\n #[inline_always]\n fn unpack(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Packable::unpack, result)\n }\n}\n\n#[test]\nfn test_u16_packing() {\n let a: u16 = 10;\n assert_eq(a, u16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i8_packing() {\n let a: i8 = -10;\n assert_eq(a, i8::unpack(a.pack()));\n}\n\n#[test]\nfn test_i16_packing() {\n let a: i16 = -10;\n assert_eq(a, i16::unpack(a.pack()));\n}\n\n#[test]\nfn test_i32_packing() {\n let a: i32 = -10;\n assert_eq(a, i32::unpack(a.pack()));\n}\n\n#[test]\nfn test_i64_packing() {\n let a: i64 = -10;\n assert_eq(a, i64::unpack(a.pack()));\n}\n" - }, - "363": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", - "source": "use crate::traits::{Deserialize, Serialize};\n\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> bool {\n fields[0] != 0\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as Field]\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self]\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u8 as Field]\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u16 as Field]\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u32 as Field]\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n [self as u64 as Field]\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n fields[0] as u64 as i64\n }\n}\n\nimpl Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; _] = std::mem::zeroed();\n for i in 0..M {\n let serialized_t = self[i].serialize();\n for j in 0..::N {\n result[i * ::N + j] = serialized_t[j];\n }\n }\n result\n }\n}\n\nimpl Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N * M;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::utils::reader::Reader::new(fields);\n let mut result: [T; M] = std::mem::zeroed();\n reader.read_struct_array::::N, M>(Deserialize::deserialize, result)\n }\n}\n\nimpl Serialize for Option\nwhere\n T: Serialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn serialize(self) -> [Field; Self::N] {\n let mut result: [Field; Self::N] = std::mem::zeroed();\n\n result[0] = if self.is_some() { 1 } else { 0 };\n\n let value_serialized = self.unwrap_unchecked().serialize();\n for i in 0..::N {\n result[1 + i] = value_serialized[i];\n }\n\n result\n }\n}\n\nimpl Deserialize for Option\nwhere\n T: Deserialize,\n{\n let N: u32 = ::N + 1;\n\n #[inline_always]\n fn deserialize(fields: [Field; Self::N]) -> Self {\n if fields[0] == 1 {\n let mut value_fields = [0; ::N];\n for i in 0..::N {\n value_fields[i] = fields[1 + i];\n }\n\n Option::some(T::deserialize(value_fields))\n } else {\n Option::none()\n }\n }\n}\n\nmod test {\n use crate::traits::{Deserialize, Serialize};\n\n #[test]\n fn u16_serialization() {\n let a: u16 = 10;\n assert_eq(a, u16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i8_serialization() {\n let a: i8 = -10;\n assert_eq(a, i8::deserialize(a.serialize()));\n }\n\n #[test]\n fn i16_serialization() {\n let a: i16 = -10;\n assert_eq(a, i16::deserialize(a.serialize()));\n }\n\n #[test]\n fn i32_serialization() {\n let a: i32 = -10;\n assert_eq(a, i32::deserialize(a.serialize()));\n }\n\n #[test]\n fn i64_serialization() {\n let a: i64 = -10;\n assert_eq(a, i64::deserialize(a.serialize()));\n }\n\n #[test]\n fn option_field_serialization() {\n let opt_some = Option::some(5);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n\n #[test]\n fn option_array_serialization() {\n let opt_some = Option::some([2, 5]);\n assert_eq(Option::<_>::deserialize(opt_some.serialize()), opt_some);\n\n let opt_none = Option::none();\n assert_eq(Option::::deserialize(opt_none.serialize()), opt_none);\n }\n}\n" - }, - "379": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr", - "source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_padded_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_padded_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod find_index;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped,\n assert_array_appended_reversed_to_empty_dest, assert_array_appended_reversed_up_to_some_length,\n assert_array_appended_scoped, assert_array_appended_to_empty_dest,\n assert_array_appended_to_empty_dest_and_scoped, assert_array_appended_to_empty_dest_scoped,\n};\npub use assert_array_prepended::{assert_array_prepended, assert_array_prepended_up_to_some_length};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_padded_array::{\n assert_sorted_transformed_i_padded_array_capped_size,\n assert_sorted_transformed_padded_array_capped_size, validate_padded_items,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n get_split_order_hints::{get_split_order_hints_asc, SplitOrderHints},\n};\npub use assert_split_transformed_padded_arrays::assert_split_transformed_padded_arrays;\npub use find_index::{find_first_index, find_last_index};\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use get_sorted_tuple::{get_sorted_tuple, SortedTuple};\npub use sort_by_counter::sort_by_counter_asc;\n\nuse crate::traits::{Deserialize, Empty, Serialize};\nuse super::for_loop::{for_i_in_0_, for_i_only_in_0_};\n\n//**********************************************************************************\n// ARRAY\n//**********************************************************************************\n\n// TODO: Consider making this a part of the noir stdlib.\npub fn subarray(\n src: [Field; SrcLen],\n offset: u32,\n) -> [Field; DstLen] {\n let mut dst: [Field; DstLen] = std::mem::zeroed();\n for i in 0..DstLen {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper fn to create a subarray from a given array\n// TODO: rename to `slice`. This is not a splice.\n// TODO: looks very similar to `subarray` above.\npub fn array_splice(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\n }\n result\n}\n\n// Helper function to find the index of the first element in an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n if find(array[i]) {\n index = Option::some(i);\n break;\n }\n }\n index\n}\n\n// Helper function to find the index of the first element (starting from the back) of an array that satisfies a given predicate.\n// If the element is not found, the function returns Option::none.\n// TODO: Consider making this a part of the noir stdlib.\npub unconstrained fn find_index_hint_in_reverse(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> Option {\n let mut index: Option = Option::none();\n for i in 0..N {\n let j = N - i - 1;\n if find(array[j]) {\n index = Option::some(j);\n break;\n }\n }\n index\n}\n\n//**********************************************************************************\n// FREE ARRAY FUNCTIONS (to deprecate or make into methods of array wrappers)\n//**********************************************************************************\n\n/// Deprecated.\n///\n/// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n/// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n/// valid.\npub fn validate_array(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if array[i].is_empty() {\n seen_empty = true;\n } else {\n assert_eq(seen_empty, false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n/// Deprecated.\n///\n/// Helper function to count the number of non-empty elements in a validated array.\n/// Important: Only use it for validated arrays where validate_array(array) returns true,\n/// which ensures that:\n/// 1. All elements before the first empty element are non-empty\n/// 2. All elements after and including the first empty element are empty\n/// 3. The array forms a contiguous sequence of non-empty elements followed by empty elements\npub fn array_length(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n // We get the length by checking the index of the first empty element.\n\n // Safety: This is safe because we have validated the array (see function doc above) and the emptiness\n // of the element and non-emptiness of the previous element is checked below.\n let maybe_length = unsafe { find_index_hint(array, |elem: T| elem.is_empty()) };\n\n let mut length = N;\n if maybe_length.is_some() {\n length = maybe_length.unwrap_unchecked();\n\n array[length].assert_empty(\"Expected array empty\");\n\n if length != 0 {\n assert(!array[length - 1].is_empty());\n }\n }\n\n length\n}\n\n// Returns an array length defined by fully trimming _all_ \"empty\" items\n// from the RHS.\npub unconstrained fn trimmed_array_length_hint(array: [T; N]) -> u32\nwhere\n T: Empty,\n{\n let maybe_index_of_last_nonempty =\n find_index_hint_in_reverse(array, |elem: T| !elem.is_empty());\n let length: u32 = if maybe_index_of_last_nonempty.is_some() {\n 1 + maybe_index_of_last_nonempty.unwrap_unchecked()\n } else {\n 0\n };\n length\n}\n\n/// This function assumes that `array1` and `array2` contain no more than N non-empty elements between them,\n/// if this is not the case then elements from the end of `array2` will be dropped.\npub fn array_merge(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n // Safety: we constrain this array below\n let result = unsafe { array_merge_helper(array1, array2) };\n // We assume arrays have been validated. The only use cases so far are with previously validated arrays.\n let array1_len = array_length(array1);\n let mut add_from_left = true;\n for i in 0..N {\n add_from_left &= i != array1_len;\n if add_from_left {\n assert_eq(result[i], array1[i]);\n } else {\n assert_eq(result[i], array2[i - array1_len]);\n }\n }\n result\n}\n\nunconstrained fn array_merge_helper(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !elem.is_empty() {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\n/// Helper function to convert a validated array to BoundedVec.\n/// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec(array: [T; N]) -> BoundedVec\nwhere\n T: Empty,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\n// Returns the number of consecutive elements at the start of the array for which the predicate returns false.\n// This function ensures that any element after the first matching element (predicate returns true) also matches the predicate.\npub fn array_length_until(array: [T; N], predicate: fn[Env](T) -> bool) -> u32 {\n let mut length = 0;\n let mut stop = false;\n for i in 0..N {\n if predicate(array[i]) {\n stop = true;\n } else {\n assert(\n stop == false,\n \"matching element found after already encountering a non-matching element\",\n );\n length += 1;\n }\n }\n length\n}\n\npub fn check_permutation(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n// Helper function to check if an array is padded with a given value from a given index.\n// Different to padded_array_length in that it allows the elements before the given index to be the same as the padded value.\npub fn array_padded_with(array: [T; N], from_index: u32, padded_with: T) -> bool\nwhere\n T: Eq,\n{\n let mut is_valid = true;\n let mut should_check = false;\n for i in 0..N {\n should_check |= i == from_index;\n is_valid &= !should_check | (array[i] == padded_with);\n }\n is_valid\n}\n\n//**********************************************************************************\n// ARRAY WRAPPERS\n//**********************************************************************************\n\n/*\n *\n *\n * \n * |-----------------------------------------|------------------------------| \n * | LHS | RHS |\n * |-----------------------------------------|------------------------------|\n * ClaimedLengthArray | Interspersed 0s possible. | Unvalidated. |\n * | Possibly not fully trimmed. | Nonempty elements possible. |\n * |-----------------------------------------|------------------------------|\n * EmptyRHSArray | Interspersed 0s possible. | All 0s (validated). |\n * | Possibly not fully trimmed. | |\n * |-----------------------------------------|------------------------------|\n * TrimmedArray | Interspersed 0s possible. | All 0s (validated) |\n * | Last lhs element validated as nonempty. | |\n * | (I.e. fully trimmed) | |\n * |-----------------------------------------|------------------------------|\n * DenseTrimmedArray | Dense (validated). | All 0s (validated) |\n * |-----------------------------------------|------------------------------|\n *\n *\n * | What guarantees do we have? |\n * |--------|--------|--------------------------------| \n * | Dense? | RHS | Length vs Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n * ClaimedLengthArray | ? | ? | ? |\n * | | | |\n * |--------|--------|--------------------------------|\n * EmptyRHSArray | ? | All 0s | Length >= Fully Trimmed Length |\n * | | | |\n * |--------|--------|--------------------------------|\n * TrimmedArray | ? | All 0s | Length == Fully Trimmed Length |\n * | | | |\n * | | | |\n * |--------|--------|--------------------------------|\n * DenseTrimmedArray | Yes | All 0s | Length == Fully Trimmed Length |\n * |--------|--------|--------------------------------|\n *\n *\n * An ClaimedLengthArray is distinct from a regular array [T; N], because it carries a length.\n * \n */\n\n/// ClaimedLengthArray - An array interpreted by Kernel circuits.\n/// Its `length` is merely a claim that must eventually be validated.\n/// Validation must include:\n/// - Asserting all items to the LHS of the length are nonempty (dense).\n/// - Asserting all items to the RHS of the length are empty.\n#[derive(Deserialize, Serialize)]\npub struct ClaimedLengthArray {\n pub array: [T; N],\n pub length: u32,\n}\n\nimpl ClaimedLengthArray\nwhere\n T: Empty,\n{\n // No constructor. Append to an empty one.\n\n // For constrained append functions, see the dedicated file: assert_array_appended.nr\n\n pub fn push(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub fn assert_dense_trimmed(self) {\n for_i_in_0_(\n self.length,\n self.array.len(),\n |i| {\n assert(!self.array[i].is_empty(), \"LHS of input array is not dense\")\n // Requires Noir #9002:\n // self.array[i].assert_not_empty(\"LHS of input array is not dense\"); // LHS of input array is not dense.\n },\n |i| self.array[i].assert_empty(\"RHS of input array is not empty\"),\n false,\n );\n }\n\n pub fn assert_empty(self, msg: str) {\n for i in 0..N {\n self.array[i].assert_empty(msg);\n }\n assert_eq(self.length, 0);\n }\n\n pub unconstrained fn push_hint(&mut self, item: T) {\n assert(self.length != N, \"Array full\");\n\n let mut next_index = self.length;\n self.array[next_index] = item;\n self.length += 1;\n }\n\n pub unconstrained fn pop_hint(&mut self) -> T {\n assert(self.length != 0, \"Array empty\");\n\n let mut top_index = self.length - 1;\n let popped_item = self.array[top_index];\n self.array[top_index] = T::empty();\n self.length -= 1;\n popped_item\n }\n\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(self.length, self.array.len(), |i| f(self.array[i]), false);\n }\n\n // E.g.\n // dest.for_each_i(|source_item, i| { assert_eq(dest.array[i], source_item, \"bad copy\"); })\n pub fn for_each_i(self, f: fn[Env](T, u32) -> ()) {\n // We pass `false`, because by construction, we should know that self.length <= self.array.len().\n for_i_only_in_0_(\n self.length,\n self.array.len(),\n |i| f(self.array[i], i),\n false,\n );\n }\n\n pub fn from_bounded_vec(vec: BoundedVec) -> Self {\n Self { array: vec.storage(), length: vec.len() }\n }\n}\n\n// TODO: compiler bug. No idea why this is needed, if we have #[derive(Eq)] above the struct definition.\nimpl Eq for ClaimedLengthArray\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n (self.array == other.array) & (self.length == other.length)\n }\n}\n\nimpl Empty for ClaimedLengthArray\nwhere\n T: Empty,\n{\n fn empty() -> Self {\n Self { array: [T::empty(); N], length: 0 }\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn test_array_length_until() {\n let array = [11, 22, 33, 44, 55];\n assert_eq(array_length_until(array, |x| x == 55), 4);\n assert_eq(array_length_until(array, |x| x == 56), 5);\n assert_eq(array_length_until(array, |x| x > 40), 3);\n assert_eq(array_length_until(array, |x| x > 10), 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_non_consecutive_fails() {\n let array = [1, 1, 0, 1, 0];\n let _ = array_length_until(array, |x| x == 0);\n}\n\n#[test(should_fail_with = \"matching element found after already encountering a non-matching element\")]\nfn test_array_length_until_first_non_matching_fails() {\n let array = [1, 0, 0, 0, 0];\n let _ = array_length_until(array, |x| x == 1);\n}\n\n#[test]\nunconstrained fn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.unwrap_unchecked(), 2);\n}\n\n#[test]\nunconstrained fn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let maybe_index = find_index_hint(values, |v: Field| min.lt(v));\n assert_eq(maybe_index.is_none(), true);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test]\nfn test_array_padded_with() {\n let array = [11, 22, 33, 44, 44];\n assert_eq(array_padded_with(array, 0, 44), false);\n assert_eq(array_padded_with(array, 1, 44), false);\n assert_eq(array_padded_with(array, 2, 44), false);\n assert_eq(array_padded_with(array, 3, 44), true);\n assert_eq(array_padded_with(array, 4, 44), true);\n assert_eq(array_padded_with(array, 4, 33), false);\n assert_eq(array_padded_with(array, 5, 44), true); // Index out of bounds.\n assert_eq(array_padded_with(array, 0, 11), false);\n}\n" - }, - "380": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", - "source": "pub fn field_from_bytes(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO: This currently only exists to aid point compression in compress_to_blob_commitment().\n// Once compression is part of BigCurve it can either be removed or optimized to be used elsewhere.\npub fn byte_to_bits_be(byte: u8) -> [u1; 8] {\n let mut mut_byte = byte;\n let mut bits: [u1; 8] = [0; 8];\n for i in 0..8 {\n bits[7 - i] = (mut_byte & 1) as u1;\n mut_byte >>= 1;\n }\n bits\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\npub fn min(f1: Field, f2: Field) -> Field {\n if f1.lt(f2) {\n f1\n } else {\n f2\n }\n}\n\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n\npub(crate) fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub(crate) fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167,\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes: [u8; 31] = field.to_be_bytes();\n assert_eq(inputs, return_bytes);\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28,\n 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158,\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2: [u8; 31] = field.to_be_bytes();\n\n assert_eq(return_bytes2, return_bytes);\n assert_eq(field2, field);\n}\n\n#[test]\nunconstrained fn max_field_test() {\n // Tests the hardcoded value in constants.nr vs underlying modulus\n // NB: We can't use 0-1 in constants.nr as it will be transpiled incorrectly to ts and sol constants files\n let max_value = crate::constants::MAX_FIELD_VALUE;\n assert_eq(max_value, 0 - 1);\n // modulus == 0 is tested elsewhere, so below is more of a sanity check\n let max_bytes: [u8; 32] = max_value.to_be_bytes();\n let mod_bytes = std::field::modulus_be_bytes();\n for i in 0..31 {\n assert_eq(max_bytes[i], mod_bytes[i]);\n }\n assert_eq(max_bytes[31], mod_bytes[31] - 1);\n}\n" - }, - "383": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr", - "source": "pub struct Reader {\n data: [Field; N],\n offset: u32,\n}\n\nimpl Reader {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_u64(&mut self) -> u64 {\n self.read() as u64\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() != 0\n }\n\n pub fn read_array(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert_eq(self.offset, self.data.len(), \"Reader did not read all data\");\n }\n}\n" - }, - "399": { - "path": "/home/nerses/nargo/github.com/noir-lang/sha256/v0.2.1/src/sha256.nr", - "source": "use std::hash::sha256_compression;\nuse std::runtime::is_unconstrained;\n\nuse constants::{\n BLOCK_BYTE_PTR, BLOCK_SIZE, HASH, INITIAL_STATE, INT_BLOCK, INT_BLOCK_SIZE, INT_SIZE,\n INT_SIZE_PTR, MSG_BLOCK, MSG_SIZE_PTR, STATE, TWO_POW_16, TWO_POW_24, TWO_POW_32, TWO_POW_8,\n};\n\npub(crate) mod constants;\nmod tests;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n assert(message_size <= N);\n\n if std::runtime::is_unconstrained() {\n // Safety: SHA256 is running as an unconstrained function.\n unsafe {\n __sha256_var(msg, message_size)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, INITIAL_STATE);\n\n finalize_sha256_blocks::(message_size, h, msg_block)\n }\n}\n\npub(crate) unconstrained fn __sha_var(\n msg: [u8; N],\n message_size: u32,\n initial_state: STATE,\n) -> HASH {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = initial_state;\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, message_size, msg)\n}\n\n// Helper function to finalize the message block with padding and length\npub(crate) unconstrained fn finalize_last_sha256_block(\n mut h: STATE,\n message_size: u32,\n msg: [u8; N],\n) -> HASH {\n let modulo = message_size % BLOCK_SIZE;\n let (mut msg_block, mut msg_byte_ptr): (INT_BLOCK, u32) = if modulo != 0 {\n let num_full_blocks = message_size / BLOCK_SIZE;\n let msg_start = BLOCK_SIZE * num_full_blocks;\n let new_msg_block = build_msg_block(msg, message_size, msg_start);\n (new_msg_block, modulo)\n } else {\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n ([0; INT_BLOCK_SIZE], 0)\n };\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n // If we don't have room to write the size, compress the block and reset it.\n let (h, mut msg_byte_ptr): (STATE, u32) = if msg_byte_ptr >= MSG_SIZE_PTR {\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n (sha256_compression(msg_block, h), 0)\n } else {\n (h, msg_byte_ptr + 1)\n };\n msg_block = attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n// Variable size SHA-256 hash\nunconstrained fn __sha256_var(msg: [u8; N], message_size: u32) -> HASH {\n __sha_var(msg, message_size, INITIAL_STATE)\n}\n\npub(crate) fn process_full_blocks(\n msg: [u8; N],\n message_size: u32,\n h: STATE,\n) -> (STATE, MSG_BLOCK) {\n let num_blocks = N / BLOCK_SIZE;\n\n // We store the intermediate hash states and message blocks in these two arrays which allows us to select the correct state\n // for the given message size with a lookup.\n //\n // These can be reasoned about as followed:\n // Consider a message with an unknown number of bytes, `msg_size. It can be seen that this will have `msg_size / BLOCK_SIZE` full blocks.\n // - `states[i]` should then be the state after processing the first `i` blocks.\n // - `blocks[i]` should then be the next message block after processing the first `i` blocks.\n // blocks[first_partially_filled_block_index] is the last block that is partially filled or all 0 if the message is a multiple of the block size.\n //\n // In other words:\n //\n // blocks = [block 1, block 2, ..., block N / BLOCK_SIZE, block N / BLOCK_SIZE + 1]\n // states = [INITIAL_STATE, state after block 1, state after block 2, ..., state after block N / BLOCK_SIZE]\n //\n // We place the initial state in `states[0]` as in the case where the `message_size < BLOCK_SIZE` then there are no full blocks to process and no compressions should occur.\n let mut blocks: [MSG_BLOCK; N / BLOCK_SIZE + 1] = std::mem::zeroed();\n let mut states: [STATE; N / BLOCK_SIZE + 1] = [h; N / BLOCK_SIZE + 1];\n\n // Optimization for small messages. If the largest possible message is smaller than a block then we know that the first block is partially filled\n // no matter the value of `message_size`.\n //\n // Note that the condition `N >= BLOCK_SIZE` is known during monomorphization so this has no runtime cost.\n let first_partially_filled_block_index = if N >= BLOCK_SIZE {\n message_size / BLOCK_SIZE\n } else {\n 0\n };\n\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, msg_start);\n\n blocks[i] = new_msg_block;\n states[i + 1] = sha256_compression(new_msg_block, states[i]);\n }\n // If message_size/BLOCK_SIZE == N/BLOCK_SIZE, and there is a remainder, we need to process the last block.\n if N % BLOCK_SIZE != 0 {\n let new_msg_block =\n // Safety: separate verification function\n unsafe { build_msg_block(msg, message_size, BLOCK_SIZE * num_blocks) };\n\n // Verify the block we are compressing was appropriately constructed\n verify_msg_block(msg, message_size, new_msg_block, BLOCK_SIZE * num_blocks);\n\n blocks[num_blocks] = new_msg_block;\n }\n\n // verify the 0 padding is correct for the last block\n let final_block = blocks[first_partially_filled_block_index];\n verify_msg_block_zeros(final_block, message_size % BLOCK_SIZE, INT_BLOCK_SIZE);\n (states[first_partially_filled_block_index], final_block)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start` and pack them into a `MSG_BLOCK`.\npub(crate) unconstrained fn build_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> MSG_BLOCK {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else if message_size < msg_start + BLOCK_SIZE {\n message_size - msg_start\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let int_input = (block_input + INT_SIZE - 1) / INT_SIZE;\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = (msg_item << 8) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n msg_block\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) {\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = msg_item << 8;\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n }\n }\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, 0);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], 0);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = msg_item << 8;\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\n#[inline_always]\nfn set_item_zeros(item: u32, zeros: u32) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\n#[inline_always]\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts)\n}\n\n// Construct a field out of 4 bytes.\n#[inline_always]\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = (item << 8) + b1 as u32;\n item = (item << 8) + b2 as u32;\n item = (item << 8) + b3 as u32;\n item\n}\n\nglobal BIT_SHIFT_TABLE: [u32; 4] = [1, TWO_POW_8, TWO_POW_16, TWO_POW_24];\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\n#[inline_always]\nfn lshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n // Brillig wouldn't shift 0<<4 without overflow.\n if shifts >= 4 {\n 0\n } else {\n item << (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item * BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\n#[inline_always]\nfn rshift8(item: u32, shifts: u32) -> u32 {\n if is_unconstrained() {\n if shifts >= 4 {\n 0\n } else {\n item >> (8 * shifts)\n }\n } else {\n if shifts == 4 {\n 0\n } else {\n item / BIT_SHIFT_TABLE[shifts]\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n msg_block[INT_SIZE_PTR] = (len_bytes[0] as u32) << 24\n | (len_bytes[1] as u32) << 16\n | (len_bytes[2] as u32) << 8\n | (len_bytes[3] as u32);\n\n msg_block[INT_SIZE_PTR + 1] = (len_bytes[4] as u32) << 24\n | (len_bytes[5] as u32) << 16\n | (len_bytes[6] as u32) << 8\n | (len_bytes[7] as u32);\n\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n std::static_assert(\n INT_SIZE_PTR + 2 == INT_BLOCK_SIZE,\n \"INT_SIZE_PTR + 2 must equal INT_BLOCK_SIZE\",\n );\n let reconstructed_len_hi = msg_block[INT_SIZE_PTR] as Field;\n let reconstructed_len_lo = msg_block[INT_SIZE_PTR + 1] as Field;\n\n let reconstructed_len: Field =\n reconstructed_len_hi * TWO_POW_32 as Field + reconstructed_len_lo;\n let len = 8 * (message_size as Field);\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\npub(crate) fn finalize_sha256_blocks(\n message_size: u32,\n mut h: STATE,\n mut msg_block: MSG_BLOCK,\n) -> HASH {\n let mut msg_byte_ptr = message_size % BLOCK_SIZE;\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n let index = msg_byte_ptr / INT_SIZE;\n msg_block[index] = set_item_byte_then_zeros(msg_block[index], msg_byte_ptr, 1 << 7);\n\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n // Safety: separate verification function\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n\n hash_final_block(msg_block, h)\n}\n\n/**\n * Given some state of a partially computed sha256 hash and part of the preimage, continue hashing\n * @notice used for complex/ recursive offloading of post-partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the preimage to hash\n * @param message_size - the actual length of the preimage to hash\n * @return the intermediate hash state after compressing in msg to h\n */\npub fn partial_sha256_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n __sha_partial_var_interstitial(h, msg, message_size)\n }\n } else {\n let (mut h, _) = process_full_blocks(msg, message_size, h);\n\n h\n }\n}\n\n/**\n * Given some state of a partially computed sha256 hash and remaining preimage, complete the hash\n * @notice used for traditional partial hashing\n *\n * @param N - the maximum length of the message to hash\n * @param h - the intermediate hash state\n * @param msg - the remaining preimage to hash\n * @param message_size - the size of the current chunk\n * @param real_message_size - the total size of the original preimage\n * @return finalized sha256 hash\n */\npub fn partial_sha256_var_end(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n real_message_size: u32,\n) -> [u8; 32] {\n assert(message_size % BLOCK_SIZE == 0, \"Message size must be a multiple of the block size\");\n if std::runtime::is_unconstrained() {\n // Safety: running as an unconstrained function\n unsafe {\n h = __sha_partial_var_interstitial(h, msg, message_size);\n\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n\n finalize_last_sha256_block(h, real_message_size, msg)\n }\n } else {\n let (mut h, mut msg_block) = process_full_blocks(msg, message_size, h);\n finalize_sha256_blocks::(real_message_size, h, msg_block)\n }\n}\n\nunconstrained fn __sha_partial_var_interstitial(\n mut h: [u32; 8],\n msg: [u8; N],\n message_size: u32,\n) -> [u32; 8] {\n let num_full_blocks = message_size / BLOCK_SIZE;\n // Intermediate hash, starting with the canonical initial value\n // Pointer into msg_block on a 64 byte scale\n for i in 0..num_full_blocks {\n let msg_block = build_msg_block(msg, message_size, BLOCK_SIZE * i);\n h = sha256_compression(msg_block, h);\n }\n h\n}\n\nmod equivalence_test {\n\n #[test]\n fn test_implementations_agree(msg: [u8; 100], message_size: u64) {\n let message_size = message_size % 100;\n // Safety: test function\n let unconstrained_sha = unsafe { super::__sha256_var(msg, message_size as u32) };\n let sha = super::sha256_var(msg, message_size);\n assert_eq(sha, unconstrained_sha);\n }\n}\n" - }, - "42": { - "path": "std/option.nr", - "source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option {\n _is_some: bool,\n _value: T,\n}\n\nimpl Option {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect(self, message: fmtstr) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map(self, f: fn[Env](T) -> U) -> Option {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then(self, f: fn[Env](T) -> Option) -> Option {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option> into a Option.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option>) -> Option {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl Default for Option {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl Eq for Option\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl Hash for Option\nwhere\n T: Hash,\n{\n fn hash(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl Ord for Option\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n" - }, - "420": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/uint-note/src/uint_note.nr", - "source": "use dep::aztec::{\n context::{PrivateContext, PublicContext},\n history::nullifier_inclusion::ProveNullifierInclusion,\n keys::getters::{get_nsk_app, get_public_keys},\n macros::notes::custom_note,\n messages::logs::note,\n note::note_interface::{NoteHash, NoteType},\n oracle::random::random,\n protocol_types::{\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__NOTE_HASH, GENERATOR_INDEX__NOTE_NULLIFIER,\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT, PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::{compute_siloed_nullifier, poseidon2_hash_with_separator},\n traits::{Deserialize, FromField, Hash, Packable, Serialize, ToField},\n },\n};\n\n// UintNote supports partial notes, i.e. the ability to create an incomplete note in private, hiding certain values (the\n// owner, storage slot and randomness), and then completing the note in public with the ones missing (the amount).\n// Partial notes are being actively developed and are not currently fully supported via macros, and so we rely on the\n// #[custom_note] macro to implement it manually, resulting in some boilerplate. This is expected to be unnecessary once\n// macro support is expanded.\n\n/// A private note representing a numeric value associated to an account (e.g. a token balance).\n#[derive(Eq, Serialize, Packable)]\n#[custom_note]\npub struct UintNote {\n // The ordering of these fields is important given that it must:\n // a) match that of UintPartialNotePrivateContent, and\n // b) have the public field at the end\n // Correct ordering is checked by the tests in this module.\n\n /// The owner of the note, i.e. the account whose nullifier secret key is required to compute the nullifier.\n owner: AztecAddress,\n /// Random value, protects against note hash preimage attacks.\n randomness: Field,\n /// The number stored in the note.\n value: u128,\n}\n\nimpl NoteHash for UintNote {\n fn compute_note_hash(self, storage_slot: Field) -> Field {\n // Partial notes can be implemented by having the note hash be either the result of multiscalar multiplication\n // (MSM), or two rounds of poseidon. MSM results in more constraints and is only required when multiple variants\n // of partial notes are supported. Because UintNote has just one variant (where the value is public), we use\n // poseidon instead.\n\n // We must compute the same note hash as would be produced by a partial note created and completed with the same\n // values, so that notes all behave the same way regardless of how they were created. To achieve this, we\n // perform both steps of the partial note computation.\n\n // First we create the partial note from a commitment to the private content (including storage slot).\n let private_content =\n UintPartialNotePrivateContent { owner: self.owner, randomness: self.randomness };\n let partial_note = PartialUintNote {\n commitment: private_content.compute_partial_commitment(storage_slot),\n };\n\n // Then compute the completion note hash. In a real partial note this step would be performed in public.\n partial_note.compute_complete_note_hash(self.value)\n }\n\n // The nullifiers are nothing special - this is just the canonical implementation that would be injected by the\n // #[note] macro.\n\n fn compute_nullifier(\n self,\n context: &mut PrivateContext,\n note_hash_for_nullify: Field,\n ) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n\n unconstrained fn compute_nullifier_unconstrained(self, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m = get_public_keys(self.owner).npk_m;\n let owner_npk_m_hash = owner_npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [note_hash_for_nullify, secret],\n GENERATOR_INDEX__NOTE_NULLIFIER,\n )\n }\n}\n\nimpl UintNote {\n pub fn new(value: u128, owner: AztecAddress) -> Self {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n Self { value, owner, randomness }\n }\n\n pub fn get_value(self) -> u128 {\n self.value\n }\n\n pub fn get_owner(self) -> AztecAddress {\n self.owner\n }\n\n /// Creates a partial note that will hide the owner and storage slot but not the value, since the note will be later\n /// completed in public. This is a powerful technique for scenarios in which the value cannot be known in private\n /// (e.g. because it depends on some public state, such as a DEX).\n ///\n /// This function inserts a partial note validity commitment into the nullifier tree to be later on able to verify\n /// that the partial note and completer are legitimate. See function docs of `compute_validity_commitment` for more\n /// details.\n ///\n /// Each partial note should only be used once, since otherwise multiple notes would be linked together and known to\n /// belong to the same owner.\n ///\n /// As part of the partial note creation process, a log will be sent to `recipient` so that they can discover the\n /// note. `recipient` will typically be the same as `owner`.\n pub fn partial(\n owner: AztecAddress,\n storage_slot: Field,\n context: &mut PrivateContext,\n recipient: AztecAddress,\n completer: AztecAddress,\n ) -> PartialUintNote {\n // Safety: We use the randomness to preserve the privacy of the note recipient by preventing brute-forcing,\n // so a malicious sender could use non-random values to make the note less private. But they already know\n // the full note pre-image anyway, and so the recipient already trusts them to not disclose this\n // information. We can therefore assume that the sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We create a commitment to the private data, which we then use to construct the log we send to the recipient.\n let commitment = UintPartialNotePrivateContent { owner, randomness }\n .compute_partial_commitment(storage_slot);\n\n // Our partial note log encoding scheme includes a field with the tag of the public completion log, and we use\n // the commitment as the tag. This is good for multiple reasons:\n // - the commitment is uniquely tied to this partial note\n // - the commitment is already public information, so we're not revealing anything else\n // - we don't need to create any additional information, private or public, for the tag\n // - other contracts cannot impersonate us and emit logs with the same tag due to public log siloing\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n\n let encrypted_log =\n note::compute_partial_note_log(private_log_content, storage_slot, recipient);\n // Regardless of the original content size, the log is padded with random bytes up to\n // `PRIVATE_LOG_SIZE_IN_FIELDS` to prevent leaking information about the actual size.\n let length = encrypted_log.len();\n context.emit_private_log(encrypted_log, length);\n\n let partial_note = PartialUintNote { commitment };\n\n // Now we compute the validity commitment and push it to the nullifier tree. It can be safely pushed to\n // the nullifier tree since it uses its own separator, making collisions with actual note nullifiers\n // practically impossible.\n let validity_commitment = partial_note.compute_validity_commitment(completer);\n context.push_nullifier(validity_commitment);\n\n partial_note\n }\n}\n\n/// The private content of a partial UintNote, i.e. the fields that will remain private. All other note fields will be\n/// made public.\n#[derive(Packable)]\nstruct UintPartialNotePrivateContent {\n // The ordering of these fields is important given that it must match that of UintNote.\n // Correct ordering is checked by the tests in this module.\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl UintPartialNotePrivateContent {\n fn compute_partial_commitment(self, storage_slot: Field) -> Field {\n // Here we commit to all private values, including the storage slot.\n poseidon2_hash_with_separator(\n self.pack().concat([storage_slot]),\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\n#[derive(Packable)]\nstruct PrivateUintPartialNotePrivateLogContent {\n // The ordering of these fields is important given that it must:\n // a) match that of UintNote, and\n // b) have the public log tag at the beginning\n // Correct ordering is checked by the tests in this module.\n public_log_tag: Field,\n owner: AztecAddress,\n randomness: Field,\n}\n\nimpl NoteType for PrivateUintPartialNotePrivateLogContent {\n fn get_id() -> Field {\n UintNote::get_id()\n }\n}\n\n/// A partial instance of a UintNote. This value represents a private commitment to the owner, randomness and storage\n/// slot, but the value field has not yet been set. A partial note can be completed in public with the `complete`\n/// function (revealing the value to the public), resulting in a UintNote that can be used like any other one (except\n/// of course that its value is known).\n#[derive(Packable, Serialize, Deserialize, Eq)]\npub struct PartialUintNote {\n commitment: Field,\n}\n\nglobal NOTE_COMPLETION_LOG_LENGTH: u32 = 2;\n\nimpl PartialUintNote {\n /// Completes the partial note, creating a new note that can be used like any other UintNote.\n pub fn complete(self, context: &mut PublicContext, completer: AztecAddress, value: u128) {\n // A note with a value of zero is valid, but we cannot currently complete a partial note with such a value\n // because this will result in the completion log having its last field set to 0. Public logs currently do not\n // track their length, and so trailing zeros are simply trimmed. This results in the completion log missing its\n // last field (the value), and note discovery failing.\n // TODO(#11636): remove this\n assert(value != 0, \"Cannot complete a PartialUintNote with a value of 0\");\n\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n assert(\n context.nullifier_exists(validity_commitment, context.this_address()),\n \"Invalid partial note or completer\",\n );\n\n // We need to do two things:\n // - emit a public log containing the public fields (the value). The contract will later find it by searching\n // for the expected tag (which is simply the partial note commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_public_log(self.compute_note_completion_log(value));\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Completes the partial note, creating a new note that can be used like any other UintNote. Same as `complete`\n /// function but works from private context.\n pub fn complete_from_private(\n self,\n context: &mut PrivateContext,\n completer: AztecAddress,\n value: u128,\n ) {\n // We verify that the partial note we're completing is valid (i.e. completer is correct, it uses the correct\n // state variable's storage slot, and it is internally consistent).\n let validity_commitment = self.compute_validity_commitment(completer);\n // `prove_nullifier_inclusion` function expects the nullifier to be siloed (hashed with the address of\n // the contract that emitted the nullifier) as it checks the value directly against the nullifier tree and all\n // the nullifiers in the tree are siloed by the protocol.\n let siloed_validity_commitment =\n compute_siloed_nullifier(context.this_address(), validity_commitment);\n context.get_block_header().prove_nullifier_inclusion(siloed_validity_commitment);\n\n // We need to do two things:\n // - emit an unencrypted log containing the public fields (the value) via the private log channel. The\n // contract will later find it by searching for the expected tag (which is simply the partial note\n // commitment).\n // - insert the completion note hash (i.e. the hash of the note) into the note hash tree. This is typically\n // only done in private to hide the preimage of the hash that is inserted, but completed partial notes are\n // inserted in public as the public values are provided and the note hash computed.\n context.emit_private_log(\n self.compute_note_completion_log_padded_for_private_log(value),\n NOTE_COMPLETION_LOG_LENGTH,\n );\n context.push_note_hash(self.compute_complete_note_hash(value));\n }\n\n /// Computes a validity commitment for this partial note. The commitment cryptographically binds the note's private\n /// data with the designated completer address. When the note is later completed in public execution, we can load\n /// this commitment from the nullifier tree and verify that both the partial note (e.g. that the storage slot\n /// corresponds to the correct owner, and that we're using the correct state variable) and completer are\n /// legitimate.\n pub fn compute_validity_commitment(self, completer: AztecAddress) -> Field {\n poseidon2_hash_with_separator(\n [self.commitment, completer.to_field()],\n GENERATOR_INDEX__PARTIAL_NOTE_VALIDITY_COMMITMENT,\n )\n }\n\n fn compute_note_completion_log(self, value: u128) -> [Field; NOTE_COMPLETION_LOG_LENGTH] {\n // The first field of this log must be the tag that the recipient of the partial note private field logs\n // expects, which is equal to the partial note commitment.\n [self.commitment, value.to_field()]\n }\n\n fn compute_note_completion_log_padded_for_private_log(\n self,\n value: u128,\n ) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n let note_completion_log = self.compute_note_completion_log(value);\n let padding = [0; PRIVATE_LOG_SIZE_IN_FIELDS - NOTE_COMPLETION_LOG_LENGTH];\n note_completion_log.concat(padding)\n }\n\n fn compute_complete_note_hash(self, value: u128) -> Field {\n // Here we finalize the note hash by including the (public) value into the partial note commitment. Note that we\n // use the same generator index as we used for the first round of poseidon - this is not an issue.\n poseidon2_hash_with_separator(\n [self.commitment, value.to_field()],\n GENERATOR_INDEX__NOTE_HASH,\n )\n }\n}\n\nimpl ToField for PartialUintNote {\n fn to_field(self) -> Field {\n self.commitment\n }\n}\n\nimpl FromField for PartialUintNote {\n fn from_field(field: Field) -> Self {\n Self { commitment: field }\n }\n}\n\nmod test {\n use super::{\n PartialUintNote, PrivateUintPartialNotePrivateLogContent, UintNote,\n UintPartialNotePrivateContent,\n };\n use dep::aztec::{\n note::note_interface::NoteHash,\n protocol_types::{address::AztecAddress, traits::{Deserialize, FromField, Packable}},\n utils::array::subarray,\n };\n\n global value: u128 = 17;\n global randomness: Field = 42;\n global owner: AztecAddress = AztecAddress::from_field(50);\n global storage_slot: Field = 13;\n\n #[test]\n fn note_hash_matches_completed_partial_note_hash() {\n // Tests that a UintNote has the same note hash as a PartialUintNote created and then completed with the same\n // private values. This requires for the same hash function to be used in both flows, with the fields in the\n // same order.\n\n let note = UintNote { value, randomness, owner };\n let note_hash = note.compute_note_hash(storage_slot);\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n\n let partial_note = PartialUintNote {\n commitment: partial_note_private_content.compute_partial_commitment(storage_slot),\n };\n let completed_partial_note_hash = partial_note.compute_complete_note_hash(value);\n\n assert_eq(note_hash, completed_partial_note_hash);\n }\n\n #[test]\n fn unpack_from_partial_note_encoding() {\n // Tests that the packed representation of a regular UintNote can be reconstructed given the partial note\n // private fields log and the public completion log, ensuring the recipient will be able to compute the\n // completed note as if it were a regular UintNote.\n\n let note = UintNote { value, randomness, owner };\n\n let partial_note_private_content = UintPartialNotePrivateContent { owner, randomness };\n let commitment = partial_note_private_content.compute_partial_commitment(storage_slot);\n\n let private_log_content = PrivateUintPartialNotePrivateLogContent {\n owner,\n randomness,\n public_log_tag: commitment,\n };\n // The following is a misuse of the `deserialize` function, but this is just a test and it's better than\n // letting devs manually construct it when they shouldn't be able to.\n let partial_note = PartialUintNote::deserialize([commitment]);\n\n // The first field of the partial note private content is the public completion log tag, so it should match the\n // first field of the public log.\n assert_eq(\n private_log_content.pack()[0],\n partial_note.compute_note_completion_log(value)[0],\n );\n\n // Then we extract all fields except the first of both logs (i.e. the public log tag), and combine them to\n // produce the note's packed representation. This requires that the members of the intermediate structs are in\n // the same order as in UintNote.\n let private_log_without_public_tag: [_; 2] = subarray(private_log_content.pack(), 1);\n let public_log_without_tag: [_; 1] =\n subarray(partial_note.compute_note_completion_log(value), 1);\n\n assert_eq(private_log_without_public_tag.concat(public_log_without_tag), note.pack());\n }\n}\n" - }, - "43": { - "path": "std/panic.nr", - "source": "pub fn panic(message: fmtstr) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n" - }, - "5": { - "path": "std/cmp.nr", - "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: TypeDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields_as_written().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { $crate::cmp::Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u128 {\n fn eq(self, other: u128) -> bool {\n self == other\n }\n}\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n if result {\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n }\n result\n }\n}\n\nimpl Eq for str {\n fn eq(self, other: str) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: TypeDefinition) -> Quoted {\n let name = quote { $crate::cmp::Ord };\n let signature = quote { fn cmp(_self: Self, _other: Self) -> $crate::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == $crate::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = $crate::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, name, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u128 {\n fn cmp(self, other: u128) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n result\n }\n}\n\nimpl Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let self_len = self.len();\n let other_len = other.len();\n let min_len = if self_len < other_len {\n self_len\n } else {\n other_len\n };\n\n let mut result = Ordering::equal();\n for i in 0..min_len {\n if result == Ordering::equal() {\n result = self[i].cmp(other[i]);\n }\n }\n\n if result != Ordering::equal() {\n result\n } else {\n self_len.cmp(other_len)\n }\n }\n}\n\nimpl Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use super::{Eq, max, min, Ord};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0_u64, 1), 0);\n assert_eq(min(0_u64, 0), 0);\n assert_eq(min(1_u64, 1), 1);\n assert_eq(min(255_u8, 0), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0_u64, 1), 1);\n assert_eq(max(0_u64, 0), 0);\n assert_eq(max(1_u64, 1), 1);\n assert_eq(max(255_u8, 0), 255);\n }\n\n #[test]\n fn correctly_handles_unequal_length_slices() {\n let slice_1 = &[0, 1, 2, 3];\n let slice_2 = &[0, 1, 2];\n assert(!slice_1.eq(slice_2));\n }\n\n #[test]\n fn lexicographic_ordering_for_slices() {\n assert(&[2_u32].cmp(&[1_u32, 1_u32, 1_u32]) == super::Ordering::greater());\n assert(&[1_u32, 2_u32].cmp(&[1_u32, 2_u32, 3_u32]) == super::Ordering::less());\n }\n}\n" - }, - "50": { - "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/lib.nr", - "source": "pub fn bytes_to_u128_limbs(bytes: [u8; 32]) -> (u128, u128) {\n let mut high: u128 = 0;\n let mut low: u128 = 0;\n for i in 0..16 {\n high = (high << 8) + (bytes[i] as u128);\n }\n for i in 16..32 {\n low = (low << 8) + (bytes[i] as u128);\n }\n (high, low)\n}\n\npub fn u128_limbs_to_bytes(high: u128, low: u128) -> [u8; 32] {\n let mut bytes: [u8; 32] = [0; 32];\n\n let mut temp = high;\n for i in 0..16 {\n bytes[15 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n temp = low;\n for i in 0..16 {\n bytes[31 - i] = (temp & 0xff) as u8;\n temp >>= 8;\n }\n\n bytes\n}\n" - }, - "51": { - "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/main.nr", - "source": "// @@ @@@\n// @@@\n// @@@ @@ @@@@ @@@@@ @ @ @@@@@\n// @@@@@@@@@ @@@@@@ @@@@ @@@@@ @@@ @@@@@@ @@@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@ @@@ @@@ @@@ @@@\n// @@@ @@@ @@@@ @@@@@ @@@ @@@ @@@\n// @@@@@ @@@ @@@@@@@@@ @@@ @@@ @@@ @@@\n\nmod lib;\nmod types;\nuse dep::aztec::macros::aztec;\n\n#[aztec]\npub contract Train {\n use std::meta::derive;\n\n use aztec::macros::{\n functions::{initializer, internal, private, public, utility, view},\n notes::note,\n storage::storage,\n };\n\n use dep::aztec::{\n messages::logs::note::encode_and_encrypt_note,\n protocol_types::{address::AztecAddress, traits::{Deserialize, Packable, Serialize}},\n state_vars::{DelayedPublicMutable, map::Map, private_immutable::PrivateImmutable},\n };\n use dep::sha256;\n use dep::token::Token;\n\n use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\n use crate::types::events::{\n TokenCommitted, TokenLockAdded, TokenLockedFirst, TokenLockedSecond, TokenRedeemed,\n TokenRefunded,\n };\n #[derive(Packable)]\n #[note]\n #[derive(Eq)]\n struct HTLC_Private {\n owner: AztecAddress,\n randomness: Field,\n }\n #[derive(Eq, Packable, Serialize, Deserialize)]\n pub struct HTLC_Public {\n src_receiver: AztecAddress,\n amount: u128,\n token: AztecAddress,\n hashlock_high: u128,\n hashlock_low: u128,\n secret_high: u128,\n secret_low: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n claimed: u8,\n }\n\n #[public]\n #[initializer]\n fn constructor() {}\n\n #[storage]\n struct Storage {\n contracts_private: Map, Context>,\n contracts_public: Map, Context>,\n }\n\n #[private]\n fn commit_private_user(\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n randomness: Field,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .commit_public_user(\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n Id,\n src_receiver,\n timelock,\n token,\n amount,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn commit_public_user(\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n Id: Field,\n src_receiver: AztecAddress,\n timelock: u64,\n token: AztecAddress,\n amount: u128,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = HTLC_Public {\n src_receiver: src_receiver,\n amount: amount,\n token: token,\n hashlock_high: 0 as u128,\n hashlock_low: 0 as u128,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: 0 as u128,\n ownership_hash_low: 0 as u128,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n let log_msg = TokenCommitted {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: src_receiver,\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn add_lock_private_user(Id: Field, hashlock_high: u128, hashlock_low: u128, timelock: u64) {\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let htlc_private = storage.contracts_private.at(Id).get_note();\n assert(htlc_private.owner == context.msg_sender(), \"NoAllowance\");\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).add_lock_public_user(Id, hashlock, timelock).enqueue(\n &mut context,\n );\n }\n\n #[internal]\n #[public]\n fn add_lock_public_user(Id: Field, hashlock: [u8; 32], timelock: u64) {\n assert(context.timestamp() + 900 < timelock, \"InvalidTimelock\");\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.hashlock_high == (0 as u128), \"HashlockAlreadySet\");\n assert(htlc_public.hashlock_low == (0 as u128), \"HashlockAlreadySet\");\n\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: timelock,\n claimed: htlc_public.claimed,\n };\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenLockAdded { Id, hashlock, timelock };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn refund_private(Id: Field) {\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).refund_public(Id).enqueue(&mut context);\n\n let htlc_private = storage.contracts_private.at(Id).get_note();\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_private.owner)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n\n #[public]\n #[internal]\n fn refund_public(Id: Field) {\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n assert(htlc_public.timelock < context.timestamp(), \"NotPassedTimelock\");\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: htlc_public.secret_high,\n secret_low: htlc_public.secret_low,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 2 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n let log_msg = TokenRefunded { Id };\n context.emit_public_log(log_msg.pack());\n }\n\n #[private]\n fn lock_private_solver(\n Id: Field,\n hashlock_high: u128,\n hashlock_low: u128,\n amount: u128,\n ownership_hash_high: u128,\n ownership_hash_low: u128,\n timelock: u64,\n token: AztecAddress,\n randomness: Field,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n assert(amount > 0, \"FundsNotSent\");\n let hashlock = u128_limbs_to_bytes(hashlock_high, hashlock_low);\n let ownership_hash = u128_limbs_to_bytes(ownership_hash_high, ownership_hash_low);\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address())\n .lock_public_solver(\n Id,\n hashlock,\n ownership_hash,\n amount,\n token,\n timelock,\n src_asset,\n dst_chain,\n dst_asset,\n dst_address,\n )\n .enqueue(&mut context);\n\n let htlc_note = HTLC_Private { owner: context.msg_sender(), randomness: randomness };\n storage.contracts_private.at(Id).initialize(htlc_note).emit(encode_and_encrypt_note(\n &mut context,\n context.msg_sender(),\n ));\n\n Token::at(token)\n .transfer_to_public(context.msg_sender(), context.this_address(), amount, randomness)\n .call(&mut context);\n }\n\n #[internal]\n #[public]\n fn lock_public_solver(\n Id: Field,\n hashlock: [u8; 32],\n ownership_hash: [u8; 32],\n amount: u128,\n token: AztecAddress,\n timelock: u64,\n src_asset: str<30>,\n dst_chain: str<30>,\n dst_asset: str<30>,\n dst_address: str<90>,\n ) {\n let htlc_public_current = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public_current.amount == 0, \"HTLCAlreadyExists\");\n assert(context.timestamp() + 1800 < timelock, \"InvalidTimelock\");\n let hashlock_tuple = bytes_to_u128_limbs(hashlock);\n let ownership_hash_tuple = bytes_to_u128_limbs(ownership_hash);\n let htlc_public = HTLC_Public {\n src_receiver: AztecAddress::zero(),\n amount: amount,\n token: token,\n hashlock_high: hashlock_tuple.0,\n hashlock_low: hashlock_tuple.1,\n secret_high: 0 as u128,\n secret_low: 0 as u128,\n ownership_hash_high: ownership_hash_tuple.0,\n ownership_hash_low: ownership_hash_tuple.1,\n timelock: timelock,\n claimed: 1 as u8,\n };\n storage.contracts_public.at(Id).schedule_value_change(htlc_public);\n\n let log_msg_1 = TokenLockedFirst {\n Id: Id,\n amount: amount,\n token: token,\n timelock: timelock,\n src_receiver: AztecAddress::zero(),\n src_asset: src_asset,\n dst_chain: dst_chain,\n dst_asset: dst_asset,\n dst_address: dst_address,\n };\n\n let log_msg_2 =\n TokenLockedSecond { Id: Id, hashlock: hashlock, ownership_hash: ownership_hash };\n\n context.emit_public_log(log_msg_1.pack());\n context.emit_public_log(log_msg_2.pack());\n }\n\n #[private]\n fn redeem_private(\n Id: Field,\n secret_high: u128,\n secret_low: u128,\n ownership_key_high: u128,\n ownership_key_low: u128,\n ) {\n let secret = u128_limbs_to_bytes(secret_high, secret_low);\n let ownership_key = u128_limbs_to_bytes(ownership_key_high, ownership_key_low);\n\n // Safety: The contract intentionally exposes these parameters as public.\n Train::at(context.this_address()).redeem_public(Id, secret, ownership_key).enqueue(\n &mut context,\n );\n let htlc_public = storage.contracts_public.at(Id).get_current_value();\n if (htlc_public.ownership_hash_high == 0 as u128) {\n if htlc_public.ownership_hash_low == 0 as u128 {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(htlc_public.src_receiver)\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n } else {\n let partial_note = Token::at(htlc_public.token)\n .prepare_private_balance_increase(context.msg_sender())\n .call(&mut context);\n Token::at(htlc_public.token)\n .finalize_transfer_to_private(htlc_public.amount, partial_note)\n .enqueue(&mut context);\n }\n }\n\n #[public]\n #[internal]\n fn redeem_public(Id: Field, secret: [u8; 32], ownership_key: [u8; 32]) {\n let mut htlc_public = storage.contracts_public.at(Id).get_current_value();\n assert(htlc_public.amount > 0, \"HTLCNotExists\"); // If it doesn't exist, all parameters will default to zero values.\n let hashed_secret = sha256::sha256_var(secret, secret.len() as u64);\n let hashed_secret_tuple = bytes_to_u128_limbs(hashed_secret);\n assert(htlc_public.hashlock_high == hashed_secret_tuple.0, \"HashlockNotMatch\");\n assert(htlc_public.hashlock_low == hashed_secret_tuple.1, \"HashlockNotMatch\");\n assert(htlc_public.claimed == 1, \"AlreadyClaimed\");\n\n if (htlc_public.ownership_hash_high != 0 as u128) {\n if htlc_public.ownership_hash_low != 0 as u128 {\n let ownership_key_hashed =\n sha256::sha256_var(ownership_key, ownership_key.len() as u64);\n let ownership_key_tuple = bytes_to_u128_limbs(ownership_key_hashed);\n assert(htlc_public.ownership_hash_high == ownership_key_tuple.0, \"NotAnOwner\");\n assert(htlc_public.ownership_hash_low == ownership_key_tuple.1, \"NotAnOwner\");\n }\n }\n\n let secret_limbs = bytes_to_u128_limbs(secret);\n\n let modified_htlc_public = HTLC_Public {\n src_receiver: htlc_public.src_receiver,\n amount: htlc_public.amount,\n token: htlc_public.token,\n hashlock_high: htlc_public.hashlock_high,\n hashlock_low: htlc_public.hashlock_low,\n secret_high: secret_limbs.0,\n secret_low: secret_limbs.1,\n ownership_hash_high: htlc_public.ownership_hash_high,\n ownership_hash_low: htlc_public.ownership_hash_low,\n timelock: htlc_public.timelock,\n claimed: 3 as u8,\n };\n\n storage.contracts_public.at(Id).schedule_value_change(modified_htlc_public);\n\n let log_msg = TokenRedeemed {\n Id: Id,\n hashlock: u128_limbs_to_bytes(htlc_public.hashlock_high, htlc_public.hashlock_low),\n secret: secret,\n };\n\n context.emit_public_log(log_msg.pack());\n }\n\n // This utility function should be invoked by the frontend before each function call\n // where the existence or non-existence of an HTLC is a critical security check.\n #[utility]\n unconstrained fn is_contract_initialized(id: Field) -> bool {\n storage.contracts_private.at(id).is_initialized()\n }\n\n #[view]\n #[public]\n fn get_htlc_public(key: Field) -> pub HTLC_Public {\n storage.contracts_public.at(key).get_current_value()\n }\n}\n" - }, - "52": { - "path": "/home/nerses/contracts/chains/aztec/contracts/train/src/types/events.nr", - "source": "use crate::lib::{bytes_to_u128_limbs, u128_limbs_to_bytes};\nuse dep::aztec::protocol_types::address::AztecAddress;\nuse dep::aztec::protocol_types::traits::{Packable, Serialize};\n\n#[derive(Serialize)]\npub struct TokenCommitted {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenCommitted {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x7A3F2B1C;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenCommitted {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockAdded {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub timelock: u64,\n}\n\nimpl Packable for TokenLockAdded {\n let N: u32 = 5;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 5];\n out[0] = 0xC1D4E792;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n out[4] = self.timelock as Field;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let timelock = fields[4] as u64;\n TokenLockAdded { Id, hashlock, timelock }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRefunded {\n pub Id: Field,\n}\n\nimpl Packable for TokenRefunded {\n let N: u32 = 2;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 2];\n out[0] = 0x2D17C6B8;\n out[1] = self.Id;\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n TokenRefunded { Id }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenRedeemed {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub secret: [u8; 32],\n}\n\nimpl Packable for TokenRedeemed {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x4F8B9A3E;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (secret_high, secret_low) = bytes_to_u128_limbs(self.secret);\n out[4] = secret_high as Field;\n out[5] = secret_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n let Id = fields[1];\n let hashlock = u128_limbs_to_bytes(fields[2] as u128, fields[3] as u128);\n let secret = u128_limbs_to_bytes(fields[4] as u128, fields[5] as u128);\n\n TokenRedeemed { Id, hashlock, secret }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedFirst {\n pub Id: Field,\n pub amount: u128,\n pub token: AztecAddress,\n pub timelock: u64,\n pub src_receiver: AztecAddress,\n pub src_asset: str<30>,\n pub dst_chain: str<30>,\n pub dst_asset: str<30>,\n pub dst_address: str<90>,\n}\n\nimpl Packable for TokenLockedFirst {\n let N: u32 = 12;\n fn pack(self) -> [Field; Self::N] {\n let zero: Field = 0;\n let mut out = [zero; 12];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n out[2] = self.amount as Field;\n out[3] = self.token.inner;\n out[4] = self.timelock as Field;\n out[5] = self.src_receiver.inner;\n\n let src_asset_byte_array = self.src_asset.as_bytes();\n let mut src_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..src_asset_byte_array.len() {\n src_asset_byte_array_filled[i] = src_asset_byte_array[i];\n }\n out[6] = Field::from_be_bytes::<30>(src_asset_byte_array_filled);\n\n let dst_chain_byte_array = self.dst_chain.as_bytes();\n let mut dst_chain_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_chain_byte_array.len() {\n dst_chain_byte_array_filled[i] = dst_chain_byte_array[i];\n }\n out[7] = Field::from_be_bytes::<30>(dst_chain_byte_array_filled);\n\n let dst_asset_byte_array = self.dst_asset.as_bytes();\n let mut dst_asset_byte_array_filled = [0 as u8; 30];\n for i in 0..dst_asset_byte_array.len() {\n dst_asset_byte_array_filled[i] = dst_asset_byte_array[i];\n }\n out[8] = Field::from_be_bytes::<30>(dst_asset_byte_array_filled);\n\n let dst_address_byte_array = self.dst_address.as_bytes();\n let mut dst_address_byte_array_filled_1 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_2 = [0 as u8; 30];\n let mut dst_address_byte_array_filled_3 = [0 as u8; 30];\n\n for i in 0..30 {\n dst_address_byte_array_filled_1[i] = dst_address_byte_array[i];\n dst_address_byte_array_filled_2[i] = dst_address_byte_array[i + 30];\n dst_address_byte_array_filled_3[i] = dst_address_byte_array[i + 60];\n }\n\n out[9] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_1);\n out[10] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_2);\n out[11] = Field::from_be_bytes::<30>(dst_address_byte_array_filled_3);\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedFirst {\n Id: fields[1] as Field,\n amount: 0 as u128,\n token: AztecAddress::zero(),\n timelock: 0 as u64,\n src_receiver: AztecAddress::zero(),\n src_asset: \"000000000000000000000000000000\",\n dst_chain: \"000000000000000000000000000000\",\n dst_asset: \"000000000000000000000000000000\",\n dst_address: \"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n }\n }\n}\n\n#[derive(Serialize)]\npub struct TokenLockedSecond {\n pub Id: Field,\n pub hashlock: [u8; 32],\n pub ownership_hash: [u8; 32],\n}\n\nimpl Packable for TokenLockedSecond {\n let N: u32 = 6;\n fn pack(self) -> [Field; Self::N] {\n let mut out = [0 as Field; 6];\n out[0] = 0x9E5A4F03;\n out[1] = self.Id;\n\n let (hashlock_high, hashlock_low) = bytes_to_u128_limbs(self.hashlock);\n out[2] = hashlock_high as Field;\n out[3] = hashlock_low as Field;\n\n let (ownership_hash_high, ownership_hash_low) = bytes_to_u128_limbs(self.ownership_hash);\n out[4] = ownership_hash_high as Field;\n out[5] = ownership_hash_low as Field;\n\n out\n }\n\n fn unpack(fields: [Field; Self::N]) -> Self {\n assert(false, \"unpack not implemented\");\n TokenLockedSecond {\n Id: fields[1] as Field,\n hashlock: [0 as u8; 32],\n ownership_hash: [0 as u8; 32],\n }\n }\n}\n" - }, - "6": { - "path": "std/collections/bounded_vec.nr", - "source": "use crate::{cmp::Eq, convert::From, runtime::is_unconstrained, static_assert};\n\n/// A `BoundedVec` is a growable storage similar to a `Vec` except that it\n/// is bounded with a maximum possible length. Unlike `Vec`, `BoundedVec` is not implemented\n/// via slices and thus is not subject to the same restrictions slices are (notably, nested\n/// slices - and thus nested vectors as well - are disallowed).\n///\n/// Since a BoundedVec is backed by a normal array under the hood, growing the BoundedVec by\n/// pushing an additional element is also more efficient - the length only needs to be increased\n/// by one.\n///\n/// For these reasons `BoundedVec` should generally be preferred over `Vec` when there\n/// is a reasonable maximum bound that can be placed on the vector.\n///\n/// Example:\n///\n/// ```noir\n/// let mut vector: BoundedVec = BoundedVec::new();\n/// for i in 0..5 {\n/// vector.push(i);\n/// }\n/// assert(vector.len() == 5);\n/// assert(vector.max_len() == 10);\n/// ```\npub struct BoundedVec {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl BoundedVec {\n /// Creates a new, empty vector of length zero.\n ///\n /// Since this container is backed by an array internally, it still needs an initial value\n /// to give each element. To resolve this, each element is zeroed internally. This value\n /// is guaranteed to be inaccessible unless `get_unchecked` is used.\n ///\n /// Example:\n ///\n /// ```noir\n /// let empty_vector: BoundedVec = BoundedVec::new();\n /// assert(empty_vector.len() == 0);\n /// ```\n ///\n /// Note that whenever calling `new` the maximum length of the vector should always be specified\n /// via a type signature:\n ///\n /// ```noir\n /// fn good() -> BoundedVec {\n /// // Ok! MaxLen is specified with a type annotation\n /// let v1: BoundedVec = BoundedVec::new();\n /// let v2 = BoundedVec::new();\n ///\n /// // Ok! MaxLen is known from the type of `good`'s return value\n /// v2\n /// }\n ///\n /// fn bad() {\n /// // Error: Type annotation needed\n /// // The compiler can't infer `MaxLen` from the following code:\n /// let mut v3 = BoundedVec::new();\n /// v3.push(5);\n /// }\n /// ```\n ///\n /// This defaulting of `MaxLen` (and numeric generics in general) to zero may change in future noir versions\n /// but for now make sure to use type annotations when using bounded vectors. Otherwise, you will receive a\n /// constraint failure at runtime when the vec is pushed to.\n pub fn new() -> Self {\n let zeroed = crate::mem::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this\n /// will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// let last = v.get(v.len() - 1);\n /// assert(first != last);\n /// }\n /// ```\n pub fn get(self, index: u32) -> T {\n assert(index < self.len, \"Attempted to read past end of BoundedVec\");\n self.get_unchecked(index)\n }\n\n /// Retrieves an element from the vector at the given index, starting from zero, without\n /// performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element,\n /// it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn sum_of_first_three(v: BoundedVec) -> u32 {\n /// // Always ensure the length is larger than the largest\n /// // index passed to get_unchecked\n /// assert(v.len() > 2);\n /// let first = v.get_unchecked(0);\n /// let second = v.get_unchecked(1);\n /// let third = v.get_unchecked(2);\n /// first + second + third\n /// }\n /// ```\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Writes an element to the vector at the given index, starting from zero.\n ///\n /// If the given index is equal to or greater than the length of the vector, this will issue a constraint failure.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn foo(v: BoundedVec) {\n /// let first = v.get(0);\n /// assert(first != 42);\n /// v.set(0, 42);\n /// let new_first = v.get(0);\n /// assert(new_first == 42);\n /// }\n /// ```\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Writes an element to the vector at the given index, starting from zero, without performing a bounds check.\n ///\n /// Since this function does not perform a bounds check on length before accessing the element, it is unsafe! Use at your own risk!\n ///\n /// Example:\n ///\n /// ```noir\n /// fn set_unchecked_example() {\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([1, 2]);\n ///\n /// // Here we're safely writing within the valid range of `vec`\n /// // `vec` now has the value [42, 2]\n /// vec.set_unchecked(0, 42);\n ///\n /// // We can then safely read this value back out of `vec`.\n /// // Notice that we use the checked version of `get` which would prevent reading unsafe values.\n /// assert_eq(vec.get(0), 42);\n ///\n /// // We've now written past the end of `vec`.\n /// // As this index is still within the maximum potential length of `v`,\n /// // it won't cause a constraint failure.\n /// vec.set_unchecked(2, 42);\n /// println(vec);\n ///\n /// // This will write past the end of the maximum potential length of `vec`,\n /// // it will then trigger a constraint failure.\n /// vec.set_unchecked(5, 42);\n /// println(vec);\n /// }\n /// ```\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\n }\n\n /// Pushes an element to the end of the vector. This increases the length\n /// of the vector by one.\n ///\n /// Panics if the new length of the vector will be greater than the max length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// v.push(1);\n /// v.push(2);\n ///\n /// // Panics with failed assertion \"push out of bounds\"\n /// v.push(3);\n /// ```\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n /// Returns the current length of this vector\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// assert(v.len() == 0);\n ///\n /// v.push(100);\n /// assert(v.len() == 1);\n ///\n /// v.push(200);\n /// v.push(300);\n /// v.push(400);\n /// assert(v.len() == 4);\n ///\n /// let _ = v.pop();\n /// let _ = v.pop();\n /// assert(v.len() == 2);\n /// ```\n pub fn len(self) -> u32 {\n self.len\n }\n\n /// Returns the maximum length of this vector. This is always\n /// equal to the `MaxLen` parameter this vector was initialized with.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.max_len() == 5);\n /// v.push(10);\n /// assert(v.max_len() == 5);\n /// ```\n pub fn max_len(_self: BoundedVec) -> u32 {\n MaxLen\n }\n\n /// Returns the internal array within this vector.\n ///\n /// Since arrays in Noir are immutable, mutating the returned storage array will not mutate\n /// the storage held internally by this vector.\n ///\n /// Note that uninitialized elements may be zeroed out!\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n ///\n /// assert(v.storage() == [0, 0, 0, 0, 0]);\n ///\n /// v.push(57);\n /// assert(v.storage() == [57, 0, 0, 0, 0]);\n /// ```\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n /// Pushes each element from the given array to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_array([2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_array(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the given slice to this vector.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut vec: BoundedVec = BoundedVec::new();\n /// vec.extend_from_slice(&[2, 4]);\n ///\n /// assert(vec.len == 2);\n /// assert(vec.get(0) == 2);\n /// assert(vec.get(1) == 4);\n /// ```\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n /// Pushes each element from the other vector to this vector. The length of\n /// the other vector is left unchanged.\n ///\n /// Panics if pushing each element would cause the length of this vector\n /// to exceed the maximum length.\n ///\n /// ```noir\n /// let mut v1: BoundedVec = BoundedVec::new();\n /// let mut v2: BoundedVec = BoundedVec::new();\n ///\n /// v2.extend_from_array([1, 2, 3]);\n /// v1.extend_from_bounded_vec(v2);\n ///\n /// assert(v1.storage() == [1, 2, 3, 0, 0]);\n /// assert(v2.storage() == [1, 2, 3, 0, 0, 0, 0]);\n /// ```\n pub fn extend_from_bounded_vec(&mut self, vec: BoundedVec) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n if is_unconstrained() {\n for i in 0..append_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n }\n self.len = new_len;\n }\n\n /// Creates a new vector, populating it with values derived from an array input.\n /// The maximum length of the vector is determined based on the type signature.\n ///\n /// Example:\n ///\n /// ```noir\n /// let bounded_vec: BoundedVec = BoundedVec::from_array([1, 2, 3])\n /// ```\n pub fn from_array(array: [T; Len]) -> Self {\n static_assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n /// Pops the element at the end of the vector. This will decrease the length\n /// of the vector by one.\n ///\n /// Panics if the vector is empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.push(1);\n /// v.push(2);\n ///\n /// let two = v.pop();\n /// let one = v.pop();\n ///\n /// assert(two == 2);\n /// assert(one == 1);\n ///\n /// // error: cannot pop from an empty vector\n /// let _ = v.pop();\n /// ```\n pub fn pop(&mut self) -> T {\n assert(self.len > 0, \"cannot pop from an empty vector\");\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::mem::zeroed();\n elem\n }\n\n /// Returns true if the given predicate returns true for any element\n /// in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let mut v: BoundedVec = BoundedVec::new();\n /// v.extend_from_array([2, 4, 6]);\n ///\n /// let all_even = !v.any(|elem: u32| elem % 2 != 0);\n /// assert(all_even);\n /// ```\n pub fn any(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n if is_unconstrained() {\n for i in 0..self.len {\n ret |= predicate(self.storage[i]);\n }\n } else {\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n }\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.map(|value| value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn map(self, f: fn[Env](T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Creates a new vector of equal size by calling a closure on each element\n /// in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let result = vec.mapi(|i, value| i + value * 2);\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn mapi(self, f: fn[Env](u32, T) -> U) -> BoundedVec {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n\n if is_unconstrained() {\n for i in 0..self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(i, self.get_unchecked(i));\n }\n }\n }\n\n ret\n }\n\n /// Calls a closure on each element in this vector.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_each(|value| result.push(value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 4, 6, 8]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_each(self, f: fn[Env](T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Calls a closure on each element in this vector, along with its index.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n /// let mut result = BoundedVec::::new();\n /// vec.for_eachi(|i, value| result.push(i + value * 2));\n ///\n /// let expected = BoundedVec::from_array([2, 5, 8, 11]);\n /// assert_eq(result, expected);\n /// ```\n pub fn for_eachi(self, f: fn[Env](u32, T) -> ()) {\n if is_unconstrained() {\n for i in 0..self.len() {\n f(i, self.get_unchecked(i));\n }\n } else {\n for i in 0..MaxLen {\n if i < self.len() {\n f(i, self.get_unchecked(i));\n }\n }\n }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function will zero out any elements at or past index `len` of `array`.\n /// This incurs an extra runtime cost of O(MaxLen). If you are sure your array is\n /// zeroed after that index, you can use `from_parts_unchecked` to remove the extra loop.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n /// ```\n pub fn from_parts(mut array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n let zeroed = crate::mem::zeroed();\n\n if is_unconstrained() {\n for i in len..MaxLen {\n array[i] = zeroed;\n }\n } else {\n for i in 0..MaxLen {\n if i >= len {\n array[i] = zeroed;\n }\n }\n }\n\n BoundedVec { storage: array, len }\n }\n\n /// Creates a new BoundedVec from the given array and length.\n /// The given length must be less than or equal to the length of the array.\n ///\n /// This function is unsafe because it expects all elements past the `len` index\n /// of `array` to be zeroed, but does not check for this internally. Use `from_parts`\n /// for a safe version of this function which does zero out any indices past the\n /// given length. Invalidating this assumption can notably cause `BoundedVec::eq`\n /// to give incorrect results since it will check even elements past `len`.\n ///\n /// Example:\n ///\n /// ```noir\n /// let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n /// assert_eq(vec.len(), 3);\n ///\n /// // invalid use!\n /// let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n /// let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n ///\n /// // both vecs have length 3 so we'd expect them to be equal, but this\n /// // fails because elements past the length are still checked in eq\n /// assert_eq(vec1, vec2); // fails\n /// ```\n pub fn from_parts_unchecked(array: [T; MaxLen], len: u32) -> Self {\n assert(len <= MaxLen);\n BoundedVec { storage: array, len }\n }\n}\n\nimpl Eq for BoundedVec\nwhere\n T: Eq,\n{\n fn eq(self, other: BoundedVec) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n if self.len == other.len {\n self.storage == other.storage\n } else {\n false\n }\n }\n}\n\nimpl From<[T; Len]> for BoundedVec {\n fn from(array: [T; Len]) -> BoundedVec {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n\n mod get {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_elements_past_end_of_vec() {\n let vec: BoundedVec = BoundedVec::new();\n\n let _ = vec.get(0);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn panics_when_reading_beyond_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let _ = vec.get(3);\n }\n\n #[test]\n fn get_works_within_bounds() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(2), 3);\n assert_eq(vec.get(4), 5);\n }\n\n #[test]\n fn get_unchecked_works() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(0), 1);\n assert_eq(vec.get_unchecked(2), 3);\n }\n\n #[test]\n fn get_unchecked_works_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n assert_eq(vec.get_unchecked(4), 0);\n }\n }\n\n mod set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.set(0, 42);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_setting_beyond_length() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.set(3, 4);\n }\n\n #[test]\n fn set_unchecked_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(0, 10);\n assert_eq(vec.get(0), 10);\n }\n\n #[test(should_fail_with = \"Attempted to read past end of BoundedVec\")]\n fn set_unchecked_operations_past_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n vec.set_unchecked(3, 40);\n assert_eq(vec.get(3), 40);\n }\n\n #[test]\n fn set_preserves_other_elements() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n vec.set(2, 30);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 30);\n assert_eq(vec.get(3), 4);\n assert_eq(vec.get(4), 5);\n }\n }\n\n mod any {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn returns_false_if_predicate_not_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, false, false]);\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn returns_true_if_predicate_satisfied() {\n let vec: BoundedVec = BoundedVec::from_array([false, false, true, true]);\n let result = vec.any(|value| value);\n\n assert(result);\n }\n\n #[test]\n fn returns_false_on_empty_boundedvec() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.any(|value| value);\n\n assert(!result);\n }\n\n #[test]\n fn any_with_complex_predicates() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n\n assert(vec.any(|x| x > 3));\n assert(!vec.any(|x| x > 10));\n assert(vec.any(|x| x % 2 == 0)); // has a even number\n assert(vec.any(|x| x == 3)); // has a specific value\n }\n\n #[test]\n fn any_with_partial_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n\n assert(vec.any(|x| x == 1));\n assert(vec.any(|x| x == 2));\n assert(!vec.any(|x| x == 3));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn map_with_conditional_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.map(|x| if x % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([1, 4, 3, 8]);\n assert_eq(result, expected);\n }\n\n #[test]\n fn map_preserves_length() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|x| x * 2);\n\n assert_eq(result.len(), vec.len());\n assert_eq(result.max_len(), vec.max_len());\n }\n\n #[test]\n fn map_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let result = vec.map(|x| x * 2);\n assert_eq(result, vec);\n assert_eq(result.len(), 0);\n assert_eq(result.max_len(), 5);\n }\n }\n\n mod mapi {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-mapi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| i + value * 2);\n // docs:end:bounded-vec-mapi-example\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.mapi(|i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = vec.mapi(|_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn mapi_with_index_branching_logic() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n\n let result = vec.mapi(|i, x| if i % 2 == 0 { x * 2 } else { x });\n let expected = BoundedVec::from_array([2, 2, 6, 4]);\n assert_eq(result, expected);\n }\n }\n\n mod for_each {\n use crate::collections::bounded_vec::BoundedVec;\n\n // map in terms of for_each\n fn for_each_map(\n input: BoundedVec,\n f: fn[Env](T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_each(|x| output_ref.push(f(x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-each-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_each(|value| { *acc_ref += value; });\n // docs:end:bounded-vec-for-each-example\n assert_eq(acc, 6);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| value * 2);\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_each_map(vec, |value| (value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_each_map(vec, |value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_each_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_each(|_| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_each_with_side_effects() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let mut seen = BoundedVec::::new();\n let seen_ref = &mut seen;\n vec.for_each(|x| seen_ref.push(x));\n assert_eq(seen, vec);\n }\n }\n\n mod for_eachi {\n use crate::collections::bounded_vec::BoundedVec;\n\n // mapi in terms of for_eachi\n fn for_eachi_mapi(\n input: BoundedVec,\n f: fn[Env](u32, T) -> U,\n ) -> BoundedVec {\n let mut output = BoundedVec::::new();\n let output_ref = &mut output;\n input.for_eachi(|i, x| output_ref.push(f(i, x)));\n output\n }\n\n #[test]\n fn smoke_test() {\n let mut acc = 0;\n let acc_ref = &mut acc;\n // docs:start:bounded-vec-for-eachi-example\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n vec.for_eachi(|i, value| { *acc_ref += i * value; });\n // docs:end:bounded-vec-for-eachi-example\n\n // 0 * 1 + 1 * 2 + 2 * 3\n assert_eq(acc, 8);\n }\n\n #[test]\n fn applies_function_correctly() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| i + value * 2);\n let expected = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3, 4]);\n let result = for_eachi_mapi(vec, |i, value| (i + value * 2) as Field);\n let expected: BoundedVec = BoundedVec::from_array([2, 5, 8, 11]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec = BoundedVec::from_array([0, 1]);\n let result = for_eachi_mapi(vec, |_, value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.get_unchecked(2), 0);\n }\n\n #[test]\n fn for_eachi_on_empty_vector() {\n let vec: BoundedVec = BoundedVec::new();\n let mut count = 0;\n let count_ref = &mut count;\n vec.for_eachi(|_, _| { *count_ref += 1; });\n assert_eq(count, 0);\n }\n\n #[test]\n fn for_eachi_with_index_tracking() {\n let vec: BoundedVec = BoundedVec::from_array([10, 20, 30]);\n let mut indices = BoundedVec::::new();\n let indices_ref = &mut indices;\n vec.for_eachi(|i, _| indices_ref.push(i));\n\n let expected = BoundedVec::from_array([0, 1, 2]);\n assert_eq(indices, expected);\n }\n\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n assert_eq(bounded_vec.get(2), 3);\n }\n\n #[test(should_fail_with = \"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec = BoundedVec::from_array([0; 3]);\n }\n\n #[test]\n fn from_array_preserves_order() {\n let array = [5, 3, 1, 4, 2];\n let vec: BoundedVec = BoundedVec::from_array(array);\n for i in 0..array.len() {\n assert_eq(vec.get(i), array[i]);\n }\n }\n\n #[test]\n fn from_array_with_different_types() {\n let bool_array = [true, false, true];\n let bool_vec: BoundedVec = BoundedVec::from_array(bool_array);\n assert_eq(bool_vec.len(), 3);\n assert_eq(bool_vec.get(0), true);\n assert_eq(bool_vec.get(1), false);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n use crate::convert::From;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.get(0), 1);\n assert_eq(bounded_vec.get(1), 2);\n }\n }\n\n mod trait_eq {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec = BoundedVec::new();\n let mut bounded_vec2: BoundedVec = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n }\n\n mod from_parts {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn from_parts() {\n // docs:start:from-parts\n let vec: BoundedVec = BoundedVec::from_parts([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // Any elements past the given length are zeroed out, so these\n // two BoundedVecs will be completely equal\n let vec1: BoundedVec = BoundedVec::from_parts([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts([1, 2, 3, 2], 3);\n assert_eq(vec1, vec2);\n // docs:end:from-parts\n }\n\n #[test]\n fn from_parts_unchecked() {\n // docs:start:from-parts-unchecked\n let vec: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 0], 3);\n assert_eq(vec.len(), 3);\n\n // invalid use!\n let vec1: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 1], 3);\n let vec2: BoundedVec = BoundedVec::from_parts_unchecked([1, 2, 3, 2], 3);\n\n // both vecs have length 3 so we'd expect them to be equal, but this\n // fails because elements past the length are still checked in eq\n assert(vec1 != vec2);\n // docs:end:from-parts-unchecked\n }\n }\n\n mod push_pop {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn push_and_pop_operations() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n assert_eq(vec.len(), 0);\n\n vec.push(1);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 1);\n\n vec.push(2);\n assert_eq(vec.len(), 2);\n assert_eq(vec.get(1), 2);\n\n let popped = vec.pop();\n assert_eq(popped, 2);\n assert_eq(vec.len(), 1);\n\n let popped2 = vec.pop();\n assert_eq(popped2, 1);\n assert_eq(vec.len(), 0);\n }\n\n #[test(should_fail_with = \"push out of bounds\")]\n fn push_to_full_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.push(2);\n vec.push(3); // should panic\n }\n\n #[test(should_fail_with = \"cannot pop from an empty vector\")]\n fn pop_from_empty_vector() {\n let mut vec: BoundedVec = BoundedVec::new();\n let _ = vec.pop(); // should panic\n }\n\n #[test]\n fn push_pop_cycle() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // push to full\n vec.push(1);\n vec.push(2);\n vec.push(3);\n assert_eq(vec.len(), 3);\n\n // pop all\n assert_eq(vec.pop(), 3);\n assert_eq(vec.pop(), 2);\n assert_eq(vec.pop(), 1);\n assert_eq(vec.len(), 0);\n\n // push again\n vec.push(4);\n assert_eq(vec.len(), 1);\n assert_eq(vec.get(0), 4);\n }\n }\n\n mod extend {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn extend_from_array() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_slice() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3]);\n\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n\n #[test]\n fn extend_from_bounded_vec() {\n let mut vec1: BoundedVec = BoundedVec::new();\n let mut vec2: BoundedVec = BoundedVec::new();\n\n vec1.push(1);\n vec2.push(2);\n vec2.push(3);\n\n vec1.extend_from_bounded_vec(vec2);\n\n assert_eq(vec1.len(), 3);\n assert_eq(vec1.get(0), 1);\n assert_eq(vec1.get(1), 2);\n assert_eq(vec1.get(2), 3);\n }\n\n #[test(should_fail_with = \"extend_from_array out of bounds\")]\n fn extend_array_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_array([2, 3, 4]); // should panic\n }\n\n #[test(should_fail_with = \"extend_from_slice out of bounds\")]\n fn extend_slice_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n vec.push(1);\n vec.extend_from_slice(&[2, 3, 4]); // S]should panic\n }\n\n #[test(should_fail_with = \"extend_from_bounded_vec out of bounds\")]\n fn extend_bounded_vec_beyond_max_len() {\n let mut vec: BoundedVec = BoundedVec::new();\n let other: BoundedVec = BoundedVec::from_array([1, 2, 3, 4, 5]);\n vec.extend_from_bounded_vec(other); // should panic\n }\n\n #[test]\n fn extend_with_empty_collections() {\n let mut vec: BoundedVec = BoundedVec::new();\n let original_len = vec.len();\n\n vec.extend_from_array([]);\n assert_eq(vec.len(), original_len);\n\n vec.extend_from_slice(&[]);\n assert_eq(vec.len(), original_len);\n\n let empty: BoundedVec = BoundedVec::new();\n vec.extend_from_bounded_vec(empty);\n assert_eq(vec.len(), original_len);\n }\n }\n\n mod storage {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn storage_consistency() {\n let mut vec: BoundedVec = BoundedVec::new();\n\n // test initial storage state\n assert_eq(vec.storage(), [0, 0, 0, 0, 0]);\n\n vec.push(1);\n vec.push(2);\n\n // test storage after modifications\n assert_eq(vec.storage(), [1, 2, 0, 0, 0]);\n\n // storage doesn't change length\n assert_eq(vec.len(), 2);\n assert_eq(vec.max_len(), 5);\n }\n\n #[test]\n fn storage_after_pop() {\n let mut vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n\n let _ = vec.pop();\n // after pop, the last element should be zeroed\n assert_eq(vec.storage(), [1, 2, 0]);\n assert_eq(vec.len(), 2);\n }\n\n #[test]\n fn vector_immutable() {\n let vec: BoundedVec = BoundedVec::from_array([1, 2, 3]);\n let storage = vec.storage();\n\n assert_eq(storage, [1, 2, 3]);\n\n // Verify that the original vector is unchanged\n assert_eq(vec.len(), 3);\n assert_eq(vec.get(0), 1);\n assert_eq(vec.get(1), 2);\n assert_eq(vec.get(2), 3);\n }\n }\n}\n" - }, - "63": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/capsules/mod.nr", - "source": "use crate::oracle::capsules;\nuse protocol_types::{address::AztecAddress, traits::{Deserialize, Serialize}};\n\n/// A dynamically sized array backed by PXE's non-volatile database (called capsules). Values are persisted until\n/// deleted, so they can be e.g. stored during simulation of a transaction and later retrieved during witness\n/// generation. All values are scoped per contract address, so external contracts cannot access them.\npub struct CapsuleArray {\n contract_address: AztecAddress,\n /// The base slot is where the array length is stored in capsules. Array elements are stored in consecutive slots\n /// after the base slot. For example, with base slot 5: the length is at slot 5, the first element (index 0) is at\n /// slot 6, the second element (index 1) is at slot 7, and so on.\n base_slot: Field,\n}\n\nimpl CapsuleArray {\n /// Returns a CapsuleArray connected to a contract's capsules at a base slot. Array elements are stored in\n /// contiguous slots following the base slot, so there should be sufficient space between array base slots to\n /// accommodate elements. A reasonable strategy is to make the base slot a hash of a unique value.\n pub unconstrained fn at(contract_address: AztecAddress, base_slot: Field) -> Self {\n Self { contract_address, base_slot }\n }\n\n /// Returns the number of elements stored in the array.\n pub unconstrained fn len(self) -> u32 {\n // An uninitialized array defaults to a length of 0.\n capsules::load(self.contract_address, self.base_slot).unwrap_or(0) as u32\n }\n\n /// Stores a value at the end of the array.\n pub unconstrained fn push(self, value: T)\n where\n T: Serialize,\n {\n let current_length = self.len();\n\n // The slot corresponding to the index `current_length` is the first slot immediately after the end of the\n // array, which is where we want to place the new value.\n capsules::store(self.contract_address, self.slot_at(current_length), value);\n\n // Then we simply update the length.\n let new_length = current_length + 1;\n capsules::store(self.contract_address, self.base_slot, new_length);\n }\n\n /// Retrieves the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn get(self, index: u32) -> T\n where\n T: Deserialize,\n {\n assert(index < self.len(), \"Attempted to read past the length of a CapsuleArray\");\n\n capsules::load(self.contract_address, self.slot_at(index)).unwrap()\n }\n\n /// Deletes the value stored in the array at `index`. Throws if the index is out of bounds.\n pub unconstrained fn remove(self, index: u32) {\n let current_length = self.len();\n assert(index < current_length, \"Attempted to delete past the length of a CapsuleArray\");\n\n // In order to be able to remove elements at arbitrary indices, we need to shift the entire contents of the\n // array past the removed element one slot backward so that we don't end up with a gap and preserve the\n // contiguous slots. We can skip this when deleting the last element however.\n if index != current_length - 1 {\n // The source and destination regions overlap, but `copy` supports this.\n capsules::copy(\n self.contract_address,\n self.slot_at(index + 1),\n self.slot_at(index),\n current_length - index - 1,\n );\n }\n\n // We can now delete the last element (which has either been copied to the slot immediately before it, or was\n // the element we meant to delete in the first place) and update the length.\n capsules::delete(self.contract_address, self.slot_at(current_length - 1));\n capsules::store(self.contract_address, self.base_slot, current_length - 1);\n }\n\n /// Iterates over the entire array, calling the callback with all values and their array index. The order in which\n /// values are processed is arbitrary.\n ///\n /// It is safe to delete the current element (and only the current element) from inside the callback via `remove`:\n /// ```noir\n /// array.for_each(|index, value| {\n /// if some_condition(value) {\n /// array.remove(index); // safe only for this index\n /// }\n /// }\n /// ```\n ///\n /// If all elements in the array need to iterated over and then removed, then using `for_each` results in optimal\n /// efficiency.\n ///\n /// It is **not** safe to push new elements into the array from inside the callback.\n pub unconstrained fn for_each(self, f: unconstrained fn[Env](u32, T) -> ())\n where\n T: Deserialize,\n {\n // Iterating over all elements is simple, but we want to do it in such a way that a) deleting the current\n // element is safe to do, and b) deleting *all* elements is optimally efficient. This is because CapsuleArrays\n // are typically used to hold pending tasks, so iterating them while clearing completed tasks (sometimes\n // unconditionally, resulting in a full clear) is a very common access pattern.\n //\n // The way we achieve this is by iterating backwards: each element can always be deleted since it won't change\n // any preceding (lower) indices, and if every element is deleted then every element will (in turn) be the last\n // element. This results in an optimal full clear since `remove` will be able to skip the `capsules::copy` call\n // to shift any elements past the deleted one (because there will be none).\n let mut i = self.len();\n while i > 0 {\n i -= 1;\n f(i, self.get(i));\n }\n }\n\n unconstrained fn slot_at(self, index: u32) -> Field {\n // Elements are stored immediately after the base slot, so we add 1 to it to compute the slot for the first\n // element.\n self.base_slot + 1 + index as Field\n }\n}\n\nmod test {\n use crate::test::helpers::test_environment::TestEnvironment;\n use super::CapsuleArray;\n\n global SLOT: Field = 1230;\n\n #[test]\n unconstrained fn empty_array() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array: CapsuleArray = CapsuleArray::at(contract_address, SLOT);\n assert_eq(array.len(), 0);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn empty_array_read() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n let _: Field = array.get(0);\n });\n }\n\n #[test]\n unconstrained fn array_push() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n assert_eq(array.len(), 1);\n assert_eq(array.get(0), 5);\n });\n }\n\n #[test(should_fail_with = \"Attempted to read past the length of a CapsuleArray\")]\n unconstrained fn read_past_len() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n array.push(5);\n\n let _ = array.get(1);\n });\n }\n\n #[test]\n unconstrained fn array_remove_last() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(5);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn array_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n assert_eq(array.len(), 3);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 8);\n assert_eq(array.get(2), 9);\n\n array.remove(1);\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 7);\n assert_eq(array.get(1), 9);\n });\n }\n\n #[test]\n unconstrained fn array_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(7);\n array.push(8);\n array.push(9);\n\n array.remove(1);\n array.remove(1);\n array.remove(0);\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_called_with_all_elements() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We store all values that we were called with and check that all (value, index) tuples are present. Note that\n // we do not care about the order in which each tuple was passed to the closure.\n let called_with = &mut BoundedVec::<(u32, Field), 3>::new();\n array.for_each(|index, value| { called_with.push((index, value)); });\n\n assert_eq(called_with.len(), 3);\n assert(called_with.any(|(index, value)| (index == 0) & (value == 4)));\n assert(called_with.any(|(index, value)| (index == 1) & (value == 5)));\n assert(called_with.any(|(index, value)| (index == 2) & (value == 6)));\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_some() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| {\n if index == 1 {\n array.remove(index);\n }\n });\n\n assert_eq(array.len(), 2);\n assert_eq(array.get(0), 4);\n assert_eq(array.get(1), 6);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(array.len(), 0);\n });\n }\n\n #[test]\n unconstrained fn for_each_remove_all_no_copy() {\n let env = TestEnvironment::new();\n env.private_context(|context| {\n let contract_address = context.this_address();\n let array = CapsuleArray::at(contract_address, SLOT);\n\n array.push(4);\n array.push(5);\n array.push(6);\n\n // We test that the utilityCopyCapsule was never called, which is the expensive operation we want to avoid.\n let mock = std::test::OracleMock::mock(\"utilityCopyCapsule\");\n\n array.for_each(|index, _| { array.remove(index); });\n\n assert_eq(mock.times_called(), 0);\n });\n }\n}\n" - }, - "64": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr", - "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n traits::{Deserialize, ToField},\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\nuse crate::hash::{hash_args, hash_calldata};\nuse crate::oracle::execution_cache;\n\npub trait CallInterface {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n /// Makes the call to this private function.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (see https://github.com/AztecProtocol/aztec-packages/pull/16433)\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn call(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n\n /// Makes a _read-only_ call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// See `call` for more general info on private function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T {\n execution_cache::store(self.args, self.args_hash);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n // If T is () (i.e. if the function does not return anything) then `get_preimage` will constrain that the\n // returns hash is empty as per the protocol rules.\n returns_hash.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl PrivateStaticCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n /// Makes a read-only call to this private function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn view(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize,\n {\n execution_cache::store(self.args, self.args_hash);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl CallInterface for PrivateStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl PublicCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the call to this public function.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn call(self, context: &mut PublicContext) -> T {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Makes a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n // If T is () (i.e. if the function does not return anything) then `as_array` will constrain that `returns` has\n // a length of 0 (since that is ()'s deserialization length).\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a call to this public function, to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n false,\n )\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n\n /// Enqueues a call to this public function, and designates it to be the\n /// teardown function for this tx. Only one teardown function call can be\n /// made by a tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a hefty function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n /// See `enqueue` for more information about enqueuing public function calls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn set_as_teardown(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.set_public_teardown_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n false,\n )\n }\n}\n\nimpl CallInterface for PublicCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl PublicStaticCallInterface\nwhere\n T: Deserialize,\n{\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n /// Makes the read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `context` - The PublicContext -- made magically available to the body\n /// of every #[public] function as `context`, through the\n /// #[public] annotation's macro.\n ///\n /// # Returns\n /// * `T` - Whatever data the called function has returned.\n ///\n pub unconstrained fn view(self, context: &mut PublicContext) -> T {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array())\n }\n\n /// Enqueues a read-only call to this public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state, emit L2->L1 messages, nor emit events. Any nested\n /// calls are constrained to also be staticcalls.\n ///\n /// # Arguments\n /// * `context` - The PrivateContext -- made magically available to the body\n /// of every #[private] function as `context`, through the\n /// #[private] annotation's macro.\n ///\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let calldata = self.args.push_front(self.selector.to_field());\n let calldata_hash = hash_calldata(calldata);\n execution_cache::store(calldata, calldata_hash);\n context.call_public_function_with_calldata_hash(\n self.target_contract,\n calldata_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl CallInterface for PublicStaticCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// UtilityCallInterface\n\npub struct UtilityCallInterface {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args_hash: Field,\n args: [Field],\n return_type: T,\n}\n\nimpl CallInterface for UtilityCallInterface {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n false\n }\n}\n\nimpl UtilityCallInterface {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: std::mem::zeroed() }\n }\n\n pub fn get_args(self) -> [Field] {\n self.args\n }\n\n pub fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n pub fn get_name(self) -> str {\n self.name\n }\n\n pub fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n}\n" - }, - "71": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/private_context.nr", - "source": "use crate::{\n context::{inputs::PrivateContextInputs, returns_hash::ReturnsHash},\n hash::{ArgsHasher, hash_args_array, hash_calldata_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n notify_enqueued_public_function_call, notify_set_min_revertible_side_effect_counter,\n notify_set_public_teardown_function_call,\n },\n execution_cache,\n key_validation_request::get_key_validation_request,\n logs::notify_created_contract_class_log,\n notes::{notify_created_nullifier, notify_nullified_note},\n },\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_selector::FunctionSelector,\n gas_settings::GasSettings,\n log_hash::LogHash,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::{PrivateLog, PrivateLogData},\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, MAX_CONTRACT_CLASS_LOGS_PER_CALL,\n MAX_ENQUEUED_CALLS_PER_CALL, MAX_INCLUDE_BY_TIMESTAMP_DURATION,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS,\n },\n hash::poseidon2_hash,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Empty, Hash, ToField},\n utils::arrays::{ClaimedLengthArray, trimmed_array_length_hint},\n};\n\n/// # PrivateContext\n///\n/// The **main interface** between a #[private] function and the Aztec blockchain.\n///\n/// An instance of the PrivateContext is initialized automatically at the outset\n/// of every private function, within the #[private] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it is always be available within\n/// the body of every #[private] function in your smart contract.\n///\n/// > For those used to \"vanilla\" Noir, it might be jarring to have access to\n/// > `context` without seeing a declaration `let context = PrivateContext::new(...)`\n/// > within the body of your function. This is just a consequence of using\n/// > macros to tidy-up verbose boilerplate. You can use `nargo expand` to\n/// > expand all macros, if you dare.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PrivateContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// > Advanced users might occasionally wish to push data to the context\n/// > directly for lower-level control. If you find yourself doing this, please\n/// > open an issue on GitHub to describe your use case: it might be that\n/// > new functionality should be added to aztec-nr.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a private function:\n/// - Data relating to how this private function was called.\n/// - msg_sender\n/// - this_address - (the contract address of the private function being\n/// executed)\n/// - See `CallContext` for more data.\n/// - Data relating to the transaction in which this private function is\n/// being executed.\n/// - chain_id\n/// - version\n/// - gas_settings\n/// - Provides state access:\n/// - Access to the \"Anchor block\" header.\n/// Recall, a private function cannot read from the \"current\" block header,\n/// but must read from some historical block header, because as soon as\n/// private function execution begins (asynchronously, on a user's device),\n/// the public state of the chain (the \"current state\") will have progressed\n/// forward. We call this reference the \"Anchor block\".\n/// See `BlockHeader`.\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to functions of other smart contracts:\n/// - Private function calls\n/// - Enqueueing of public function call requests\n/// (Since public functions are executed at a later time, by a block\n/// proposer, we say they are \"enqueued\").\n/// - Writes data to the blockchain:\n/// - New notes\n/// - New nullifiers\n/// - Private logs (for sending encrypted note contents or encrypted events)\n/// - New L2->L1 messages.\n/// - Provides args to the private function (handled by the #[private] macro).\n/// - Returns the return values of this private function (handled by the\n/// #[private] macro).\n/// - Makes Key Validation Requests.\n/// - Private functions are not allowed to see master secret keys, because we\n/// do not trust them. They are instead given \"app-siloed\" secret keys with\n/// a claim that they relate to a master public key. They can then request\n/// validation of this claim, by making a \"key validation request\" to the\n/// protocol's kernel circuits (which _are_ allowed to see certain master\n/// secret keys).\n///\n/// ## Advanced Responsibilities\n///\n/// - Ultimately, the PrivateContext is responsible for constructing the\n/// PrivateCircuitPublicInputs of the private function being executed.\n/// All private functions on Aztec must have public inputs which adhere\n/// to the rigid layout of the PrivateCircuitPublicInputs, in order to be\n/// compatible with the protocol's kernel circuits.\n/// A well-known misnomer:\n/// - \"public inputs\" contain both inputs and outputs of this function.\n/// - By \"outputs\" we mean a lot more side-effects than just the\n/// \"return values\" of the function.\n/// - Most of the so-called \"public inputs\" are kept _private_, and never leak\n/// to the outside world, because they are 'swallowed' by the protocol's\n/// kernel circuits before the tx is sent to the network. Only the\n/// following are exposed to the outside world:\n/// - New note_hashes\n/// - New nullifiers\n/// - New private logs\n/// - New L2->L1 messages\n/// - New enqueued public function call requests\n/// All the above-listed arrays of side-effects can be padded by the\n/// user's wallet (through instructions to the kernel circuits, via the\n/// PXE) to obscure their true lengths.\n///\n/// ## Syntax Justification\n///\n/// Both user-defined functions _and_ most functions in aztec-nr need access to\n/// the PrivateContext instance to read/write data. This is why you'll see the\n/// arguably-ugly pervasiveness of the \"context\" throughout your smart contract\n/// and the aztec-nr library.\n/// For example, `&mut context` is prevalent. In some languages, you can access\n/// and mutate a global variable (such as a PrivateContext instance) from a\n/// function without polluting the function's parameters. With Noir, a function\n/// must explicitly pass control of a mutable variable to another function, by\n/// reference. Since many functions in aztec-nr need to be able to push new data\n/// to the PrivateContext, they need to be handed a mutable reference _to_ the\n/// context as a parameter.\n/// For example, `Context` is prevalent as a generic parameter, to give better\n/// type safety at compile time. Many `aztec-nr` functions don't make sense if\n/// they're called in a particular runtime (private, public or utility), and so\n/// are intentionally only implemented over certain\n/// [Private|Public|Utility]Context structs. This gives smart contract\n/// developers a much faster feedback loop if they're making a mistake, as an\n/// error will be thrown by the LSP or when they compile their contract.\n///\n#[derive(Eq)]\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub include_by_timestamp: u64,\n\n pub note_hash_read_requests: BoundedVec,\n pub nullifier_read_requests: BoundedVec,\n key_validation_requests_and_generators: BoundedVec,\n\n pub note_hashes: BoundedVec,\n pub nullifiers: BoundedVec,\n\n pub private_call_requests: BoundedVec,\n pub public_call_requests: BoundedVec, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec,\n pub contract_class_logs_hashes: BoundedVec, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let max_allowed_include_by_timestamp =\n inputs.historical_header.global_variables.timestamp + MAX_INCLUDE_BY_TIMESTAMP_DURATION;\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n include_by_timestamp: max_allowed_include_by_timestamp,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// TODO(https://github.com/AztecProtocol/aztec-packages/issues/14025) - we\n /// are considering making msg_sender: Option, since\n /// a returned value of `Option:none` will be clearer to developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the smart contract that called\n /// this function (be it an app contract or a user's account contract).\n /// Returns `-1` for the first function call of the tx.\n ///\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n /// Returns the contract address of the current function being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.contract_address\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n /// Returns the gas settings for the current transaction.\n ///\n /// This provides information about gas limits and pricing for the\n /// transaction, similar to `tx.gasprice` and gas limits in Ethereum.\n /// However, Aztec has a more sophisticated gas model with separate\n /// accounting for L2 computation and data availability (DA) costs.\n ///\n /// # Returns\n /// * `GasSettings` - Struct containing gas limits and fee information\n ///\n pub fn gas_settings(self) -> GasSettings {\n self.inputs.tx_context.gas_settings\n }\n\n /// Returns the function selector of the currently executing function.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to access this.\n ///\n /// This is similar to `msg.sig` in Solidity, which returns the first 4\n /// bytes of the function signature. In Aztec, the selector uniquely\n /// identifies which function within the contract is being called.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// Only #[private] functions have a function selector as a protocol-\n /// enshrined concept. The function selectors of private functions are\n /// baked into the preimage of the contract address, and are used by the\n /// protocol's kernel circuits to identify each private function and ensure\n /// the correct one is being executed.\n ///\n /// Used internally for function dispatch and call verification.\n ///\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: You shouldn't need to call this. The #[private]\n /// macro calls this, and it makes the arguments neatly available to the\n /// body of your private function.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n /// # Advanced\n /// * Arguments are hashed to reduce proof size and verification time\n /// * Enables efficient argument passing in recursive function calls\n /// * The hash can be used to retrieve the original arguments from the PXE.\n ///\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n /// Pushes a new note_hash to the Aztec blockchain's global Note Hash Tree\n /// (a state tree).\n ///\n /// A note_hash is a commitment to a piece of private state.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note hashes.\n ///\n /// # Arguments\n /// * `note_hash` - The new note_hash.\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// note_hash into the protocol's \"note hash tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `note_hash` with the contract address of this function,\n /// to yield a `siloed_note_hash`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure uniqueness of the `siloed_note_hash`, to prevent Faerie-Gold\n /// attacks, by hashing the `siloed_note_hash` with a unique value, to\n /// yield a `unique_siloed_note_hash` (see the protocol spec for more).\n ///\n /// In addition to calling this function, aztec-nr provides the contents\n /// of the newly-created note to the PXE, via the `notify_created_note`\n /// oracle.\n ///\n /// > Advanced users might occasionally wish to push data to the context\n /// > directly for lower-level control. If you find yourself doing this,\n /// > please open an issue on GitHub to describe your use case: it might be\n /// > that new functionality should be added to aztec-nr.\n ///\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n /// Pushes a new nullifier to the Aztec blockchain's global Nullifier Tree\n /// (a state tree).\n ///\n /// See also: `push_nullifier_for_note_hash`.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// A nullifier can only be emitted once. Duplicate nullifier insertions are\n /// rejected by the protocol.\n ///\n /// Generally, a nullifier is emitted to prevent an action from happening\n /// more than once, in such a way that the action cannot be linked (by an\n /// observer of the blockchain) to any earlier transactions.\n ///\n /// I.e. a nullifier is a random-looking, but deterministic record of a\n /// private, one-time action, which does not leak what action has been\n /// taken, and which preserves the property of \"tx unlinkability\".\n ///\n /// Usually, a nullifier will be emitted to \"spend\" a note (a piece of\n /// private state), without revealing which specific note is being spent.\n ///\n /// (Important: in such cases, use the below `push_nullifier_for_note_hash`).\n ///\n /// Sometimes, a nullifier might be emitted completely unrelated to any\n /// notes. Examples include initialization of a new contract; initialization\n /// of a PrivateMutable, or signalling in Semaphore-like applications.\n /// This `push_nullifier` function serves such use cases.\n ///\n /// # Arguments\n /// * `nullifier`\n ///\n /// # Advanced\n /// From here, the protocol's kernel circuits will take over and insert the\n /// nullifier into the protocol's \"nullifier tree\" (in the Base Rollup\n /// circuit).\n /// Before insertion, the protocol will:\n /// - \"Silo\" the `nullifier` with the contract address of this function,\n /// to yield a `siloed_nullifier`. This prevents state collisions\n /// between different smart contracts.\n /// - Ensure the `siloed_nullifier` is unique (the nullifier tree is an\n /// indexed merkle tree which supports efficient non-membership proofs).\n ///\n pub fn push_nullifier(&mut self, nullifier: Field) {\n notify_created_nullifier(nullifier);\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n /// Pushes a nullifier that corresponds to a specific note hash.\n ///\n /// Low-level function: Ordinarily, smart contract developers will not need\n /// to manually call this. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifiers.\n ///\n /// This is a specialized version of `push_nullifier` that links a nullifier\n /// to the specific note hash it's nullifying. This is the most common\n /// usage pattern for nullifiers.\n /// See `push_nullifier` for more explanation on nullifiers.\n ///\n /// # Arguments\n /// * `nullifier`\n /// * `nullified_note_hash` - The note hash of the note being nullified\n ///\n /// # Advanced\n /// Important: usage of this function doesn't mean that the world will _see_\n /// that this nullifier relates to the given nullified_note_hash (as that\n /// would violate \"tx unlinkability\"); it simply informs the user's PXE\n /// about the relationship (via `notify_nullified_note`). The PXE can then\n /// use this information to feed hints to the kernel circuits for\n /// \"squashing\" purposes: If a note is nullified during the same tx which\n /// created it, we can \"squash\" (delete) the note and nullifier (and any\n /// private logs associated with the note), to save on data emission costs.\n ///\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n let nullifier_counter = self.next_counter();\n notify_nullified_note(nullifier, nullified_note_hash, nullifier_counter);\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: nullifier_counter,\n },\n );\n }\n\n /// Returns the anchor block header - the historical block header that this\n /// private function is reading from.\n ///\n /// A private function CANNOT read from the \"current\" block header,\n /// but must read from some historical block header, because as soon as\n /// private function execution begins (asynchronously, on a user's device),\n /// the public state of the chain (the \"current state\") will have progressed\n /// forward.\n ///\n /// # Returns\n /// * `BlockHeader` - The anchor block header.\n ///\n /// # Advanced\n /// * All private functions of a tx read from the same anchor block header.\n /// * The protocol asserts that the `include_by_timestamp` of every tx\n /// is at most 24 hours beyond the timestamp of the tx's chosen anchor\n /// block header. This enables the network's nodes to safely prune old txs\n /// from the mempool. Therefore, the chosen block header _must_ be one\n /// from within the last 24 hours.\n ///\n pub fn get_block_header(self) -> BlockHeader {\n self.historical_header\n }\n\n /// Returns the header of any historical block at or before the anchor\n /// block.\n ///\n /// This enables private contracts to access information from even older\n /// blocks than the anchor block header.\n ///\n /// Useful for time-based contract logic that needs to compare against\n /// multiple historical points.\n ///\n /// # Arguments\n /// * `block_number` - The block number to retrieve (must be <= anchor\n /// block number)\n ///\n /// # Returns\n /// * `BlockHeader` - The header of the requested historical block\n ///\n /// # Advanced\n /// This function uses an oracle to fetch block header data from the user's\n /// PXE. Depending on how much blockchain data the user's PXE has been set\n /// up to store, this might require a query from the PXE to another Aztec\n /// node to get the data.\n /// > This is generally true of all oracle getters (see `../oracle`).\n ///\n /// Each block header gets hashed and stored as a leaf in the protocol's\n /// Archive Tree. In fact, the i-th block header gets stored at the i-th\n /// leaf index of the Archive Tree. Behind the scenes, this\n /// `get_block_header_at` function will add Archive Tree merkle-membership\n /// constraints (~3k) to your smart contract function's circuit, to prove\n /// existence of the block header in the Archive Tree.\n ///\n /// Note: we don't do any caching, so avoid making duplicate calls for the\n /// same block header, because each call will add duplicate constraints.\n ///\n /// Calling this function is more expensive (constraint-wise) than getting\n /// the anchor block header (via `get_block_header`). This is because the\n /// anchor block's merkle membership proof is handled by Aztec's protocol\n /// circuits, and is only performed once for the entire tx because all\n /// private functions of a tx share a common anchor block header. Therefore,\n /// the cost (constraint-wise) of calling `get_block_header` is effectively\n /// free.\n ///\n pub fn get_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n /// Sets the hash of the return values for this private function.\n ///\n /// Very low-level function: this is called by the #[private] macro.\n ///\n /// # Arguments\n /// * `returns_hasher` - A hasher containing the return values to hash\n ///\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n self.return_hash = returns_hasher.hash();\n execution_cache::store(returns_hasher.fields, self.return_hash);\n }\n\n /// Builds the PrivateCircuitPublicInputs for this private function, to\n /// ensure compatibility with the protocol's kernel circuits.\n ///\n /// Very low-level function: This function is automatically called by the\n /// #[private] macro.\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n include_by_timestamp: self.include_by_timestamp,\n note_hash_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.note_hash_read_requests,\n ),\n nullifier_read_requests: ClaimedLengthArray::from_bounded_vec(\n self.nullifier_read_requests,\n ),\n key_validation_requests_and_generators: ClaimedLengthArray::from_bounded_vec(\n self.key_validation_requests_and_generators,\n ),\n note_hashes: ClaimedLengthArray::from_bounded_vec(self.note_hashes),\n nullifiers: ClaimedLengthArray::from_bounded_vec(self.nullifiers),\n private_call_requests: ClaimedLengthArray::from_bounded_vec(self.private_call_requests),\n public_call_requests: ClaimedLengthArray::from_bounded_vec(self.public_call_requests),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: ClaimedLengthArray::from_bounded_vec(self.l2_to_l1_msgs),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: ClaimedLengthArray::from_bounded_vec(self.private_logs),\n contract_class_logs_hashes: ClaimedLengthArray::from_bounded_vec(\n self.contract_class_logs_hashes,\n ),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n /// Designates this contract as the fee payer for the transaction.\n ///\n /// Unlike Ethereum, where the transaction sender always pays fees, Aztec\n /// allows any contract to voluntarily pay transaction fees. This enables\n /// patterns like sponsored transactions or fee abstraction where users\n /// don't need to hold fee-juice themselves. (Fee juice is a fee-paying\n /// asset for Aztec).\n ///\n /// Only one contract per transaction can declare itself as the fee payer,\n /// and it must have sufficient fee-juice balance (>= the gas limits\n /// specified in the TxContext) by the time we reach the public setup phase\n /// of the tx.\n ///\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n /// Declares the end of the \"setup phase\" of this tx.\n ///\n /// Only one function per tx can declare the end of the setup phase.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase enables such a payment to\n /// be made, because the setup phase _cannot revert_: a reverting function\n /// within the setup phase would result in an invalid block which cannot\n /// be proven. Any side-effects generated during that phase are guaranteed\n /// to be inserted into Aztec's state trees (except for squashed notes &\n /// nullifiers, of course).\n ///\n /// Even though the end of the setup phase is declared within a private\n /// function, you might have noticed that _public_ functions can also\n /// execute within the setup phase. This is because any public function\n /// calls which were enqueued _within the setup phase_ by a private\n /// function are considered part of the setup phase.\n ///\n /// # Advanced\n /// * Sets the minimum revertible side effect counter of this tx to be the\n /// PrivateContext's _current_ side effect counter.\n ///\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n /// Sets a deadline (an \"include-by timestamp\") for when this transaction\n /// must be included in a block.\n ///\n /// Other functions in this tx might call this setter with differing\n /// values for the include-by timestamp. To ensure that all functions'\n /// deadlines are met, the _minimum_ of all these include-by timestamps will\n /// be exposed when this tx is submitted to the network.\n ///\n /// If the transaction is not included in a block by its include-by\n /// timestamp, it becomes invalid and it will never be included.\n ///\n /// This expiry timestamp is publicly visible. See the \"Advanced\" section\n /// for privacy concerns.\n ///\n /// # Arguments\n /// * `include_by_timestamp` - Unix timestamp (seconds) deadline for inclusion.\n /// The include-by timestamp of this tx will be\n /// _at most_ the timestamp specified.\n ///\n /// # Advanced\n /// * If multiple functions set differing `include_by_timestamp`s, the\n /// kernel circuits will set it to be the _minimum_ of the two. This\n /// ensures the tx expiry requirements of all functions in the tx are met.\n /// * Rollup circuits will reject expired txs.\n /// * The protocol enforces that all transactions must be included within\n /// 24 hours of their chosen anchor block's timestamp, to enable safe\n /// mempool pruning.\n /// * The DelayedPublicMutable design makes heavy use of this functionality,\n /// to enable private functions to read public state.\n /// * A sophisticated Wallet should cleverly set an include-by timestamp\n /// to improve the privacy of the user and the network as a whole.\n /// For example, if a contract interaction sets include-by to some\n /// publicly-known value (e.g. the time when a contract upgrades), then\n /// the wallet might wish to set an even lower one to avoid revealing that\n /// this tx is interacting with said contract.\n /// Ideally, all wallets should standardise on an approach in order to\n /// provide users with a large anonymity set -- although the exact apprach\n /// will need to be discussed. Wallets that deviate from a standard might\n /// accidentally reveal which wallet each transaction originates from.\n ///\n // docs:start:include-by-timestamp\n pub fn set_include_by_timestamp(&mut self, include_by_timestamp: u64) {\n // docs:end:include-by-timestamp\n self.include_by_timestamp = std::cmp::min(self.include_by_timestamp, include_by_timestamp);\n }\n\n /// Makes a request to the protocol's kernel circuit to ensure a note_hash\n /// actually exists.\n ///\n /// \"Read requests\" are used to prove that a note hash exists without\n /// revealing which specific note was read.\n ///\n /// This can be used to prove existence of both settled notes (created in\n /// prior transactions) and transient notes (created in the current\n /// transaction).\n /// If you need to prove existence of a settled note _at a specific block\n /// number_, use `note_inclusion::prove_note_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new note_hash read\n /// requests.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to read and verify\n ///\n /// # Advanced\n /// In \"traditional\" circuits for non-Aztec privacy applications, the merkle\n /// membership proofs to check existence of a note are performed _within_\n /// the application circuit.\n ///\n /// All Aztec private functions have access to the following constraint\n /// optimisation:\n /// In cases where the note being read was created earlier in the same tx,\n /// the note wouldn't yet exist in the Note Hash Tree, so a hard-coded\n /// merkle membership check which then gets ignored would be a waste of\n /// constraints.\n /// Instead, we can send read requests for all notes to the protocol's\n /// kernel circuits, where we can conditionally assess which notes actually\n /// need merkle membership proofs, and select an appropriately-sized\n /// kernel circuit.\n ///\n /// For \"settled notes\" (which already existed in the Note Hash Tree of the\n /// anchor block (i.e. before the tx began)), the kernel does a merkle\n /// membership check.\n ///\n /// For \"pending notes\" (which were created earlier in _this_ tx), the\n /// kernel will check that the note existed _before_ this read request was\n /// made, by checking the side-effect counters of the note_hash and this\n /// read request.\n ///\n /// This approach improves latency between writes and reads:\n /// a function can read a note which was created earlier in the tx (rather\n /// than performing the read in a later tx, after waiting for the earlier tx\n /// to be included, to ensure the note is included in the tree).\n ///\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n /// Requests to read a specific nullifier from the nullifier tree.\n ///\n /// Nullifier read requests are used to prove that a nullifier exists without\n /// revealing which specific nullifier preimage was read.\n ///\n /// This can be used to prove existence of both settled nullifiers (created in\n /// prior transactions) and transient nullifiers (created in the current\n /// transaction).\n /// If you need to prove existence of a settled nullifier _at a specific block\n /// number_, use `nullifier_inclusion::prove_nullifier_inclusion`.\n ///\n /// Low-level function. Ordinarily, smart contract developers will not need\n /// to call this directly. Aztec-nr's state variables (see `../state_vars/`)\n /// are designed to understand when to create and push new nullifier read\n /// requests.\n ///\n /// # Arguments\n /// * `nullifier` - The nullifier to read and verify\n ///\n /// # Advanced\n /// This approach improves latency between writes and reads:\n /// a function can read a nullifier which was created earlier in the tx\n /// (rather than performing the read in a later tx, after waiting for the\n /// earlier tx to be included, to ensure the note is included in the tree).\n ///\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// Advanced function: Only needed if you're designing your own notes and/or\n /// nullifiers.\n ///\n /// Contracts are not allowed to compute nullifiers for other contracts, as\n /// that would let them read parts of their private state. Because of this,\n /// a contract is only given an \"app-siloed secret key\", which is\n /// constructed by hashing the user's master nullifier secret key with the\n /// contract's address.\n /// However, because contracts cannot be trusted with a user's master\n /// nullifier secret key (because we don't know which contracts are honest\n /// or malicious), the PXE refuses to provide any master secret keys to\n /// any app smart contract function. This means app functions are unable to\n /// prove that the derivation of an app-siloed nullifier secret key has been\n /// computed correctly. Instead, an app function can request to the kernel\n /// (via `request_nsk_app`) that it validates the siloed derivation, since\n /// the kernel has been vetted to not leak any master secret keys.\n ///\n /// A common nullification scheme is to inject a nullifier secret key into\n /// the preimage of a nullifier, to make the nullifier deterministic but\n /// random-looking. This function enables that flow.\n ///\n /// # Arguments\n /// * `npk_m_hash` - A hash of the master nullifier public key of the user\n /// whose PXE is executing this function.\n ///\n /// # Returns\n /// * The app-siloed nullifier secret key that corresponds to the given\n /// `npk_m_hash`.\n ///\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n /// Requests the app-siloed nullifier secret key (nsk_app) for the given\n /// (hashed) master nullifier public key (npk_m), from the user's PXE.\n ///\n /// See `request_nsk_app` and `request_sk_app` for more info.\n ///\n /// The intention of the \"outgoing\" keypair is to provide a second secret\n /// key for all of a user's outgoing activity (i.e. for notes that a user\n /// creates, as opposed to notes that a user receives from others). The\n /// separation of incoming and outgoing data was a distinction made by\n /// zcash, with the intention of enabling a user to optionally share with a\n /// 3rd party a controlled view of only incoming or outgoing notes.\n /// Similar functionality of sharing select data can be achieved with\n /// offchain zero-knowledge proofs. It is up to an app developer whether\n /// they choose to make use of a user's outgoing keypair within their\n /// application logic, or instead simply use the same keypair (the address\n /// keypair (which is effectively the same as the \"incooming\" keypair)) for\n /// all incoming & outgoing messages to a user.\n ///\n /// Currently, all of the exposed encryption functions in aztec-nr ignore\n /// the outgoing viewing keys, and instead encrypt all note logs and event\n /// logs to a user's address public key.\n ///\n /// # Arguments\n /// * `ovpk_m_hash` - Hash of the outgoing viewing public key master\n ///\n /// # Returns\n /// * The application-specific outgoing viewing secret key\n ///\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n /// Pushes a Key Validation Request to the kernel.\n ///\n /// Private functions are not allowed to see a user's master secret keys,\n /// because we do not trust them. They are instead given \"app-siloed\" secret\n /// keys with a claim that they relate to a master public key.\n /// They can then request validation of this claim, by making a \"key\n /// validation request\" to the protocol's kernel circuits (which _are_\n /// allowed to see certain master secret keys).\n ///\n /// When a Key Validation Request tuple of (sk_app, Pk_m, app_address) is\n /// submitted to the kernel, it will perform the following derivations\n /// to validate the relationship between the claimed sk_app and the user's\n /// Pk_m:\n ///\n /// (sk_m) ----> * G ----> Pk_m\n /// | |\n /// v We use the kernel to prove this\n /// h(sk_m, app_address) | sk_app-Pk_m relationship, because app\n /// | circuits must not be trusted to see sk_m.\n /// v |\n /// sk_app - - - - - - - - -\n ///\n /// The function is named \"request_\" instead of \"get_\" to remind the user\n /// that a Key Validation Request will be emitted to the kernel.\n ///\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index as u32].unwrap_or(\n KeyValidationRequest::empty(),\n );\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n\n // Safety: Kernels verify that the key validation request is valid and below we verify that a request\n // for the correct public key has been received.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert_eq(request.pk_m.hash(), pk_m_hash, \"Obtained invalid key validation request\");\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index as u32],\n },\n );\n self.last_key_validation_requests[key_index as u32] = Option::some(request);\n request.sk_app\n }\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element).\n /// This content has a very specific layout.\n /// docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.l2_to_l1_msgs.push(message.count(self.next_counter()));\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2).\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree;\n /// messages never technically get deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target L2 contract. The message will need to be manually\n /// consumed by the target contract through a separate Aztec transaction.\n /// The message will not be available for consumption immediately. Messages\n /// get copied over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// Validates message existence in the L1-to-L2 message tree and nullifies\n /// the message to prevent double-consumption.\n ///\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret,\n leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n /// Emits a private log (an array of Fields) that will be published to an\n /// Ethereum blob.\n ///\n /// Private logs are intended for the broadcasting of ciphertexts: that is,\n /// encrypted events or encrypted note contents.\n /// Since the data in the logs is meant to be _encrypted_, private_logs are\n /// broadcast to publicly-visible Ethereum blobs.\n /// The intended recipients of such encrypted messages can then discover and\n /// decrypt these encrypted logs using their viewing secret key.\n /// (See `../messages/discovery` for more details).\n ///\n /// Important note: This function DOES NOT _do_ any encryption of the input\n /// `log` fields. This function blindly publishes whatever input `log` data\n /// is fed into it, so the caller of this function should have already\n /// performed the encryption, and the `log` should be the result of that\n /// encryption.\n ///\n /// The protocol does not dictate what encryption scheme should be used:\n /// a smart contract developer can choose whatever encryption scheme they\n /// like.\n /// Aztec-nr includes some off-the-shelf encryption libraries that\n /// developers might wish to use, for convenience. These libraries not only\n /// encrypt a plaintext (to produce a ciphertext); they also prepend the\n /// ciphertext with a `tag` and `ephemeral public key` for easier message\n /// discovery. This is a very dense topic, and we will be writing more\n /// libraries and docs soon.\n ///\n /// > Currently, AES128 CBC encryption is the main scheme included in\n /// > aztec.nr.\n /// > We are currently making significant changes to the interfaces of the\n /// > encryption library.\n ///\n /// In some niche use cases, an app might be tempted to publish\n /// _un-encrypted_ data via a private log, because _public logs_ are not\n /// available to private functions. Be warned that emitting public data via\n /// private logs is strongly discouraged, and is considered a \"privacy\n /// anti-pattern\", because it reveals identifiable information about _which_\n /// function has been executed. A tx which leaks such information does not\n /// contribute to the privacy set of the network.\n ///\n /// * Unlike `emit_raw_note_log`, this log is not tied to any specific note\n ///\n /// # Arguments\n /// * `log` - The log data that will be publicly broadcast (so make sure\n /// it's already been encrypted before you call this function).\n /// Private logs are bounded in size (PRIVATE_LOG_SIZE_IN_FIELDS), to\n /// encourage all logs from all smart contracts look identical.\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields). Although the input log has a max size of\n /// PRIVATE_LOG_SIZE_IN_FIELDS, the latter values of the array might all\n /// be 0's for small logs. This `length` should reflect the trimmed length\n /// of the array. The protocol's kernel circuits can then append random\n /// fields as \"padding\" after the `length`, so that the logs of this\n /// smart contract look indistinguishable from (the same length as) the\n /// logs of all other applications. It's up to wallets how much padding\n /// to apply, so ideally all wallets should agree on standards for this.\n ///\n /// # Advanced\n ///\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS], length: u32) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n // TODO: rename.\n /// Emits a private log that is explicitly tied to a newly-emitted note_hash,\n /// to convey to the kernel: \"this log relates to this note\".\n ///\n /// This linkage is important in case the note gets squashed (due to being\n /// read later in this same tx), since we can then squash the log as well.\n ///\n /// See `emit_private_log` for more info about private log emission.\n ///\n /// # Arguments\n /// * `log` - The log data as an array of Field elements\n /// * `length` - The actual length of the `log` (measured in number of\n /// Fields).\n /// * `note_hash_counter` - The side-effect counter that was assigned to the\n /// new note_hash when it was pushed to this\n // `PrivateContext`.\n ///\n /// Important: If your application logic requires the log to always be\n /// emitted regardless of note squashing, consider using `emit_private_log`\n /// instead, or emitting additional events.\n ///\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n length: u32,\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log =\n PrivateLogData { log: PrivateLog::new(log, length), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_contract_class_log(&mut self, log: [Field; N]) {\n let contract_address = self.this_address();\n let counter = self.next_counter();\n\n let log_to_emit: [Field; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS] =\n log.concat([0; CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - N]);\n // Note: the length is not always N, it is the number of fields we want to broadcast, omitting trailing zeros to save blob space.\n // Safety: The below length is constrained in the base rollup, which will make sure that all the fields beyond length are zero.\n let length = unsafe { trimmed_array_length_hint(log_to_emit) };\n // We hash the entire padded log to ensure a user cannot pass a shorter length and so emit incorrect shorter bytecode.\n let log_hash = poseidon2_hash(log_to_emit);\n // Safety: the below only exists to broadcast the raw log, so we can provide it to the base rollup later to be constrained.\n unsafe {\n notify_created_contract_class_log(contract_address, log_to_emit, length, counter);\n }\n\n self.contract_class_logs_hashes.push(LogHash { value: log_hash, length: length }.count(\n counter,\n ));\n }\n\n /// Calls a private function on another contract (or the same contract).\n ///\n /// Very low-level function.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n /// This enables contracts to interact with each other while maintaining\n /// privacy. This \"composability\" of private contract functions is a key\n /// feature of the Aztec network.\n ///\n /// If a user's transaction includes multiple private function calls, then\n /// by the design of Aztec, the following information will remain private[1]:\n /// - The function selectors and contract addresses of all private function\n /// calls will remain private, so an observer of the public mempool will\n /// not be able to look at a tx and deduce which private functions have\n /// been executed.\n /// - The arguments and return values of all private function calls will\n /// remain private.\n /// - The person who initiated the tx will remain private.\n /// - The notes and nullifiers and private logs that are emitted by all\n /// private function calls will (if designed well) not leak any user\n /// secrets, nor leak which functions have been executed.\n ///\n /// [1] Caveats: Some of these privacy guarantees depend on how app\n /// developers design their smart contracts. Some actions _can_ leak\n /// information, such as:\n /// - Calling an internal public function.\n /// - Calling a public function and not setting msg_sender to Option::none\n /// (feature not built yet - see github).\n /// - Calling any public function will always leak details about the nature\n /// of the transaction, so devs should be careful in their contract\n /// designs. If it can be done in a private function, then that will give\n /// the best privacy.\n /// - Not padding the side-effects of a tx to some standardised, uniform\n /// size. The kernel circuits can take hints to pad side-effects, so a\n /// wallet should be able to request for a particular amount of padding.\n /// Wallets should ideally agree on some standard.\n /// - Padding should include:\n /// - Padding the lengths of note & nullifier arrays\n /// - Padding private logs with random fields, up to some standardised\n /// size.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Advanced\n /// * The call is added to the private call stack and executed by kernel\n /// circuits after this function completes\n /// * The called function can modify its own contract's private state\n /// * Side effects from the called function are included in this transaction\n /// * The call inherits the current transaction's context and gas limits\n ///\n pub fn call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n /// Makes a read-only call to a private function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See `call_private_function` for more general info on private function\n /// calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the called function\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) -> ReturnsHash {\n let args_hash = hash_args_array(args);\n execution_cache::store(args, args_hash);\n self.call_private_function_with_args_hash(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n /// Calls a private function that takes no arguments.\n ///\n /// This is a convenience function for calling private functions that don't\n /// require any input parameters. It's equivalent to `call_private_function`\n /// but slightly more efficient to use when no arguments are needed.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, false)\n }\n\n /// Makes a read-only call to a private function which takes no arguments.\n ///\n /// This combines the optimisation of `call_private_function_no_args` with\n /// the safety of `static_call_private_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values. Use\n /// `.get_preimage()` to extract the actual return values.\n ///\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> ReturnsHash {\n self.call_private_function_with_args_hash(contract_address, function_selector, 0, true)\n }\n\n /// Low-level private function call.\n ///\n /// This is the underlying implementation used by all other private function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args_hash` - Pre-computed hash of the function arguments\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n /// # Returns\n /// * `ReturnsHash` - Hash of the called function's return values\n ///\n pub fn call_private_function_with_args_hash(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n ) -> ReturnsHash {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // Safety: The oracle simulates the private call and returns the value of the side effects counter after\n // execution of the call (which means that end_side_effect_counter - start_side_effect_counter is\n // the number of side effects that took place), along with the hash of the return values. We validate these\n // by requesting a private kernel iteration in which the return values are constrained to hash\n // to `returns_hash` and the side effects counter to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1; // TODO: call `next_counter` instead, for consistency\n ReturnsHash::new(returns_hash)\n }\n\n /// Enqueues a call to a public function to be executed later.\n ///\n /// Unlike private functions which execute immediately on the user's device,\n /// public function calls are \"enqueued\" and executed some time later by a\n /// block proposer.\n ///\n /// This means a public function cannot return any values back to a private\n /// function, because by the time the public function is being executed,\n /// the private function which called it has already completed execution.\n /// (In fact, the private function has been executed and proven, along with\n /// all other private function calls of the user's tx. A single proof of the\n /// tx has been submitted to the Aztec network, and some time later a\n /// proposer has picked the tx up from the mempool and begun executing all\n /// of the enqueued public functions).\n ///\n /// # Privacy warning\n /// Enqueueing a public function call is an inherently leaky action.\n /// Many interesting applications will require some interaction with public\n /// state, but smart contract developers should try to use public function\n /// calls sparingly, and carefully.\n /// _Internal_ public function calls are especially leaky, because they\n /// completely leak which private contract made the call.\n /// See also: https://docs.aztec.network/developers/reference/considerations/privacy_considerations\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// See also `call_public_function` for more important information about\n /// making private -> public function calls.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n /// * `args` - Array of arguments to pass to the public function\n ///\n pub fn static_call_public_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Enqueues a call to a public function that takes no arguments.\n ///\n /// This is an optimisation for calling public functions that don't\n /// take any input parameters. It's otherwise equivalent to\n /// `call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Enqueues a read-only call to a public function with no arguments.\n ///\n /// This combines the optimisation of `call_public_function_no_args` with\n /// the safety of `static_call_public_function`.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `function_selector` - 4-byte identifier of the function to call\n ///\n pub fn static_call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) {\n let calldata_hash = hash_calldata_array([function_selector.to_field()]);\n self.call_public_function_with_calldata_hash(contract_address, calldata_hash, true)\n }\n\n /// Low-level public function call.\n ///\n /// This is the underlying implementation used by all other public function\n /// call methods. Instead of taking raw arguments, it accepts a\n /// hash of the arguments.\n ///\n /// Advanced function: Most developers should use `call_public_function`\n /// or `static_call_public_function` instead. This function is exposed for\n /// performance optimization and advanced use cases.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn call_public_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_enqueued_public_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n /// Enqueues a public function call, and designates it to be the teardown\n /// function for this tx. Only one teardown function call can be made by a\n /// tx.\n ///\n /// Niche function: Only wallet developers and paymaster contract developers\n /// (aka Fee-payment contracts) will need to make use of this function.\n ///\n /// Aztec supports a three-phase execution model: setup, app logic, teardown.\n /// The phases exist to enable a fee payer to take on the risk of paying\n /// a transaction fee, safe in the knowledge that their payment (in whatever\n /// token or method the user chooses) will succeed, regardless of whether\n /// the app logic will succeed. The \"setup\" phase ensures the fee payer\n /// has sufficient balance to pay the proposer their fees.\n /// The teardown phase is primarily intended to: calculate exactly\n /// how much the user owes, based on gas consumption, and refund the user\n /// any change.\n ///\n /// Note: in some cases, the cost of refunding the user (i.e. DA costs of\n /// tx side-effects) might exceed the refund amount. For app logic with\n /// fairly stable and predictable gas consumption, a material refund amount\n /// is unlikely. For app logic with unpredictable gas consumption, a\n /// refund might be important to the user (e.g. if a heft function reverts\n /// very early). Wallet/FPC/Paymaster developers should be mindful of this.\n ///\n pub fn set_public_teardown_function(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ArgsCount],\n ) {\n let calldata = [function_selector.to_field()].concat(args);\n let calldata_hash = hash_calldata_array(calldata);\n execution_cache::store(calldata, calldata_hash);\n self.set_public_teardown_function_with_calldata_hash(contract_address, calldata_hash, false)\n }\n\n /// Low-level function to set the public teardown function.\n ///\n /// This is the underlying implementation for setting the teardown function\n /// call that will execute at the end of the transaction. Instead of taking\n /// raw arguments, it accepts a hash of the arguments.\n ///\n /// Advanced function: Most developers should use\n /// `set_public_teardown_function` instead.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract containing the teardown\n /// function\n /// * `calldata_hash` - Hash of the function calldata\n /// * `is_static_call` - Whether this should be a read-only call\n ///\n pub fn set_public_teardown_function_with_calldata_hash(\n &mut self,\n contract_address: AztecAddress,\n calldata_hash: Field,\n is_static_call: bool,\n ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n\n notify_set_public_teardown_function_call(\n contract_address,\n calldata_hash,\n counter,\n is_static_call,\n );\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n is_static_call,\n calldata_hash,\n };\n }\n\n /// Increments the side-effect counter.\n ///\n /// Very low-level function.\n ///\n /// # Advanced\n ///\n /// Every side-effect of a private function is given a \"side-effect counter\",\n /// based on when it is created. This PrivateContext is in charge of\n /// assigning the counters.\n ///\n /// The reason we have side-effect counters is complicated. Consider this\n /// illustrative pseudocode of inter-contract function calls:\n /// ```\n /// contract A {\n /// let x = 5; // pseudocode for storage var x.\n /// fn a1 {\n /// read x; // value: 5, counter: 1.\n /// x = x + 1;\n /// write x; // value: 6, counter: 2.\n ///\n /// B.b(); // start_counter: 2, end_counter: 4\n ///\n /// read x; // value: 36, counter: 5.\n /// x = x + 1;\n /// write x; // value: 37, counter: 6.\n /// }\n ///\n /// fn a2 {\n /// read x; // value: 6, counter: 3.\n /// x = x * x;\n /// write x; // value: 36, counter: 4.\n /// }\n /// }\n ///\n /// contract B {\n /// fn b() {\n /// A.a2();\n /// }\n /// }\n /// ```\n ///\n /// Suppose a1 is the first function called. The comments show the execution\n /// counter of each side-effect, and what the new value of `x` is.\n ///\n /// These (private) functions are processed by Aztec's kernel circuits in an\n /// order that is different from execution order:\n /// All of A.a1 is proven before B.b is proven, before A.a2 is proven.\n /// So when we're in the 2nd execution frame of A.a1 (after the call to\n /// B.b), the circuit needs to justify why x went from being `6` to `36`.\n /// But the circuit doesn't know why, and given the order of proving, the\n /// kernel hasn't _seen_ a value of 36 get written yet.\n /// The kernel needs to track big arrays of all side-effects of all\n /// private functions in a tx. Then, as it recurses and processes B.b(), it\n /// will eventually see a value of 36 get written.\n ///\n /// Suppose side-effect counters weren't exposed:\n /// The kernel would only see this ordering (in order of proof verification):\n /// [ A.a1.read, A.a1.write, A.a1.read, A.a1.write, A.a2.read, A.a2.write ]\n /// [ 5, 6, 36, 37, 6, 36 ]\n /// The kernel wouldn't know _when_ B.b() was called within A.a1(), because\n /// it can't see what's going on within an app circuit. So the kernel\n /// wouldn't know that the ordering of reads and writes should actually be:\n /// [ A.a1.read, A.a1.write, A.a2.read, A.a2.write, A.a1.read, A.a1.write ]\n /// [ 5, 6, 6, 36, 36, 37 ]\n ///\n /// And so, we introduced side-effect counters: every private function must\n /// assign side-effect counters alongside every side-effect that it emits,\n /// and also expose to the kernel the counters that it started and ended\n /// with.\n /// This gives the kernel enough information to arrange all side-effects in\n /// the correct order.\n /// It can then catch (for example) if a function tries to read state\n /// before it has been written (e.g. if A.a2() maliciously tried to read\n /// a value of x=37) (e.g. if A.a1() maliciously tried to read x=6).\n ///\n /// If a malicious app contract _lies_ and does not count correctly:\n /// - It cannot lie about its start and end counters because the kernel\n /// will catch this.\n /// - It _could_ lie about its intermediate counters:\n /// - 1. It could not increment its side-effects correctly\n /// - 2. It could label its side-effects with counters outside of its\n /// start and end counters' range.\n /// The kernel will catch 2.\n /// The kernel will not catch 1., but this would only cause corruption\n /// to the private state of the malicious contract, and not any other\n /// contracts (because a contract can only modify its own state). If\n /// a \"good\" contract is given _read access_ to a maliciously-counting\n /// contract (via an external getter function, or by reading historic\n /// state from the archive tree directly), and they then make state\n /// changes to their _own_ state accordingly, that could be dangerous.\n /// Developers should be mindful not to trust the claimed innards of\n /// external contracts unless they have audited/vetted the contracts\n /// including vetting the side-effect counter incrementation.\n /// This is a similar paradigm to Ethereum smart contract development:\n /// you must vet external contracts that your contract relies upon, and\n /// you must not make any presumptions about their claimed behaviour.\n /// (Hopefully if a contract imports a version of aztec-nr, we will get\n /// contract verification tooling that can validate the authenticity\n /// of the imported aztec-nr package, and hence infer that the side-\n /// effect counting will be correct, without having to re-audit such logic\n /// for every contract).\n ///\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n include_by_timestamp: 0,\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n" - }, - "72": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/public_context.nr", - "source": "use crate::context::gas::GasOpts;\nuse crate::hash::{\n compute_l1_to_l2_message_hash, compute_l1_to_l2_message_nullifier, compute_secret_hash,\n};\nuse dep::protocol_types::abis::function_selector::FunctionSelector;\nuse dep::protocol_types::address::{AztecAddress, EthAddress};\nuse dep::protocol_types::constants::MAX_U32_VALUE;\nuse dep::protocol_types::traits::{Empty, FromField, Packable, Serialize, ToField};\n\n/// # PublicContext\n///\n/// The **main interface** between a #[public] function and the Aztec blockchain.\n///\n/// An instance of the PublicContext is initialized automatically at the outset\n/// of every public function, within the #[public] macro, so you'll never\n/// need to consciously instantiate this yourself.\n///\n/// The instance is always named `context`, and it will always be available\n/// within the body of every #[public] function in your smart contract.\n///\n/// Typical usage for a smart contract developer will be to call getter\n/// methods of the PublicContext.\n///\n/// _Pushing_ data and requests to the context is mostly handled within\n/// aztec-nr's own functions, so typically a smart contract developer won't\n/// need to call any setter methods directly.\n///\n/// ## Responsibilities\n/// - Exposes contextual data to a public function:\n/// - Data relating to how this public function was called:\n/// - msg_sender, this_address\n/// - Data relating to the current blockchain state:\n/// - timestamp, block_number, chain_id, version\n/// - Gas and fee information\n/// - Provides state access:\n/// - Read/write public storage (key-value mapping)\n/// - Check existence of notes and nullifiers\n/// (Some patterns use notes & nullifiers to store public (not private)\n/// information)\n/// - Enables consumption of L1->L2 messages.\n/// - Enables calls to other public smart contract functions:\n/// - Writes data to the blockchain:\n/// - Updates to public state variables\n/// - New public logs (for events)\n/// - New L2->L1 messages\n/// - New notes & nullifiers\n/// (E.g. pushing public info to notes/nullifiers, or for completing\n/// \"partial notes\")\n///\n/// ## Key Differences from Private Execution\n///\n/// Unlike private functions -- which are executed on the user's device and which\n/// can only reference historic state -- public functions are executed by a block\n/// proposer and are executed \"live\" on the _current_ tip of the chain.\n/// This means public functions can:\n/// - Read and write _current_ public state\n/// - Immediately see the effects of earlier transactions in the same block\n///\n/// Also, public functions are executed within a zkVM (the \"AVM\"), so that they\n/// can _revert_ whilst still ensuring payment to the proposer and prover.\n/// (Private functions cannot revert: they either succeed, or they cannot be\n/// included).\n///\n/// ## Optimising Public Functions\n///\n/// Using the AVM to execute public functions means they compile down to \"AVM\n/// bytecode\" instead of the ACIR that private functions (standalone circuits)\n/// compile to. Therefore the approach to optimising a public function is\n/// fundamentally different from optimising a public function.\n///\npub struct PublicContext {\n pub args_hash: Option,\n pub compute_args_hash: fn() -> Field,\n}\n\nimpl Eq for PublicContext {\n fn eq(self, other: Self) -> bool {\n (self.args_hash == other.args_hash)\n // Can't compare the function compute_args_hash\n }\n}\n\nimpl PublicContext {\n /// Creates a new PublicContext instance.\n ///\n /// Low-level function: This is called automatically by the #[public]\n /// macro, so you shouldn't need to be called directly by smart contract\n /// developers.\n ///\n /// # Arguments\n /// * `compute_args_hash` - Function to compute the args_hash\n ///\n /// # Returns\n /// * A new PublicContext instance\n ///\n pub fn new(compute_args_hash: fn() -> Field) -> Self {\n PublicContext { args_hash: Option::none(), compute_args_hash }\n }\n\n /// Emits a _public_ log that will be visible onchain to everyone.\n ///\n /// # Arguments\n /// * `log` - The data to log, must implement Serialize trait\n ///\n pub fn emit_public_log(_self: &mut Self, log: T)\n where\n T: Serialize,\n {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_public_log(Serialize::serialize(log).as_slice()) };\n }\n\n /// Checks if a given note hash exists in the note hash tree at a particular\n /// leaf_index.\n ///\n /// # Arguments\n /// * `note_hash` - The note hash to check for existence\n /// * `leaf_index` - The index where the note hash should be located\n ///\n /// # Returns\n /// * `bool` - True if the note hash exists at the specified index\n ///\n pub fn note_hash_exists(_self: Self, note_hash: Field, leaf_index: u64) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { note_hash_exists(note_hash, leaf_index) } == 1\n }\n\n /// Checks if a specific L1-to-L2 message exists in the L1-to-L2 message\n /// tree at a particular leaf index.\n ///\n /// Common use cases include token bridging, cross-chain governance, and\n /// triggering L2 actions based on L1 events.\n ///\n /// This function should be called before attempting to consume an L1-to-L2\n /// message.\n ///\n /// # Arguments\n /// * `msg_hash` - Hash of the L1-to-L2 message to check\n /// * `msg_leaf_index` - The index where the message should be located\n ///\n /// # Returns\n /// * `bool` - True if the message exists at the specified index\n ///\n /// # Advanced\n /// * Uses the AVM l1_to_l2_msg_exists opcode for tree lookup\n /// * Messages are copied from L1 Inbox to L2 by block proposers\n ///\n pub fn l1_to_l2_msg_exists(_self: Self, msg_hash: Field, msg_leaf_index: Field) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n // TODO(alvaro): Make l1l2msg leaf index a u64 upstream\n unsafe { l1_to_l2_msg_exists(msg_hash, msg_leaf_index as u64) } == 1\n }\n\n /// Checks if a specific nullifier has been emitted by a given contract.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. An example is to check\n /// whether a contract has been published: we emit a nullifier that is\n /// deterministic, but whose preimage is _not_ private. This is more\n /// efficient than using mutable storage, and can be done directly\n /// from a private function.\n ///\n /// Nullifiers can be tested for non-existence in public, which is not the\n /// case in private. Because private functions do not have access to\n /// the tip of the blockchain (but only the anchor block they are built\n /// at) they can only prove nullifier non-existence in the past. But between\n /// an anchor block and the block in which a tx is included, the nullifier\n /// might have been inserted into the nullifier tree by some other\n /// transaction.\n /// Public functions _do_ have access to the tip of the state, and so\n /// this pattern is safe.\n ///\n /// # Arguments\n /// * `unsiloed_nullifier` - The raw nullifier value (before siloing with\n /// the contract address that emitted it).\n /// * `address` - The claimed contract address that emitted the nullifier\n ///\n /// # Returns\n /// * `bool` - True if the nullifier has been emitted by the specified contract\n ///\n pub fn nullifier_exists(_self: Self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { nullifier_exists(unsiloed_nullifier, address.to_field()) } == 1\n }\n\n /// Consumes a message sent from Ethereum (L1) to Aztec (L2) -- effectively\n /// marking it as \"read\".\n ///\n /// Use this function if you only want the message to ever be \"referred to\"\n /// once. Once consumed using this method, the message cannot be consumed\n /// again, because a nullifier is emitted.\n /// If your use case wants for the message to be read unlimited times, then\n /// you can always read any historic message from the L1-to-L2 messages tree,\n /// using the `l1_to_l2_msg_exists` method. Messages never technically get\n /// deleted from that tree.\n ///\n /// The message will first be inserted into an Aztec \"Inbox\" smart contract\n /// on L1. It will not be available for consumption immediately. Messages\n /// get copied-over from the L1 Inbox to L2 by the next Proposer in batches.\n /// So you will need to wait until the messages are copied before you can\n /// consume them.\n ///\n /// # Arguments\n /// * `content` - The message content that was sent from L1\n /// * `secret` - Secret value used for message privacy (if needed)\n /// * `sender` - Ethereum address that sent the message\n /// * `leaf_index` - Index of the message in the L1-to-L2 message tree\n ///\n /// # Advanced\n /// * Validates message existence in the L1-to-L2 message tree\n /// * Prevents double-consumption by emitting a nullifier\n /// * Message hash is computed from all parameters + chain context\n /// * Will revert if message doesn't exist or was already consumed\n ///\n pub fn consume_l1_to_l2_message(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\n let secret_hash = compute_secret_hash(secret);\n let message_hash = compute_l1_to_l2_message_hash(\n sender,\n self.chain_id(),\n /*recipient=*/\n self.this_address(),\n self.version(),\n content,\n secret_hash,\n leaf_index,\n );\n let nullifier = compute_l1_to_l2_message_nullifier(message_hash, secret);\n\n assert(\n !self.nullifier_exists(nullifier, self.this_address()),\n \"L1-to-L2 message is already nullified\",\n );\n assert(\n self.l1_to_l2_msg_exists(message_hash, leaf_index),\n \"Tried to consume nonexistent L1-to-L2 message\",\n );\n\n self.push_nullifier(nullifier);\n }\n\n /// Sends an \"L2 -> L1 message\" from this function (Aztec, L2) to a smart\n /// contract on Ethereum (L1). L1 contracts which are designed to\n /// send/receive messages to/from Aztec are called \"Portal Contracts\".\n ///\n /// Common use cases include withdrawals, cross-chain asset transfers, and\n /// triggering L1 actions based on L2 state changes.\n ///\n /// The message will be inserted into an Aztec \"Outbox\" contract on L1,\n /// when this transaction's block is proposed to L1.\n /// Sending the message will not result in any immediate state changes in\n /// the target portal contract. The message will need to be manually\n /// consumed from the Outbox through a separate Ethereum transaction: a user\n /// will need to call a function of the portal contract -- a function\n /// specifically designed to make a call to the Outbox to consume the\n /// message.\n /// The message will only be available for consumption once the _epoch_\n /// proof has been submitted. Given that there are multiple Aztec blocks\n /// within an epoch, it might take some time for this epoch proof to be\n /// submitted -- especially if the block was near the start of an epoch.\n ///\n /// # Arguments\n /// * `recipient` - Ethereum address that will receive the message\n /// * `content` - Message content (32 bytes as a Field element)\n ///\n pub fn message_portal(_self: &mut Self, recipient: EthAddress, content: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { send_l2_to_l1_msg(recipient, content) };\n }\n\n /// Calls a public function on another contract.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Arguments to pass to the function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Makes a read-only call to a public function on another contract.\n ///\n /// This is similar to Solidity's `staticcall`. The called function\n /// cannot modify state or emit events. Any nested calls are constrained to\n /// also be staticcalls.\n ///\n /// Useful for querying data from other contracts safely.\n ///\n /// Will revert if the called function reverts or runs out of gas.\n ///\n /// # Arguments\n /// * `contract_address` - Address of the contract to call\n /// * `function_selector` - Function to call on the target contract\n /// * `args` - Array of arguments to pass to the called function\n /// * `gas_opts` - An optional allocation of gas to the called function.\n ///\n /// # Returns\n /// * `[Field]` - Return data from the called function\n ///\n pub unconstrained fn static_call_public_function(\n _self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n gas_opts: GasOpts,\n ) -> [Field] {\n let calldata = args.push_front(function_selector.to_field());\n\n call_static(\n gas_opts.l2_gas.unwrap_or(MAX_U32_VALUE),\n gas_opts.da_gas.unwrap_or(MAX_U32_VALUE),\n contract_address,\n calldata,\n );\n // Use success_copy to determine whether the call succeeded\n let success = success_copy();\n\n let result_data = returndata_copy(0, returndata_size());\n if !success {\n // Rethrow the revert data.\n avm_revert(result_data);\n }\n result_data\n }\n\n /// Adds a new note hash to the Aztec blockchain's global Note Hash Tree.\n ///\n /// Notes are ordinarily constructed and emitted by _private_ functions, to\n /// ensure that both the content of the note, and the contract that emitted\n /// the note, stay private.\n ///\n /// There are however some useful patterns whereby a note needs to contain\n /// _public_ data. The ability to push a new note_hash from a _public_\n /// function means that notes can be injected with public data immediately\n /// -- as soon as the public value is known. The slower alternative would\n /// be to submit a follow-up transaction so that a private function can\n /// inject the data. Both are possible on Aztec.\n ///\n /// Search \"Partial Note\" for a very common pattern which enables a note\n /// to be \"partially\" populated with some data in a _private_ function, and\n /// then later \"completed\" with some data in a public function.\n ///\n /// # Arguments\n /// * `note_hash` - The hash of the note to add to the tree\n ///\n /// # Advanced\n /// * The note hash will be siloed with the contract address by the protocol\n ///\n pub fn push_note_hash(_self: &mut Self, note_hash: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_note_hash(note_hash) };\n }\n\n /// Adds a new nullifier to the Aztec blockchain's global Nullifier Tree.\n ///\n /// Whilst nullifiers are primarily intended as a _privacy-preserving_\n /// record of a one-time action, they can also be used to efficiently\n /// record _public_ one-time actions too. Hence why you're seeing this\n /// function within the PublicContext.\n /// An example is to check whether a contract has been published: we emit\n /// a nullifier that is deterministic, but whose preimage is _not_ private.\n ///\n /// # Arguments\n /// * `nullifier` - A unique field element that represents the consumed\n /// state\n ///\n /// # Advanced\n /// * Nullifier is immediately added to the global nullifier tree\n /// * Emitted nullifiers are immediately visible to all\n /// subsequent transactions in the same block\n /// * Automatically siloed with the contract address by the protocol\n /// * Used for preventing double-spending and ensuring one-time actions\n ///\n pub fn push_nullifier(_self: &mut Self, nullifier: Field) {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { emit_nullifier(nullifier) };\n }\n\n /// Returns the address of the current contract being executed.\n ///\n /// This is equivalent to `address(this)` in Solidity (hence the name).\n /// Use this to identify the current contract's address, commonly needed for\n /// access control or when interacting with other contracts.\n ///\n /// # Returns\n /// * `AztecAddress` - The contract address of the current function being\n /// executed.\n ///\n pub fn this_address(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n address()\n }\n }\n\n /// Returns the contract address that initiated this function call.\n ///\n /// This is similar to `msg.sender` in Solidity (hence the name).\n ///\n /// Important Note: Since Aztec doesn't have a concept of an EoA (\n /// Externally-owned Account), the msg_sender is \"undefined\" for the first\n /// function call of every transaction. A value of `-1` is returned in such\n /// cases, and is enforced by the protocol's kernel circuits.\n /// The first function call of a tx is likely to be a call to the user's\n /// account contract, so this quirk will most often be handled by account\n /// contract developers.\n ///\n /// # Returns\n /// * `AztecAddress` - The address of the account or contract that called\n /// this function\n ///\n /// # Examples\n /// ```rust\n /// #[aztec(public)]\n /// fn transfer(context: &mut PublicContext, to: AztecAddress, amount: u64) {\n /// let sender = context.msg_sender();\n /// // Only the sender can transfer their own tokens\n /// assert(sender == get_token_owner(), \"Unauthorized\");\n /// }\n /// ```\n ///\n /// # Advanced\n /// * Value is provided by the AVM sender opcode\n /// * In nested calls, this is the immediate caller, not the original\n /// transaction sender\n /// * Globally visible unlike private execution where it's contract-local\n pub fn msg_sender(_self: Self) -> AztecAddress {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n sender()\n }\n }\n\n /// Returns the function selector of the currently-executing function.\n ///\n /// This is similar to `msg.sig` in Solidity, returning the first 4\n /// bytes of the function signature.\n ///\n /// # Returns\n /// * `FunctionSelector` - The 4-byte function identifier\n ///\n /// # Advanced\n /// * Extracted from the first element of calldata\n /// * Used internally for function dispatch in the AVM\n ///\n pub fn selector(_self: Self) -> FunctionSelector {\n // The selector is the first element of the calldata when calling a public function through dispatch.\n // Safety: AVM opcodes are constrained by the AVM itself\n let raw_selector: [Field; 1] = unsafe { calldata_copy(0, 1) };\n FunctionSelector::from_field(raw_selector[0])\n }\n\n /// Returns the hash of the arguments passed to the current function.\n ///\n /// Very low-level function: The #[public] macro uses this internally.\n /// Smart contract developers typically won't need to access this\n /// directly as arguments are automatically made available.\n ///\n /// # Returns\n /// * `Field` - Hash of the function arguments\n ///\n pub fn get_args_hash(mut self) -> Field {\n if !self.args_hash.is_some() {\n self.args_hash = Option::some((self.compute_args_hash)());\n }\n\n self.args_hash.unwrap_unchecked()\n }\n\n /// Returns the \"transaction fee\" for the current transaction.\n /// This is the final tx fee that will be deducted from the fee_payer's\n /// \"fee-juice\" balance (in the protocol's Base Rollup circuit).\n ///\n /// # Returns\n /// * `Field` - The actual, final cost of the transaction, taking into account:\n /// the actual gas used during the setup and app-logic phases,\n /// and the fixed amount of gas that's been allocated by the user\n /// for the teardown phase.\n /// I.e. effectiveL2FeePerGas * l2GasUsed + effectiveDAFeePerGas * daGasUsed\n ///\n /// This will return `0` during the \"setup\" and \"app-logic\" phases of\n /// tx execution (because the final tx fee is not known at that time).\n /// This will only return a nonzero value during the \"teardown\" phase of\n /// execution, where the final tx fee can actually be computed.\n ///\n /// Regardless of _when_ this function is called during the teardown phase,\n /// it will always return the same final tx fee value. The teardown phase\n /// does not consume a variable amount of gas: it always consumes a\n /// pre-allocated amount of gas, as specified by the user when they generate\n /// their tx.\n ///\n pub fn transaction_fee(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n transaction_fee()\n }\n }\n\n /// Returns the chain ID of the current network.\n ///\n /// This is similar to `block.chainid` in Solidity. Returns the unique\n /// identifier for the blockchain network this transaction is executing on.\n ///\n /// Helps prevent cross-chain replay attacks. Useful if implementing\n /// multi-chain contract logic.\n ///\n /// # Returns\n /// * `Field` - The chain ID as a field element\n ///\n pub fn chain_id(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n chain_id()\n }\n }\n\n /// Returns the Aztec protocol version that this transaction is executing\n /// under. Different versions may have different rules, opcodes, or\n /// cryptographic primitives.\n ///\n /// This is similar to how Ethereum has different EVM versions.\n ///\n /// Useful for forward/backward compatibility checks\n ///\n /// Not to be confused with contract versions; this is the protocol version.\n ///\n /// # Returns\n /// * `Field` - The protocol version as a field element\n ///\n pub fn version(_self: Self) -> Field {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n version()\n }\n }\n /// Returns the current block number.\n ///\n /// This is similar to `block.number` in Solidity.\n ///\n /// Note: the current block number is only available within a public function\n /// (as opposed to a private function).\n ///\n /// Note: the time intervals between blocks should not be relied upon as\n /// being consistent:\n /// - Timestamps of blocks fall within a range, rather than at exact regular\n /// intervals.\n /// - Slots can be missed.\n /// - Protocol upgrades can completely change the intervals between blocks\n /// (and indeed the current roadmap plans to reduce the time between\n /// blocks, eventually).\n /// Use `context.timestamp()` for more-reliable time-based logic.\n ///\n /// # Returns\n /// * `u32` - The current block number\n ///\n pub fn block_number(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n block_number()\n }\n }\n\n /// Returns the timestamp of the current block.\n ///\n /// This is similar to `block.timestamp` in Solidity.\n ///\n /// All functions of all transactions in a block share the exact same\n /// timestamp (even though technically each transaction is executed\n /// one-after-the-other).\n ///\n /// Important note: Timestamps of Aztec blocks are not at reliably-fixed\n /// intervals. The proposer of the block has some flexibility to choose a\n /// timestamp which is in a valid _range_: Obviously the timestamp of this\n /// block must be strictly greater than that of the previous block, and must\n /// must be less than the timestamp of whichever ethereum block the aztec\n /// block is proposed to. Furthermore, if the timestamp is not deemed close\n /// enough to the actual current time, the committee of validators will not\n /// attest to the block.\n ///\n /// # Returns\n /// * `u64` - Unix timestamp in seconds\n ///\n pub fn timestamp(_self: Self) -> u64 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n timestamp()\n }\n }\n\n /// Returns the fee per unit of L2 gas for this transaction (aka the \"L2 gas\n /// price\"), as chosen by the user.\n ///\n /// L2 gas covers the cost of executing public functions and handling\n /// side-effects within the AVM.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of L2 gas\n ///\n /// Wallet developers should be mindful that the choice of gas price (which\n /// is publicly visible) can leak information about the user, e.g.:\n /// - which wallet software the user is using;\n /// - the amount of time which has elapsed from the time the user's wallet\n /// chose a gas price (at the going rate), to the time of tx submission.\n /// This can give clues about the proving time, and hence the nature of\n /// the tx.\n /// - the urgency of the transaction (which is kind of unavoidable, if the\n /// tx is indeed urgent).\n /// - the wealth of the user.\n /// - the exact user (if the gas price is explicitly chosen by the user to\n /// be some unique number like 0.123456789, or their favourite number).\n /// Wallet devs might wish to consider fuzzing the choice of gas price.\n ///\n pub fn base_fee_per_l2_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_l2_gas()\n }\n }\n\n /// Returns the fee per unit of DA (Data Availability) gas (aka the \"DA gas\n /// price\").\n ///\n /// DA gas covers the cost of making transaction data available on L1.\n ///\n /// See the warning in `fee_pre_l2_gas` for how gas prices can be leaky.\n ///\n /// # Returns\n /// * `u128` - Fee per unit of DA gas\n ///\n pub fn base_fee_per_da_gas(_self: Self) -> u128 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n base_fee_per_da_gas()\n }\n }\n\n /// Returns the remaining L2 gas available for this transaction.\n ///\n /// Different AVM opcodes consume different amounts of gas.\n ///\n /// # Returns\n /// * `u32` - Remaining L2 gas units\n ///\n pub fn l2_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n l2_gas_left()\n }\n }\n\n /// Returns the remaining DA (Data Availability) gas available for this\n /// transaction.\n ///\n /// DA gas is consumed when emitting data that needs to be made available\n /// on L1, such as public logs or state updates.\n /// All of the side-effects from the private part of the tx also consume\n /// DA gas before execution of any public functions even begins.\n ///\n /// # Returns\n /// * `u32` - Remaining DA gas units\n ///\n pub fn da_gas_left(_self: Self) -> u32 {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe {\n da_gas_left()\n }\n }\n\n /// Checks if the current execution is within a staticcall context, where\n /// no state changes or logs are allowed to be emitted (by this function\n /// or any nested function calls).\n ///\n /// # Returns\n /// * `bool` - True if in staticcall context, false otherwise\n ///\n pub fn is_static_call(_self: Self) -> bool {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { is_static_call() } == 1\n }\n\n /// Reads raw field values from public storage.\n /// Reads N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to read from\n ///\n /// # Returns\n /// * `[Field; N]` - Array of N field values from consecutive storage slots\n ///\n /// # Generic Parameters\n /// * `N` - the number of consecutive slots to return, starting from the\n /// `storage_slot`.\n ///\n pub fn raw_storage_read(_self: Self, storage_slot: Field) -> [Field; N] {\n let mut out = [0; N];\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n out[i] = unsafe { storage_read(storage_slot + i as Field) };\n }\n out\n }\n\n /// Reads a typed value from public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform reads: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to read from\n ///\n /// # Returns\n /// * `T` - The deserialized value from storage\n ///\n /// # Generic Parameters\n /// * `T` - The type that the caller expects to read from the `storage_slot`.\n ///\n pub fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n\n /// Writes raw field values to public storage.\n /// Writes to N consecutive storage slots starting from the given slot.\n ///\n /// Very low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// Public storage writes take effect immediately.\n ///\n /// # Arguments\n /// * `storage_slot` - The starting storage slot to write to\n /// * `values` - Array of N Fields to write to storage\n ///\n pub fn raw_storage_write(_self: Self, storage_slot: Field, values: [Field; N]) {\n for i in 0..N {\n // Safety: AVM opcodes are constrained by the AVM itself\n unsafe { storage_write(storage_slot + i as Field, values[i]) };\n }\n }\n\n /// Writes a typed value to public storage.\n ///\n /// Low-level function. Users should typically use the public state\n /// variable abstractions to perform writes: PublicMutable & PublicImmutable.\n ///\n /// # Arguments\n /// * `storage_slot` - The storage slot to write to\n /// * `value` - The typed value to write to storage\n ///\n /// # Generic Parameters\n /// * `T` - The type to write to storage.\n ///\n pub fn storage_write(self, storage_slot: Field, value: T)\n where\n T: Packable,\n {\n self.raw_storage_write(storage_slot, value.pack());\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// Unconstrained opcode wrappers (do not use directly).\nunconstrained fn address() -> AztecAddress {\n address_opcode()\n}\nunconstrained fn sender() -> AztecAddress {\n sender_opcode()\n}\nunconstrained fn transaction_fee() -> Field {\n transaction_fee_opcode()\n}\nunconstrained fn chain_id() -> Field {\n chain_id_opcode()\n}\nunconstrained fn version() -> Field {\n version_opcode()\n}\nunconstrained fn block_number() -> u32 {\n block_number_opcode()\n}\nunconstrained fn timestamp() -> u64 {\n timestamp_opcode()\n}\nunconstrained fn base_fee_per_l2_gas() -> u128 {\n base_fee_per_l2_gas_opcode()\n}\nunconstrained fn base_fee_per_da_gas() -> u128 {\n base_fee_per_da_gas_opcode()\n}\nunconstrained fn l2_gas_left() -> u32 {\n l2_gas_left_opcode()\n}\nunconstrained fn da_gas_left() -> u32 {\n da_gas_left_opcode()\n}\nunconstrained fn is_static_call() -> u1 {\n is_static_call_opcode()\n}\nunconstrained fn note_hash_exists(note_hash: Field, leaf_index: u64) -> u1 {\n note_hash_exists_opcode(note_hash, leaf_index)\n}\nunconstrained fn emit_note_hash(note_hash: Field) {\n emit_note_hash_opcode(note_hash)\n}\nunconstrained fn nullifier_exists(nullifier: Field, address: Field) -> u1 {\n nullifier_exists_opcode(nullifier, address)\n}\nunconstrained fn emit_nullifier(nullifier: Field) {\n emit_nullifier_opcode(nullifier)\n}\nunconstrained fn emit_public_log(message: [Field]) {\n emit_public_log_opcode(message)\n}\nunconstrained fn l1_to_l2_msg_exists(msg_hash: Field, msg_leaf_index: u64) -> u1 {\n l1_to_l2_msg_exists_opcode(msg_hash, msg_leaf_index)\n}\nunconstrained fn send_l2_to_l1_msg(recipient: EthAddress, content: Field) {\n send_l2_to_l1_msg_opcode(recipient, content)\n}\n\nunconstrained fn call(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\nunconstrained fn call_static(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {\n call_static_opcode(l2_gas_allocation, da_gas_allocation, address, args)\n}\n\npub unconstrained fn calldata_copy(cdoffset: u32, copy_size: u32) -> [Field; N] {\n calldata_copy_opcode(cdoffset, copy_size)\n}\n\n// `success_copy` is placed immediately after the CALL opcode to get the success value\nunconstrained fn success_copy() -> bool {\n success_copy_opcode()\n}\n\nunconstrained fn returndata_size() -> u32 {\n returndata_size_opcode()\n}\n\nunconstrained fn returndata_copy(rdoffset: u32, copy_size: u32) -> [Field] {\n returndata_copy_opcode(rdoffset, copy_size)\n}\n\npub unconstrained fn avm_return(returndata: [Field]) {\n return_opcode(returndata)\n}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\nunconstrained fn avm_revert(revertdata: [Field]) {\n revert_opcode(revertdata)\n}\n\nunconstrained fn storage_read(storage_slot: Field) -> Field {\n storage_read_opcode(storage_slot)\n}\n\nunconstrained fn storage_write(storage_slot: Field, value: Field) {\n storage_write_opcode(storage_slot, value);\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext::new(|| 0)\n }\n}\n\n// TODO: consider putting this oracle code in its own file.\n// AVM oracles (opcodes) follow, do not use directly.\n#[oracle(avmOpcodeAddress)]\nunconstrained fn address_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeSender)]\nunconstrained fn sender_opcode() -> AztecAddress {}\n\n#[oracle(avmOpcodeTransactionFee)]\nunconstrained fn transaction_fee_opcode() -> Field {}\n\n#[oracle(avmOpcodeChainId)]\nunconstrained fn chain_id_opcode() -> Field {}\n\n#[oracle(avmOpcodeVersion)]\nunconstrained fn version_opcode() -> Field {}\n\n#[oracle(avmOpcodeBlockNumber)]\nunconstrained fn block_number_opcode() -> u32 {}\n\n#[oracle(avmOpcodeTimestamp)]\nunconstrained fn timestamp_opcode() -> u64 {}\n\n#[oracle(avmOpcodeBaseFeePerL2Gas)]\nunconstrained fn base_fee_per_l2_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeBaseFeePerDaGas)]\nunconstrained fn base_fee_per_da_gas_opcode() -> u128 {}\n\n#[oracle(avmOpcodeL2GasLeft)]\nunconstrained fn l2_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeDaGasLeft)]\nunconstrained fn da_gas_left_opcode() -> u32 {}\n\n#[oracle(avmOpcodeIsStaticCall)]\nunconstrained fn is_static_call_opcode() -> u1 {}\n\n#[oracle(avmOpcodeNoteHashExists)]\nunconstrained fn note_hash_exists_opcode(note_hash: Field, leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeEmitNoteHash)]\nunconstrained fn emit_note_hash_opcode(note_hash: Field) {}\n\n#[oracle(avmOpcodeNullifierExists)]\nunconstrained fn nullifier_exists_opcode(nullifier: Field, address: Field) -> u1 {}\n\n#[oracle(avmOpcodeEmitNullifier)]\nunconstrained fn emit_nullifier_opcode(nullifier: Field) {}\n\n// TODO(#11124): rename unencrypted to public in avm\n#[oracle(avmOpcodeEmitUnencryptedLog)]\nunconstrained fn emit_public_log_opcode(message: [Field]) {}\n\n#[oracle(avmOpcodeL1ToL2MsgExists)]\nunconstrained fn l1_to_l2_msg_exists_opcode(msg_hash: Field, msg_leaf_index: u64) -> u1 {}\n\n#[oracle(avmOpcodeSendL2ToL1Msg)]\nunconstrained fn send_l2_to_l1_msg_opcode(recipient: EthAddress, content: Field) {}\n\n#[oracle(avmOpcodeCalldataCopy)]\nunconstrained fn calldata_copy_opcode(cdoffset: u32, copy_size: u32) -> [Field; N] {}\n\n#[oracle(avmOpcodeReturndataSize)]\nunconstrained fn returndata_size_opcode() -> u32 {}\n\n#[oracle(avmOpcodeReturndataCopy)]\nunconstrained fn returndata_copy_opcode(rdoffset: u32, copy_size: u32) -> [Field] {}\n\n#[oracle(avmOpcodeReturn)]\nunconstrained fn return_opcode(returndata: [Field]) {}\n\n// This opcode reverts using the exact data given. In general it should only be used\n// to do rethrows, where the revert data is the same as the original revert data.\n// For normal reverts, use Noir's `assert` which, on top of reverting, will also add\n// an error selector to the revert data.\n#[oracle(avmOpcodeRevert)]\nunconstrained fn revert_opcode(revertdata: [Field]) {}\n\n#[oracle(avmOpcodeCall)]\nunconstrained fn call_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeStaticCall)]\nunconstrained fn call_static_opcode(\n l2_gas_allocation: u32,\n da_gas_allocation: u32,\n address: AztecAddress,\n args: [Field],\n) {}\n\n#[oracle(avmOpcodeSuccessCopy)]\nunconstrained fn success_copy_opcode() -> bool {}\n\n#[oracle(avmOpcodeStorageRead)]\nunconstrained fn storage_read_opcode(storage_slot: Field) -> Field {}\n\n#[oracle(avmOpcodeStorageWrite)]\nunconstrained fn storage_write_opcode(storage_slot: Field, value: Field) {}\n" - }, - "73": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/returns_hash.nr", - "source": "use crate::{hash::hash_args_array, oracle::execution_cache};\nuse dep::protocol_types::traits::Deserialize;\n\n/// A hash that represents a private contract function call's return value. Call `get_preimage` to get the underlying\n/// value.\n///\n/// The kernels don't process the actual return values but instead their hashes, so it is up to contracts to populate\n/// oracles with the preimages of these hashes on return to make them available to their callers.\n///\n/// Public calls don't utilize this mechanism since the AVM does process the full return values.\npub struct ReturnsHash {\n hash: Field,\n}\n\nimpl ReturnsHash {\n pub fn new(hash: Field) -> Self {\n ReturnsHash { hash }\n }\n\n /// Fetches the underlying return value from an oracle, constraining that it corresponds to the return data hash.\n pub fn get_preimage(self) -> T\n where\n T: Deserialize,\n {\n // Safety: We verify that the value returned by `load` is the preimage of `hash`, fully constraining it. If `T`\n // is `()`, then `preimage` must be an array of length 0 (since that is `()`'s deserialization length).\n // `hash_args_array` handles empty arrays following the protocol rules (i.e. an empty args array is signaled\n // with a zero hash), correctly constraining `self.hash`.\n let preimage = unsafe { execution_cache::load(self.hash) };\n assert_eq(self.hash, hash_args_array(preimage), \"Preimage mismatch\");\n\n Deserialize::deserialize(preimage)\n }\n}\n\nmod test {\n use crate::{\n hash::hash_args_array,\n oracle::execution_cache,\n test::{helpers::test_environment::TestEnvironment, mocks::mock_struct::MockStruct},\n };\n use super::ReturnsHash;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn retrieves_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test]\n unconstrained fn retrieves_empty_preimage() {\n let env = TestEnvironment::new();\n env.private_context(|_| {\n let value = ();\n let serialized = [];\n\n let hash = hash_args_array(serialized);\n execution_cache::store(serialized, hash);\n\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n });\n }\n\n #[test(should_fail_with = \"Preimage mismatch\")]\n unconstrained fn rejects_bad_preimage() {\n let value = MockStruct::new(4, 7);\n let serialized = value.serialize();\n\n let mut bad_serialized = serialized;\n bad_serialized[0] += 1;\n\n let hash = hash_args_array(serialized);\n\n let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns(bad_serialized);\n assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n }\n\n // This test passes due to a Noir bug.\n // #[test(should_fail_with=\"Preimage mismatch\")]\n // unconstrained fn rejects_bad_empty_preimage() {\n // let value = ();\n // let serialized = [];\n\n // let hash = hash_args_array(serialized);\n\n // let _ = OracleMock::mock(\"privateLoadFromExecutionCache\").returns([1]);\n // assert_eq(ReturnsHash::new(hash).get_preimage(), value);\n // }\n}\n" - }, - "74": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/context/utility_context.nr", - "source": "use crate::oracle::{\n execution::{get_block_number, get_chain_id, get_contract_address, get_timestamp, get_version},\n storage::storage_read,\n};\nuse dep::protocol_types::{address::AztecAddress, traits::Packable};\n\npub struct UtilityContext {\n block_number: u32,\n timestamp: u64,\n contract_address: AztecAddress,\n version: Field,\n chain_id: Field,\n}\n\nimpl UtilityContext {\n pub unconstrained fn new() -> Self {\n // We could call these oracles on the getters instead of at creation, which makes sense given that they might\n // not even be accessed. However any performance gains are minimal, and we'd rather fail early if a user\n // incorrectly attempts to create a UtilityContext in an environment in which these oracles are not\n // available.\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let contract_address = get_contract_address();\n let version = get_version();\n let chain_id = get_chain_id();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at(contract_address: AztecAddress) -> Self {\n let block_number = get_block_number();\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub unconstrained fn at_historical(contract_address: AztecAddress, block_number: u32) -> Self {\n let timestamp = get_timestamp();\n let chain_id = get_chain_id();\n let version = get_version();\n Self { block_number, timestamp, contract_address, version, chain_id }\n }\n\n pub fn block_number(self) -> u32 {\n self.block_number\n }\n\n pub fn timestamp(self) -> u64 {\n self.timestamp\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.contract_address\n }\n\n pub fn version(self) -> Field {\n self.version\n }\n\n pub fn chain_id(self) -> Field {\n self.chain_id\n }\n\n pub unconstrained fn raw_storage_read(\n self: Self,\n storage_slot: Field,\n ) -> [Field; N] {\n storage_read(self.this_address(), storage_slot, self.block_number())\n }\n\n pub unconstrained fn storage_read(self, storage_slot: Field) -> T\n where\n T: Packable,\n {\n T::unpack(self.raw_storage_read(storage_slot))\n }\n}\n" - }, - "76": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/event/event_selector.nr", - "source": "use dep::protocol_types::{\n hash::poseidon2_hash_bytes,\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n#[derive(Deserialize, Eq, Serialize)]\npub struct EventSelector {\n // 1st 4-bytes (big-endian leftmost) of abi-encoding of an event.\n inner: u32,\n}\n\nimpl FromField for EventSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for EventSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for EventSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl EventSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature(signature: str) -> Self {\n let bytes = signature.as_bytes();\n let hash = poseidon2_hash_bytes(bytes);\n\n // `hash` is automatically truncated to fit within 32 bits.\n EventSelector::from_field(hash)\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n" - }, - "78": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/hash.nr", - "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__PUBLIC_BYTECODE, GENERATOR_INDEX__PUBLIC_CALLDATA,\n GENERATOR_INDEX__SECRET_HASH, MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS,\n },\n hash::{\n poseidon2_hash_subarray, poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice,\n sha256_to_field,\n },\n point::Point,\n traits::{Hash, ToField},\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\n// Computes the hash of input arguments or return values for private functions, or for authwit creation.\npub fn hash_args_array(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Same as `hash_args_array`, but takes a slice instead of an array.\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Computes the hash of calldata for public functions.\npub fn hash_calldata_array(calldata: [Field; N]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n// Same as `hash_calldata_array`, but takes a slice instead of an array.\npub fn hash_calldata(calldata: [Field]) -> Field {\n if calldata.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(calldata, GENERATOR_INDEX__PUBLIC_CALLDATA)\n }\n}\n\n/**\n * Computes the public bytecode commitment for a contract class.\n * The commitment is `hash([separator, ...bytecode])` where bytecode omits the length prefix present\n * in `packed_bytecode`.\n *\n * @param packed_bytecode - The packed bytecode of the contract class. 0th word is the length in bytes.\n * packed_bytecode is mutable so that we can avoid copying the array to construct one starting with\n * separator instead of length.\n * @returns The public bytecode commitment.\n */\npub fn compute_public_bytecode_commitment(\n mut packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS],\n) -> Field {\n // First field element contains the length of the bytecode\n let bytecode_length_in_bytes: u32 = packed_public_bytecode[0] as u32;\n let bytecode_length_in_fields: u32 =\n (bytecode_length_in_bytes / 31) + (bytecode_length_in_bytes % 31 != 0) as u32;\n // Don't allow empty public bytecode.\n // AVM doesn't handle execution of contracts that exist with empty bytecode.\n assert(bytecode_length_in_fields != 0);\n assert(bytecode_length_in_fields < MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS);\n\n // Packed_bytecode's 0th entry is the length. Replace it with separator before hashing.\n let separator = GENERATOR_INDEX__PUBLIC_BYTECODE.to_field();\n packed_public_bytecode[0] = separator;\n // +1 to length to account for the separator\n let nonzero_length = bytecode_length_in_fields + 1;\n\n poseidon2_hash_subarray(packed_public_bytecode, nonzero_length)\n // NOTE: we use poseidon2_hash_subarray here because we want to hash the bytecode only up to\n // its nonzero length. We do NOT want to include a `1` at the end to indicate \"variable length\",\n // and we want to enforce that all trailing elements are zero.\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n" - }, - "90": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/history/public_storage.nr", - "source": "use dep::protocol_types::{\n abis::block_header::BlockHeader, address::AztecAddress,\n constants::GENERATOR_INDEX__PUBLIC_LEAF_INDEX, hash::poseidon2_hash_with_separator,\n utils::field::full_field_less_than,\n};\nuse dep::protocol_types::merkle_tree::root::root_from_sibling_path;\n\nuse crate::oracle::get_public_data_witness::get_public_data_witness;\nuse protocol_types::traits::{Hash, ToField};\n\nmod test;\n\npub trait PublicStorageHistoricalRead {\n fn public_storage_historical_read(\n header: BlockHeader,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field;\n}\n\nimpl PublicStorageHistoricalRead for BlockHeader {\n fn public_storage_historical_read(\n self,\n storage_slot: Field,\n contract_address: AztecAddress,\n ) -> Field {\n // 1) Compute the leaf index by siloing the storage slot with the contract address\n let public_data_tree_index = poseidon2_hash_with_separator(\n [contract_address.to_field(), storage_slot],\n GENERATOR_INDEX__PUBLIC_LEAF_INDEX,\n );\n\n // 2) Get the membership witness for the tree index.\n // Safety: The witness is only used as a \"magical value\" that makes the proof below pass. Hence it's safe.\n let witness = unsafe {\n get_public_data_witness(self.global_variables.block_number, public_data_tree_index)\n };\n\n // 3) The witness is made up of two parts: the preimage of the leaf and the proof that it exists in the tree.\n // We first prove that the witness is indeed valid for the public data tree, i.e. that the preimage is of a\n // value present in the tree. Note that `hash` returns not just the hash of the value but also the metadata\n // (slot, next index and next slot).\n assert_eq(\n self.state.partial.public_data_tree.root,\n root_from_sibling_path(witness.leaf_preimage.hash(), witness.index, witness.path),\n \"Proving public value inclusion failed\",\n );\n\n // 4) Now that we know the preimage is valid, we determine the value that's represented by this tree entry. Here\n // we have two scenarios:\n // 1. The tree entry is initialized, and the value is the same as the one in the witness\n // 2. The entry was never initialized, and the value is default zero (the default)\n // The code below is based on the same checks in `validate_public_data_reads` in `base_rollup_inputs`.\n let preimage = witness.leaf_preimage;\n\n let is_less_than_slot = full_field_less_than(preimage.slot, public_data_tree_index);\n let is_next_greater_than = full_field_less_than(public_data_tree_index, preimage.next_slot);\n let is_max = ((preimage.next_index == 0) & (preimage.next_slot == 0));\n let is_in_range = is_less_than_slot & (is_next_greater_than | is_max);\n\n let value = if is_in_range {\n 0\n } else {\n assert_eq(\n preimage.slot,\n public_data_tree_index,\n \"Public data tree index doesn't match witness\",\n );\n preimage.value\n };\n\n value\n }\n}\n" - }, - "93": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ecdh_shared_secret.nr", - "source": "use dep::protocol_types::{\n address::aztec_address::AztecAddress, point::Point, scalar::Scalar, traits::FromField,\n};\nuse std::{embedded_curve_ops::multi_scalar_mul, ops::Neg};\n\n/// Computes a standard ecdh shared secret: [secret] * public_key = shared_secret.\n/// The input secret is known only to one party. The output shared secret is derivable\n/// by both parties, through this function.\n/// E.g.:\n/// Epk = esk * G // ephemeral keypair\n/// Pk = sk * G // recipient keypair\n/// Shared secret S = esk * Pk = sk * Epk // see how this function can be called with two different sets of inputs, depending on which secret the caller knows (either esk or sk)?\n// See also: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman\npub fn derive_ecdh_shared_secret(secret: Scalar, public_key: Point) -> Point {\n let shared_secret = multi_scalar_mul([public_key], [secret]);\n shared_secret\n}\n\n/// Computes a standard ecdh shared secret using the address public key of the given address:\n/// [ephemeral_secret] * recipient_address_public_key = shared_secret.\n/// The intention is that the _creator_ of a shared secret would call this function,\n/// given the address of their intended recipient.\npub fn derive_ecdh_shared_secret_using_aztec_address(\n ephemeral_secret: Scalar,\n recipient_address: AztecAddress,\n) -> Point {\n derive_ecdh_shared_secret(ephemeral_secret, recipient_address.to_address_point().inner)\n}\n\n#[test]\nunconstrained fn test_consistency_with_typescript() {\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let shared_secret = derive_ecdh_shared_secret(secret, point);\n\n // This is just pasted from a test run.\n // The original typescript code from which this could be generated seems to have been deleted by someone, and soon the typescript code for encryption and decryption won't be needed, so this will have to do.\n let hard_coded_shared_secret = Point {\n x: 0x15d55a5b3b2caa6a6207f313f05c5113deba5da9927d6421bcaa164822b911bc,\n y: 0x0974c3d0825031ae933243d653ebb1a0b08b90ee7f228f94c5c74739ea3c871e,\n is_infinite: false,\n };\n assert_eq(shared_secret, hard_coded_shared_secret);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let shared_secret = derive_ecdh_shared_secret(secret_a, pk_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n\n#[test]\nunconstrained fn test_shared_secret_computation_from_address_in_both_directions() {\n let secret_a = Scalar { lo: 0x1234, hi: 0x2345 };\n let secret_b = Scalar { lo: 0x3456, hi: 0x4567 };\n\n let mut pk_a = std::embedded_curve_ops::fixed_base_scalar_mul(secret_a);\n let mut pk_b = std::embedded_curve_ops::fixed_base_scalar_mul(secret_b);\n\n let address_b = AztecAddress::from_field(pk_b.x);\n\n // We were lazy in deriving the secret keys, and didn't check the resulting y-coordinates\n // of the pk_a or pk_b to be less than half the field modulus.\n // If needed, we negate the pk's so that they yield valid address points.\n // (We could also have negated the secrets, but there's no negate method for\n // EmbeddedCurvesScalar).\n pk_a = if (AztecAddress::from_field(pk_a.x).to_address_point().inner == pk_a) {\n pk_a\n } else {\n pk_a.neg()\n };\n pk_b = if (address_b.to_address_point().inner == pk_b) {\n pk_b\n } else {\n pk_b.neg()\n };\n\n let shared_secret = derive_ecdh_shared_secret_using_aztec_address(secret_a, address_b);\n let shared_secret_alt = derive_ecdh_shared_secret(secret_b, pk_a);\n\n assert_eq(shared_secret, shared_secret_alt);\n}\n" - }, - "94": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/ephemeral.nr", - "source": "use std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul};\n\nuse dep::protocol_types::{point::Point, scalar::Scalar};\n\nuse crate::oracle::random::random;\n\npub fn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n\n // Safety: we use the randomness to preserve the privacy of both the sender and recipient via encryption, so a\n // malicious sender could use non-random values to reveal the plaintext. But they already know it themselves anyway,\n // and so the recipient already trusts them to not disclose this information. We can therefore assume that the\n // sender will cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // TODO(#12757): compute the key pair without constraining eph_sk twice (once in from_field, once in the black box\n // called by fixed_base_scalar_mul).\n let eph_sk = EmbeddedCurveScalar::from_field(randomness);\n let eph_pk = fixed_base_scalar_mul(eph_sk);\n\n (eph_sk, eph_pk)\n}\n" - }, - "95": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr", - "source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Safety: Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n\nmod test {\n use super::get_public_keys;\n\n use crate::test::helpers::test_environment::TestEnvironment;\n use protocol_types::traits::Serialize;\n use std::test::OracleMock;\n\n global KEY_ORACLE_RESPONSE_LENGTH: u32 = 13; // 12 fields for the keys, one field for the partial address\n\n #[test(should_fail_with = \"Invalid public keys hint for address\")]\n unconstrained fn get_public_keys_fails_with_bad_hint() {\n let mut env = TestEnvironment::new();\n let account = env.create_light_account();\n\n // Instead of querying for some unknown account, which would result in the oracle erroring out, we mock a bad oracle\n // response to check that the circuit properly checks the address derivation.\n let mut random_keys_and_partial_address = [0; KEY_ORACLE_RESPONSE_LENGTH];\n // We use randomly generated points on the curve, and a random partial address to ensure that\n // this combination does not derive the address and we should see the assertion fail.\n // npk_m\n random_keys_and_partial_address[0] =\n 0x292364b852c6c6f01472951e76a39cbcf074591fd0e063a81965e7b51ad868a5;\n random_keys_and_partial_address[1] =\n 0x0a687b46cdc9238f1c311f126aaaa4acbd7a737bff2efd7aeabdb8d805843a27;\n random_keys_and_partial_address[2] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ivpk_m\n random_keys_and_partial_address[3] =\n 0x173c5229a00c5425255680dd6edc27e278c48883991f348fe6985de43b4ec25f;\n random_keys_and_partial_address[4] =\n 0x1698608e23b5f6c2f43c49a559108bb64e2247b8fc2da842296a416817f40b7f;\n random_keys_and_partial_address[5] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // ovpk_m\n random_keys_and_partial_address[6] =\n 0x1bad2f7d1ad960a1bd0fe4d2c8d17f5ab4a86ef8b103e0a9e7f67ec0d3b4795e;\n random_keys_and_partial_address[7] =\n 0x206db87110abbecc9fbaef2c865189d94ef2c106202f734ee4eba9257fd28bf1;\n random_keys_and_partial_address[8] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // tpk_m\n random_keys_and_partial_address[9] =\n 0x05e3bd9cfe6b47daa139613619cf7d7fd8bb0112b6f2908caa6d9b536ed948ed;\n random_keys_and_partial_address[10] =\n 0x051066f877c9df47552d02e7dc32127ff4edefc8498e813bca1cbd3f5d1be429;\n random_keys_and_partial_address[11] =\n 0x0000000000000000000000000000000000000000000000000000000000000000;\n // partial address\n random_keys_and_partial_address[12] =\n 0x236703e2cb00a182e024e98e9f759231b556d25ff19f98896cebb69e9e678cc9;\n\n let _ = OracleMock::mock(\"utilityGetPublicKeysAndPartialAddress\").returns(\n random_keys_and_partial_address.serialize(),\n );\n let _ = get_public_keys(account);\n }\n}\n" - }, - "99": { - "path": "/home/nerses/nargo/github.com/AztecProtocol/aztec-packages/v2.0.2/noir-projects/aztec-nr/aztec/src/macros/aztec.nr", - "source": "use crate::macros::{\n dispatch::generate_public_dispatch,\n functions::{stub_registry, utils::check_each_fn_macroified},\n notes::NOTES,\n storage::STORAGE_LAYOUT_NAME,\n utils::{get_trait_impl_method, module_has_storage},\n};\n\n/// Marks a contract as an Aztec contract, generating the interfaces for its functions and notes, as well as injecting\n/// the `sync_private_state` utility function.\n/// Note: This is a module annotation, so the returned quote gets injected inside the module (contract) itself.\npub comptime fn aztec(m: Module) -> Quoted {\n let interface = generate_contract_interface(m);\n\n // Functions that don't have #[private], #[public], #[utility], #[contract_library_method], or #[test] are not\n // allowed in contracts.\n check_each_fn_macroified(m);\n\n // We generate `_compute_note_hash_and_nullifier`, `sync_private_state` and `process_message`\n // functions only if they are not already implemented. If they are implemented we just insert empty\n // quotes.\n let contract_library_method_compute_note_hash_and_nullifier = if !m.functions().any(|f| {\n f.name() == quote { _compute_note_hash_and_nullifier }\n }) {\n generate_contract_library_method_compute_note_hash_and_nullifier()\n } else {\n quote {}\n };\n let sync_private_state = if !m.functions().any(|f| f.name() == quote { sync_private_state }) {\n generate_sync_private_state()\n } else {\n quote {}\n };\n let process_message = if !m.functions().any(|f| f.name() == quote { process_message }) {\n generate_process_message()\n } else {\n quote {}\n };\n let public_dispatch = generate_public_dispatch(m);\n\n quote {\n $interface\n $contract_library_method_compute_note_hash_and_nullifier\n $public_dispatch\n $sync_private_state\n $process_message\n }\n}\n\ncomptime fn generate_contract_interface(m: Module) -> Quoted {\n let module_name = m.name();\n let contract_stubs = stub_registry::get(m);\n let fn_stubs_quote = if contract_stubs.is_some() {\n contract_stubs.unwrap().join(quote {})\n } else {\n quote {}\n };\n\n let has_storage_layout = module_has_storage(m) & STORAGE_LAYOUT_NAME.get(m).is_some();\n let storage_layout_getter = if has_storage_layout {\n let storage_layout_name = STORAGE_LAYOUT_NAME.get(m).unwrap();\n quote {\n pub fn storage_layout() -> StorageLayoutFields {\n $storage_layout_name.fields\n }\n }\n } else {\n quote {}\n };\n\n let library_storage_layout_getter = if has_storage_layout {\n quote {\n #[contract_library_method]\n $storage_layout_getter\n }\n } else {\n quote {}\n };\n\n quote {\n pub struct $module_name {\n pub target_contract: dep::aztec::protocol_types::address::AztecAddress\n }\n\n impl $module_name {\n $fn_stubs_quote\n\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> Self {\n Self { target_contract: addr }\n }\n\n pub fn interface() -> Self {\n Self { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $storage_layout_getter\n }\n\n #[contract_library_method]\n pub fn at(\n addr: aztec::protocol_types::address::AztecAddress\n ) -> $module_name {\n $module_name { target_contract: addr }\n }\n\n #[contract_library_method]\n pub fn interface() -> $module_name {\n $module_name { target_contract: aztec::protocol_types::address::AztecAddress::zero() }\n }\n\n $library_storage_layout_getter\n\n }\n}\n\n/// Generates a contract library method called `_compute_note_hash_and_nullifier` which is used for note\n/// discovery (to create the `aztec::messages::discovery::ComputeNoteHashAndNullifier` function) and to implement the\n/// `compute_note_hash_and_nullifier` unconstrained contract function.\ncomptime fn generate_contract_library_method_compute_note_hash_and_nullifier() -> Quoted {\n if NOTES.len() > 0 {\n // Contracts that do define notes produce an if-else chain where `note_type_id` is matched against the\n // `get_note_type_id()` function of each note type that we know of, in order to identify the note type. Once we\n // know it we call we correct `unpack` method from the `Packable` trait to obtain the underlying note type, and\n // compute the note hash (non-siloed) and inner nullifier (also non-siloed).\n\n let mut if_note_type_id_match_statements_list = &[];\n for i in 0..NOTES.len() {\n let typ = NOTES.get(i);\n\n let get_note_type_id = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteType },\n quote { get_id },\n );\n let unpack = get_trait_impl_method(\n typ,\n quote { crate::protocol_types::traits::Packable },\n quote { unpack },\n );\n\n let compute_note_hash = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_note_hash },\n );\n\n let compute_nullifier_unconstrained = get_trait_impl_method(\n typ,\n quote { crate::note::note_interface::NoteHash },\n quote { compute_nullifier_unconstrained },\n );\n\n let if_or_else_if = if i == 0 {\n quote { if }\n } else {\n quote { else if }\n };\n\n if_note_type_id_match_statements_list = if_note_type_id_match_statements_list.push_back(\n quote {\n $if_or_else_if note_type_id == $get_note_type_id() {\n // As an extra safety check we make sure that the packed_note BoundedVec has the expected\n // length, since we're about to interpret its raw storage as a fixed-size array by calling the\n // unpack function on it.\n let expected_len = <$typ as $crate::protocol_types::traits::Packable>::N;\n let actual_len = packed_note.len();\n assert(\n actual_len == expected_len,\n f\"Expected packed note of length {expected_len} but got {actual_len} for note type id {note_type_id}\"\n );\n\n let note = $unpack(aztec::utils::array::subarray(packed_note.storage(), 0));\n\n let note_hash = $compute_note_hash(note, storage_slot);\n \n // The message discovery process finds settled notes, that is, notes that were created in prior\n // transactions and are therefore already part of the note hash tree. We therefore compute the\n // nullification note hash by treating the note as a settled note with the provided note nonce.\n let note_hash_for_nullify = aztec::note::utils::compute_note_hash_for_nullify(\n aztec::note::retrieved_note::RetrievedNote{ \n note, \n contract_address, \n metadata: aztec::note::note_metadata::SettledNoteMetadata::new(note_nonce).into()\n }, \n storage_slot,\n );\n\n let inner_nullifier = $compute_nullifier_unconstrained(note, note_hash_for_nullify);\n\n Option::some(\n aztec::messages::discovery::NoteHashAndNullifier {\n note_hash, inner_nullifier\n }\n )\n }\n },\n );\n }\n\n let if_note_type_id_match_statements = if_note_type_id_match_statements_list.join(quote {});\n\n quote {\n /// Unpacks an array into a note corresponding to `note_type_id` and then computes its note hash\n /// (non-siloed) and inner nullifier (non-siloed) assuming the note has been inserted into the note hash\n /// tree with `note_nonce`.\n ///\n /// The signature of this function notably matches the `aztec::messages::discovery::ComputeNoteHashAndNullifier` type,\n /// and so it can be used to call functions from that module such as `discover_new_messages`, \n /// `do_process_log` and `attempt_note_discovery`.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n packed_note: BoundedVec,\n storage_slot: Field,\n note_type_id: Field,\n contract_address: aztec::protocol_types::address::AztecAddress,\n note_nonce: Field,\n ) -> Option {\n $if_note_type_id_match_statements\n else {\n Option::none()\n }\n }\n }\n } else {\n // Contracts with no notes still implement this function to avoid having special-casing, the implementation\n // simply throws immediately.\n quote {\n /// This contract does not use private notes, so this function should never be called as it will\n /// unconditionally fail.\n ///\n /// This function is automatically injected by the `#[aztec]` macro.\n #[contract_library_method]\n unconstrained fn _compute_note_hash_and_nullifier(\n _packed_note: BoundedVec,\n _storage_slot: Field,\n _note_type_id: Field,\n _contract_address: aztec::protocol_types::address::AztecAddress,\n _nonce: Field,\n ) -> Option {\n panic(f\"This contract does not use private notes\")\n }\n }\n }\n}\n\ncomptime fn generate_sync_private_state() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // All we need to do here is trigger message discovery, but this is already done by the #[utility] macro - we don't\n // need to do anything extra.\n quote {\n #[$utility]\n unconstrained fn sync_private_state() {\n }\n }\n}\n\ncomptime fn generate_process_message() -> Quoted {\n // We obtain the `utility` function on the next line instead of directly doing\n // `#[aztec::macros::functions::utility]` in the returned quote because the latter would result in the function\n // attribute having the full path in the ABI. This is undesirable because we use the information in the ABI only\n // to determine whether a function is `private`, `public`, or `utility`.\n let utility = crate::macros::functions::utility;\n\n // TODO(#15012): Here we use PRIVATE_LOG_CIPHERTEXT_LEN for message ciphertext length. Fix message vs log naming.\n quote {\n #[$utility]\n unconstrained fn process_message(\n message_ciphertext: BoundedVec,\n message_context: aztec::messages::processing::message_context::MessageContext,\n ) {\n aztec::messages::discovery::process_message::do_process_message(\n context.this_address(),\n _compute_note_hash_and_nullifier,\n message_ciphertext,\n message_context,\n );\n }\n }\n}\n" - } - } + "transpiled": true } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/FPC.ts b/treasury/src/treasury/aztec/FPC.ts deleted file mode 100644 index 4de0187b..00000000 --- a/treasury/src/treasury/aztec/FPC.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { - type ContractInstanceWithAddress, - Fr, - type PXE, - getContractInstanceFromInstantiationParams, -} from '@aztec/aztec.js'; -import { SPONSORED_FPC_SALT } from '@aztec/constants'; -import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; - -export async function getSponsoredFPCInstance(): Promise { - return await getContractInstanceFromInstantiationParams( - SponsoredFPCContract.artifact, - { - salt: new Fr(SPONSORED_FPC_SALT), - }, - ); -} - -export async function getSponsoredFPCAddress() { - return (await getSponsoredFPCInstance()).address; -} - -export async function getDeployedSponsoredFPCAddress(pxe: PXE) { - const fpc = await getSponsoredFPCAddress(); - const contracts = await pxe.getContracts(); - if (!contracts.find((c) => c.equals(fpc))) { - throw new Error('SponsoredFPC not deployed.'); - } - return fpc; -} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/Train.ts b/treasury/src/treasury/aztec/Train.ts index 86221ce3..d48d8f6d 100644 --- a/treasury/src/treasury/aztec/Train.ts +++ b/treasury/src/treasury/aztec/Train.ts @@ -1,35 +1,26 @@ + /* Autogenerated file, do not edit! */ /* eslint-disable */ -import { - AztecAddress, - type AztecAddressLike, - Contract, - type ContractArtifact, - ContractBase, - ContractFunctionInteraction, - type ContractInstanceWithAddress, - type ContractMethod, - type ContractStorageLayout, - DeployMethod, - type FieldLike, - Fr, - loadContractArtifact, - loadContractArtifactForPublic, - type NoirCompiledContract, - PublicKeys, - type Wallet, -} from '@aztec/aztec.js'; +import { AztecAddress, CompleteAddress } from '@aztec/aztec.js/addresses'; +import { type AbiType, type AztecAddressLike, type ContractArtifact, EventSelector, decodeFromAbi, type EthAddressLike, type FieldLike, type FunctionSelectorLike, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, type U128Like, type WrappedFieldLike } from '@aztec/aztec.js/abi'; +import { Contract, ContractBase, ContractFunctionInteraction, type ContractInstanceWithAddress, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts'; +import { EthAddress } from '@aztec/aztec.js/addresses'; +import { Fr, Point } from '@aztec/aztec.js/fields'; +import { type PublicKey, PublicKeys } from '@aztec/aztec.js/keys'; +import type { Wallet } from '@aztec/aztec.js/wallet'; import TrainContractArtifactJson from "./ABIs/train.json"; -export const TrainContractArtifact = loadContractArtifact( - TrainContractArtifactJson as NoirCompiledContract, -); +export const TrainContractArtifact = loadContractArtifact(TrainContractArtifactJson as NoirCompiledContract); /** * Type-safe interface for contract Train; */ export class TrainContract extends ContractBase { - private constructor(instance: ContractInstanceWithAddress, wallet: Wallet) { + + private constructor( + instance: ContractInstanceWithAddress, + wallet: Wallet, + ) { super(instance, TrainContractArtifact, wallet); } @@ -39,38 +30,26 @@ export class TrainContract extends ContractBase { * @param wallet - The wallet to use when interacting with the contract. * @returns A promise that resolves to a new Contract instance. */ - public static async at(address: AztecAddress, wallet: Wallet) { - return Contract.at( - address, - TrainContract.artifact, - wallet, - ) as Promise; + public static async at( + address: AztecAddress, + wallet: Wallet, + ) { + return Contract.at(address, TrainContract.artifact, wallet) as Promise; } + /** * Creates a tx to deploy a new instance of this contract. */ - public static deploy(wallet: Wallet) { - return new DeployMethod( - PublicKeys.default(), - wallet, - TrainContractArtifact, - TrainContract.at, - Array.from(arguments).slice(1), - ); + public static deploy(wallet: Wallet,) { + return new DeployMethod(PublicKeys.default(), wallet, TrainContractArtifact, TrainContract.at, Array.from(arguments).slice(1)); } /** * Creates a tx to deploy a new instance of this contract using the specified public keys hash to derive the address. */ - public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet) { - return new DeployMethod( - publicKeys, - wallet, - TrainContractArtifact, - TrainContract.at, - Array.from(arguments).slice(2), - ); + public static deployWithPublicKeys(publicKeys: PublicKeys, wallet: Wallet,) { + return new DeployMethod(publicKeys, wallet, TrainContractArtifact, TrainContract.at, Array.from(arguments).slice(2)); } /** @@ -90,6 +69,8 @@ export class TrainContract extends ContractBase { ); } + + /** * Returns this contract's artifact. */ @@ -101,112 +82,56 @@ export class TrainContract extends ContractBase { * Returns this contract's artifact with public bytecode. */ public static get artifactForPublic(): ContractArtifact { - return loadContractArtifactForPublic( - TrainContractArtifactJson as NoirCompiledContract, - ); + return loadContractArtifactForPublic(TrainContractArtifactJson as NoirCompiledContract); } - public static get storage(): ContractStorageLayout< - 'contracts_private' | 'contracts_public' - > { + + public static get storage(): ContractStorageLayout<'contracts_private' | 'contracts_public'> { return { contracts_private: { slot: new Fr(1), }, contracts_public: { slot: new Fr(2), - }, + } } as ContractStorageLayout<'contracts_private' | 'contracts_public'>; } + /** Type-safe wrappers for the public methods exposed by the contract. */ - declare public methods: { + public declare methods: { + /** add_lock_private_user(Id: field, hashlock_high: integer, hashlock_low: integer, timelock: integer) */ - add_lock_private_user: (( - Id: FieldLike, - hashlock_high: bigint | number, - hashlock_low: bigint | number, - timelock: bigint | number, - ) => ContractFunctionInteraction) & - Pick; + add_lock_private_user: ((Id: FieldLike, hashlock_high: (bigint | number), hashlock_low: (bigint | number), timelock: (bigint | number)) => ContractFunctionInteraction) & Pick; /** commit_private_user(Id: field, src_receiver: struct, timelock: integer, token: struct, amount: integer, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: field) */ - commit_private_user: (( - Id: FieldLike, - src_receiver: AztecAddressLike, - timelock: bigint | number, - token: AztecAddressLike, - amount: bigint | number, - src_asset: string, - dst_chain: string, - dst_asset: string, - dst_address: string, - randomness: FieldLike, - ) => ContractFunctionInteraction) & - Pick; + commit_private_user: ((Id: FieldLike, src_receiver: AztecAddressLike, timelock: (bigint | number), token: AztecAddressLike, amount: (bigint | number), src_asset: string, dst_chain: string, dst_asset: string, dst_address: string, randomness: FieldLike) => ContractFunctionInteraction) & Pick; /** constructor() */ - constructor: (() => ContractFunctionInteraction) & - Pick; + constructor: (() => ContractFunctionInteraction) & Pick; /** get_htlc_public(key: field) */ - get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & - Pick; + get_htlc_public: ((key: FieldLike) => ContractFunctionInteraction) & Pick; /** is_contract_initialized(id: field) */ - is_contract_initialized: ((id: FieldLike) => ContractFunctionInteraction) & - Pick; + is_contract_initialized: ((id: FieldLike) => ContractFunctionInteraction) & Pick; /** lock_private_solver(Id: field, hashlock_high: integer, hashlock_low: integer, amount: integer, ownership_hash_high: integer, ownership_hash_low: integer, timelock: integer, token: struct, randomness: field, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) */ - lock_private_solver: (( - Id: FieldLike, - hashlock_high: bigint | number, - hashlock_low: bigint | number, - amount: bigint | number, - ownership_hash_high: bigint | number, - ownership_hash_low: bigint | number, - timelock: bigint | number, - token: AztecAddressLike, - randomness: FieldLike, - src_asset: string, - dst_chain: string, - dst_asset: string, - dst_address: string, - ) => ContractFunctionInteraction) & - Pick; + lock_private_solver: ((Id: FieldLike, hashlock_high: (bigint | number), hashlock_low: (bigint | number), amount: (bigint | number), ownership_hash_high: (bigint | number), ownership_hash_low: (bigint | number), timelock: (bigint | number), token: AztecAddressLike, randomness: FieldLike, src_asset: string, dst_chain: string, dst_asset: string, dst_address: string) => ContractFunctionInteraction) & Pick; /** process_message(message_ciphertext: struct, message_context: struct) */ - process_message: (( - message_ciphertext: FieldLike[], - message_context: { - tx_hash: FieldLike; - unique_note_hashes_in_tx: FieldLike[]; - first_nullifier_in_tx: FieldLike; - recipient: AztecAddressLike; - }, - ) => ContractFunctionInteraction) & - Pick; + process_message: ((message_ciphertext: FieldLike[], message_context: { tx_hash: FieldLike, unique_note_hashes_in_tx: FieldLike[], first_nullifier_in_tx: FieldLike, recipient: AztecAddressLike }) => ContractFunctionInteraction) & Pick; /** public_dispatch(selector: field) */ - public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & - Pick; + public_dispatch: ((selector: FieldLike) => ContractFunctionInteraction) & Pick; /** redeem_private(Id: field, secret_high: integer, secret_low: integer, ownership_key_high: integer, ownership_key_low: integer) */ - redeem_private: (( - Id: FieldLike, - secret_high: bigint | number, - secret_low: bigint | number, - ownership_key_high: bigint | number, - ownership_key_low: bigint | number, - ) => ContractFunctionInteraction) & - Pick; + redeem_private: ((Id: FieldLike, secret_high: (bigint | number), secret_low: (bigint | number), ownership_key_high: (bigint | number), ownership_key_low: (bigint | number)) => ContractFunctionInteraction) & Pick; /** refund_private(Id: field) */ - refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & - Pick; + refund_private: ((Id: FieldLike) => ContractFunctionInteraction) & Pick; /** sync_private_state() */ - sync_private_state: (() => ContractFunctionInteraction) & - Pick; + sync_private_state: (() => ContractFunctionInteraction) & Pick; }; } \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index bd5f6fa2..aa063d00 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -1,22 +1,27 @@ import { BadRequestException, Injectable } from '@nestjs/common'; import { Network } from "../shared/networks.types"; import { AztecSignRequest, AztecSignResponse } from "./aztec.dto"; -import { AuthWitness, AztecAddress, ContractArtifact, ContractFunctionInteraction, createAztecNodeClient, Fr, FunctionAbi, getAllFunctionAbis, Logger, SponsoredFeePaymentMethod, Tx, waitForPXE } from "@aztec/aztec.js"; -import { createPXEService } from "@aztec/pxe/server"; -import { createStore } from "@aztec/kv-store/lmdb"; -import { deriveSigningKey } from '@aztec/stdlib/keys'; -import { TokenContract } from '@aztec/noir-contracts.js/Token'; -import { getSponsoredFPCInstance } from "./FPC"; -import { getSchnorrAccount, getSchnorrAccountContractAddress } from "@aztec/accounts/schnorr"; -import { getPXEServiceConfig } from "@aztec/pxe/config"; import { TrainContract } from "./Train"; -import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; import { TreasuryService } from '../../app/interfaces/treasury.interface'; import { PrivateKeyService } from '../../kv/vault.service'; import { GenerateResponse } from '../../app/dto/base.dto'; -import { PrivateKernelProver } from '@aztec/stdlib/interfaces/client'; -import { AztecAsyncKVStore } from '@aztec/kv-store'; import { AztecConfigService } from './aztec.config'; +import { Tx } from "@aztec/aztec.js/tx"; +import { ContractFunctionInteraction, getContractInstanceFromInstantiationParams, toSendOptions } from '@aztec/aztec.js/contracts'; +import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; +import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; +import { TestWallet } from '@aztec/test-wallet/server'; +import { createStore } from '@aztec/kv-store/lmdb'; +import { AztecNode, createAztecNodeClient } from '@aztec/aztec.js/node'; +import { getPXEConfig } from '@aztec/pxe/server'; +import { getSchnorrAccountContractAddress } from '@aztec/accounts/schnorr'; +import { Fr } from '@aztec/aztec.js/fields'; +import { deriveSigningKey } from '@aztec/stdlib/keys'; +import { AztecAddress } from '@aztec/aztec.js/addresses'; +import { TokenContract } from '@aztec/noir-contracts.js/Token'; +import { AuthWitness } from '@aztec/stdlib/auth-witness'; +import { ContractFunctionInteractionCallIntent } from '@aztec/aztec.js/authorization'; +import { ContractArtifact, FunctionAbi, getAllFunctionAbis } from '@aztec/aztec.js/abi'; @Injectable() export class AztecTreasuryService extends TreasuryService { @@ -34,67 +39,42 @@ export class AztecTreasuryService extends TreasuryService { const privateKey = await this.privateKeyService.getAsync(request.address); const privateSalt = await this.privateKeyService.getAsync(request.address, "private_salt"); - const TrainContractArtifact = TrainContract.artifact; - const TokenContractArtifact = TokenContract.artifact; - - // Define the type locally - type PXECreationOptions = { - loggers?: { store?: Logger; pxe?: Logger; prover?: Logger }; - useLogSuffix?: boolean | string; - prover?: PrivateKernelProver; - store?: AztecAsyncKVStore; - }; + const provider: AztecNode = createAztecNodeClient(request.nodeUrl); + const l1Contracts = await provider.getL1ContractAddresses(); - const provider = createAztecNodeClient(request.nodeUrl); - - const fullConfig = { - ...getPXEServiceConfig(), - l1Contracts: await provider.getL1ContractAddresses(), - }; + const fullConfig = { ...getPXEConfig(), l1Contracts, proverEnabled: true }; const store = await createStore(request.address, { dataDirectory: this.configService.storePath, - dataStoreMapSizeKB: 1e6, + dataStoreMapSizeKb: 1e6, }); - const options: PXECreationOptions = { - loggers: {}, - store, - }; - - const pxe = await createPXEService(provider, fullConfig, options); - await waitForPXE(pxe); - - const sponsoredFPC = await getSponsoredFPCInstance(); - const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); - await pxe.registerContract({ - instance: sponsoredFPC, - artifact: SponsoredFPCContract.artifact, - }); + const wallet = await TestWallet.create(provider, fullConfig, { store }); - const schnorrAccount = await getSchnorrAccount( - pxe, + const accountManager = await wallet.createSchnorrAccount( Fr.fromString(privateKey), + Fr.fromString(privateSalt), deriveSigningKey(Fr.fromString(privateKey)), - Fr.fromString(privateSalt) ); - await schnorrAccount.register(); + const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( + SponsoredFPCContract.artifact, + { salt: new Fr(0) }, + ); - const schnorrWallet = await schnorrAccount.getWallet(); - const tokenContractInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); + await wallet.registerContract( + sponsoredFPCInstance, + SponsoredFPCContract.artifact, + ); - await pxe.registerContract({ - instance: tokenContractInstance, - artifact: TokenContractArtifact, - }); + const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); + const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); - const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)) + const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)); + await wallet.registerContract(contractInstanceWithAddress, TrainContract.artifact); - await pxe.registerContract({ - instance: contractInstanceWithAddress, - artifact: TrainContractArtifact, - }) + const tokenInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); + await wallet.registerContract(tokenInstance, TokenContract.artifact) const contractFunctionInteraction: FunctionInteraction = JSON.parse(request.unsignedTxn); let authWitnesses: AuthWitness[] = []; @@ -104,7 +84,7 @@ export class AztecTreasuryService extends TreasuryService { contractFunctionInteraction.authwiths.forEach(async (authWith) => { const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) - const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true) + const contractClassMetadata = await wallet.getContractClassMetadata(requestContractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -116,10 +96,10 @@ export class AztecTreasuryService extends TreasuryService { throw new BadRequestException("Unable to get function ABI"); } - authWith.args.unshift(schnorrWallet.getAddress()); + authWith.args.unshift(); const functionInteraction = new ContractFunctionInteraction( - schnorrWallet, + wallet, AztecAddress.fromString(authWith.interactionAddress), functionAbi, [ @@ -127,17 +107,22 @@ export class AztecTreasuryService extends TreasuryService { ], ); - const witness = await schnorrWallet.createAuthWit({ + const intent: ContractFunctionInteractionCallIntent = { caller: AztecAddress.fromString(authWith.callerAddress), action: functionInteraction, - }); + }; + + const witness = await wallet.createAuthWit( + AztecAddress.fromString(authWith.senderAddress), + intent, + ); authWitnesses.push(witness); }); } const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) - const contractClassMetadata = await pxe.getContractClassMetadata(requestcontractClass.currentContractClassId, true) + const contractClassMetadata = await wallet.getContractClassMetadata(requestcontractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -146,7 +131,7 @@ export class AztecTreasuryService extends TreasuryService { const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); const functionInteraction = new ContractFunctionInteraction( - schnorrWallet, + wallet, AztecAddress.fromString(contractFunctionInteraction.interactionAddress), functionAbi, [ @@ -155,7 +140,20 @@ export class AztecTreasuryService extends TreasuryService { [...authWitnesses] ); - const provenTx = await functionInteraction.prove({ from: AztecAddress.fromString(request.address), fee: { paymentMethod } }); + const executionPayload = await functionInteraction.request({ + authWitnesses: [...authWitnesses], + fee: { paymentMethod: new SponsoredFeePaymentMethod(sponsoredFPCInstance.address) }, + }); + + var sendOptions = await toSendOptions( + { + from: AztecAddress.fromString(request.address), + authWitnesses: [...authWitnesses], + fee: { paymentMethod: new SponsoredFeePaymentMethod(sponsoredFPCInstance.address) }, + }, + ); + + const provenTx = await wallet.proveTx(executionPayload, sendOptions); const tx = new Tx( provenTx.getTxHash(), @@ -189,75 +187,59 @@ export class AztecTreasuryService extends TreasuryService { "private_salt": salt.toString(), }; - // Define the type locally - type PXECreationOptions = { - loggers?: { store?: Logger; pxe?: Logger; prover?: Logger }; - useLogSuffix?: boolean | string; - prover?: PrivateKernelProver; - store?: AztecAsyncKVStore; - }; + const provider = createAztecNodeClient("https://devnet.aztec-labs.com"); - const provider = createAztecNodeClient("https://aztec-alpha-testnet-fullnode.zkv.xyz"); + const l1Contracts = await provider.getL1ContractAddresses(); - const fullConfig = { - ...getPXEServiceConfig(), - l1Contracts: await provider.getL1ContractAddresses(), - }; + const fullConfig = { ...getPXEConfig(), l1Contracts, proverEnabled: true }; const store = await createStore(address, { dataDirectory: this.configService.storePath, - dataStoreMapSizeKB: 1e6, + dataStoreMapSizeKb: 1e6, }); - const options: PXECreationOptions = { - loggers: {}, - store, - }; - - const pxe = await createPXEService(provider, fullConfig, options); - await waitForPXE(pxe); + const wallet = await TestWallet.create(provider, fullConfig, { store }); - const sponsoredFPC = await getSponsoredFPCInstance(); - const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); - await pxe.registerContract({ - instance: sponsoredFPC, - artifact: SponsoredFPCContract.artifact, - }); + const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( + SponsoredFPCContract.artifact, + { salt: new Fr(0) }, + ); + + const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); - const schnorrAccount = await getSchnorrAccount( - pxe, + const schnorrAccount = await wallet.createSchnorrAccount( pkKey, - deriveSigningKey(pkKey), salt, + deriveSigningKey(pkKey), ); - await schnorrAccount - .deploy({ fee: { paymentMethod } }) - .wait({ timeout: 1200 }); + await (await schnorrAccount.getDeployMethod()) + .send({ from: AztecAddress.ZERO, fee: { paymentMethod: paymentMethod } }) + .wait(); //register token contract const tokenContractInstanceWithAddress = await provider.getContract( - AztecAddress.fromString("0x19370dc2a7507ab1d30651601940e1821f8081e6ba8171d2017985e307b30863") + AztecAddress.fromString("0x04593cd209ec9cce4c2bf3af9003c262fbda9157d75788f47e45a14db57fac3b") ); - await pxe.registerContract({ + await wallet.registerContract({ instance: tokenContractInstanceWithAddress, artifact: TokenContractArtifact, }); //register train contract const contractInstanceWithAddress = await provider.getContract( - AztecAddress.fromString("0x1f8e6f173782bd7e91e3d15c355afb0a38a25211386c7bf346c60f5383659573") + AztecAddress.fromString("0x07fbdc90f60f474514ab79c99b50ef27b91ce594c168a38cb1dcadae3244f859") ); - await pxe.registerContract({ + await wallet.registerContract({ instance: contractInstanceWithAddress, artifact: TrainContractArtifact, }); //sender rebalance addresses - await pxe.registerSender(AztecAddress.fromString("0x147c28c50d4ebb6b858208b6cdc7b28ccbc9800157215ccde66f2bc800c27c42")); - await pxe.registerSender(AztecAddress.fromString("0x1f8e6f173782bd7e91e3d15c355afb0a38a25211386c7bf346c60f5383659573")); + await wallet.registerSender(AztecAddress.fromString("0x1c34568017bacdf953140c8a7498ad113ea3fac1dfaf6963928194c85fc3bb2b")); + await wallet.registerSender(AztecAddress.fromString("0x04030b28dc89132e12478f78e55c4fd4c1454b62fe54dd4a3e749867b58b6d70")); await this.privateKeyService.setDictAsync(address.toString(), dict); diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index 0aed57d9..ae353dbc 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -17,7 +17,7 @@ import { AztecConfigService } from './aztec/aztec.config'; AztecConfigService, { provide: TREASURIES, - useFactory: (evm, starknet, fuel) => [evm, starknet, fuel], + useFactory: (evm, starknet, fuel, aztec) => [evm, starknet, fuel, aztec], inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService], }, ], From ade9ce6ae54564343da29ac1b7f9dfd20156d8a7 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:22:25 +0400 Subject: [PATCH 45/69] Some fixes. --- .../Workflow.Solana/Activities/SolanaBlockchainActivities.cs | 2 -- csharp/src/Workflow.Solana/Program.cs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index a252cfb2..3383185e 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -16,7 +16,6 @@ using Train.Solver.Blockchain.Solana.Models; using Train.Solver.Blockchain.Solana.Programs; using Train.Solver.Common.Enums; -using Train.Solver.Data.Abstractions.Repositories; using Train.Solver.Infrastructure.Abstractions; using Train.Solver.Infrastructure.Abstractions.Exceptions; using Train.Solver.Infrastructure.Abstractions.Models; @@ -29,7 +28,6 @@ namespace Train.Solver.Workflow.Solana.Activities; public class SolanaBlockchainActivities( - INetworkRepository networkRepository, IPrivateKeyProvider privateKeyProvider) : ISolanaBlockchainActivities, IBlockchainActivities { private const int MaxConcurrentTaskCount = 4; diff --git a/csharp/src/Workflow.Solana/Program.cs b/csharp/src/Workflow.Solana/Program.cs index f595ae5c..238f4afc 100644 --- a/csharp/src/Workflow.Solana/Program.cs +++ b/csharp/src/Workflow.Solana/Program.cs @@ -1,4 +1,4 @@ -using Train.Solver.Data.Npgsql.Extensions; +using Train.Solver.Infrastrucutre.Secret.Treasury.Extensions; using Train.Solver.Infrastructure.Logging.OpenTelemetry; using Train.Solver.Infrastructure.DependencyInjection; using Train.Solver.Workflow.Solana.Extensions; @@ -15,7 +15,7 @@ services .AddTrainSolver(hostContext.Configuration) .WithOpenTelemetryLogging("Solana Runner") - .WithNpgsqlRepositories() + .WithTreasury() .WithSolanaWorkflows(); }) .Build(); From 949c799e26632cebb2b77809a206f09af0d9ecf6 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:27:05 +0400 Subject: [PATCH 46/69] Fix minors. --- .../Activities/SolanaBlockchainActivities.cs | 13 +++---------- csharp/src/Workflow.Solana/Workflows.Solana.csproj | 1 + 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index 3383185e..1479fa27 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -254,16 +254,9 @@ public virtual async Task GetLastConfirmedBlockNumberAsync( } [Activity] - public async Task ValidateAddLockSignatureAsync(AddLockSignatureRequest request) + public Task ValidateAddLockSignatureAsync(AddLockSignatureRequest request) { - var network = await networkRepository.GetAsync(request.Network.Name); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.Network.Name} not found"); - } - - var currency = network.Tokens.Single(x => x.Asset.ToUpper() == request.Asset.ToUpper()); + var currency = request.Network.Tokens.Single(x => x.Symbol.ToUpper() == request.Asset.ToUpper()); if (currency is null) { @@ -291,7 +284,7 @@ public async Task ValidateAddLockSignatureAsync(AddLockSignatureRequest re verifier.BlockUpdate(message, 0, message.Length); var isValid = verifier.VerifySignature(signatureBytes); - return isValid; + return Task.FromResult(isValid); } [Activity] diff --git a/csharp/src/Workflow.Solana/Workflows.Solana.csproj b/csharp/src/Workflow.Solana/Workflows.Solana.csproj index 46a42618..0f1ac094 100644 --- a/csharp/src/Workflow.Solana/Workflows.Solana.csproj +++ b/csharp/src/Workflow.Solana/Workflows.Solana.csproj @@ -12,6 +12,7 @@ + From 72e6e741eed91ae62da7e5bb1f0369e9bd3b373c Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:29:10 +0400 Subject: [PATCH 47/69] Remove some repositorys using from solana. --- .../Activities/SolanaBlockchainActivities.cs | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index 1479fa27..41eb956d 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -382,23 +382,11 @@ public async Task ComposeSolanaTranscationAsyn [Activity] public async Task PublishTransactionAsync(SolanaPublishTransactionRequest request) { - var network = await networkRepository.GetAsync(request.Network.Name); - - if (network is null) - { - throw new ArgumentNullException(nameof(network), $"Network {request.Network.Name} not found"); - } - - if (network == null) - { - throw new($"Network {request.Network.Name} not found"); - } - - var node = network.Nodes.FirstOrDefault(); + var node = request.Network.Nodes.FirstOrDefault(); if (node is null) { - throw new($"Node for network: {network.Name} is not configured"); + throw new($"Node for network: {request.Network.Name} is not configured"); } var rpcClient = ClientFactory.GetClient(node.Url); @@ -413,10 +401,10 @@ public async Task PublishTransactionAsync(SolanaPublishTransactionReques { if (transactionResult.ServerErrorCode == BlockhashNotFoundErrorCode) { - throw new NonceMissMatchException($"Nonce miss match in network {network}, Reason: {transactionResult.RawRpcResponse}."); + throw new NonceMissMatchException($"Nonce miss match in network {request.Network.Name}, Reason: {transactionResult.RawRpcResponse}."); } - throw new Exception($"Failed to submit {network.Name} transaction due to error: {transactionResult.RawRpcResponse}"); + throw new Exception($"Failed to submit {request.Network.Name} transaction due to error: {transactionResult.RawRpcResponse}"); } if (!string.IsNullOrEmpty(transactionResult.Result)) From 404187c58bd925ed128d1711916d2a601116c3f0 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:34:14 +0400 Subject: [PATCH 48/69] Fix solana yml. --- .github/workflows/solana.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/solana.yml b/.github/workflows/solana.yml index bb05b389..e0991f81 100644 --- a/.github/workflows/solana.yml +++ b/.github/workflows/solana.yml @@ -3,15 +3,15 @@ name: Solana Workflow runner on: workflow_dispatch: push: - branches: [ disable ] + branches: [ main, dev ] paths: - 'csharp/**' - - '.github/workflows/solana.yml' + - '.github/workflows/evm.yml' pull_request: - branches: [ disable ] + branches: [ main, dev ] paths: - 'csharp/**' - - '.github/workflows/solana.yml' + - '.github/workflows/evm.yml' release: types: [published, created] @@ -22,7 +22,7 @@ env: jobs: build-and-push: runs-on: ubuntu-latest - + steps: - name: Checkout repository uses: actions/checkout@v4 @@ -33,7 +33,7 @@ jobs: id: docker uses: ./.github/actions/docker with: - file: csharp/src/Workflow.Solana/Dockerfile + file: csharp/src/Workflow.EVM/Dockerfile docker-image: ${{ env.DOCKER_IMAGE }} dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }} From e639fbb3d114ccb0c2c9fdf55c2b3eadfb49900d Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:36:40 +0400 Subject: [PATCH 49/69] Dummy commit. --- csharp/src/Workflow.Solana/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Workflow.Solana/Program.cs b/csharp/src/Workflow.Solana/Program.cs index 238f4afc..d0677b58 100644 --- a/csharp/src/Workflow.Solana/Program.cs +++ b/csharp/src/Workflow.Solana/Program.cs @@ -20,4 +20,4 @@ }) .Build(); -await host.RunAsync(); +await host.RunAsync(); From 73057fd11c6733d94c5b72f3290ff8b2e0ac3e2e Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:38:37 +0400 Subject: [PATCH 50/69] yml Fixes. --- .github/workflows/solana.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/solana.yml b/.github/workflows/solana.yml index e0991f81..9dfb4263 100644 --- a/.github/workflows/solana.yml +++ b/.github/workflows/solana.yml @@ -6,12 +6,12 @@ on: branches: [ main, dev ] paths: - 'csharp/**' - - '.github/workflows/evm.yml' + - '.github/workflows/solana.yml' pull_request: branches: [ main, dev ] paths: - 'csharp/**' - - '.github/workflows/evm.yml' + - '.github/workflows/solana.yml' release: types: [published, created] @@ -33,7 +33,7 @@ jobs: id: docker uses: ./.github/actions/docker with: - file: csharp/src/Workflow.EVM/Dockerfile + file: csharp/src/Workflow.Solana/Dockerfile docker-image: ${{ env.DOCKER_IMAGE }} dockerhub-username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }} From f831efbbc73986d92c230358d559798c105fec96 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:41:14 +0400 Subject: [PATCH 51/69] Dommy commitV2. --- csharp/src/Workflow.Solana/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/src/Workflow.Solana/Program.cs b/csharp/src/Workflow.Solana/Program.cs index d0677b58..3bbfad1f 100644 --- a/csharp/src/Workflow.Solana/Program.cs +++ b/csharp/src/Workflow.Solana/Program.cs @@ -19,5 +19,5 @@ .WithSolanaWorkflows(); }) .Build(); - + await host.RunAsync(); From ca16198dc728d0d1374c281bc82263b3d4dfabee Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:47:52 +0400 Subject: [PATCH 52/69] Dummy commitV3. --- .../Workflow.Solana/Activities/SolanaBlockchainActivities.cs | 2 +- treasury/src/treasury/treasury.module.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index 41eb956d..4ec09a28 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -28,7 +28,7 @@ namespace Train.Solver.Workflow.Solana.Activities; public class SolanaBlockchainActivities( - IPrivateKeyProvider privateKeyProvider) : ISolanaBlockchainActivities, IBlockchainActivities + IPrivateKeyProvider privateKeyProvider) : ISolanaBlockchainActivities, IBlockchainActivities { private const int MaxConcurrentTaskCount = 4; private const int LamportsPerRent = 3000000; diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index 0aed57d9..e8415085 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -6,6 +6,7 @@ import { FuelTreasuryService } from './fuel/fuel.service'; import { VaultModule } from '../kv/vault.module'; import { AztecTreasuryService } from './aztec/aztec.service'; import { AztecConfigService } from './aztec/aztec.config'; +import { SolanaTreasuryService } from './solana/solana.service'; @Module({ imports: [VaultModule], @@ -15,6 +16,7 @@ import { AztecConfigService } from './aztec/aztec.config'; FuelTreasuryService, AztecTreasuryService, AztecConfigService, + SolanaTreasuryService, { provide: TREASURIES, useFactory: (evm, starknet, fuel) => [evm, starknet, fuel], From 18f730d1aff6f55c8b1325c558bd95a52d4378c0 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Sat, 15 Nov 2025 01:51:44 +0400 Subject: [PATCH 53/69] Fix repo name. --- csharp/TrainSolver.slnx | 2 +- .../{Workflows.Solana.csproj => Workflow.Solana.csproj} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename csharp/src/Workflow.Solana/{Workflows.Solana.csproj => Workflow.Solana.csproj} (100%) diff --git a/csharp/TrainSolver.slnx b/csharp/TrainSolver.slnx index e73875de..506f9963 100644 --- a/csharp/TrainSolver.slnx +++ b/csharp/TrainSolver.slnx @@ -33,7 +33,7 @@ - + diff --git a/csharp/src/Workflow.Solana/Workflows.Solana.csproj b/csharp/src/Workflow.Solana/Workflow.Solana.csproj similarity index 100% rename from csharp/src/Workflow.Solana/Workflows.Solana.csproj rename to csharp/src/Workflow.Solana/Workflow.Solana.csproj From bf4ce2c39c4f51ccd8313a44921f688b304d2ae3 Mon Sep 17 00:00:00 2001 From: Mandzikyan <87118120+Mandzikyan@users.noreply.github.com> Date: Sat, 15 Nov 2025 02:42:38 +0400 Subject: [PATCH 54/69] Fix majors. (#139) Co-authored-by: Davit Mandzikyan --- .../Activities/SolanaBlockchainActivities.cs | 1 + csharp/src/Workflow.Solana/Helpers/EventDecoder.cs | 9 --------- .../Helpers/SolanaTransactionBuilder.cs | 11 ++++++----- .../Workflows/SolanaTransactionProcessor.cs | 3 ++- treasury/src/treasury/treasury.module.ts | 4 ++-- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs index 4ec09a28..853f56a4 100644 --- a/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs +++ b/csharp/src/Workflow.Solana/Activities/SolanaBlockchainActivities.cs @@ -506,6 +506,7 @@ private static async Task GetTransactionReceiptAsync( return result; } + [Activity] public async Task SignTransactionAsync(SolanaSignTransactionRequest request) { var signedTransaction = await privateKeyProvider.SignAsync( diff --git a/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs b/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs index ef91c6db..a6fdf5b5 100644 --- a/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs +++ b/csharp/src/Workflow.Solana/Helpers/EventDecoder.cs @@ -78,15 +78,6 @@ public static async Task GetBlockEventsAsync( continue; } - var destinationCurrency = currencies - .FirstOrDefault(x => x.Symbol == commitEvent.DestinationAsset - && network.Name == commitEvent.DestinationNetwork); - - if (destinationCurrency is null) - { - continue; - } - var sourceCurrency = network.Tokens .FirstOrDefault(x => x.Symbol == commitEvent.SourceAsset); diff --git a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs index 85b4c84f..f320022d 100644 --- a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs +++ b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs @@ -11,6 +11,7 @@ using System.Text.Json; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram.Models; +using Train.Solver.Common.Extensions; using Train.Solver.Data.Abstractions.Entities; using Train.Solver.Infrastructure.Abstractions.Models; using Train.Solver.Workflow.Abstractions.Models; @@ -24,7 +25,7 @@ public static async Task BuildHTLCLockTransactionAsync( string solverAccount, string args) { - var request = JsonSerializer.Deserialize(args); + var request = args.FromJson(); if (request is null) { @@ -117,7 +118,7 @@ public static async Task BuildHTLCRedeemTransactionAsync( string solverAccount, string args) { - var request = JsonSerializer.Deserialize(args); + var request = args.FromJson(); if (request is null) { @@ -208,7 +209,7 @@ public static async Task BuildHTLCRefundTransactionAsync( string solverAccount, string args) { - var request = JsonSerializer.Deserialize(args); + var request = args.FromJson(); if (request is null) { @@ -287,7 +288,7 @@ public static async Task BuildTransferTransactionAsync( DetailedNetworkDto network, string args) { - var request = JsonSerializer.Deserialize(args); + var request = args.FromJson(); if (request is null) { @@ -355,7 +356,7 @@ public static async Task BuildHTLCAddlockSigTransactionAs string solverAccount, string args) { - var request = JsonSerializer.Deserialize(args); + var request = args.FromJson(); if (request is null) { diff --git a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs index 7b447220..1a89c5ef 100644 --- a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs +++ b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs @@ -22,7 +22,8 @@ public async Task RunAsync(TransactionRequest request, Tran { Network = request.Network, PrepareArgs = request.PrepareArgs, - Type = request.Type + Type = request.Type, + FromAddress = request.FromAddress, }), TemporalHelper.DefaultActivityOptions(request.Network.Type)); diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index e8415085..80d5f2cd 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -19,8 +19,8 @@ import { SolanaTreasuryService } from './solana/solana.service'; SolanaTreasuryService, { provide: TREASURIES, - useFactory: (evm, starknet, fuel) => [evm, starknet, fuel], - inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService], + useFactory: (evm, starknet, fuel, solana) => [evm, starknet, fuel, solana], + inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, SolanaTreasuryService], }, ], exports: [TREASURIES], From 3b090f7dd88ee8c99e09e3046955490112cf4c9b Mon Sep 17 00:00:00 2001 From: Mandzikyan <87118120+Mandzikyan@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:32:43 +0400 Subject: [PATCH 55/69] Dev solana major fixes (#140) * Fix majors. * Minor fixes. --------- Co-authored-by: Davit Mandzikyan --- .../src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs | 1 - .../Workflow.Solana/Workflows/SolanaTransactionProcessor.cs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs index f320022d..050fee74 100644 --- a/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs +++ b/csharp/src/Workflow.Solana/Helpers/SolanaTransactionBuilder.cs @@ -8,7 +8,6 @@ using Solnet.Rpc.Builders; using Solnet.Wallet; using System.Numerics; -using System.Text.Json; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram; using Train.Solver.Blockchain.Solana.Programs.HTLCProgram.Models; using Train.Solver.Common.Extensions; diff --git a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs index 1a89c5ef..25ea04c7 100644 --- a/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs +++ b/csharp/src/Workflow.Solana/Workflows/SolanaTransactionProcessor.cs @@ -55,7 +55,7 @@ await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.SimulateTransactionAsync( new SolanaPublishTransactionRequest() { - RawTx = composedTransaction.RawTx, + RawTx = signedTx, Network= request.Network }), TemporalHelper.DefaultActivityOptions(request.Network.Type)); @@ -66,7 +66,7 @@ await ExecuteActivityAsync( (ISolanaBlockchainActivities x) => x.PublishTransactionAsync( new SolanaPublishTransactionRequest() { - RawTx = composedTransaction.RawTx, + RawTx = signedTx, Network = request.Network }), TemporalHelper.DefaultActivityOptions(request.Network.Type)); From d34e1e9cf8705eb45442c43c9dca6fa5938060eb Mon Sep 17 00:00:00 2001 From: maxim055 Date: Sat, 15 Nov 2025 04:33:47 +0400 Subject: [PATCH 56/69] Update starknet lib. --- treasury/package-lock.json | 95 ++++++++++---------------------------- treasury/package.json | 2 +- 2 files changed, 25 insertions(+), 72 deletions(-) diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 43188f7c..99d6ee9f 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -27,7 +27,7 @@ "reflect-metadata": "0.2.2", "rimraf": "6.0.1", "rxjs": "7.8.2", - "starknet": "^6.24.1" + "starknet": "7.6.4" }, "devDependencies": { "@eslint/eslintrc": "3.3.1", @@ -5524,6 +5524,20 @@ "base-x": "^3.0.2" } }, + "node_modules/@starknet-io/starknet-types-07": { + "name": "@starknet-io/types-js", + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.10.tgz", + "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", + "license": "MIT" + }, + "node_modules/@starknet-io/starknet-types-08": { + "name": "@starknet-io/types-js", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.8.4.tgz", + "integrity": "sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==", + "license": "MIT" + }, "node_modules/@swc/helpers": { "version": "0.5.17", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", @@ -9602,16 +9616,6 @@ } } }, - "node_modules/fetch-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", - "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", - "license": "Unlicense", - "dependencies": { - "set-cookie-parser": "^2.4.8", - "tough-cookie": "^4.0.0" - } - }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", @@ -11123,16 +11127,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", @@ -14986,12 +14980,6 @@ "node": ">= 18" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -15309,31 +15297,26 @@ "peer": true }, "node_modules/starknet": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/starknet/-/starknet-6.24.1.tgz", - "integrity": "sha512-g7tiCt73berhcNi41otlN3T3kxZnIvZhMi8WdC21Y6GC6zoQgbI2z1t7JAZF9c4xZiomlanwVnurcpyfEdyMpg==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/starknet/-/starknet-7.6.4.tgz", + "integrity": "sha512-FB20IaLCDbh/XomkB+19f5jmNxG+RzNdRO7QUhm7nfH81UPIt2C/MyWAlHCYkbv2wznSEb73wpxbp9tytokTgQ==", "license": "MIT", "dependencies": { "@noble/curves": "1.7.0", "@noble/hashes": "1.6.0", "@scure/base": "1.2.1", "@scure/starknet": "1.1.0", - "abi-wan-kanabi": "^2.2.3", - "fetch-cookie": "~3.0.0", - "isomorphic-fetch": "~3.0.0", + "@starknet-io/starknet-types-07": "npm:@starknet-io/types-js@~0.7.10", + "@starknet-io/starknet-types-08": "npm:@starknet-io/types-js@~0.8.4", + "abi-wan-kanabi": "2.2.4", "lossless-json": "^4.0.1", "pako": "^2.0.4", - "starknet-types-07": "npm:@starknet-io/types-js@^0.7.10", "ts-mixer": "^6.0.3" + }, + "engines": { + "node": ">=22" } }, - "node_modules/starknet-types-07": { - "name": "@starknet-io/types-js", - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.10.tgz", - "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", - "license": "MIT" - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -16227,30 +16210,6 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -17314,12 +17273,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "license": "MIT" - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", diff --git a/treasury/package.json b/treasury/package.json index 310e286e..fb3383b7 100644 --- a/treasury/package.json +++ b/treasury/package.json @@ -37,7 +37,7 @@ "reflect-metadata": "0.2.2", "rimraf": "6.0.1", "rxjs": "7.8.2", - "starknet": "^6.24.1" + "starknet": "7.6.4" }, "devDependencies": { "@eslint/eslintrc": "3.3.1", From cebfbbd4c8deeccb6ee72fdea03182e1e7e5a63d Mon Sep 17 00:00:00 2001 From: maxim055 Date: Sat, 15 Nov 2025 05:18:46 +0400 Subject: [PATCH 57/69] Some starknet fixes. --- .../Activities/ABIs/Train.json | 1290 ++++++++--------- .../Activities/Helper/Client.ts | 2 +- .../Helper/StarknetTransactionBuilder.ts | 4 +- .../StarknetBlockchainActivities.ts | 41 +- 4 files changed, 675 insertions(+), 662 deletions(-) diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json b/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json index 95920b90..c9a74d20 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json @@ -1,646 +1,646 @@ [ - { - "type": "impl", - "name": "TrainERC20", - "interface_name": "train_protocol::TrainERC20::ITrainERC20" - }, - { - "type": "struct", - "name": "core::integer::u256", - "members": [ - { - "name": "low", - "type": "core::integer::u128" - }, - { - "name": "high", - "type": "core::integer::u128" - } - ] - }, - { - "type": "struct", - "name": "core::array::Span::", - "members": [ - { - "name": "snapshot", - "type": "@core::array::Array::" - } - ] - }, - { - "type": "struct", - "name": "core::byte_array::ByteArray", - "members": [ - { - "name": "data", - "type": "core::array::Array::" - }, - { - "name": "pending_word", - "type": "core::felt252" - }, - { - "name": "pending_word_len", - "type": "core::integer::u32" - } - ] - }, - { - "type": "enum", - "name": "core::bool", - "variants": [ - { - "name": "False", - "type": "()" - }, - { - "name": "True", - "type": "()" - } - ] - }, - { - "type": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::HTLC", - "members": [ - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "hashlock", - "type": "core::integer::u256" - }, - { - "name": "secret", - "type": "core::integer::u256" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "timelock", - "type": "core::integer::u256" - }, - { - "name": "claimed", - "type": "core::integer::u8" - }, - { - "name": "sender", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" - } - ] - }, - { - "type": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::Reward", - "members": [ - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "timelock", - "type": "core::integer::u256" - } - ] - }, - { - "type": "interface", - "name": "train_protocol::TrainERC20::ITrainERC20", - "items": [ - { - "type": "function", - "name": "commit_hop", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "hopChains", - "type": "core::array::Span::" - }, - { - "name": "hopAssets", - "type": "core::array::Span::" - }, - { - "name": "hopAddress", - "type": "core::array::Span::" - }, - { - "name": "dstChain", - "type": "core::felt252" - }, - { - "name": "dstAsset", - "type": "core::felt252" - }, - { - "name": "dstAddress", - "type": "core::byte_array::ByteArray" - }, - { - "name": "srcAsset", - "type": "core::felt252" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "timelock", - "type": "core::integer::u256" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "commit", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "dstChain", - "type": "core::felt252" - }, - { - "name": "dstAsset", - "type": "core::felt252" - }, - { - "name": "dstAddress", - "type": "core::byte_array::ByteArray" - }, - { - "name": "srcAsset", - "type": "core::felt252" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "timelock", - "type": "core::integer::u256" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "lock", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "hashlock", - "type": "core::integer::u256" - }, - { - "name": "reward", - "type": "core::integer::u256" - }, - { - "name": "rewardTimelock", - "type": "core::integer::u256" - }, - { - "name": "timelock", - "type": "core::integer::u256" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" - }, - { - "name": "srcAsset", - "type": "core::felt252" - }, - { - "name": "dstChain", - "type": "core::felt252" - }, - { - "name": "dstAddress", - "type": "core::byte_array::ByteArray" - }, - { - "name": "dstAsset", - "type": "core::felt252" - }, - { - "name": "amount", - "type": "core::integer::u256" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "redeem", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "secret", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "refund", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::bool" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "addLock", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "hashlock", - "type": "core::integer::u256" - }, - { - "name": "timelock", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "addLockSig", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - }, - { - "name": "hashlock", - "type": "core::integer::u256" - }, - { - "name": "timelock", - "type": "core::integer::u256" - }, - { - "name": "signature", - "type": "core::array::Array::" - } - ], - "outputs": [ - { - "type": "core::integer::u256" - } - ], - "state_mutability": "external" - }, - { - "type": "function", - "name": "getHTLCDetails", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "train_protocol::TrainERC20::TrainERC20::HTLC" - } - ], - "state_mutability": "view" - }, - { - "type": "function", - "name": "getRewardDetails", - "inputs": [ - { - "name": "Id", - "type": "core::integer::u256" - } - ], - "outputs": [ - { - "type": "train_protocol::TrainERC20::TrainERC20::Reward" - } - ], - "state_mutability": "view" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", - "kind": "struct", - "members": [ - { - "name": "Id", - "type": "core::integer::u256", - "kind": "key" - }, - { - "name": "hopChains", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "hopAssets", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "hopAddress", - "type": "core::array::Span::", - "kind": "data" - }, - { - "name": "dstChain", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "dstAddress", - "type": "core::byte_array::ByteArray", - "kind": "data" - }, - { - "name": "dstAsset", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "sender", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "srcAsset", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "amount", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "timelock", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::TokenLocked", - "kind": "struct", - "members": [ - { - "name": "Id", - "type": "core::integer::u256", - "kind": "key" - }, - { - "name": "hashlock", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "dstChain", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "dstAddress", - "type": "core::byte_array::ByteArray", - "kind": "data" - }, - { - "name": "dstAsset", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "sender", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "key" - }, - { - "name": "srcAsset", - "type": "core::felt252", - "kind": "data" - }, - { - "name": "amount", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "reward", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "rewardTimelock", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "timelock", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", - "kind": "struct", - "members": [ - { - "name": "Id", - "type": "core::integer::u256", - "kind": "key" - }, - { - "name": "redeemAddress", - "type": "core::starknet::contract_address::ContractAddress", - "kind": "data" - }, - { - "name": "secret", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "hashlock", - "type": "core::integer::u256", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", - "kind": "struct", - "members": [ - { - "name": "Id", - "type": "core::integer::u256", - "kind": "key" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", - "kind": "struct", - "members": [ - { - "name": "Id", - "type": "core::integer::u256", - "kind": "key" - }, - { - "name": "hashlock", - "type": "core::integer::u256", - "kind": "data" - }, - { - "name": "timelock", - "type": "core::integer::u256", - "kind": "data" - } - ] - }, - { - "type": "event", - "name": "train_protocol::TrainERC20::TrainERC20::Event", - "kind": "enum", - "variants": [ - { - "name": "TokenCommitted", - "type": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", - "kind": "nested" - }, - { - "name": "TokenLocked", - "type": "train_protocol::TrainERC20::TrainERC20::TokenLocked", - "kind": "nested" - }, - { - "name": "TokenRedeemed", - "type": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", - "kind": "nested" - }, - { - "name": "TokenRefunded", - "type": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", - "kind": "nested" - }, - { - "name": "TokenLockAdded", - "type": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", - "kind": "nested" - } - ] - } - ] \ No newline at end of file + { + "name": "TrainERC20", + "type": "impl", + "interface_name": "train_protocol::TrainERC20::ITrainERC20" + }, + { + "name": "core::integer::u256", + "type": "struct", + "members": [ + { + "name": "low", + "type": "core::integer::u128" + }, + { + "name": "high", + "type": "core::integer::u128" + } + ] + }, + { + "name": "core::array::Span::", + "type": "struct", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "name": "core::byte_array::ByteArray", + "type": "struct", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "name": "core::bool", + "type": "enum", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, + { + "name": "train_protocol::TrainERC20::TrainERC20::HTLC", + "type": "struct", + "members": [ + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "name": "secret", + "type": "core::integer::u256" + }, + { + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "timelock", + "type": "core::integer::u256" + }, + { + "name": "claimed", + "type": "core::integer::u8" + }, + { + "name": "sender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "name": "train_protocol::TrainERC20::TrainERC20::Reward", + "type": "struct", + "members": [ + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "timelock", + "type": "core::integer::u256" + } + ] + }, + { + "name": "train_protocol::TrainERC20::ITrainERC20", + "type": "interface", + "items": [ + { + "name": "commit_hop", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "hopChains", + "type": "core::array::Span::" + }, + { + "name": "hopAssets", + "type": "core::array::Span::" + }, + { + "name": "hopAddress", + "type": "core::array::Span::" + }, + { + "name": "dstChain", + "type": "core::felt252" + }, + { + "name": "dstAsset", + "type": "core::felt252" + }, + { + "name": "dstAddress", + "type": "core::byte_array::ByteArray" + }, + { + "name": "srcAsset", + "type": "core::felt252" + }, + { + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "timelock", + "type": "core::integer::u256" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "external" + }, + { + "name": "commit", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "dstChain", + "type": "core::felt252" + }, + { + "name": "dstAsset", + "type": "core::felt252" + }, + { + "name": "dstAddress", + "type": "core::byte_array::ByteArray" + }, + { + "name": "srcAsset", + "type": "core::felt252" + }, + { + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "timelock", + "type": "core::integer::u256" + }, + { + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "external" + }, + { + "name": "lock", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "name": "reward", + "type": "core::integer::u256" + }, + { + "name": "rewardTimelock", + "type": "core::integer::u256" + }, + { + "name": "timelock", + "type": "core::integer::u256" + }, + { + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "srcAsset", + "type": "core::felt252" + }, + { + "name": "dstChain", + "type": "core::felt252" + }, + { + "name": "dstAddress", + "type": "core::byte_array::ByteArray" + }, + { + "name": "dstAsset", + "type": "core::felt252" + }, + { + "name": "amount", + "type": "core::integer::u256" + }, + { + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "external" + }, + { + "name": "redeem", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "secret", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "name": "refund", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::bool" + } + ], + "state_mutability": "external" + }, + { + "name": "addLock", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "name": "timelock", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "external" + }, + { + "name": "addLockSig", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + }, + { + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "name": "timelock", + "type": "core::integer::u256" + }, + { + "name": "signature", + "type": "core::array::Array::" + } + ], + "outputs": [ + { + "type": "core::integer::u256" + } + ], + "state_mutability": "external" + }, + { + "name": "getHTLCDetails", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "train_protocol::TrainERC20::TrainERC20::HTLC" + } + ], + "state_mutability": "view" + }, + { + "name": "getRewardDetails", + "type": "function", + "inputs": [ + { + "name": "Id", + "type": "core::integer::u256" + } + ], + "outputs": [ + { + "type": "train_protocol::TrainERC20::TrainERC20::Reward" + } + ], + "state_mutability": "view" + } + ] + }, + { + "kind": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", + "type": "event", + "members": [ + { + "kind": "key", + "name": "Id", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "hopChains", + "type": "core::array::Span::" + }, + { + "kind": "data", + "name": "hopAssets", + "type": "core::array::Span::" + }, + { + "kind": "data", + "name": "hopAddress", + "type": "core::array::Span::" + }, + { + "kind": "data", + "name": "dstChain", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "dstAddress", + "type": "core::byte_array::ByteArray" + }, + { + "kind": "data", + "name": "dstAsset", + "type": "core::felt252" + }, + { + "kind": "key", + "name": "sender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "srcAsset", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "timelock", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::TokenLocked", + "type": "event", + "members": [ + { + "kind": "key", + "name": "Id", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "dstChain", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "dstAddress", + "type": "core::byte_array::ByteArray" + }, + { + "kind": "data", + "name": "dstAsset", + "type": "core::felt252" + }, + { + "kind": "key", + "name": "sender", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "key", + "name": "srcReceiver", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "srcAsset", + "type": "core::felt252" + }, + { + "kind": "data", + "name": "amount", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "reward", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "rewardTimelock", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "timelock", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "tokenContract", + "type": "core::starknet::contract_address::ContractAddress" + } + ] + }, + { + "kind": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", + "type": "event", + "members": [ + { + "kind": "key", + "name": "Id", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "redeemAddress", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "kind": "data", + "name": "secret", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "hashlock", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", + "type": "event", + "members": [ + { + "kind": "key", + "name": "Id", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", + "type": "event", + "members": [ + { + "kind": "key", + "name": "Id", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "hashlock", + "type": "core::integer::u256" + }, + { + "kind": "data", + "name": "timelock", + "type": "core::integer::u256" + } + ] + }, + { + "kind": "enum", + "name": "train_protocol::TrainERC20::TrainERC20::Event", + "type": "event", + "variants": [ + { + "kind": "nested", + "name": "TokenCommitted", + "type": "train_protocol::TrainERC20::TrainERC20::TokenCommitted" + }, + { + "kind": "nested", + "name": "TokenLocked", + "type": "train_protocol::TrainERC20::TrainERC20::TokenLocked" + }, + { + "kind": "nested", + "name": "TokenRedeemed", + "type": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed" + }, + { + "kind": "nested", + "name": "TokenRefunded", + "type": "train_protocol::TrainERC20::TrainERC20::TokenRefunded" + }, + { + "kind": "nested", + "name": "TokenLockAdded", + "type": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded" + } + ] + } +] \ No newline at end of file diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts index b6392e28..49433488 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/Client.ts @@ -35,7 +35,7 @@ function serializeWithBigInt(obj: unknown): string { } export interface InvokeTransactionV3 { - type: 'INVOKE'; + type: any; sender_address: string; calldata: string[]; version: string; diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts index db4b884e..f284d182 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetTransactionBuilder.ts @@ -1,5 +1,5 @@ import { utils } from "ethers"; -import { cairo, Call, shortString, byteArray, Invocation } from "starknet"; +import { cairo, Call, shortString, byteArray, Invocation} from "starknet"; import { decodeJson } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { ApprovePrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/ApprovePrepareRequest"; import { HTLCAddLockSigTransactionPrepareRequest } from "../../../Blockchain.Abstraction/Models/TransactionBuilderModels/HTLCAddLockSigTransactionPrepareRequest"; @@ -95,7 +95,7 @@ export function createLockCallData(network: DetailedNetworkDto, args: string): P const callData = [ cairo.uint256(lockRequest.commitId), cairo.uint256(lockRequest.hashlock), - cairo.uint256(Number(utils.parseUnits(lockRequest.reward.toString(), token.decimals))), + cairo.uint256(lockRequest.reward.toString()), cairo.uint256(lockRequest.rewardTimelock), cairo.uint256(lockRequest.timelock), lockRequest.receiver, diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts index cba8b254..b42d543a 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/StarknetBlockchainActivities.ts @@ -10,7 +10,9 @@ import { TypedDataRevision, AccountInvocationItem, V3InvocationsSignerDetails, - CallData} + CallData, + RawArgs, + transaction} from "starknet"; import { injectable, inject } from "tsyringe"; import erc20Json from './ABIs/ERC20.json' @@ -166,7 +168,7 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const blockData = await provider.getBlockWithTxHashes(confrimedTransaction.block_number); - const feeAmount = confrimedTransaction.actual_fee; + const feeAmount = confrimedTransaction.actual_fee.amount; let transactionModel: TransactionResponse = { transactionHash: transactionHash, @@ -175,7 +177,7 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti confirmations: transactionStatus === TransactionStatus.Initiated ? 0 : 1, status: transactionStatus, feeAsset: network.nativeToken.symbol, - feeAmount: feeAmount.toString(), + feeAmount: Number(feeAmount).toString(), timestamp: new Date(blockData.timestamp * 1000), networkName: network.name }; @@ -260,27 +262,38 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti } public async PublishTransaction(request: PublishTransactionRequest): Promise { - let invocation: Invocation = this.deserializeWithBigInt(request.signedRawData); + let invocation : any = JSON.parse(request.signedRawData); + let signatureString = JSON.stringify(invocation.signature); - const signature = invocation.signature as WeierstrassSignatureType; + const signature = this.deserializeWithBigInt(signatureString) as WeierstrassSignatureType; invocation.signature = signature; - const signerDetails: InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); + const signerDetails: V3InvocationsSignerDetails = JSON.parse(request.signerInvocationDetails); + const a = JSON.stringify(invocation.calldata); + + var data : Call = + { + contractAddress: invocation.contractAddress, + entrypoint: invocation.entrypoint, + calldata: invocation.calldata + }; + + const calld = transaction.getExecuteCalldata([data], signerDetails.cairoVersion); const accountInvocations: InvokeTransactionV3 = { - type: 'INVOKE', + type: "INVOKE", sender_address: request.fromAddress, - calldata: CallData.toHex(invocation.calldata), + calldata: CallData.toHex(calld), version: signerDetails.version, - signature: signatureToHexArray(signature), + signature: signatureToHexArray(invocation.signature), nonce: toHex(signerDetails.nonce), - resource_bounds: resourceBoundsToHexString((signerDetails as V3InvocationsSignerDetails).resourceBounds), - tip: toHex((signerDetails as V3InvocationsSignerDetails).tip), + resource_bounds: resourceBoundsToHexString(signerDetails.resourceBounds), + tip: toHex(signerDetails.tip), paymaster_data: [], account_deployment_data: [], - fee_data_availability_mode: (signerDetails as V3InvocationsSignerDetails).feeDataAvailabilityMode, - nonce_data_availability_mode: (signerDetails as V3InvocationsSignerDetails).nonceDataAvailabilityMode, + fee_data_availability_mode: signerDetails.feeDataAvailabilityMode, + nonce_data_availability_mode: signerDetails.nonceDataAvailabilityMode }; const nodeUrl = request.network.nodes[0].url; @@ -529,7 +542,7 @@ export class StarknetBlockchainActivities implements IStarknetBlockchainActiviti const parsedInvocation: Invocation = JSON.parse(request.callData); - const transferCall: Call = + let transferCall: Call = { contractAddress: parsedInvocation.contractAddress, entrypoint: parsedInvocation.entrypoint, From 3417f5ca8fb2f96a0b555d3e2ce153c302aac890 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 15:33:24 +0400 Subject: [PATCH 58/69] Bring back Aztec. --- treasury/package-lock.json | 1984 +++++++++++++++++- treasury/src/treasury/aztec/aztec.service.ts | 27 +- treasury/src/treasury/treasury.module.ts | 4 +- 3 files changed, 1894 insertions(+), 121 deletions(-) diff --git a/treasury/package-lock.json b/treasury/package-lock.json index 8e36989c..53eca1d5 100644 --- a/treasury/package-lock.json +++ b/treasury/package-lock.json @@ -3274,6 +3274,37 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, + "node_modules/@fuel-ts/versions/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@fuel-ts/versions/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@fuels/vm-asm": { "version": "0.60.2", "resolved": "https://registry.npmjs.org/@fuels/vm-asm/-/vm-asm-0.60.2.tgz", @@ -3916,9 +3947,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -4009,6 +4040,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -4067,6 +4131,39 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/core/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4211,6 +4308,39 @@ "node": ">=8" } }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -4333,6 +4463,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -4351,6 +4514,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -6454,78 +6650,798 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@solana/buffer-layout": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", - "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", - "license": "MIT", + "node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "buffer": "~6.0.3" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=5.10" + "node": ">=18.0.0" } }, - "node_modules/@solana/codecs-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", - "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", - "license": "MIT", + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", "dependencies": { - "@solana/errors": "2.3.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" + "node": ">=18.0.0" } }, - "node_modules/@solana/codecs-numbers": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", - "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", - "license": "MIT", + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", "dependencies": { - "@solana/codecs-core": "2.3.0", - "@solana/errors": "2.3.0" + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" + "node": ">=18.0.0" } }, - "node_modules/@solana/errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", - "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", - "license": "MIT", + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", "dependencies": { - "chalk": "^5.4.1", - "commander": "^14.0.0" - }, - "bin": { - "errors": "bin/cli.mjs" + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20.18.0" - }, - "peerDependencies": { - "typescript": ">=5.3.3" + "node": ">=18.0.0" } }, - "node_modules/@solana/errors/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node_modules/@smithy/core": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", + "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", + "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", + "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", + "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-endpoint": "^4.3.11", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", + "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", + "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@solana/buffer-layout": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", + "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", + "license": "MIT", + "dependencies": { + "buffer": "~6.0.3" + }, + "engines": { + "node": ">=5.10" + } + }, + "node_modules/@solana/codecs-core": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.3.0.tgz", + "integrity": "sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==", + "license": "MIT", + "dependencies": { + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/codecs-numbers": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz", + "integrity": "sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==", + "license": "MIT", + "dependencies": { + "@solana/codecs-core": "2.3.0", + "@solana/errors": "2.3.0" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" + } + }, + "node_modules/@solana/errors": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.3.0.tgz", + "integrity": "sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==", + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^14.0.0" + }, + "bin": { + "errors": "bin/cli.mjs" + }, + "engines": { + "node": ">=20.18.0" + }, + "peerDependencies": { + "typescript": ">=5.3.3" } }, "node_modules/@solana/errors/node_modules/commander": { @@ -7900,15 +8816,13 @@ } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -8116,6 +9030,39 @@ "@babel/core": "^7.8.0" } }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -8379,6 +9326,41 @@ "node": ">=0.10.0" } }, + "node_modules/borsh": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", + "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", + "license": "Apache-2.0", + "dependencies": { + "bn.js": "^5.2.0", + "bs58": "^4.0.0", + "text-encoding-utf-8": "^1.0.2" + } + }, + "node_modules/borsh/node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/borsh/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bowser": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -8713,16 +9695,12 @@ } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -8913,6 +9891,21 @@ "node": ">=8" } }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -9452,7 +10445,40 @@ "create-jest": "bin/create-jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/create-require": { @@ -9796,9 +10822,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.252", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.252.tgz", - "integrity": "sha512-53uTpjtRgS7gjIxZ4qCgFdNO2q+wJt/Z8+xAvxbCqXPJrY6h7ighUkadQmNMXH96crtpa6gPFNP7BF4UBGDuaA==", + "version": "1.5.253", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.253.tgz", + "integrity": "sha512-O0tpQ/35rrgdiGQ0/OFWhy1itmd9A6TY9uQzlqj3hKSu/aYpe7UIn5d7CU2N9myH6biZiWF3VMZVuup8pw5U9w==", "dev": true, "license": "ISC" }, @@ -10119,6 +11145,39 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -10834,6 +11893,39 @@ "webpack": "^5.11.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/form-data": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", @@ -10992,6 +12084,21 @@ "node": "^20.0.0 || ^22.0.0 || ^24.0.0" } }, + "node_modules/fuels/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/fuels/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -11001,6 +12108,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/fuels/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/fuels/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -12513,6 +13636,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -12547,6 +13703,39 @@ } } }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -12593,6 +13782,39 @@ } } }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -12631,6 +13853,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-docblock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", @@ -12640,25 +13895,58 @@ "dependencies": { "detect-newline": "^3.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-environment-node": { @@ -12745,6 +14033,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -12766,6 +14087,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -12844,6 +14198,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -12877,6 +14264,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-runner/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12932,6 +14352,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -12986,6 +14439,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -13004,6 +14490,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-util/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -13024,15 +14543,31 @@ "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -13048,6 +14583,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -13068,6 +14620,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -13868,6 +15453,39 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", @@ -14579,6 +16197,39 @@ "node": ">=8" } }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ora/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -15217,19 +16868,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/process-warning": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", @@ -16003,12 +17641,6 @@ "node": ">= 18" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -17277,6 +18909,37 @@ "write-markdown": "dist/write-markdown.js" } }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ts-jest": { "version": "29.3.4", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.4.tgz", @@ -17361,6 +19024,39 @@ "webpack": "^5.0.0" } }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/ts-mixer": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", @@ -17442,6 +19138,39 @@ "node": ">=10.13.0" } }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -18398,6 +20127,21 @@ "node": ">=8" } }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -18420,6 +20164,22 @@ "node": ">=8" } }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index aa063d00..ce334785 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -14,7 +14,6 @@ import { TestWallet } from '@aztec/test-wallet/server'; import { createStore } from '@aztec/kv-store/lmdb'; import { AztecNode, createAztecNodeClient } from '@aztec/aztec.js/node'; import { getPXEConfig } from '@aztec/pxe/server'; -import { getSchnorrAccountContractAddress } from '@aztec/accounts/schnorr'; import { Fr } from '@aztec/aztec.js/fields'; import { deriveSigningKey } from '@aztec/stdlib/keys'; import { AztecAddress } from '@aztec/aztec.js/addresses'; @@ -22,6 +21,10 @@ import { TokenContract } from '@aztec/noir-contracts.js/Token'; import { AuthWitness } from '@aztec/stdlib/auth-witness'; import { ContractFunctionInteractionCallIntent } from '@aztec/aztec.js/authorization'; import { ContractArtifact, FunctionAbi, getAllFunctionAbis } from '@aztec/aztec.js/abi'; +import { SchnorrAccountContract } from '@aztec/accounts/schnorr'; +import { getAccountContractAddress } from '@aztec/aztec.js/account'; + + @Injectable() export class AztecTreasuryService extends TreasuryService { @@ -178,7 +181,10 @@ export class AztecTreasuryService extends TreasuryService { try { const pkKey = Fr.random(); const salt = Fr.random(); - const address = (await getSchnorrAccountContractAddress(pkKey, salt)).toString(); + + const accountContract = new SchnorrAccountContract(deriveSigningKey(pkKey)); + const address = (await getAccountContractAddress(accountContract, pkKey, salt)).toString(); + const TrainContractArtifact = TrainContract.artifact; const TokenContractArtifact = TokenContract.artifact; @@ -200,11 +206,12 @@ export class AztecTreasuryService extends TreasuryService { const wallet = await TestWallet.create(provider, fullConfig, { store }); + const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); - + const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); const schnorrAccount = await wallet.createSchnorrAccount( @@ -213,11 +220,16 @@ export class AztecTreasuryService extends TreasuryService { deriveSigningKey(pkKey), ); + await wallet.registerContract( + sponsoredFPCInstance, + SponsoredFPCContract.artifact, + ); + await (await schnorrAccount.getDeployMethod()) - .send({ from: AztecAddress.ZERO, fee: { paymentMethod: paymentMethod } }) - .wait(); + .send({ from: AztecAddress.ZERO, fee: { paymentMethod } }) + .wait({ timeout: 300000 }); - //register token contract + //register token contract const tokenContractInstanceWithAddress = await provider.getContract( AztecAddress.fromString("0x04593cd209ec9cce4c2bf3af9003c262fbda9157d75788f47e45a14db57fac3b") ); @@ -240,6 +252,7 @@ export class AztecTreasuryService extends TreasuryService { //sender rebalance addresses await wallet.registerSender(AztecAddress.fromString("0x1c34568017bacdf953140c8a7498ad113ea3fac1dfaf6963928194c85fc3bb2b")); await wallet.registerSender(AztecAddress.fromString("0x04030b28dc89132e12478f78e55c4fd4c1454b62fe54dd4a3e749867b58b6d70")); + await wallet.registerSender(AztecAddress.fromString("0x2fd22a1f24263bed186fc8588027ee40fbfa7f59153eaf586102cf70eb5916b3")); await this.privateKeyService.setDictAsync(address.toString(), dict); @@ -267,4 +280,4 @@ function getFunctionAbi( const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName); if (!fn) { } return fn; -} +} \ No newline at end of file diff --git a/treasury/src/treasury/treasury.module.ts b/treasury/src/treasury/treasury.module.ts index 80d5f2cd..c84a7df5 100644 --- a/treasury/src/treasury/treasury.module.ts +++ b/treasury/src/treasury/treasury.module.ts @@ -19,8 +19,8 @@ import { SolanaTreasuryService } from './solana/solana.service'; SolanaTreasuryService, { provide: TREASURIES, - useFactory: (evm, starknet, fuel, solana) => [evm, starknet, fuel, solana], - inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, SolanaTreasuryService], + useFactory: (evm, starknet, fuel, solana, aztec) => [evm, starknet, fuel, solana, aztec], + inject: [EvmTreasuryService, StarknetTreasuryService, FuelTreasuryService, SolanaTreasuryService, AztecTreasuryService], }, ], exports: [TREASURIES], From fb8a81cb5c243be89bbed40c8152a1f99e75746e Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:11:31 +0400 Subject: [PATCH 59/69] Added Aztec worker. --- js/package-lock.json | 732 +++++++++++++++++++ js/src/index.ts | 8 +- treasury/.env | 2 +- treasury/src/treasury/aztec/aztec.service.ts | 65 +- 4 files changed, 767 insertions(+), 40 deletions(-) diff --git a/js/package-lock.json b/js/package-lock.json index 6435a093..aa79f188 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -7385,6 +7385,738 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", + "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", + "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", + "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", + "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-endpoint": "^4.3.11", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", + "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", + "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@starknet-io/starknet-types-07": { "name": "@starknet-io/types-js", "version": "0.7.10", diff --git a/js/src/index.ts b/js/src/index.ts index d34b189c..b6aa81b2 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -14,10 +14,10 @@ switch (network) { case 'Fuel': fuelWorker(network); break; - // case 'Aztec': - // aztecWorker(network); - // break; + case 'Aztec': + aztecWorker(network); + break; default: - console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel.`); + console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel, Aztec.`); process.exit(1); } \ No newline at end of file diff --git a/treasury/.env b/treasury/.env index f27787b3..567d7701 100644 --- a/treasury/.env +++ b/treasury/.env @@ -1,4 +1,4 @@ -VAULT_URL=https://vault-dev.lb.layerswap.cloud/ +VAULT_URL=https://vault-dev.lb.layerswap.cloud VAULT_USERNAME=rick VAULT_PASSWORD=peaceamongworlds AZTEC_STORE_PATH="C:\Users\kosta\OneDrive\Desktop\aztecTr" \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index ce334785..8b0256cc 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -24,8 +24,6 @@ import { ContractArtifact, FunctionAbi, getAllFunctionAbis } from '@aztec/aztec. import { SchnorrAccountContract } from '@aztec/accounts/schnorr'; import { getAccountContractAddress } from '@aztec/aztec.js/account'; - - @Injectable() export class AztecTreasuryService extends TreasuryService { @@ -47,47 +45,45 @@ export class AztecTreasuryService extends TreasuryService { const fullConfig = { ...getPXEConfig(), l1Contracts, proverEnabled: true }; + const accountContract = new SchnorrAccountContract(deriveSigningKey(Fr.fromString(privateKey))); + const solverAddress = (await getAccountContractAddress(accountContract, Fr.fromString(privateKey), Fr.fromString(privateSalt))).toString(); + const store = await createStore(request.address, { dataDirectory: this.configService.storePath, dataStoreMapSizeKb: 1e6, }); - const wallet = await TestWallet.create(provider, fullConfig, { store }); - - const accountManager = await wallet.createSchnorrAccount( - Fr.fromString(privateKey), - Fr.fromString(privateSalt), - deriveSigningKey(Fr.fromString(privateKey)), - ); + const pxe = await TestWallet.create(provider, fullConfig, { store }); const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); - await wallet.registerContract( + await pxe.registerContract( sponsoredFPCInstance, SponsoredFPCContract.artifact, ); - const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); - const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); + await pxe.createSchnorrAccount( + Fr.fromString(privateKey), + Fr.fromString(privateSalt), + deriveSigningKey(Fr.fromString(privateKey)), + ); const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)); - await wallet.registerContract(contractInstanceWithAddress, TrainContract.artifact); + await pxe.registerContract(contractInstanceWithAddress, TrainContract.artifact); const tokenInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); - await wallet.registerContract(tokenInstance, TokenContract.artifact) + await pxe.registerContract(tokenInstance, TokenContract.artifact) const contractFunctionInteraction: FunctionInteraction = JSON.parse(request.unsignedTxn); let authWitnesses: AuthWitness[] = []; if (contractFunctionInteraction.authwiths) { - - contractFunctionInteraction.authwiths.forEach(async (authWith) => { - - const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) - const contractClassMetadata = await wallet.getContractClassMetadata(requestContractClass.currentContractClassId, true) + for (const authWith of contractFunctionInteraction.authwiths) { + const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)); + const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true); if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -99,15 +95,13 @@ export class AztecTreasuryService extends TreasuryService { throw new BadRequestException("Unable to get function ABI"); } - authWith.args.unshift(); + authWith.args.unshift(solverAddress); const functionInteraction = new ContractFunctionInteraction( - wallet, + pxe, AztecAddress.fromString(authWith.interactionAddress), functionAbi, - [ - ...authWith.args - ], + [...authWith.args], ); const intent: ContractFunctionInteractionCallIntent = { @@ -115,17 +109,17 @@ export class AztecTreasuryService extends TreasuryService { action: functionInteraction, }; - const witness = await wallet.createAuthWit( - AztecAddress.fromString(authWith.senderAddress), + const witness = await pxe.createAuthWit( + AztecAddress.fromString(solverAddress), intent, ); authWitnesses.push(witness); - }); + } } const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) - const contractClassMetadata = await wallet.getContractClassMetadata(requestcontractClass.currentContractClassId, true) + const contractClassMetadata = await pxe.getContractClassMetadata(requestcontractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -134,7 +128,7 @@ export class AztecTreasuryService extends TreasuryService { const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); const functionInteraction = new ContractFunctionInteraction( - wallet, + pxe, AztecAddress.fromString(contractFunctionInteraction.interactionAddress), functionAbi, [ @@ -156,7 +150,7 @@ export class AztecTreasuryService extends TreasuryService { }, ); - const provenTx = await wallet.proveTx(executionPayload, sendOptions); + const provenTx = await pxe.proveTx(executionPayload, sendOptions); const tx = new Tx( provenTx.getTxHash(), @@ -170,7 +164,6 @@ export class AztecTreasuryService extends TreasuryService { const signedTxn = JSON.stringify({ signedTx: signedTxHex }); return { signedTxn }; - } catch (error) { throw new BadRequestException(`Invalid unsigned transaction: ${error.message}`); @@ -206,14 +199,12 @@ export class AztecTreasuryService extends TreasuryService { const wallet = await TestWallet.create(provider, fullConfig, { store }); - const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); - const schnorrAccount = await wallet.createSchnorrAccount( pkKey, salt, @@ -269,7 +260,6 @@ interface FunctionInteraction { functionName: string, args: any[], callerAddress?: string, - senderAddress?: string, authwiths?: FunctionInteraction[], } @@ -280,4 +270,9 @@ function getFunctionAbi( const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName); if (!fn) { } return fn; -} \ No newline at end of file +} + + + +// const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); +// const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); From aef2fcdb3e2041d7008b00499bbc99f23c04016d Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:16:16 +0400 Subject: [PATCH 60/69] Revert "Added Aztec worker." This reverts commit fb8a81cb5c243be89bbed40c8152a1f99e75746e. --- js/package-lock.json | 732 ------------------- js/src/index.ts | 8 +- treasury/.env | 2 +- treasury/src/treasury/aztec/aztec.service.ts | 65 +- 4 files changed, 40 insertions(+), 767 deletions(-) diff --git a/js/package-lock.json b/js/package-lock.json index aa79f188..6435a093 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -7385,738 +7385,6 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", - "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", - "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", - "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", - "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-endpoints": "^3.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", - "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^4.2.6", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-stream": "^4.5.6", - "@smithy/util-utf8": "^4.2.0", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", - "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", - "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", - "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", - "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", - "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", - "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", - "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", - "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.0", - "@smithy/chunked-blob-reader-native": "^4.2.1", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", - "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", - "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", - "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", - "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", - "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", - "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", - "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.4", - "@smithy/middleware-serde": "^4.2.6", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "@smithy/url-parser": "^4.2.5", - "@smithy/util-middleware": "^4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", - "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/service-error-classification": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-retry": "^4.2.5", - "@smithy/uuid": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", - "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", - "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", - "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/shared-ini-file-loader": "^4.4.0", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", - "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/querystring-builder": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", - "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", - "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", - "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "@smithy/util-uri-escape": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", - "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", - "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", - "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", - "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.5", - "@smithy/util-uri-escape": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "4.9.7", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", - "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.18.4", - "@smithy/middleware-endpoint": "^4.3.11", - "@smithy/middleware-stack": "^4.2.5", - "@smithy/protocol-http": "^5.3.5", - "@smithy/types": "^4.9.0", - "@smithy/util-stream": "^4.5.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", - "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", - "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-base64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", - "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", - "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", - "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", - "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", - "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", - "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.13", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", - "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^4.4.3", - "@smithy/credential-provider-imds": "^4.2.5", - "@smithy/node-config-provider": "^4.3.5", - "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.7", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", - "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", - "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", - "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", - "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", - "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.6", - "@smithy/node-http-handler": "^4.4.5", - "@smithy/types": "^4.9.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-buffer-from": "^4.2.0", - "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", - "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", - "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", - "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.5", - "@smithy/types": "^4.9.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", - "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@starknet-io/starknet-types-07": { "name": "@starknet-io/types-js", "version": "0.7.10", diff --git a/js/src/index.ts b/js/src/index.ts index b6aa81b2..d34b189c 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -14,10 +14,10 @@ switch (network) { case 'Fuel': fuelWorker(network); break; - case 'Aztec': - aztecWorker(network); - break; + // case 'Aztec': + // aztecWorker(network); + // break; default: - console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel, Aztec.`); + console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel.`); process.exit(1); } \ No newline at end of file diff --git a/treasury/.env b/treasury/.env index 567d7701..f27787b3 100644 --- a/treasury/.env +++ b/treasury/.env @@ -1,4 +1,4 @@ -VAULT_URL=https://vault-dev.lb.layerswap.cloud +VAULT_URL=https://vault-dev.lb.layerswap.cloud/ VAULT_USERNAME=rick VAULT_PASSWORD=peaceamongworlds AZTEC_STORE_PATH="C:\Users\kosta\OneDrive\Desktop\aztecTr" \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index 8b0256cc..ce334785 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -24,6 +24,8 @@ import { ContractArtifact, FunctionAbi, getAllFunctionAbis } from '@aztec/aztec. import { SchnorrAccountContract } from '@aztec/accounts/schnorr'; import { getAccountContractAddress } from '@aztec/aztec.js/account'; + + @Injectable() export class AztecTreasuryService extends TreasuryService { @@ -45,45 +47,47 @@ export class AztecTreasuryService extends TreasuryService { const fullConfig = { ...getPXEConfig(), l1Contracts, proverEnabled: true }; - const accountContract = new SchnorrAccountContract(deriveSigningKey(Fr.fromString(privateKey))); - const solverAddress = (await getAccountContractAddress(accountContract, Fr.fromString(privateKey), Fr.fromString(privateSalt))).toString(); - const store = await createStore(request.address, { dataDirectory: this.configService.storePath, dataStoreMapSizeKb: 1e6, }); - const pxe = await TestWallet.create(provider, fullConfig, { store }); + const wallet = await TestWallet.create(provider, fullConfig, { store }); + + const accountManager = await wallet.createSchnorrAccount( + Fr.fromString(privateKey), + Fr.fromString(privateSalt), + deriveSigningKey(Fr.fromString(privateKey)), + ); const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); - await pxe.registerContract( + await wallet.registerContract( sponsoredFPCInstance, SponsoredFPCContract.artifact, ); - await pxe.createSchnorrAccount( - Fr.fromString(privateKey), - Fr.fromString(privateSalt), - deriveSigningKey(Fr.fromString(privateKey)), - ); + const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); + const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)); - await pxe.registerContract(contractInstanceWithAddress, TrainContract.artifact); + await wallet.registerContract(contractInstanceWithAddress, TrainContract.artifact); const tokenInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); - await pxe.registerContract(tokenInstance, TokenContract.artifact) + await wallet.registerContract(tokenInstance, TokenContract.artifact) const contractFunctionInteraction: FunctionInteraction = JSON.parse(request.unsignedTxn); let authWitnesses: AuthWitness[] = []; if (contractFunctionInteraction.authwiths) { - for (const authWith of contractFunctionInteraction.authwiths) { - const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)); - const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true); + + contractFunctionInteraction.authwiths.forEach(async (authWith) => { + + const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) + const contractClassMetadata = await wallet.getContractClassMetadata(requestContractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -95,13 +99,15 @@ export class AztecTreasuryService extends TreasuryService { throw new BadRequestException("Unable to get function ABI"); } - authWith.args.unshift(solverAddress); + authWith.args.unshift(); const functionInteraction = new ContractFunctionInteraction( - pxe, + wallet, AztecAddress.fromString(authWith.interactionAddress), functionAbi, - [...authWith.args], + [ + ...authWith.args + ], ); const intent: ContractFunctionInteractionCallIntent = { @@ -109,17 +115,17 @@ export class AztecTreasuryService extends TreasuryService { action: functionInteraction, }; - const witness = await pxe.createAuthWit( - AztecAddress.fromString(solverAddress), + const witness = await wallet.createAuthWit( + AztecAddress.fromString(authWith.senderAddress), intent, ); authWitnesses.push(witness); - } + }); } const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) - const contractClassMetadata = await pxe.getContractClassMetadata(requestcontractClass.currentContractClassId, true) + const contractClassMetadata = await wallet.getContractClassMetadata(requestcontractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -128,7 +134,7 @@ export class AztecTreasuryService extends TreasuryService { const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); const functionInteraction = new ContractFunctionInteraction( - pxe, + wallet, AztecAddress.fromString(contractFunctionInteraction.interactionAddress), functionAbi, [ @@ -150,7 +156,7 @@ export class AztecTreasuryService extends TreasuryService { }, ); - const provenTx = await pxe.proveTx(executionPayload, sendOptions); + const provenTx = await wallet.proveTx(executionPayload, sendOptions); const tx = new Tx( provenTx.getTxHash(), @@ -164,6 +170,7 @@ export class AztecTreasuryService extends TreasuryService { const signedTxn = JSON.stringify({ signedTx: signedTxHex }); return { signedTxn }; + } catch (error) { throw new BadRequestException(`Invalid unsigned transaction: ${error.message}`); @@ -199,12 +206,14 @@ export class AztecTreasuryService extends TreasuryService { const wallet = await TestWallet.create(provider, fullConfig, { store }); + const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); + const schnorrAccount = await wallet.createSchnorrAccount( pkKey, salt, @@ -260,6 +269,7 @@ interface FunctionInteraction { functionName: string, args: any[], callerAddress?: string, + senderAddress?: string, authwiths?: FunctionInteraction[], } @@ -270,9 +280,4 @@ function getFunctionAbi( const fn = getAllFunctionAbis(artifact).find(({ name }) => name === fnName); if (!fn) { } return fn; -} - - - -// const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); -// const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); +} \ No newline at end of file From 50f34cef8b6e49c4d7e29252cd9b0fdad76fc9d0 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:20:59 +0400 Subject: [PATCH 61/69] Fix aztec treasury. --- js/src/index.ts | 8 +-- treasury/.env | 8 +-- treasury/src/treasury/aztec/aztec.service.ts | 58 ++++++++------------ 3 files changed, 32 insertions(+), 42 deletions(-) diff --git a/js/src/index.ts b/js/src/index.ts index d34b189c..b6aa81b2 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -14,10 +14,10 @@ switch (network) { case 'Fuel': fuelWorker(network); break; - // case 'Aztec': - // aztecWorker(network); - // break; + case 'Aztec': + aztecWorker(network); + break; default: - console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel.`); + console.error(`Unknown network: ${network}. Supported networks are: Starknet, Fuel, Aztec.`); process.exit(1); } \ No newline at end of file diff --git a/treasury/.env b/treasury/.env index f27787b3..9902f080 100644 --- a/treasury/.env +++ b/treasury/.env @@ -1,4 +1,4 @@ -VAULT_URL=https://vault-dev.lb.layerswap.cloud/ -VAULT_USERNAME=rick -VAULT_PASSWORD=peaceamongworlds -AZTEC_STORE_PATH="C:\Users\kosta\OneDrive\Desktop\aztecTr" \ No newline at end of file +VAULT_URL={KV_URL_HERE} +VAULT_USERNAME={USERNAME} +VAULT_PASSWORD={PASSWORD} +AZTEC_STORE_PATH={AZTEC_STORE_PATH} \ No newline at end of file diff --git a/treasury/src/treasury/aztec/aztec.service.ts b/treasury/src/treasury/aztec/aztec.service.ts index ce334785..82deacd5 100644 --- a/treasury/src/treasury/aztec/aztec.service.ts +++ b/treasury/src/treasury/aztec/aztec.service.ts @@ -24,8 +24,6 @@ import { ContractArtifact, FunctionAbi, getAllFunctionAbis } from '@aztec/aztec. import { SchnorrAccountContract } from '@aztec/accounts/schnorr'; import { getAccountContractAddress } from '@aztec/aztec.js/account'; - - @Injectable() export class AztecTreasuryService extends TreasuryService { @@ -47,47 +45,45 @@ export class AztecTreasuryService extends TreasuryService { const fullConfig = { ...getPXEConfig(), l1Contracts, proverEnabled: true }; + const accountContract = new SchnorrAccountContract(deriveSigningKey(Fr.fromString(privateKey))); + const solverAddress = (await getAccountContractAddress(accountContract, Fr.fromString(privateKey), Fr.fromString(privateSalt))).toString(); + const store = await createStore(request.address, { dataDirectory: this.configService.storePath, dataStoreMapSizeKb: 1e6, }); - const wallet = await TestWallet.create(provider, fullConfig, { store }); - - const accountManager = await wallet.createSchnorrAccount( - Fr.fromString(privateKey), - Fr.fromString(privateSalt), - deriveSigningKey(Fr.fromString(privateKey)), - ); + const pxe = await TestWallet.create(provider, fullConfig, { store }); const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); - await wallet.registerContract( + await pxe.registerContract( sponsoredFPCInstance, SponsoredFPCContract.artifact, ); - const token = await TokenContract.at(AztecAddress.fromString(request.tokenContract), wallet); - const contractInstance = await TrainContract.at(AztecAddress.fromString(request.contractAddress), wallet); + await pxe.createSchnorrAccount( + Fr.fromString(privateKey), + Fr.fromString(privateSalt), + deriveSigningKey(Fr.fromString(privateKey)), + ); const contractInstanceWithAddress = await provider.getContract(AztecAddress.fromString(request.contractAddress)); - await wallet.registerContract(contractInstanceWithAddress, TrainContract.artifact); + await pxe.registerContract(contractInstanceWithAddress, TrainContract.artifact); const tokenInstance = await provider.getContract(AztecAddress.fromString(request.tokenContract)); - await wallet.registerContract(tokenInstance, TokenContract.artifact) + await pxe.registerContract(tokenInstance, TokenContract.artifact) const contractFunctionInteraction: FunctionInteraction = JSON.parse(request.unsignedTxn); let authWitnesses: AuthWitness[] = []; if (contractFunctionInteraction.authwiths) { - - contractFunctionInteraction.authwiths.forEach(async (authWith) => { - - const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)) - const contractClassMetadata = await wallet.getContractClassMetadata(requestContractClass.currentContractClassId, true) + for (const authWith of contractFunctionInteraction.authwiths) { + const requestContractClass = await provider.getContract(AztecAddress.fromString(authWith.interactionAddress)); + const contractClassMetadata = await pxe.getContractClassMetadata(requestContractClass.currentContractClassId, true); if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -99,15 +95,13 @@ export class AztecTreasuryService extends TreasuryService { throw new BadRequestException("Unable to get function ABI"); } - authWith.args.unshift(); + authWith.args.unshift(solverAddress); const functionInteraction = new ContractFunctionInteraction( - wallet, + pxe, AztecAddress.fromString(authWith.interactionAddress), functionAbi, - [ - ...authWith.args - ], + [...authWith.args], ); const intent: ContractFunctionInteractionCallIntent = { @@ -115,17 +109,17 @@ export class AztecTreasuryService extends TreasuryService { action: functionInteraction, }; - const witness = await wallet.createAuthWit( - AztecAddress.fromString(authWith.senderAddress), + const witness = await pxe.createAuthWit( + AztecAddress.fromString(solverAddress), intent, ); authWitnesses.push(witness); - }); + } } const requestcontractClass = await provider.getContract(AztecAddress.fromString(contractFunctionInteraction.interactionAddress)) - const contractClassMetadata = await wallet.getContractClassMetadata(requestcontractClass.currentContractClassId, true) + const contractClassMetadata = await pxe.getContractClassMetadata(requestcontractClass.currentContractClassId, true) if (!contractClassMetadata.artifact) { throw new BadRequestException(`Artifact not registered`); @@ -134,7 +128,7 @@ export class AztecTreasuryService extends TreasuryService { const functionAbi = getFunctionAbi(contractClassMetadata.artifact, contractFunctionInteraction.functionName); const functionInteraction = new ContractFunctionInteraction( - wallet, + pxe, AztecAddress.fromString(contractFunctionInteraction.interactionAddress), functionAbi, [ @@ -156,7 +150,7 @@ export class AztecTreasuryService extends TreasuryService { }, ); - const provenTx = await wallet.proveTx(executionPayload, sendOptions); + const provenTx = await pxe.proveTx(executionPayload, sendOptions); const tx = new Tx( provenTx.getTxHash(), @@ -170,7 +164,6 @@ export class AztecTreasuryService extends TreasuryService { const signedTxn = JSON.stringify({ signedTx: signedTxHex }); return { signedTxn }; - } catch (error) { throw new BadRequestException(`Invalid unsigned transaction: ${error.message}`); @@ -206,14 +199,12 @@ export class AztecTreasuryService extends TreasuryService { const wallet = await TestWallet.create(provider, fullConfig, { store }); - const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams( SponsoredFPCContract.artifact, { salt: new Fr(0) }, ); const paymentMethod = new SponsoredFeePaymentMethod(sponsoredFPCInstance.address); - const schnorrAccount = await wallet.createSchnorrAccount( pkKey, salt, @@ -269,7 +260,6 @@ interface FunctionInteraction { functionName: string, args: any[], callerAddress?: string, - senderAddress?: string, authwiths?: FunctionInteraction[], } From 59f70dc5521505d555c73ee085c04a159a2ddc50 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:21:47 +0400 Subject: [PATCH 62/69] Added env gitignore. --- treasury/.gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/treasury/.gitignore b/treasury/.gitignore index edee856d..401841b5 100644 --- a/treasury/.gitignore +++ b/treasury/.gitignore @@ -15,4 +15,8 @@ npm-debug.log /.nyc_output # dist -/dist \ No newline at end of file +/dist + +# dotenv environment variables file +.env +.env.test \ No newline at end of file From 29d92008a18b51e274416c5520240688b1265a13 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:35:13 +0400 Subject: [PATCH 63/69] Update docker file. --- js/Dockerfile | 8 +- js/package-lock.json | 732 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 736 insertions(+), 4 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index b52fc623..02d4f570 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -1,9 +1,10 @@ - # Build stage for better optimization ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder +RUN apk add --no-cache python3 make g++ + WORKDIR /app COPY js/ . RUN npm ci @@ -11,8 +12,7 @@ RUN npm run build # Final production image FROM node:${NODE_VERSION} AS final +RUN apk add --no-cache python3 make g++ WORKDIR /app -COPY --from=builder /app . - -CMD ["sh", "-c", "npm run start"] \ No newline at end of file +COPY --from=builder /app . \ No newline at end of file diff --git a/js/package-lock.json b/js/package-lock.json index 6435a093..aa79f188 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -7385,6 +7385,738 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.4.tgz", + "integrity": "sha512-o5tMqPZILBvvROfC8vC+dSVnWJl9a0u9ax1i1+Bq8515eYjUJqqk5XjjEsDLoeL5dSqGSh6WGdVx1eJ1E/Nwhw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.11.tgz", + "integrity": "sha512-eJXq9VJzEer1W7EQh3HY2PDJdEcEUnv6sKuNt4eVjyeNWcQFS4KmnY+CKkYOIR6tSqarn6bjjCqg1UB+8UJiPQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.11.tgz", + "integrity": "sha512-EL5OQHvFOKneJVRgzRW4lU7yidSwp/vRJOe542bHgExN3KNThr1rlg0iE4k4SnA+ohC+qlUxoK+smKeAYPzfAQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.9.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.7.tgz", + "integrity": "sha512-pskaE4kg0P9xNQWihfqlTMyxyFR3CH6Sr6keHYghgyqqDXzjl2QJg5lAzuVe/LzZiOzcbcVtxKYi1/fZPt/3DA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.18.4", + "@smithy/middleware-endpoint": "^4.3.11", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.10.tgz", + "integrity": "sha512-3iA3JVO1VLrP21FsZZpMCeF93aqP3uIOMvymAT3qHIJz2YlgDeRvNUspFwCNqd/j3qqILQJGtsVQnJZICh/9YA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.13.tgz", + "integrity": "sha512-PTc6IpnpSGASuzZAgyUtaVfOFpU0jBD2mcGwrgDuHf7PlFgt5TIPxCYBDbFQs06jxgeV3kd/d/sok1pzV0nJRg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.7", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@starknet-io/starknet-types-07": { "name": "@starknet-io/types-js", "version": "0.7.10", From f77e483840b85e8ce850e426085ae267cc368363 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Sun, 16 Nov 2025 23:58:42 +0400 Subject: [PATCH 64/69] Changed node version. --- .github/workflows/aztec.yml | 2 +- .github/workflows/fuel.yml | 2 +- .github/workflows/starknet.yml | 2 +- js/package-lock.json | 296 ++++++++++++++++----------------- 4 files changed, 150 insertions(+), 152 deletions(-) diff --git a/.github/workflows/aztec.yml b/.github/workflows/aztec.yml index b63f18fe..ea8092f4 100644 --- a/.github/workflows/aztec.yml +++ b/.github/workflows/aztec.yml @@ -17,7 +17,7 @@ on: env: DOCKER_IMAGE: trainprotocol/solver-aztec - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: build-and-push: diff --git a/.github/workflows/fuel.yml b/.github/workflows/fuel.yml index ac129543..8bdc1c03 100644 --- a/.github/workflows/fuel.yml +++ b/.github/workflows/fuel.yml @@ -17,7 +17,7 @@ on: env: DOCKER_IMAGE: trainprotocol/solver-fuel - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: build-and-push: diff --git a/.github/workflows/starknet.yml b/.github/workflows/starknet.yml index 33bcd6c5..e5ad2fd6 100644 --- a/.github/workflows/starknet.yml +++ b/.github/workflows/starknet.yml @@ -17,7 +17,7 @@ on: env: DOCKER_IMAGE: trainprotocol/solver-starknet - NODE_VERSION: 20 + NODE_VERSION: 22 jobs: build-and-push: diff --git a/js/package-lock.json b/js/package-lock.json index aa79f188..ba0e777f 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -247,33 +247,32 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.930.0.tgz", - "integrity": "sha512-5ddhr3ShseFRIdNXH8bkh1CIC78p0ZXpa7HJZpONDU3JGvd/B+yHHgTr141rtgoFTaW0gjPdbdtqtPLnhlnK+A==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.932.0.tgz", + "integrity": "sha512-qrlbJ3W5QR3Gzz2S+yaItH8ZhX7vaeA4j4fDAi8+0FmsVhXOfBbomWr+JO1wk/YojZMdyLfmfYRHrJvAQsLFVw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/credential-provider-node": "3.930.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/credential-provider-node": "3.932.0", "@aws-sdk/middleware-bucket-endpoint": "3.930.0", "@aws-sdk/middleware-expect-continue": "3.930.0", - "@aws-sdk/middleware-flexible-checksums": "3.930.0", + "@aws-sdk/middleware-flexible-checksums": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-location-constraint": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-sdk-s3": "3.930.0", + "@aws-sdk/middleware-sdk-s3": "3.932.0", "@aws-sdk/middleware-ssec": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", - "@aws-sdk/signature-v4-multi-region": "3.930.0", + "@aws-sdk/signature-v4-multi-region": "3.932.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", - "@aws-sdk/xml-builder": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/eventstream-serde-browser": "^4.2.5", @@ -307,7 +306,6 @@ "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.5", - "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, "engines": { @@ -315,23 +313,23 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.930.0.tgz", - "integrity": "sha512-sASqgm1iMLcmi+srSH9WJuqaf3GQAKhuB4xIJwkNEPUQ+yGV8HqErOOHJLXXuTUyskcdtK+4uMaBRLT2ESm+QQ==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.932.0.tgz", + "integrity": "sha512-XHqHa5iv2OQsKoM2tUQXs7EAyryploC00Wg0XSFra/KAKqyGizUb5XxXsGlyqhebB29Wqur+zwiRwNmejmN0+Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", @@ -364,9 +362,9 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.930.0.tgz", - "integrity": "sha512-E95pWT1ayfRWg0AW2KNOCYM7QQcVeOhMRLX5PXLeDKcdxP7s3x0LHG9t7a3nPbAbvYLRrhC7O2lLWzzMCpqjsw==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.932.0.tgz", + "integrity": "sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.930.0", @@ -388,12 +386,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.930.0.tgz", - "integrity": "sha512-5tJyxNQmm9C1XKeiWt/K67mUHtTiU2FxTkVsqVrzAMjNsF3uyA02kyTK70byh5n29oVR9XNValVEl6jk01ipYg==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.932.0.tgz", + "integrity": "sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", @@ -404,12 +402,12 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.930.0.tgz", - "integrity": "sha512-vw565GctpOPoRJyRvgqXM8U/4RG8wYEPfhe6GHvt9dchebw0OaFeW1mmSYpwEPkMhZs9Z808dkSPScwm8WZBKA==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.932.0.tgz", + "integrity": "sha512-b6N9Nnlg8JInQwzBkUq5spNaXssM3h3zLxGzpPrnw0nHSIWPJPTbZzA5Ca285fcDUFuKP+qf3qkuqlAjGOdWhg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/node-http-handler": "^4.4.5", @@ -425,18 +423,18 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.930.0.tgz", - "integrity": "sha512-Ua4T5MWjm7QdHi7ZSUvnPBFwBZmLFP/IEGCLacPKbUT1sQO30hlWuB/uQOj0ns4T6p7V4XsM8bz5+xsW2yRYbQ==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.932.0.tgz", + "integrity": "sha512-ZBjSAXVGy7danZRHCRMJQ7sBkG1Dz39thYlvTiUaf9BKZ+8ymeiFhuTeV1OkWUBBnY0ki2dVZJvboTqfINhNxA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/credential-provider-env": "3.932.0", + "@aws-sdk/credential-provider-http": "3.932.0", + "@aws-sdk/credential-provider-process": "3.932.0", + "@aws-sdk/credential-provider-sso": "3.932.0", + "@aws-sdk/credential-provider-web-identity": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -449,17 +447,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.930.0.tgz", - "integrity": "sha512-LTx5G0PsL51hNCCzOIdacGPwqnTp3X2Ck8CjLL4Kz9FTR0mfY02qEJB5y5segU1hlge/WdQYxzBBMhtMUR2h8A==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.932.0.tgz", + "integrity": "sha512-SEG9t2taBT86qe3gTunfrK8BxT710GVLGepvHr+X5Pw+qW225iNRaGN0zJH+ZE/j91tcW9wOaIoWnURkhR5wIg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.930.0", - "@aws-sdk/credential-provider-http": "3.930.0", - "@aws-sdk/credential-provider-ini": "3.930.0", - "@aws-sdk/credential-provider-process": "3.930.0", - "@aws-sdk/credential-provider-sso": "3.930.0", - "@aws-sdk/credential-provider-web-identity": "3.930.0", + "@aws-sdk/credential-provider-env": "3.932.0", + "@aws-sdk/credential-provider-http": "3.932.0", + "@aws-sdk/credential-provider-ini": "3.932.0", + "@aws-sdk/credential-provider-process": "3.932.0", + "@aws-sdk/credential-provider-sso": "3.932.0", + "@aws-sdk/credential-provider-web-identity": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -472,12 +470,12 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.930.0.tgz", - "integrity": "sha512-lqC4lepxgwR2uZp/JROTRjkHld4/FEpSgofmiIOAfUfDx0OWSg7nkWMMS/DzlMpODqATl9tO0DcvmIJ8tMbh6g==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.932.0.tgz", + "integrity": "sha512-BodZYKvT4p/Dkm28Ql/FhDdS1+p51bcZeMMu2TRtU8PoMDHnVDhHz27zASEKSZwmhvquxHrZHB0IGuVqjZUtSQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -489,14 +487,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.930.0.tgz", - "integrity": "sha512-LIs2aaVoFfioRokR1R9SpLS9u8CmbHhrV/gpHO1ED41qNCujn23vAxRNQmWzJ2XoCxSTwvToiHD2i6CjPA6rHQ==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.932.0.tgz", + "integrity": "sha512-XYmkv+ltBjjmPZ6AmR1ZQZkQfD0uzG61M18/Lif3HAGxyg3dmod0aWx9aL6lj9SvxAGqzscrx5j4PkgLqjZruw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.930.0", - "@aws-sdk/core": "3.930.0", - "@aws-sdk/token-providers": "3.930.0", + "@aws-sdk/client-sso": "3.932.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/token-providers": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -508,13 +506,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.930.0.tgz", - "integrity": "sha512-iIYF8GReLOp16yn2bnRWrc4UOW/vVLifqyRWZ3iAGe8NFzUiHBq+Nok7Edh+2D8zt30QOCOsWCZ31uRrPuXH8w==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.932.0.tgz", + "integrity": "sha512-Yw/hYNnC1KHuVIQF9PkLXbuKN7ljx70OSbJYDRufllQvej3kRwNcqQSnzI1M4KaObccqKaE6srg22DqpPy9p8w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -559,15 +557,15 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.930.0.tgz", - "integrity": "sha512-ZbAwwe7sqIO7tmNH3Q8rH91tZCQwBGliyXUbANoVMp1CWLPDAeaECurkmuBe/UJmoszi2U3gyhIQlbfzD2SBLw==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.932.0.tgz", + "integrity": "sha512-hyvRz/XS/0HTHp9/Ld1mKwpOi7bZu5olI42+T112rkCTbt1bewkygzEl4oflY4H7cKMamQusYoL0yBUD/QSEvA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/is-array-buffer": "^4.2.0", "@smithy/node-config-provider": "^4.3.5", @@ -642,12 +640,12 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.930.0.tgz", - "integrity": "sha512-bnVK0xVVmrPyKTbV5MgG6KP7MPe87GngBPD5MrYj9kWmGrJIvnt0qer0UIgWAnsyCi7XrTfw7SMgYRpSxOYEMw==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.932.0.tgz", + "integrity": "sha512-bYMHxqQzseaAP9Z5qLI918z5AtbAnZRRtFi3POb4FLZyreBMgCgBNaPkIhdgywnkqaydTWvbMBX4s9f4gUwlTw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-arn-parser": "3.893.0", "@smithy/core": "^3.18.2", @@ -681,12 +679,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.930.0.tgz", - "integrity": "sha512-UUItqy02biaHoZDd1Z2CskFon3Lej15ZCIZzW4n2lsJmgLWNvz21jtFA8DQny7ZgCLAOOXI8YK3VLZptZWtIcg==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.932.0.tgz", + "integrity": "sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@smithy/core": "^3.18.2", @@ -699,23 +697,23 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.930.0.tgz", - "integrity": "sha512-eEDjTVXNiDkoV0ZV+X+WV40GTpF70xZmDW13CQzQF7rzOC2iFjtTRU+F7MUhy/Vs+e9KvDgiuCDecITtaOXUNw==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.932.0.tgz", + "integrity": "sha512-E2ucBfiXSpxZflHTf3UFbVwao4+7v7ctAeg8SWuglc1UMqMlpwMFFgWiSONtsf0SR3+ZDoWGATyCXOfDWerJuw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.930.0", + "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.930.0", - "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", - "@aws-sdk/util-user-agent-node": "3.930.0", + "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", @@ -764,12 +762,12 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.930.0.tgz", - "integrity": "sha512-UOAq1ftbrZc9HRP/nG970OONNykIDWunjth9GvGDODkW0FR7DHJWBmTwj61ZnrSiuSParp1eQfa+JsZ8eXNPcw==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.932.0.tgz", + "integrity": "sha512-NCIRJvoRc9246RZHIusY1+n/neeG2yGhBGdKhghmrNdM+mLLN6Ii7CKFZjx3DhxtpHMpl1HWLTMhdVrGwP2upw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.930.0", + "@aws-sdk/middleware-sdk-s3": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", @@ -781,13 +779,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.930.0.tgz", - "integrity": "sha512-K+fJFJXA2Tdx10WhhTm+xQmf1WDHu14rUutByyqx6W0iW2rhtl3YeRr188LWSU3/hpz7BPyvigaAb0QyRti6FQ==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.932.0.tgz", + "integrity": "sha512-43u82ulVuHK4zWhcSPyuPS18l0LNHi3QJQ1YtP2MfP8bPf5a6hMYp5e3lUr9oTDEWcpwBYtOW0m1DVmoU/3veA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.930.0", - "@aws-sdk/nested-clients": "3.930.0", + "@aws-sdk/core": "3.932.0", + "@aws-sdk/nested-clients": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -864,12 +862,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.930.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.930.0.tgz", - "integrity": "sha512-tYc5uFKogn0vLukeZ6Zz2dR1/WiTjxZH7+Jjoce6aEYgRVfyrDje1POFb7YxhNZ7Pp1WzHCuwW2KgkmMoYVbxQ==", + "version": "3.932.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.932.0.tgz", + "integrity": "sha512-/kC6cscHrZL74TrZtgiIL5jJNbVsw9duGGPurmaVgoCbP7NnxyaSWEurbNV3VPNPhNE3bV3g4Ci+odq+AlsYQg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.930.0", + "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", @@ -8132,9 +8130,9 @@ "license": "MIT" }, "node_modules/@swc/core": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.1.tgz", - "integrity": "sha512-s9GN3M2jA32k+StvuS9uGe4ztf5KVGBdlJMMC6LR6Ah23Lq/CWKVcC3WeQi8qaAcLd+DiddoNCNMUWymLv+wWQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.2.tgz", + "integrity": "sha512-OQm+yJdXxvSjqGeaWhP6Ia264ogifwAO7Q12uTDVYj/Ks4jBTI4JknlcjDRAXtRhqbWsfbZyK/5RtuIPyptk3w==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -8149,16 +8147,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.1", - "@swc/core-darwin-x64": "1.15.1", - "@swc/core-linux-arm-gnueabihf": "1.15.1", - "@swc/core-linux-arm64-gnu": "1.15.1", - "@swc/core-linux-arm64-musl": "1.15.1", - "@swc/core-linux-x64-gnu": "1.15.1", - "@swc/core-linux-x64-musl": "1.15.1", - "@swc/core-win32-arm64-msvc": "1.15.1", - "@swc/core-win32-ia32-msvc": "1.15.1", - "@swc/core-win32-x64-msvc": "1.15.1" + "@swc/core-darwin-arm64": "1.15.2", + "@swc/core-darwin-x64": "1.15.2", + "@swc/core-linux-arm-gnueabihf": "1.15.2", + "@swc/core-linux-arm64-gnu": "1.15.2", + "@swc/core-linux-arm64-musl": "1.15.2", + "@swc/core-linux-x64-gnu": "1.15.2", + "@swc/core-linux-x64-musl": "1.15.2", + "@swc/core-win32-arm64-msvc": "1.15.2", + "@swc/core-win32-ia32-msvc": "1.15.2", + "@swc/core-win32-x64-msvc": "1.15.2" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" @@ -8170,9 +8168,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.1.tgz", - "integrity": "sha512-vEPrVxegWIjKEz+1VCVuKRY89jhokhSmQ/YXBWLnmLj9cI08G61RTZJvdsIcjYUjjTu7NgZlYVK+b2y0fbh11g==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.2.tgz", + "integrity": "sha512-Ghyz4RJv4zyXzrUC1B2MLQBbppIB5c4jMZJybX2ebdEQAvryEKp3gq1kBksCNsatKGmEgXul88SETU19sMWcrw==", "cpu": [ "arm64" ], @@ -8186,9 +8184,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.1.tgz", - "integrity": "sha512-z9QguKxE3aldvwKHHDg5OlKehasbJBF1lacn5CnN6SlrHbdwokXHFA3nIoO3Bh1Tw7bCgFtdIR4jKlTTn3kBZA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.2.tgz", + "integrity": "sha512-7n/PGJOcL2QoptzL42L5xFFfXY5rFxLHnuz1foU+4ruUTG8x2IebGhtwVTpaDN8ShEv2UZObBlT1rrXTba15Zw==", "cpu": [ "x64" ], @@ -8202,9 +8200,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.1.tgz", - "integrity": "sha512-yS2FHA8E4YeiPG9YeYk/6mKiCWuXR5RdYlCmtlGzKcjWbI4GXUVe7+p9C0M6myRt3zdj3M1knmJxk52MQA9EZQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.2.tgz", + "integrity": "sha512-ZUQVCfRJ9wimuxkStRSlLwqX4TEDmv6/J+E6FicGkQ6ssLMWoKDy0cAo93HiWt/TWEee5vFhFaSQYzCuBEGO6A==", "cpu": [ "arm" ], @@ -8218,9 +8216,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.1.tgz", - "integrity": "sha512-IFrjDu7+5Y61jLsUqBVXlXutDoPBX10eEeNTjW6C1yzm+cSTE7ayiKXMIFri4gEZ4VpXS6MUgkwjxtDpIXTh+w==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.2.tgz", + "integrity": "sha512-GZh3pYBmfnpQ+JIg+TqLuz+pM+Mjsk5VOzi8nwKn/m+GvQBsxD5ectRtxuWUxMGNG8h0lMy4SnHRqdK3/iJl7A==", "cpu": [ "arm64" ], @@ -8234,9 +8232,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.1.tgz", - "integrity": "sha512-fKzP9mRQGbhc5QhJPIsqKNNX/jyWrZgBxmo3Nz1SPaepfCUc7RFmtcJQI5q8xAun3XabXjh90wqcY/OVyg2+Kg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.2.tgz", + "integrity": "sha512-5av6VYZZeneiYIodwzGMlnyVakpuYZryGzFIbgu1XP8wVylZxduEzup4eP8atiMDFmIm+s4wn8GySJmYqeJC0A==", "cpu": [ "arm64" ], @@ -8250,9 +8248,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.1.tgz", - "integrity": "sha512-ZLjMi138uTJxb+1wzo4cB8mIbJbAsSLWRNeHc1g1pMvkERPWOGlem+LEYkkzaFzCNv1J8aKcL653Vtw8INHQeg==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.2.tgz", + "integrity": "sha512-1nO/UfdCLuT/uE/7oB3EZgTeZDCIa6nL72cFEpdegnqpJVNDI6Qb8U4g/4lfVPkmHq2lvxQ0L+n+JdgaZLhrRA==", "cpu": [ "x64" ], @@ -8266,9 +8264,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.1.tgz", - "integrity": "sha512-jvSI1IdsIYey5kOITzyajjofXOOySVitmLxb45OPUjoNojql4sDojvlW5zoHXXFePdA6qAX4Y6KbzAOV3T3ctA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.2.tgz", + "integrity": "sha512-Ksfrb0Tx310kr+TLiUOvB/I80lyZ3lSOp6cM18zmNRT/92NB4mW8oX2Jo7K4eVEI2JWyaQUAFubDSha2Q+439A==", "cpu": [ "x64" ], @@ -8282,9 +8280,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.1.tgz", - "integrity": "sha512-X/FcDtNrDdY9r4FcXHt9QxUqC/2FbQdvZobCKHlHe8vTSKhUHOilWl5EBtkFVfsEs4D5/yAri9e3bJbwyBhhBw==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.2.tgz", + "integrity": "sha512-IzUb5RlMUY0r1A9IuJrQ7Tbts1wWb73/zXVXT8VhewbHGoNlBKE0qUhKMED6Tv4wDF+pmbtUJmKXDthytAvLmg==", "cpu": [ "arm64" ], @@ -8298,9 +8296,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.1.tgz", - "integrity": "sha512-vfheiWBux8PpC87oy1cshcqzgH7alWYpnVq5jWe7xuVkjqjGGDbBUKuS84eJCdsWcVaB5EXIWLKt+11W3/BOwA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.2.tgz", + "integrity": "sha512-kCATEzuY2LP9AlbU2uScjcVhgnCAkRdu62vbce17Ro5kxEHxYWcugkveyBRS3AqZGtwAKYbMAuNloer9LS/hpw==", "cpu": [ "ia32" ], @@ -8314,9 +8312,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.1.tgz", - "integrity": "sha512-n3Ppn0LSov/IdlANq+8kxHqENuJRX5XtwQqPgQsgwKIcFq22u17NKfDs9vL5PwRsEHY6Xd67pnOqQX0h4AvbuQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.2.tgz", + "integrity": "sha512-iJaHeYCF4jTn7OEKSa3KRiuVFIVYts8jYjNmCdyz1u5g8HRyTDISD76r8+ljEOgm36oviRQvcXaw6LFp1m0yyA==", "cpu": [ "x64" ], @@ -8771,9 +8769,9 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.34", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.34.tgz", - "integrity": "sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -9991,9 +9989,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001754", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", - "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", + "version": "1.0.30001755", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz", + "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==", "funding": [ { "type": "opencollective", @@ -10921,9 +10919,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.250", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", - "integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", + "version": "1.5.254", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.254.tgz", + "integrity": "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg==", "license": "ISC" }, "node_modules/elliptic": { @@ -14624,9 +14622,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { From d4a6c4561d963b40c1db9110c5ca9b100da9dc72 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 17 Nov 2025 00:07:39 +0400 Subject: [PATCH 65/69] Fixed js docker. --- js/Dockerfile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/js/Dockerfile b/js/Dockerfile index 02d4f570..ebeb43ee 100644 --- a/js/Dockerfile +++ b/js/Dockerfile @@ -3,16 +3,21 @@ ARG NODE_VERSION FROM node:${NODE_VERSION} AS builder -RUN apk add --no-cache python3 make g++ +RUN apt-get update \ + && apt-get install -y python3 make g++ \ + && rm -rf /var/lib/apt/lists/* WORKDIR /app -COPY js/ . + +COPY js/package*.json ./ RUN npm ci + +COPY js/ . RUN npm run build -# Final production image FROM node:${NODE_VERSION} AS final -RUN apk add --no-cache python3 make g++ WORKDIR /app -COPY --from=builder /app . \ No newline at end of file +COPY --from=builder /app . + +CMD ["npm", "run", "start"] From 50d19506255187e1a99c25a97f36834689855715 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 17 Nov 2025 00:30:05 +0400 Subject: [PATCH 66/69] Add dummy change. --- .../Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts index 755611bf..53834e85 100644 --- a/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts +++ b/js/src/Blockchain/Blockchain.Aztec/Workflows/AztecTransactionProcessor.ts @@ -97,7 +97,7 @@ export async function AztecTransactionProcessor( } catch (error) { - await defaultActivities.updateCurrentNonce( + await defaultActivities.updateCurrentNonce( { address: request.fromAddress, network: request.network, From 0ab1fa3ea64f53c8a242c6cd4e00de9e1d51a094 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Mon, 17 Nov 2025 20:17:01 +0400 Subject: [PATCH 67/69] Fix starknet event decoder. --- .../Activities/ABIs/Train.json | 214 +++++++++--------- .../Activities/Helper/StarknetEventTracker.ts | 11 +- .../Blockchain.Starknet/Models/EventModels.ts | 1 - 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json b/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json index c9a74d20..972d8ebe 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/ABIs/Train.json @@ -1,12 +1,12 @@ [ { - "name": "TrainERC20", "type": "impl", + "name": "TrainERC20", "interface_name": "train_protocol::TrainERC20::ITrainERC20" }, { - "name": "core::integer::u256", "type": "struct", + "name": "core::integer::u256", "members": [ { "name": "low", @@ -19,8 +19,8 @@ ] }, { - "name": "core::array::Span::", "type": "struct", + "name": "core::array::Span::", "members": [ { "name": "snapshot", @@ -29,8 +29,8 @@ ] }, { - "name": "core::byte_array::ByteArray", "type": "struct", + "name": "core::byte_array::ByteArray", "members": [ { "name": "data", @@ -47,8 +47,8 @@ ] }, { - "name": "core::bool", "type": "enum", + "name": "core::bool", "variants": [ { "name": "False", @@ -61,8 +61,8 @@ ] }, { - "name": "train_protocol::TrainERC20::TrainERC20::HTLC", "type": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::HTLC", "members": [ { "name": "amount", @@ -99,8 +99,8 @@ ] }, { - "name": "train_protocol::TrainERC20::TrainERC20::Reward", "type": "struct", + "name": "train_protocol::TrainERC20::TrainERC20::Reward", "members": [ { "name": "amount", @@ -113,12 +113,12 @@ ] }, { - "name": "train_protocol::TrainERC20::ITrainERC20", "type": "interface", + "name": "train_protocol::TrainERC20::ITrainERC20", "items": [ { - "name": "commit_hop", "type": "function", + "name": "commit_hop", "inputs": [ { "name": "Id", @@ -177,8 +177,8 @@ "state_mutability": "external" }, { - "name": "commit", "type": "function", + "name": "commit", "inputs": [ { "name": "Id", @@ -225,8 +225,8 @@ "state_mutability": "external" }, { - "name": "lock", "type": "function", + "name": "lock", "inputs": [ { "name": "Id", @@ -285,8 +285,8 @@ "state_mutability": "external" }, { - "name": "redeem", "type": "function", + "name": "redeem", "inputs": [ { "name": "Id", @@ -305,8 +305,8 @@ "state_mutability": "external" }, { - "name": "refund", "type": "function", + "name": "refund", "inputs": [ { "name": "Id", @@ -321,8 +321,8 @@ "state_mutability": "external" }, { - "name": "addLock", "type": "function", + "name": "addLock", "inputs": [ { "name": "Id", @@ -345,8 +345,8 @@ "state_mutability": "external" }, { - "name": "addLockSig", "type": "function", + "name": "addLockSig", "inputs": [ { "name": "Id", @@ -373,8 +373,8 @@ "state_mutability": "external" }, { - "name": "getHTLCDetails", "type": "function", + "name": "getHTLCDetails", "inputs": [ { "name": "Id", @@ -389,8 +389,8 @@ "state_mutability": "view" }, { - "name": "getRewardDetails", "type": "function", + "name": "getRewardDetails", "inputs": [ { "name": "Id", @@ -407,239 +407,239 @@ ] }, { - "kind": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", + "kind": "struct", "members": [ { - "kind": "key", "name": "Id", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "key" }, { - "kind": "data", "name": "hopChains", - "type": "core::array::Span::" + "type": "core::array::Span::", + "kind": "data" }, { - "kind": "data", "name": "hopAssets", - "type": "core::array::Span::" + "type": "core::array::Span::", + "kind": "data" }, { - "kind": "data", "name": "hopAddress", - "type": "core::array::Span::" + "type": "core::array::Span::", + "kind": "data" }, { - "kind": "data", "name": "dstChain", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "data", "name": "dstAddress", - "type": "core::byte_array::ByteArray" + "type": "core::byte_array::ByteArray", + "kind": "data" }, { - "kind": "data", "name": "dstAsset", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "key", "name": "sender", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" }, { - "kind": "key", "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" }, { - "kind": "data", "name": "srcAsset", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "data", "name": "amount", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "timelock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" } ] }, { - "kind": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::TokenLocked", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::TokenLocked", + "kind": "struct", "members": [ { - "kind": "key", "name": "Id", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "key" }, { - "kind": "data", "name": "hashlock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "dstChain", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "data", "name": "dstAddress", - "type": "core::byte_array::ByteArray" + "type": "core::byte_array::ByteArray", + "kind": "data" }, { - "kind": "data", "name": "dstAsset", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "key", "name": "sender", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" }, { - "kind": "key", "name": "srcReceiver", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "key" }, { - "kind": "data", "name": "srcAsset", - "type": "core::felt252" + "type": "core::felt252", + "kind": "data" }, { - "kind": "data", "name": "amount", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "reward", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "rewardTimelock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "timelock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "tokenContract", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" } ] }, { - "kind": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", + "kind": "struct", "members": [ { - "kind": "key", "name": "Id", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "key" }, { - "kind": "data", "name": "redeemAddress", - "type": "core::starknet::contract_address::ContractAddress" + "type": "core::starknet::contract_address::ContractAddress", + "kind": "data" }, { - "kind": "data", "name": "secret", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "hashlock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" } ] }, { - "kind": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", + "kind": "struct", "members": [ { - "kind": "key", "name": "Id", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "key" } ] }, { - "kind": "struct", - "name": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", + "kind": "struct", "members": [ { - "kind": "key", "name": "Id", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "key" }, { - "kind": "data", "name": "hashlock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" }, { - "kind": "data", "name": "timelock", - "type": "core::integer::u256" + "type": "core::integer::u256", + "kind": "data" } ] }, { - "kind": "enum", - "name": "train_protocol::TrainERC20::TrainERC20::Event", "type": "event", + "name": "train_protocol::TrainERC20::TrainERC20::Event", + "kind": "enum", "variants": [ { - "kind": "nested", "name": "TokenCommitted", - "type": "train_protocol::TrainERC20::TrainERC20::TokenCommitted" + "type": "train_protocol::TrainERC20::TrainERC20::TokenCommitted", + "kind": "nested" }, { - "kind": "nested", "name": "TokenLocked", - "type": "train_protocol::TrainERC20::TrainERC20::TokenLocked" + "type": "train_protocol::TrainERC20::TrainERC20::TokenLocked", + "kind": "nested" }, { - "kind": "nested", "name": "TokenRedeemed", - "type": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed" + "type": "train_protocol::TrainERC20::TrainERC20::TokenRedeemed", + "kind": "nested" }, { - "kind": "nested", "name": "TokenRefunded", - "type": "train_protocol::TrainERC20::TrainERC20::TokenRefunded" + "type": "train_protocol::TrainERC20::TrainERC20::TokenRefunded", + "kind": "nested" }, { - "kind": "nested", "name": "TokenLockAdded", - "type": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded" + "type": "train_protocol::TrainERC20::TrainERC20::TokenLockAdded", + "kind": "nested" } ] } diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts index 3092a789..806cc0dd 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts @@ -1,9 +1,8 @@ -import { CallData, hash, num, Provider } from "starknet"; -import { events } from 'starknet'; +import { CallData, hash, num, Provider, events } from "starknet"; import trainAbi from '../ABIs/Train.json'; -import { formatAddress} from "../StarknetBlockchainActivities"; +import { formatAddress } from "../StarknetBlockchainActivities"; import { HTLCBlockEventResponse, HTLCCommitEventMessage, HTLCLockEventMessage } from "../../../Blockchain.Abstraction/Models/EventModels/HTLCBlockEventResposne"; -import { BigIntToAscii, toHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; +import { BigIntToAscii, ensureHexPrefix, toHex } from "../../../Blockchain.Abstraction/Extensions/StringExtensions"; import { DetailedNetworkDto } from "../../../Blockchain.Abstraction/Models/DetailedNetworkDto"; import { TokenCommittedEvent, TokenLockedEvent } from "../../Models/EventModels"; @@ -57,6 +56,8 @@ export async function TrackBlockEventsAsync( continue; } + const dstAddress = ensureHexPrefix(rawEvents[0].data[8]); + const commitMsg: HTLCCommitEventMessage = { txId: parsed.transaction_hash, commitId: toHex(data.Id), @@ -65,7 +66,7 @@ export async function TrackBlockEventsAsync( sourceNetwork: network.name, senderAddress: formatAddress(toHex(data.sender)), sourceAsset: BigIntToAscii(data.srcAsset), - destinationAddress: data.dstAddress, + destinationAddress: dstAddress, destinationNetwork: BigIntToAscii(data.dstChain), destinationAsset: BigIntToAscii(data.dstAsset), timeLock: Number(data.timelock) diff --git a/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts b/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts index ed9f1fa8..01daf6ce 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Models/EventModels.ts @@ -7,7 +7,6 @@ export interface TokenLockedEvent { export interface TokenCommittedEvent { Id: bigint; dstChain: bigint; - dstAddress: string; dstAsset: bigint; srcAsset: bigint; amount: bigint; From 89caa4909c560329b6d280094763c995f63a43f2 Mon Sep 17 00:00:00 2001 From: erkostandyan Date: Mon, 17 Nov 2025 23:00:58 +0400 Subject: [PATCH 68/69] Fixed treasury setDict method. --- treasury/src/kv/vault.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/treasury/src/kv/vault.service.ts b/treasury/src/kv/vault.service.ts index 814486ae..fa80f893 100644 --- a/treasury/src/kv/vault.service.ts +++ b/treasury/src/kv/vault.service.ts @@ -48,8 +48,9 @@ export class PrivateKeyService { await this.getTokenAsync(); + // write the provided key/value pairs at the top-level under `data` await this.vault.write(`${this.privateKeyConfig.mountPath}/data/${address}`, { - data: { keyVaulePair } + data: keyVaulePair }); } catch (error) { From c08fa3ae5395f0eb2ac148dc6e04dc98a35db440 Mon Sep 17 00:00:00 2001 From: Davit Mandzikyan Date: Mon, 17 Nov 2025 23:02:15 +0400 Subject: [PATCH 69/69] Fix correct event parsing. --- .../Activities/Helper/StarknetEventTracker.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts index 806cc0dd..8c062b0c 100644 --- a/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts +++ b/js/src/Blockchain/Blockchain.Starknet/Activities/Helper/StarknetEventTracker.ts @@ -56,7 +56,9 @@ export async function TrackBlockEventsAsync( continue; } - const dstAddress = ensureHexPrefix(rawEvents[0].data[8]); + const logEvent = rawEvents.find(x => x.transaction_hash === parsed.transaction_hash); + + const dstAddress = ensureHexPrefix(logEvent.data[8]); const commitMsg: HTLCCommitEventMessage = { txId: parsed.transaction_hash,